From b31b7d77ed0b787ac2b615beeeb6cb4339229538 Mon Sep 17 00:00:00 2001 From: Vasil Zlatanov Date: Tue, 31 Jan 2017 21:37:12 +0000 Subject: Adafruit reference and Makefile --- Makefile | 8 +++++ main.ino | 124 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 132 insertions(+) mode change 100644 => 100755 Makefile create mode 100644 main.ino diff --git a/Makefile b/Makefile old mode 100644 new mode 100755 index e69de29..18c0068 --- a/Makefile +++ b/Makefile @@ -0,0 +1,8 @@ +mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) +current_dir := $(notdir $(patsubst %/,%,$(dir $(mkfile_path)))) +all: + arduino --board adafruit:avr:feather32u4 --pref build.path=$(pwd)/build --verify $(pwd)/main.ino +clean: + rm -rf build +upload: + arduino --board adafruit:avr:feather32u4 --port /dev/ttyACM0 --upload $(pwd)/main.ino diff --git a/main.ino b/main.ino new file mode 100644 index 0000000..99c94da --- /dev/null +++ b/main.ino @@ -0,0 +1,124 @@ +/*************************************************** + 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 +For use with FONA 800 & 808, not 3G +*/ + +#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 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!")); + } + + // delete the original msg after it is processed + // otherwise, we will fill up all the slots + // and then we won't be able to receive SMS anymore + if (fona.deleteSMS(slot)) { + Serial.println(F("OK!")); + } else { + Serial.println(F("Couldn't delete")); + } + } + } +} -- cgit v1.2.3