Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
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
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
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
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.