Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Adafruit_FONA.h>
- #include <SoftwareSerial.h>
- #include <TinyGPS++.h>
- #define FONA_RX 4
- #define FONA_TX 5
- #define FONA_RST 9
- #define GPS_RX 2
- #define GPS_TX 3
- #define BTN_PIN 8
- #define TIMER_LED 15000
- #define TIMER_SMS 30000
- static const uint32_t GPSBaud = 9600;
- TinyGPSPlus gps;
- SoftwareSerial fonaSS = SoftwareSerial(FONA_TX, FONA_RX);
- SoftwareSerial *fonaSerial = &fonaSS;
- SoftwareSerial gpsSS(GPS_RX, GPS_TX);
- Adafruit_FONA fona = Adafruit_FONA(FONA_RST);
- uint8_t readline(char *buff, uint8_t maxbuff, uint16_t timeout = 0);
- uint8_t type;
- long lastEventMillis = 0;
- boolean btn = true; // attention que le bouton fonctionne à l'envers : HIGH = pas pressé et LOW = pressé
- void setup() {
- while (!Serial);
- Serial.begin(9600);
- pinMode(BTN_PIN, INPUT);
- digitalWrite(BTN_PIN, HIGH); //pullup interne
- }
- void connectGSM() {
- fonaSerial->begin(9600);
- if (! fona.begin(*fonaSerial)) {
- Serial.println(F("FONA Introuvable"));
- while (1);
- }
- type = fona.type();
- Serial.println(F("FONA is OK"));
- Serial.print(F("Found "));
- char imei[15] = {0}; // MUST use a 16 character buffer for IMEI!
- uint8_t imeiLen = fona.getIMEI(imei);
- if (imeiLen > 0) {
- Serial.print("Module IMEI: "); Serial.println(imei);
- }
- }
- void sendSMS(char* pos) {
- connectGSM();
- delay(2000);
- uint8_t n = 0;
- while( n != 1)
- {
- n = fona.getNetworkStatus();
- }
- /*char* str;
- Serial.println(strlen(pos));
- Serial.println(sizeof (String));
- pos.toCharArray(str, 140, 0);
- */
- Serial.println(pos);
- if (
- fona.sendSMS("+32495256268", pos)
- )
- {
- Serial.println("Failed");
- } else {
- //lastEventMillis = millis();
- Serial.println("Sent!");
- }
- }
- String getPosition() {
- gpsSS.begin(GPSBaud);
- double lat = 0;
- double lng = 0;
- double spd = 0;
- while(lat == 0 && lng == 0)
- {
- while (gpsSS.available())
- gps.encode(gpsSS.read());
- //TODO: add a timeout
- lat = gps.location.lat();
- lng = gps.location.lng();
- spd = gps.speed.kmph();
- }
- return String(lat, 6) + " - " + String(lng, 6)+ " - " + String(spd,6);
- }
- void loop() {
- /*uint8_t n = fona.getNetworkStatus();
- Serial.print(F("Network status "));
- Serial.print(n);
- Serial.print(F(": "));
- if (n == 0) Serial.println(F("Not registered"));
- if (n == 1) Serial.println(F("Registered (home)"));
- if (n == 2) Serial.println(F("Not registered (searching)"));
- if (n == 3) Serial.println(F("Denied"));
- if (n == 4) Serial.println(F("Unknown"));
- if (n == 5) Serial.println(F("Registered roaming"));
- */
- String pos = String("HELLO"); //getPosition();
- delay(2000);
- connectGSM();
- delay(2000);
- uint8_t n = 0;
- while( n != 1)
- {
- n = fona.getNetworkStatus();
- Serial.println(n);
- }
- char str[141] = {0};
- pos.toCharArray(str, 10, 0);
- Serial.println(pos);
- if (
- fona.sendSMS("+32495256268", str)
- )
- {
- Serial.println("Failed");
- } else {
- //lastEventMillis = millis();
- Serial.println("Sent!");
- }
- while(1);
- delay(20000);
- /*if(lastEventMillis + 25000 < millis())
- fonaSerial->begin(9600);
- if(btn && !digitalRead(BTN_PIN)) { // si la variable btn est vrai (le bouton n'a jamais été pressé) et que la lecture du bouton est fausse (le bouton est pressé)
- btn = false;
- // btn est false, le bouton est maintenant considéré comme pressé jusqu'au reset
- }
- if (btn && lastEventMillis + TIMER_LED < millis() ){
- // TODO : allumer la led après 15s
- }
- if (btn && n == 1 && lastEventMillis + TIMER_SMS < millis() ){
- //TODO : lire gps
- // while (gpsSS.available() > 0)
- // gps.encode(gpsSS.read());
- // double lat = gps.location.lat();
- // double lon = gps.location.lng();
- // Serial.println(lat);
- // Serial.println(lon);
- // if (!fona.sendSMS("+32472555810", "caca")) {
- // Serial.println("Failed");
- // } else {
- // lastEventMillis = millis();
- // Serial.println("Sent!");
- // }
- }*/
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement