Adding SMS Gateway node example and supporting library.
Adding SMS Gateway node example and supporting library (Adafruit FONA).
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
/***************************************************
|
||||
This is an example for our Adafruit FONA Cellular Module
|
||||
|
||||
Designed specifically to work with the Adafruit FONA
|
||||
----> http://www.adafruit.com/products/1946
|
||||
----> http://www.adafruit.com/products/1963
|
||||
----> http://www.adafruit.com/products/2468
|
||||
----> http://www.adafruit.com/products/2542
|
||||
|
||||
These cellular modules use TTL Serial to communicate, 2 pins are
|
||||
required to interface
|
||||
Adafruit invests time and resources providing this open source code,
|
||||
please support Adafruit and open-source hardware by purchasing
|
||||
products from Adafruit!
|
||||
|
||||
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||
BSD license, all text above must be included in any redistribution
|
||||
****************************************************/
|
||||
|
||||
/*
|
||||
THIS CODE IS STILL IN PROGRESS!
|
||||
|
||||
Open up the serial console on the Arduino at 115200 baud to interact with FONA
|
||||
|
||||
|
||||
This code will receive an SMS, identify the sender's phone number, and automatically send a response
|
||||
|
||||
*/
|
||||
|
||||
#include "Adafruit_FONA.h"
|
||||
|
||||
#define FONA_RX 2
|
||||
#define FONA_TX 3
|
||||
#define FONA_RST 4
|
||||
|
||||
// this is a large buffer for replies
|
||||
char replybuffer[255];
|
||||
|
||||
// We default to using software serial. If you want to use hardware serial
|
||||
// (because softserial isnt supported) comment out the following three lines
|
||||
// and uncomment the HardwareSerial line
|
||||
#include <SoftwareSerial.h>
|
||||
SoftwareSerial fonaSS = SoftwareSerial(FONA_TX, FONA_RX);
|
||||
SoftwareSerial *fonaSerial = &fonaSS;
|
||||
|
||||
// Hardware serial is also possible!
|
||||
// HardwareSerial *fonaSerial = &Serial1;
|
||||
|
||||
Adafruit_FONA fona = Adafruit_FONA(FONA_RST);
|
||||
|
||||
uint8_t readline(char *buff, uint8_t maxbuff, uint16_t timeout = 0);
|
||||
|
||||
void setup() {
|
||||
while (!Serial);
|
||||
|
||||
Serial.begin(115200);
|
||||
Serial.println(F("FONA SMS caller ID test"));
|
||||
Serial.println(F("Initializing....(May take 3 seconds)"));
|
||||
|
||||
// make it slow so its easy to read!
|
||||
fonaSerial->begin(4800);
|
||||
if (! fona.begin(*fonaSerial)) {
|
||||
Serial.println(F("Couldn't find FONA"));
|
||||
while(1);
|
||||
}
|
||||
Serial.println(F("FONA is OK"));
|
||||
|
||||
// Print SIM card IMEI number.
|
||||
char imei[15] = {0}; // MUST use a 16 character buffer for IMEI!
|
||||
uint8_t imeiLen = fona.getIMEI(imei);
|
||||
if (imeiLen > 0) {
|
||||
Serial.print("SIM card IMEI: "); Serial.println(imei);
|
||||
}
|
||||
|
||||
Serial.println("FONA Ready");
|
||||
}
|
||||
|
||||
|
||||
char fonaInBuffer[64]; //for notifications from the FONA
|
||||
|
||||
void loop() {
|
||||
|
||||
char* bufPtr = fonaInBuffer; //handy buffer pointer
|
||||
|
||||
if (fona.available()) //any data available from the FONA?
|
||||
{
|
||||
int slot = 0; //this will be the slot number of the SMS
|
||||
int charCount = 0;
|
||||
//Read the notification into fonaInBuffer
|
||||
do {
|
||||
*bufPtr = fona.read();
|
||||
Serial.write(*bufPtr);
|
||||
delay(1);
|
||||
} while ((*bufPtr++ != '\n') && (fona.available()) && (++charCount < (sizeof(fonaInBuffer)-1)));
|
||||
|
||||
//Add a terminal NULL to the notification string
|
||||
*bufPtr = 0;
|
||||
|
||||
//Scan the notification string for an SMS received notification.
|
||||
// If it's an SMS message, we'll get the slot number in 'slot'
|
||||
if (1 == sscanf(fonaInBuffer, "+CMTI: \"SM\",%d", &slot)) {
|
||||
Serial.print("slot: "); Serial.println(slot);
|
||||
|
||||
char callerIDbuffer[32]; //we'll store the SMS sender number in here
|
||||
|
||||
// Retrieve SMS sender address/phone number.
|
||||
if (! fona.getSMSSender(slot, callerIDbuffer, 31)) {
|
||||
Serial.println("Didn't find SMS message in slot!");
|
||||
}
|
||||
Serial.print(F("FROM: ")); Serial.println(callerIDbuffer);
|
||||
|
||||
//Send back an automatic response
|
||||
Serial.println("Sending reponse...");
|
||||
if (!fona.sendSMS(callerIDbuffer, "Hey, I got your text!")) {
|
||||
Serial.println(F("Failed"));
|
||||
} else {
|
||||
Serial.println(F("Sent!"));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user