Go Down

Topic: Can an Arduino send a dialup email message? (Read 9816 times) previous topic - next topic


Jan 17, 2009, 06:21 am Last Edit: Jan 17, 2009, 06:37 am by gnu_linux Reason: 1
How far is the building from the main office?

An arduino with the ethernet shield can be 328ft or 100m away from the switch or computer on the other end

You can usually find small low-power Linux computers for about $65 - $100 online ( optionally with solid state storage for the OS ) which could log to an SD card or a hard drive and would be able to send email and would be fully networkable ( wired and WiFi ) and SSHable

One option would be

temp_sensor <====> arduino <====> Low-power Linux PC <=====> communication_interface <=====> remote_system

The communication interface can be ethernet ( 10Base-2, 10Base-5, 100Base-T ), WiFi, RS-422 or RS-485 serial, old schoold modem, wireless ( besides WiFi ), GSM modem, IrDA, or what have you

If you had a GSM cellular modem or something like that you could send SMS messages directly to the Cell phone network



Thanks again for your additional comments. After thinking about my goal overnight (while I was asleep !), I think I have been making this project too complicated.  What I really need is to be able to check the temperature in the remote building at will.  To do that, all I need is a serial modem attached to an Arduino that has a temperature sensor.  

The Arduino would have to monitor and answer my incoming call (through the serial modem) and respond with the current temperature.  This would serve my purpose and would avoid any problems either with power or with data storage on the Arduino.  If I wanted to store temperature data and/or call repeatedly, I could do that with the calling computer.    

During operation, if I get a response from the Arduino with the appropriate temperature, then the situation is OK.  If I get a response with a low temperature, then I need to investigate the situation.  If I get no response at all, either due to a power failure or some other cause, then I still need to investigate.  That arrangement would serve the purpose that I am trying to address.  A few additional comments:  

1.  The remote building is about 3/4 mile from the main office, so I think that's too far for some of the ideas mentioned previously.  

2.   I do want a positive response from the system on demand, not just an error message when the temperature is outside of the limit, since the absence of an error message doesn't indicate whether some other problem (such as power failure) has occurred.      

3.  If I wanted to find a low power Linux computer on ebay, what's the best way to search for it?  

So I think my next step is to try to find a cheap, working serial modem.  I'll look on ebay as was previously mentioned.  If anybody knows of any other source, please let me know.  I want to try to avoid the expensive ones.  (I've got a Arduino Duemilanove on order but it's not here yet.)  Thanks again.              


The remote building is about 3/4 mile from the main office, so I think that's too far for some of the ideas mentioned previously.  

The specified outdoor line-of-sight distance for an XBee Pro with a whip antenna
is 4382ft. It may be possible to do this with two XBees -- one attached to a temperature
sensor the other attached to your PC. The XBee has an uC + A/D converter and can be
setup to continuously measure and transmit. IIRC the XBee uC can be programmed
to only transmit a change outside of a range. You can always ping the XBee to
make sure it is alive.

(* jcl *)


I see the modems occasionally at the thrift stores, garage sales, maybe craigslist or freecycle.org.  You can buy a new one for less than $30: http://www.tigerdirect.com/applications/SearchTools/item-details.asp?EdpNo=3776652&CatId=564

And a serial duino is like $17

It should be just a matter of having the right serial cable to connect the *duino to your computer (which needs a serial port) and then to the modem and a couple power adapters in the remote building.

Oh, and you need to procure a thermistor, can probably just stick it in an analog port and turn on the pullup resistor.

I like your "call the remote building" plan.  You might even set it up so the arduino just doesn't answer when the temp is too low, so you can call it from any phone and will know if you need to take action (It didn't answer, I better get someone over there).


Jan 17, 2009, 05:01 pm Last Edit: Jan 17, 2009, 05:01 pm by dcb Reason: 1
Now that I've thought about it a bit too,  it seems that the modem might not even be necessary.  It is useful certainly, and saves a lot of headache, but if you want to use an ordinary phone as well to check on the building with more options than "it answered or it didn't" then here is a more advanced plan:

A phone is off the hook at about 680 ohms,

if your arduino in the building can listen for the TIP signal and take the phone off hook (a resistor and a transistor or somesuch) then it can send various audio tones/patterns that the human caller, or another arduino plugged into a computer, would be able to recognize as either all-clear, or too cold, or too hot, or too flooded, or???

But it sounds like you have an immediate need, so may be best to stick with the modem approach instead of chasing all the possibilities, can always do that later :)  I do like this idea though, now I need to try and make an arduino based caller ID :)


Wise, Neoware and HP make some ThinClients which either already run Linux or can run Linux

A Neoware with a 300MHz CPU and at least 128MB of RAM should work

They sell for about $30 each, maybe less

It shouldn't be too expensive to retrofit one to boot from a Live CD or a small 2.5" HDD :)


The Thinclient option sounds interesting, at least for the future, but I don't know a thing about them.  Plus, when I put Neoware into Google, the options all seem to be $200 - $400.  Where can I buy a thinclient with a 300 MHz CPU and 128MB for $30 or less?  


I would also like the thin client for $30.  :)

I wonder if that was suppose to be $300 ?

(* jcl *)


Jan 18, 2009, 01:54 am Last Edit: Jan 18, 2009, 02:02 am by gnu_linux Reason: 1
That wasn't a typo you can get Neoware 3000 series or better thin clients for about $30 on ebay

They have a 300MHz geode CPU and 128MB RAM


This particular batch of 5 has NT :( but you can Linux them :)

They are often sold by the truckload, someone is selling a lot of 70 units and another seller has a 600lb pallet of 48 units for $249

Just search for "neoware" on ebay and make sure you read all the fine print

Even some of the newer models sell for less than $100



Jan 18, 2009, 02:23 am Last Edit: Jan 18, 2009, 02:32 am by gnu_linux Reason: 1
The 3000 and 5000 series Neoware thin clients, while older and slower, use a standard PC power cord which will save you the trouble of having to look for a proprietary power cord and or AC to DC adapter

Some of the newer units have a mini-DIN power connector which may have to be reverse engineered, although I'm sure most people around here would have no trouble doing that :)


Jan 18, 2009, 02:35 am Last Edit: Jan 18, 2009, 02:41 am by gnu_linux Reason: 1
Found one for $23.00 and free shipping, although I'm not too crazy about the seller's feedback




A few units have sold for $15 with free shipping

I should revise my earlier posts $30 was too much :)


I used to use external modems to send numeric pages when servers went down.  It is trivial to use the modem AT commands to send any touchtone sequence.  All you would need to do is level shift the TTY serial to RS232 direct to the modem.  Dont start a data connection, just emulate a user with a touchtone phone.

I dont know how the current text services work, is there a way to send text messages or e-mail from an ordinary touchtone phone?  If so, you should be able to do anything you could do with a touch tone phone wit AT command REALLY easily.

Also, I dont know for sure how muc current the external modems draw, but it is probably a lot more than the Arduino.  Dont think you can run this on a 9volt for more than a couple of minutes.  May be a pack of rechargable D cells or a burglar alarm lead acid battery.

Mark Bramwell

I have just read through this list and some of the suggestions are over-kill.

I have some comments....

1 . Telephone modems, especially if they run slow (around 2400 baud) are extremely reliable.

2. Even if you do hook-up a modem, dial into what?  Using what protocol?  You can not program SLIP (serial line IP) into an arduino.

3. If you do not have SLIP, sending SMTP is not possible.

My suggestion....   Install linux on a cheap PC.  Make sure the linux is installed with serial TTY support.  That means someone can dial into your linux box via a modem and get a login prompt using a normal ascii terminal.  Hyperterminal is a terminal emulator for Windows (good for testing).  

The linux machine is located someplace that is good for you to use.  The arduino will be dialing from the furnace room into that Linux box. It does not need to have internet access although does have some advantages.

Once you have linux running, you connect a modem to the ardiuno.  It can send the ATDTxxxxx to dial into the linux box and send the username/password to login.  

Once logged in, it can issue:   echo "temp here" | mail -s "Hourly temp report" yourusername  

then logout

The entire program is a collection of WAITFOR and SEND


send "AT<cr>"   ' wake up the modem
waitfor "OK"      ' wait for response from modem
send "ATDT phonenumber<cr>"  ' tell the modem to dial
waitfor "CONNECT"  ' wait for modem to connect
send "<cr>"   ' wake up the linux box
waitfor "username:"  ' linux wants us to login
send "yourusername<cr>" ' send our login username
waitfor "password:"  ' linux wants the password

and so on....

Mark Bramwell

I just saw your 3/4 mile distance comment.

Another solution if linux seems rough.

Hookup a FRS radio to the arduino.  Use the SPEAKJET chip to create speech.  Take a hint from remotely-operated-airports.  If the arduino detects someone clicking the radio 3 times in a row, the arduino keys the FRS and the speakjet says the temp over the air.

1 pin from the arduino keys the FRS radio into transmit.
The audio output from the speakjet is connected to the mic of the FRS.
You need to connect a wire to the carrier detect of the FRS.  Get an older FRS that has a signal-present LED and connect the PIN to the LED.
Program the FRS to listen on a channel with sub-tone control  That means someone would have to be on the correct channel, and subtone, and key their radio 3 times for the arduino to respond.

A local ham operator would know exactly what I am talking about.

parts list:
2 x FRS radios from walmart
1 x arduino
1 x temp sensor
1 x speekjet chip
no computers except for the initial arduino programming

de ve3pzr.


Jan 18, 2009, 07:06 pm Last Edit: Jan 18, 2009, 07:10 pm by Roger_at_CCCC Reason: 1
Thanks for the additional suggestions.  
My current plan is as follows:  
From my office computer, I will dial the modem at the remote site when I want to know the temperature there.  The remote site modem will answer (under the control of the Arduino) and the Arduino will send temperature data to my office computer.  This is just data transfer, not email or network activity.   I think the only unknown is how to control the serial modem with the Arduino, but I also think that AT commands ought to do it.  I haven't used AT modem commands for years so I will have to find reference information for that.  I will also have to learn the electrical requirements for controlling the serial input to the modem from the Arduino.  This seems simple to me although I of course haven't tried to do it yet.  If there is some reason why this won't work, please let me know.  Plus I'll be out of town for a few days and won't get back to it until the end of the week.  I should have the modem, Arduino, and LM34 temperature sensor by then.  Thanks again for your continued interest.  If I can get this to work, then I might investigate more sophisticated arrangements involving calling out.  But for now, calling in will serve my purpose, I think.        

Go Up