Sommario:

Invia un Sms con Temperatur in tempo: 5 passaggi (con immagini)
Invia un Sms con Temperatur in tempo: 5 passaggi (con immagini)

Video: Invia un Sms con Temperatur in tempo: 5 passaggi (con immagini)

Video: Invia un Sms con Temperatur in tempo: 5 passaggi (con immagini)
Video: TRUCCO INCREDIBILE CHE DEVI SAPERE! 2024, Dicembre
Anonim
Invia un Sms con Temperatur in tempo
Invia un Sms con Temperatur in tempo

L'idea è di ricevere un sms a temperatura ambiente dalla casa di mio padre.

Niente di speciale, solo un rapido assemblaggio delle parti.

Le parti sono:

  • Scheda controller Geekcreit® ATmega328P Nano V3 compatibile Arduino
  • Scheda di espansione fai-da-te NANO IO Shield V1. O per Arduino
  • Modulo orologio in tempo reale RTC IIC / I2C basato su DS1307 e DS18b20
  • SIM800L Quad-band GSM / GPRS
  • LM2596 Modulo di alimentazione step-down regolabile con convertitore mini DC-DC
  • Termistore NTC MF52AT temperatura

Prima di tutto molto fuori dalla lettura e dalla ricerca.

Prima di utilizzare finalmente Geekcreit® Nano, provo tutte le parti con un Arduino Uno.

Passaggio 1: far funzionare la SIM800l

Fai funzionare la SIM800l
Fai funzionare la SIM800l

Un punto principale è la potenza del Sim800L.

Uso un mini convertitore DC-DC LM2596, regolato a 3,7 volt e un alimentatore separato.

Per testare la connessione con i comandi AT+ questo lato è molto utile:

Avvio rapido SIM800 (SIM800L) con Arduino

Con Disabilita codice pin usando il modem gsm ai comandi ho ottenuto il codice pin della sim.

La prossima considerazione quale libreria. Internet offre soluzioni diverse.

La mia soluzione è la libreria di Mattias Aabmets: AspenSIM800

Il suo esempio: Send_SMS.ino ha usato I come programma di base e uno per uno ha collegato tutte le altre parti insieme.

Il pin Tx e il pin Rx sono il codice per:

RX_PIN 10 di Arduino. Deve essere collegato al pin TX del modulo SIM800. TX_PIN 11 di Arduino. Deve essere collegato al pin RX del modulo SIM800

È sempre una buona idea leggere i file *.ccp e *.h nelle librerie.

Contengono molti suggerimenti e conoscenze interessanti.

Passaggio 2: far funzionare l'RTC DS1307 con il sensore DS18B20

Fai funzionare l'RTC DS1307 con il sensore DS18B20
Fai funzionare l'RTC DS1307 con il sensore DS18B20

Ho usato questo lato: simtronyx - il blog per DS1307 e DS18B20.

L'orologio ha una connessione bus I2C e cioè per Arduino Uno: A4 (SDA) - A5 (SCL)

Il DS18B20 l'ho collegato a D3.

Ho letto che in un SMS non puoi inviare Floats only String, quindi ho dovuto tradurre float in string.

Quello che faccio con questo frammento di codice che ho trovato:

n

MyString1 = String(currentTemp, 2); //Converti float in String

MyString1 = (MyString1 + " C - RoomTemperatur:) ");

// convert string in char inizia qui

// Lunghezza (con un carattere in più per il terminatore nullo)

int str_len1 = MyString1.length() + 1; // Prepara l'array di caratteri (il buffer)

char char_array1[str_len1]; // Copialo

MyString1.toCharArray(char_array1, str_len1); // converte la stringa in char la finisce

Sarò onesto, non so come funziona, ma funziona.

Passaggio 3: far funzionare il termistore NTC MF52AT

Fai funzionare il termistore NTC MF52AT
Fai funzionare il termistore NTC MF52AT

Ho lavorato prima con un termistore, quindi è stata la parte facile.

Ma anche qui puoi trovare diverse soluzioni.

Nel codice finale puoi trovare il mio.

Qui puoi anche trovare la traduzione Floats to String.

Saldare del filo e la resistenza da 10 k ohm al termistore.

Passaggio 4: fare in modo che tutti lavorino insieme

Così ho scritto tutte le parti del programma insieme.

Ora dovevo capire come inviare un SMS ogni giorno, alla stessa ora.

Ho letto di diverse idee, alcune con un TimerAlarm e un altro approccio.

Ma ho trovato una soluzione semplice da qualche parte nel forum di arduino:

if (now.hour() == 8 && now.minute() == 00 && now.second () == 59)

{

SIM.smsSend(addr, char_array); // termistore

ritardo (500); SIM.smsSend(addr, char_array1); //DS18B20}

Ma perché now.second = 59 perché invia un intero minuto di SMS. Lo fa per me, ma prova tu stesso.

Dopo alcuni test ho caricato il programma su Geekcreit® Nano.

Questo forse non è il miglior programma di scrittura:) ma fa il desiderato.

Poiché Geekcreit® ATmega328P Nano ha alcuni problemi con l'IDE Arduino, carico tramite terminale (Linux Mint) e lancio USBtinyisp con questo: avrdude -c usbtiny -p atmega328p -U flash: w: SomeHexFile.hex

Passaggio 5: ha funzionato

Sì, ha funzionato ed è stato messo in casa.

Ogni giorno alle 6:00 ricevo un SMS con la temperatura.

Consigliato: