Inhoudsopgave:

Stuurt een sms met temperatuur op tijd - Ajarnpa
Stuurt een sms met temperatuur op tijd - Ajarnpa

Video: Stuurt een sms met temperatuur op tijd - Ajarnpa

Video: Stuurt een sms met temperatuur op tijd - Ajarnpa
Video: ik belde het 666 nummer 2024, November
Anonim
Stuurt een sms met temperatuur op tijd
Stuurt een sms met temperatuur op tijd

Het idee is om een temperatuur sms te krijgen van mijn vaders huis.

Niets bijzonders, gewoon snel onderdelen in elkaar zetten.

De onderdelen zijn:

  • Geekcreit® ATmega328P Nano V3-controllerkaart Compatibel met Arduino
  • DIY NANO IO Shield V1. O uitbreidingskaart voor Arduino
  • Op DS1307 gebaseerde RTC IIC / I2C real-time klokmodule en DS18b20
  • SIM800L Quad-band GSM / GPRS
  • LM2596 Mini DC-DC-converter Instelbare step-down voedingsmodule
  • Thermistor NTC MF52AT temperatuur

Allereerst veel lezen en zoeken.

Voordat ik eindelijk de Geekcreit® Nano gebruik, test ik alle onderdelen met een Arduino Uno.

Stap 1: Breng de SIM800l aan het werk

De SIM800l aan het werk krijgen
De SIM800l aan het werk krijgen

Een belangrijk punt is de kracht van de Sim800L.

Ik gebruik een LM2596 Mini DC-DC converter, afgesteld op 3,7 volt en een aparte voeding.

Om de verbinding met AT+-commando's te testen, is deze kant zeer bruikbaar:

Snelstart SIM800 (SIM800L) met Arduino

Met Pincode uitschakelen met gsm-modem bij commando's kreeg ik rit van de sim-pincode.

De volgende overweging welke bibliotheek. Het internet biedt verschillende oplossingen.

Mijn oplossing is de bibliotheek van Mattias Aabmets: AspenSIM800

Zijn voorbeeld: Send_SMS.ino gebruikte I als basisprogramma en verbond één voor één alle andere delen met elkaar.

De Tx-pin en Rx-pin zijn code voor:

RX_PIN 10 van Arduino. Moet worden aangesloten op de TX-pin van de SIM800-module. TX_PIN 11 van Arduino. Moet worden aangesloten op de RX-pin van de SIM800-module

Het is altijd een goed idee om de *.ccp- en *.h-bestanden in de bibliotheken te lezen.

Ze bevatten veel interessante hints en kennis.

Stap 2: Laat de RTC DS1307 met DS18B20-sensor werken

Breng de RTC DS1307 met DS18B20-sensor aan het werk
Breng de RTC DS1307 met DS18B20-sensor aan het werk

Ik gebruikte deze kant: simtronyx - de blog voor de DS1307 en DS18B20.

De klok heeft een I2C bus aansluiting en dat is voor de Arduino Uno: A4 (SDA) - A5 (SCL)

De DS18B20 heb ik aangesloten op D3.

Ik las dat je in een sms geen Floats alleen String kunt sturen, dus moest ik floats vertalen naar string.

Dat doe ik met dit codefragment dat ik heb gevonden:

N

MijnString1 = String (huidigeTemp, 2); // Converteer float naar String

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

// convert string naar char begint hier

// Lengte (met één extra teken voor de nulterminator)

int str_len1 = MijnString1.lengte() + 1; // Bereid de tekenreeks (de buffer) voor

char char_array1[str_len1]; // Kopieer het over

MyString1.toCharArray(char_array1, str_len1); // convert string naar char beëindigt haar

Ik zal eerlijk zijn, ik weet niet hoe het werkt, maar het werkt.

Stap 3: De thermistor NTC MF52AT aan het werk krijgen

De thermistor NTC MF52AT aan het werk krijgen
De thermistor NTC MF52AT aan het werk krijgen

Ik werkte eerder met een thermistor, dus het was het makkelijke gedeelte.

Maar ook hier vindt u verschillende oplossingen.

In de uiteindelijke code kun je de mijne vinden.

Hier vind je ook de vertaling Floats to String.

Wat draad en de weerstand van 10 k ohm aan de thermistor gesoldeerd.

Stap 4: Laat iedereen samenwerken

Dus heb ik alle programmaonderdelen bij elkaar geschreven.

Nu moest ik uitzoeken hoe ik elke dag één sms op hetzelfde tijdstip kon verzenden.

Ik las over verschillende ideeën, sommige met een TimerAlarm en andere benadering.

Maar ik heb ergens op het Arduino-forum een eenvoudige oplossing gevonden:

if (nu.uur() == 8 && nu.minuut() == 00 && nu.seconde () == 59)

{

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

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

Maar waarom now.second = 59 omdat het een sms van een hele minuut verstuurt. Voor mij wel, maar probeer het zelf uit.

Na wat testen heb ik het programma geüpload naar de Geekcreit® Nano.

Dit is misschien niet het beste programma om te schrijven:) maar het doet het gewenste.

Omdat de Geekcreit® ATmega328P Nano wat Arduino IDE-problemen heeft, upload ik per terminal (Linux Mint) de USBtinyisp hiermee: avrdude -c usbtiny -p atmega328p -U flash:w:SomeHexFile.hex

Stap 5: Het werkte

Ja het is gelukt en het is in huis geplaatst.

Elke dag om 6.00 uur krijg ik een sms met de temperatuur.

Aanbevolen: