Inhaltsverzeichnis:

Sendet rechtzeitig eine SMS mit Temperatur - Gunook
Sendet rechtzeitig eine SMS mit Temperatur - Gunook

Video: Sendet rechtzeitig eine SMS mit Temperatur - Gunook

Video: Sendet rechtzeitig eine SMS mit Temperatur - Gunook
Video: DHT11 Sensor für Temperatur und Luftfeuchtigkeit am Arduino 2024, Juli
Anonim
Sendet eine SMS mit Temperatur pünktlich
Sendet eine SMS mit Temperatur pünktlich

Die Idee ist, eine Temperatur-SMS aus dem Haus meines Vaters zu bekommen.

Nichts Besonderes, nur schnelle Teile zusammenbauen.

Die Teile sind:

  • Geekcreit® ATmega328P Nano V3 Controller Board kompatibel mit Arduino
  • DIY NANO IO Shield V1. O Erweiterungsplatine für Arduino
  • DS1307-basiertes RTC IIC / I2C-Echtzeituhrmodul und DS18b20
  • SIM800L Quadband-GSM / GPRS
  • LM2596 Mini-DC-DC-Wandler Einstellbares Abwärts-Netzteilmodul
  • Thermistor NTC MF52AT Temperatur

Erstmal viel aus lesen und suchen.

Bevor ich endlich den Geekcreit® Nano verwende, teste ich alle Teile mit einem Arduino Uno.

Schritt 1: Bringen Sie den SIM800l zum Laufen

Holen Sie sich den SIM800l zur Arbeit
Holen Sie sich den SIM800l zur Arbeit

Ein wichtiger Punkt ist die Leistung des Sim800L.

Ich verwende einen LM2596 Mini DC-DC Wandler, eingestellt auf 3,7 Volt und ein separates Netzteil.

Um die Verbindung mit AT+-Befehlen zu testen, ist diese Seite sehr nützlich:

Schnellstart SIM800 (SIM800L) mit Arduino

Mit Deaktivieren des PIN-Codes mit GSM-Modem bei Befehlen habe ich den SIM-Pin-Code losgeworden.

Die nächste Überlegung, welche Bibliothek. Das Internet bietet andere Lösungen.

Meine Lösung ist die Bibliothek von Mattias Aabmets: AspenSIM800

Sein Beispiel: Send_SMS.ino benutzte ich als Basisprogramm und verbinde nacheinander alle anderen Teile miteinander.

Der Tx-Pin und der Rx-Pin sind Code für:

RX_PIN 10 von Arduino. Muss mit dem TX-Pin des SIM800-Moduls verbunden werden. TX_PIN 11 von Arduino. Muss mit dem RX-Pin des SIM800-Moduls verbunden werden

Es empfiehlt sich immer, die *.ccp- und *.h-Dateien in den Bibliotheken zu lesen.

Sie enthält viele interessante Hinweise und Erkenntnisse.

Schritt 2: Holen Sie sich die RTC DS1307 mit dem DS18B20-Sensor zum Laufen

Holen Sie sich die RTC DS1307 mit DS18B20 Sensor zum Laufen
Holen Sie sich die RTC DS1307 mit DS18B20 Sensor zum Laufen

Ich habe diese Seite verwendet: simtronyx - der Blog für die DS1307 und DS18B20.

Die Uhr hat eine I2C-Busverbindung und das ist für den Arduino Uno: A4 (SDA) - A5 (SCL)

Den DS18B20 habe ich an D3 angeschlossen.

Ich habe gelesen, dass man in einer SMS nicht nur Floats String senden kann, also musste ich Floats in String übersetzen.

Das mache ich mit diesem Code-Schnipsel, den ich gefunden habe:

n

MyString1 = String(currentTemp, 2); // Float in String umwandeln

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

// String in Char umwandeln beginnt hier

// Länge (mit einem zusätzlichen Zeichen für den Nullabschluss)

int str_len1 = MyString1.length() + 1; // Bereiten Sie das Zeichenarray (den Puffer) vor

char char_array1[str_len1]; // Kopieren Sie es über

MyString1.toCharArray(char_array1, str_len1); // String in char umwandeln beendet sie

Ich werde ehrlich sein, ich weiß nicht, wie es funktioniert, aber es funktioniert.

Schritt 3: Bringen Sie den Thermistor NTC MF52AT zum Laufen

Bringen Sie den Thermistor NTC MF52AT zum Laufen
Bringen Sie den Thermistor NTC MF52AT zum Laufen

Ich habe vorher mit einem Thermistor gearbeitet, also war es der einfache Teil.

Aber auch hier finden Sie andere Lösungen.

Im Finaly-Code finden Sie meinen.

Hier finden Sie auch die Übersetzung Floats to String.

Löten Sie etwas Draht und den 10 k Ohm Widerstand an den Thermistor.

Schritt 4: Bringen Sie alle dazu, zusammenzuarbeiten

Also habe ich alle Programmteile zusammen geschrieben.

Jetzt musste ich herausfinden, wie ich jeden Tag eine SMS zur gleichen Zeit versende.

Ich habe über verschiedene Ideen gelesen, einige mit einem TimerAlarm und anderen Ansätzen.

Aber ich habe irgendwo im Arduino-Forum eine einfache Lösung gefunden:

if (jetzt. Stunde() == 8 && jetzt. Minute() == 00 && jetzt. Sekunde() == 59)

{

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

Verzögerung (500); SIM.smsSend(addr, char_array1); // DS18B20 }

Aber warum now.second = 59, weil es eine ganze Minute SMS sendet. Für mich tut es das, aber probiere es selbst aus.

Nach einigem Test habe ich das Programm auf den Geekcreit® Nano hochgeladen.

Dies ist vielleicht nicht das beste Programm zum Schreiben:) aber es tut das Gewünschte.

Da der Geekcreit® ATmega328P Nano einige Arduino IDE-Probleme hat, lade ich per Terminal (Linux Mint) den USBtinyisp mit diesem hoch: avrdude -c usbtiny -p atmega328p -U flash:w:SomeHexFile.hex

Schritt 5: Es hat funktioniert

Ja, es hat geklappt und es ist im Haus platziert.

Jeden Tag um 6:00 Uhr bekomme ich eine SMS mit der Temperatur.

Empfohlen: