Abstract: This application note demonstrates how to make a simple system that monitors temperature and analog voltages remotely. On meeting certain alarm conditions, the system can send SMS messages, which are then converted to E-mail and forwarded to the designated E-mail address.
System components:
- PIC® microcontroller (PIC 16F877)
- 1-Wire® temperature sensor (DS18S20)
- 8-channel 12-bit, serial A/D converter (MAX127)
- GSM modem.
- SMS to E-mail conversion service provided by TynTec.
Download source code for this project:
- Remote_Monitor_EPD_Ver1.0.bas
Project objective and advantages
The project objective is to send E-mail messages automatically when programmed thresholds are met. A user programs alarm thresholds for temperature and analog input. When any of the alarm conditions are met, the system will send a standard SMS message using the GSM module. The SMS message must be sent to the mobile number designated by TynTec. The SMS message is then converted into an E-mail message and forwarded to the designated E-mail address by TynTec's 2 Way SMS messaging service. Figure 1 outlines the project concept.
There are several advantages to this system setup.
- This is an easy way to send E-mail that is automatically generated without human intervention.
- It is simple way to monitor temperature and voltages remotely.
- The system can send both E-mail and SMS messages.
- NO PC intervention is required to achieve the above operations.
- The system avoids complex TCP/IP connectivity issues, which can be particularly problematic in areas where GPRS coverage is not present.
Figure 1.
Detailed system specifics
A BASIC compiler, the Proton+ for the PIC microcontrollers provided by Crownhill, is used (www.crownhill.co.uk). TynTec (www.tyntec.biz) provides the SMS to E-mail conversion. A Seimen's TC35 GSM module is used. Although any other SMS-capable modem can be used, a good source for GSM modules is Alphamicro (www.alphamicro.net). The PIC 16F877 was installed on a Proton Dev development board provided by Crownhill. The standard 16 x 2 LCD module was replaced with a 20 x 4 LCD module. The Proton+ compiler supports the 4 x 20 LCD module via the 'PRINT' command.
The DS18S20 temperature sensor is used. The DS18S20 uses the Dallas Semiconductor 1-Wire protocol, and is connected to PortC pin 0 of the PIC. Make sure that the DQ pin has a 4.7k pull-up resistor connected to 5V.
The MAX127 12-bit, 8-channel ADC with a serial interface is used. The MAX127 uses two I/O pins of the PIC (PortB pin 0 and pin 1), but this example only uses the device's first channel. Code can be adjusted easily to use the other channels if necessary. Users should make sure that the SDL and SDA pins (pin 5 and pin 7, respectively) have 4.7k pull-up resistors connected to 5V.
A Light Dependant Resistor (LDR) is connected to 5V and then to ground via a 1k resistor. The junction of the LDR and resistor is then connected to Channel 0 (pin 13) of the MAX127. A 0 to 5V input range is selected for the ADC.
The connection diagram is shown in Figure 2.
Figure 2.
Overview of code operation
- The PIC reads the analog input value. This operation is achieved in the MAX127IN subroutine. If the analog voltage is above the specified threshold, then the alarm flag, ALARMFLAG, will be set. Setting the ALARMFLAG to '1' indicates that an SMS needs to be sent.
- Next, the temperature will be read from the DS18S20. If the temperature is above the specified limit, then the ALARMFLAG will be set. Setting the ALARMFLAG to '1' indicates that an SMS needs to be sent.
- The code will now determine whether or not to send an SMS message. If the ALARMFLAG is set, the code will go to a subroutine called SMS to send an SMS message to the designated mobile number.
System setup procedure
- Obtain an account for TynTec's 2 Way-SMS tool (www.tyntec.biz,
sales@tyntec.biz, or call +49 231 10 87 991). Specify the destination E-mail address, and TynTec will provide a unique mobile number (of the format +44...). Keep this mobile number safe.
- Modify the code at the following points.
a) Line 87: If MAXREAD > 2047 THEN ... This is where the analog-input threshold level will be set. The MAX127 is a 12-bit ADC, so it has 4096 steps. It is configured to have an input voltage range of 0 to 5V. Initially, the code is set with a 2.5V threshold.
b) Line 119: If temp > 58 THEN At this point the temperature alarm threshold must be set. It is set at +29°C in the code provided. The reading from the DS18S20 is held in the 'temp' register. Dividing 'temp' by two gives the actual temperature in °C. Note that this code only works with positive temperatures.
c) Line 268: HSEROUT ["AT+CMGS=+447---------"] The destination mobile number provided by TynTec is specified here.
d) Line 298: UNTIL SMSDELAY = 10 The delay between an SMS message transmission and a repeat 'scan' of the temperature and analog input is adjustable. It is set for a ten-minute delay, but can be adjusted for different situations.
A sample e-mail sent from the system is shown in Figure 3.
Figure 3.
Summary
After following the above steps, the system should monitor temperature and analog input. If or when the trip thresholds are exceeded, an SMS message will be sent and will, in turn, initiate an E-mail to the designated recipient.
A similar version of this article appeared in the August 2004 issue of EPD's (UK).
This article has also appeared in the August 2004 issues of Selezione's (Italy) and Electronics Update's (Japan).