Inhaltsverzeichnis:

SMS-Text-Temp-Warnungen von einem ATTINY85 und A1 GSM - Gunook
SMS-Text-Temp-Warnungen von einem ATTINY85 und A1 GSM - Gunook

Video: SMS-Text-Temp-Warnungen von einem ATTINY85 und A1 GSM - Gunook

Video: SMS-Text-Temp-Warnungen von einem ATTINY85 und A1 GSM - Gunook
Video: BitBastelei #310 - VSCode und PlatformIO statt Arduino IDE 2024, Juli
Anonim
SMS-Text-Temp-Warnungen von einem ATTINY85 und A1 GSM
SMS-Text-Temp-Warnungen von einem ATTINY85 und A1 GSM

Diese Anleitung zeigt Ihnen, wie Sie die Temperatur von einem einfachen Temperatursensor erfassen und per SMS an Ihr Mobiltelefon senden. Zur Vereinfachung sende ich die Temperatur in einem festgelegten Intervall, aber ich zeige auch, wie dies nur durch Ausnahme / Warnungen erfolgen kann. Die Hardware ist sehr günstig, weniger als 10 Dollar, obwohl die wiederkehrenden SMS-Kosten zu berücksichtigen sind.

Das schwere Heben übernimmt der einfache, aber leistungsstarke ATTINY 85, der die Temperaturdaten erfasst und dann eine SMS auslöst, die über ein AI-Thinker A6 GSM-Modul gesendet wird.

Kurz gesagt, Sie schreiben den ATTINY85-Code in der Arduino-IDE-Umgebung und brennen ihn mit einem USBASP-Seriell/USB-Konverter auf dem ATTINY85. Ich habe das Einrichten des AI-Thinker A6 GSM-Moduls und der Arduino IDE in zwei vorherigen Tutorials behandelt. Der Unterschied besteht darin, das ATTINY- und das A6-GSM-Modul über serielle Kommunikation zu verbinden.

www.instructables.com/id/How-to-Send-an-SM…https://www.instructables.com/id/15-Dollar-Attiny8…

Nach der Programmierung liest der ATTINY die Temperaturdaten von einem Thermometersensor - Dallas 18B20 - und sendet die Daten und Befehle dann per serieller Verbindung an das A6 GSM-Modul, das sie dann als SMS-Text an Ihr Handy / Smartphone sendet.

Hier ist, was Sie brauchen:

1. USBASP Seriell/USB-Konverter.

2. ATTINY 85.

3. AI-Thinker A6 GSM-Modul Version 6 (mit einer Sim mit SMS-Guthaben).

4. 3,3-V-Breadboard-Netzteil für den ATTINY85.

5. 3.3.v USB-Netzteil für das AI-Thinker A6 GSM-Modul.

6. Dallas 18B20 Temperatursensor..

7. 4,7k Widerstand für den 18B20 Sensor.

8. Steckbrett und Kabel.

9. Arduino IDE (ich habe dafür Version 1.8.5. verwendet).

10. Windows X-Laptop (ich habe Version 10 verwendet) mit einem freien USB-Anschluss.

Schritt 1: Programmierung des ATTINY 85

Hier ist der Arduino IDE-Code (Sie müssen die Telefonnummer ändern, an die Sie die SMS senden möchten.)

#einschließen #einschließen #einschließen

// *** // *** Definieren Sie die RX- und TX-Pins. Wählen Sie zwei beliebige // *** Pins, die nicht verwendet werden. Versuchen Sie, D0 (Pin 5) // *** und D2 (Pin 7) zu vermeiden, wenn Sie I2C verwenden möchten. // *** #define RX 3 // *** D3, Pin 2 #define TX 4 // *** D4, Pin 3

// *** // *** Definieren Sie die softwarebasierte serielle Schnittstelle. Verwenden des // *** Namens Serial, damit Code auf anderen // *** Plattformen verwendet werden kann, die hardwarebasierte Serials unterstützen. Bei // *** Chips, die die Hardware-Seriell unterstützen, // *** diese Zeile einfach kommentieren. // ***

SoftwareSerial mySerial = SoftwareSerial(RX, TX);

// *** // *** Pinbelegung ATtiny25/45/85: // *** PDIP/SOIC/TSSOP // *** ================== ================================================ ========================= // *** // *** (PCINT5/RESET/ADC0/dW) PB5 [1]* [8] VCC // *** (PCINT3/XTAL1/CLKI/OC1B/ADC3) PB3 [2] [7] PB2 (SCK/USCK/SCL/ADC1/T0/INT0/PCINT2) // *** (PCINT4/ XTAL2/CLKO/OC1B/ADC2) PB4 [3] [6] PB1 (MISO/DO/AIN1/OC0B/OC1A/PCINT1) // *** GND [4] [5] PB0 (MOSI/DI/SDA/AIN0 /OC0A/OC1A/AREF/PCINT0) // *** // ATTINY 85 Frequenz eingestellt auf interne 8 MHz

// *** // *** Pin, an dem das OneWire-Datenkabel // *** angeschlossen ist. // *** #define ONE_WIRE_BUS 1

// *** // *** Richten Sie eine oneWire-Instanz ein, um mit beliebigen OneWire- // ***-Geräten zu kommunizieren (nicht nur Maxim/Dallas-Temperatur-ICs). // *** OneWire _oneWire = OneWire(ONE_WIRE_BUS);

// *** // *** Übergeben Sie unsere oneWire-Referenz zur Dallas-Temperatur. // *** DallasTemperature _sensors = DallasTemperature (&_oneWire);

Void setup () { // *** // *** Initialisieren Sie den seriellen Port // *** mySerial.begin (115200); Verzögerung(60000);

// *** Starten Sie die Bibliothek. _sensors.begin(); }

Leere Schleife () {

// *** // *** Holen Sie sich die aktuelle Temperatur und zeigen Sie sie an. // *** _sensors.requestTemperatures(); Verzögerung (2000); double tempC = _sensors.getTempCByIndex(0); double tempF = _sensors.getTempFByIndex(0); // auf Fehler prüfen - manchmal beim Start, die Temperatur wird als 85 ° C angezeigt

if (tempC 14 && tempC 18 && tempC = 23 && error_temperature){SMS_temp(tempC, "Zu warm");} }

void SMS_temp(double mytemp, String myalert) { mySerial.println("AT+CMGF=1"); // auf SMS-Modusverzögerung einstellen (1000); mySerial.println("AT+CMGF=1"); // auf SMS-Modusverzögerung einstellen (1000); //mySerial.println("AT+CMGS=\"+IHRE NUMMER\""); // setze die Telefonnummer (in doppelte Anführungszeichen eingeschlossen) Verzögerung (1000); mySerial.print (mytemp, 1); mySerial.print (myalert); Verzögerung (1000); mySerial.write (0x1A); // sendet Strg+z Ende der Nachricht Verzögerung (1000); mySerial.write(0x0D); // Wagenrücklauf in Hex delay(1000); mySerial.write(0x0A); Verzögerung(1000000); // 17 Minuten - Anpassung an Ihre eigene Anwendung }

Öffnen Sie die Arduino IDE-Umgebung - ich habe beschrieben, wie Sie sich in meinem vorherigen anweisbaren, auf das ich zuvor angespielt habe, im Detail zurechtfinden.

Sie benötigen die folgenden Bibliotheken

SoftwareSerial.h

OneWire.h

DallasTemperature.h

Als nächstes konfigurieren Sie die RX- und TX-Pins des ATTINY85, die Sie mit dem A1 Thinker verbinden müssen. Der ATTINY 85 hat 8 Pins, vier auf jeder Seite und wird mit dem Punkt auf der Oberfläche als Referenz ausgerichtet. Pin 1 oder RESET-Pin ist neben dem Punkt.

(In diesem Fall habe ich Pin2 und 3 gewählt - Diese befinden sich auf der gleichen Seite wie der RESET-Pin, der sich neben dem Punkt auf der Oberfläche des ATTINY 85 befindet. Pin 2 ist der nächste Pin nach dem RESET-Pin, während Pin 3 zwischen Pin. liegt 2 und ERDE)

Als nächstes müssen Sie den Temperatursensor konfigurieren -

#define ONE_WIRE_BUS 1

OneWire_oneWire = OneWire(ONE_WIRE_BUS);

DallasTemperature _sensors = DallasTemperature(&_oneWire);

Als nächstes richten Sie den seriellen Software-Port ein

mySerial.begin(115200);

Verzögerung(60000);

und dann die Sensoren mit _sensors.begin() aufrufen;

Als nächstes gibt es die Schleife, die zu einer vorgegebenen Zeit abfragt, die Temperatur aufzeichnet und je nach Wert eine Nachricht / einen Alarm sendet. Es verwendet eine Funktion SMS_temp, in der Sie auch das Timing der Schleife festlegen

Void Schleife () {sensoren.requestTemperatures (); Verzögerung (2000);

double tempC = _sensors.getTempCByIndex(0);

double tempF = _sensors.getTempFByIndex(0);

if (tempC <= 14){SMS_temp(tempC, " GEFÄHRLICH kalt");}

if (tempC > 14 && tempC <= 18) {SMS_temp(tempC, " Ziemlich kalt");}

if (tempC > 18 && tempC < 23) {SMS_temp(tempC, "Temp Genau richtig");}

if (tempC >= 23 && error_temperature){SMS_temp(tempC, "Zu warm");}

}

==============

Als nächstes richten Sie die Arduino IDE ein, um das Hochladen auf den ATTINY85 vorzubereiten.

Einiges zu beachten

1- Wenn Sie nicht über die ATTINY-Board-Familie verfügen, fügen Sie die folgende URL https://raw.githubusercontent.com/damellis/attiny/… in File/Preferences/Additional Boards Manager URL hinzu.

Klicken Sie anschließend in der Arduio IDE auf Tools/Board/Board Manager und suchen Sie nach ATTINY und installieren Sie das neue Board. Ändern Sie den Prozessor auf Attiny85.

Schritt 2: Hochladen des Programms auf den ATTINY85

Hochladen des Programms auf den ATTINY85
Hochladen des Programms auf den ATTINY85

Beziehen Sie sich auch auf meine vorherige Anleitung dazu -

Der ATTINY85 verfügt über zwei Modi, den Programmier- und den Betriebsmodus.1. PROGRAMMIERMODUS Identifizieren Sie zunächst die Pins des ATTINY85. Suchen Sie dazu die kleine Kerbe auf der Oberfläche des Chips, die sich neben dem RST / RESET-Pin befindet. Wenn Sie dies als Referenzpunkt verwenden, können Sie den Rest der Pins identifizieren. Alle diese Informationen finden Sie im A85-Datenblatt -https://ww1.microchip.com/downloads/en/DeviceDoc/At…

Der USBasp und ATTINY85 sollten wie in der Abbildung oben gezeigt angeschlossen werden.

Als nächstes stellen Sie in der Arduino IDE den Programmierer auf USBasp und die Frequenz auf interne 8Mhz.

Verbinden Sie den USBasp mit einem USB-Port Ihres Laptops (unter Windows 10, wenn Sie den USBasp-Treiber nicht haben, verwenden Sie Zadig gemäß der Website

Als nächstes wählen Sie bei angeschlossenem USBasp aus der Arduino IDE Sketch/Upload und hoffentlich sollten Sie den Upload-Fortschritt in roten Buchstaben der Arduino IDE sehen und mit avrdude done enden. Dankeschön.

Alle Fehler in dieser Phase sind normalerweise auf lose Kabel oder den falschen Treiber zurückzuführen.

Schritt 3: Ausführen Ihres Programms

Ausführen Ihres Programms
Ausführen Ihres Programms
Ausführen Ihres Programms
Ausführen Ihres Programms
Ausführen Ihres Programms
Ausführen Ihres Programms

Zunächst etwas zum Dallas 18b20-Thermometersensor. Es hat 3 Pins, Masse (G), Daten (D) und VCC, wie im Bild oben gezeigt. Für den Betrieb ist eine Überbrückung von D und VCC mit einem 4,7k-Widerstand erforderlich. G und VCC sind mit entsprechenden Polen verbunden, während D mit einem ATTINY 85, Pin - [6] PB1 verbunden ist, wie im Code konfiguriert.

Als nächstes verbinden Sie das ATTINY wie folgt mit dem A6 GSM (und oben gezeigt)

ATTINY TX A6 UART_RXdATTINY RX A6 UART_TXd

ATTINY GND A6 GND

und auf der A6 selbst, A6 PWR A6 VCC 5.0A6 RST A6 GND (Noch nicht mit Masse verbinden!!!!!)

Schalten Sie nun beide Geräte ein und berühren Sie nach einigen Sekunden kurzzeitig den A6-Erdungsstift mit dem Kabel, das mit dem A6-RST-Stift verbunden ist. Der A6 schaltet sich aus und wieder ein und hoffentlich erhalten Sie bald Temperaturdaten auf Ihrem Telefon.

Schritt 4: Fazit

Dieses anweisbare mag ziemlich einfach erscheinen, aber die Idee ist, zu veranschaulichen, was mit kostengünstigen Komponenten erreicht werden kann. Wenn Sie Zugang zu Wi-Fi oder einem BLE-Hub haben, gibt es natürlich geeignetere Lösungen.

Andere Funktionen wie das Senden einer SMS an das Telefon zum Initiieren der Temperaturaufzeichnung / -übertragung usw. habe ich nicht behandelt.

Empfohlen: