Taula de continguts:

Envia un SMS amb temperatura a temps: 5 passos (amb imatges)
Envia un SMS amb temperatura a temps: 5 passos (amb imatges)

Vídeo: Envia un SMS amb temperatura a temps: 5 passos (amb imatges)

Vídeo: Envia un SMS amb temperatura a temps: 5 passos (amb imatges)
Vídeo: Котенка просто оставили на обочине. Котенок по имени Роки 2024, De novembre
Anonim
Envia un SMS amb Temperatura a temps
Envia un SMS amb Temperatura a temps

La idea és obtenir un sms de temperatura de casa dels meus pares.

Res de fantàstic, simplement posar peces juntes ràpidament.

Les parts són:

  • Placa de control Geekcreit® ATmega328P Nano V3 compatible Arduino
  • Taula d’expansió DIY NANO IO Shield V1. O per a Arduino
  • Mòdul de rellotge en temps real RIC IIC / I2C basat en DS1307 i DS18b20
  • SIM800L de quatre bandes GSM / GPRS
  • LM2596 Mini convertidor CC-CC Mòdul ajustable de font d'alimentació
  • Temperatura del termistor NTC MF52AT

Primer de tot, molt de llegir i buscar.

Abans d’utilitzar finalment el Geekcreit® Nano, provo totes les parts amb un Arduino Uno.

Pas 1: feu funcionar el SIM800l

Feu funcionar el SIM800l
Feu funcionar el SIM800l

Un punt principal és la potència del Sim800L.

Faig servir un convertidor Mini DC-DC LM2596, ajustat a 3,7 volts i una font d'alimentació independent.

Per provar la connexió amb ordres AT +, aquest costat és molt útil:

Inici ràpid SIM800 (SIM800L) amb Arduino

Amb Desactiva el codi pin utilitzant el mòdem gsm a les ordres, vaig obtenir el codi pin sim.

La propera consideració de quina biblioteca. Internet ofereix diferents solucions.

La meva solució és la biblioteca de Mattias Aabmets: AspenSIM800

El seu exemple: Send_SMS.ino va utilitzar I com a programa bàsic i connectar una per una totes les altres parts juntes.

El pin Tx i el pin Rx són codis per:

RX_PIN 10 d'Arduino. S’ha de connectar al pin TX del mòdul SIM800. TX_PIN 11 d’Arduino. Cal connectar-lo al pin RX del mòdul SIM800

Sempre és bona idea llegir els fitxers *.ccp i *.h a les biblioteques.

Contenen molts suggeriments i coneixements interessants.

Pas 2: feu funcionar el RTC DS1307 amb el sensor DS18B20

Feu funcionar el RTC DS1307 amb el sensor DS18B20
Feu funcionar el RTC DS1307 amb el sensor DS18B20

He utilitzat aquest costat lateral: simtronyx: el bloc de DS1307 i DS18B20.

El rellotge té una connexió de bus I2C i és per a l’Arduino Uno: A4 (SDA) - A5 (SCL)

El DS18B20 el vaig connectar a D3.

He llegit que en un SMS no es pot enviar només Floats String, així que vaig haver de traduir floats a string.

Això que faig amb aquest fragment de codi que he trobat:

n

MyString1 = String (currentTemp, 2); // Converteix el float en cadena

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

// converteix la cadena en caràcters comença aquí

// Longitud (amb un caràcter addicional per al terminador nul)

int str_len1 = MyString1.length () + 1; // Prepareu la matriu de caràcters (la memòria intermèdia)

char char_array1 [str_len1]; // Copieu-lo

MyString1.toCharArray (char_array1, str_len1); // converteix la cadena en caràcter que la posa al final

Seré sincer, no sé com funciona, però funciona.

Pas 3: feu funcionar el termistor NTC MF52AT

Feu funcionar el termistor NTC MF52AT
Feu funcionar el termistor NTC MF52AT

Vaig treballar abans amb un termistor, de manera que era la part més fàcil.

Però també aquí podeu trobar una solució diferent.

Al codi final podeu trobar el meu.

També podeu trobar la traducció Floats to String.

S'ha soldat una mica de filferro i la resistència de 10 k ohm al termistor.

Pas 4: Feu que tots treballin junts

Així que vaig escriure totes les parts del programa juntes.

Ara havia d’esbrinar com enviar un SMS cada dia, a la mateixa hora.

He llegit sobre idees diferents, algunes amb un enfocament TimerAlarm i altres.

Però he trobat una solució senzilla al fòrum arduino:

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

{

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

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

Però per què now.second = 59 perquè envia un SMS complet de minut. Ho fa per mi, però proveu-ho vosaltres mateixos.

Després d'una prova, vaig penjar el programa al Geekcreit® Nano.

Això potser no és el millor programa d'escriptura:), però sí el que desitgeu.

Com que el Geekcreit® ATmega328P Nano té alguns problemes IDE Arduino, pujo per terminal (Linux Mint) llanço el USBtinyisp amb això: avrdude -c usbtiny -p atmega328p -U flash: w: SomeHexFile.hex

Pas 5: va funcionar

Sí, va funcionar i es col·loca a la casa.

Tots els dies a les 6:00 am rebo un SMS amb la temperatura.

Recomanat: