Verknüpfen Sie Digital Lab NR05 mit dem Internet der Dinge



In diesem Artikel zeigen wir, wie Sie basierend auf dem Digital Laboratory Kit NR05 ein Gerät zusammenstellen können, das Daten von einem Temperatursensor sammelt und an einen speziellen Standort sendet, um diese Daten zu speichern und zu verarbeiten.

Wie wir wiederholt festgestellt haben, ist das Digital Laboratory Kit aus dem Alphabet der Electronics Engineer-Reihe nicht nur dazu gedacht, die Prinzipien der Mikrocontroller-Programmierung zu lehren und darauf basierende elektronische Geräte zu entwerfen, sondern auch vollständig fertige und nützliche Geräte zu erstellen. In unserem Projekt werden wir ThingSpeak verwenden, eine offene Plattform für Projekte, die auf dem Konzept des Internet der Dinge basieren. Die Plattform dient zum Sammeln und Verarbeiten von Daten von verschiedenen Sensoren. Die Hauptfunktionen von ThingSpeak sind:
- Datenerfassung in Echtzeit;
- mathematische und statistische Datenverarbeitung;
- Datenvisualisierung.

Die ThingSpeak-Plattform verfügt über eine entwickelte API (Application Programming Interface) - eine Schnittstelle zwischen der Site und Ihren Anwendungen, über die Sie nicht nur Daten senden, speichern und darauf zugreifen können, sondern auch verschiedene statistische Methoden für deren Verarbeitung bereitstellen. Beispielsweise wird ein Kanal zum Sammeln von Daten in Betracht gezogen. Insgesamt bietet die Plattform bis zu 8 Kanäle für jeden Benutzer. Mit den Daten jedes Kanals können Sie separate Aktionen ausführen und die Ergebnisse nach eigenem Ermessen verwenden.

Für den Zugang zum Internet verwenden wir ein Wi-Fi-Modul, das auf dem ESP8266-Chip mit AT-Firmware- Version 0.21 basiert . Dieser beliebte Chip dient als Grundlage für den Aufbau einer großen Anzahl von Modulen, die sich physikalisch in Anzahl der Ausgänge, Antennentyp, USB-Schnittstelle und zusätzlichen Funktionen unterscheiden. Grundsätzlich ist jedes auf Basis des ESP8266 gebaute Gerät ein autarkes Gerät, an das externe Sensoren angeschlossen werden können, dies ist jedoch gesondert zu prüfen. In diesem Fall verwenden wir das Modul nur als Gerät für den drahtlosen Internetzugang und verwenden es, um eine Verbindung zu einem beliebigen Zugangspunkt herzustellen und Daten an ThingSpeak zu übertragen. Eine Liste aller AT-Firmware-Befehle zum Vergleich mit dem Arduino-Programm finden Sie hier .

Es sollten einige Worte darüber gesagt werden, wie die Firmware-Version überprüft und das Modul aktualisiert wird, wenn die Version nicht geeignet ist. Schließen Sie dazu das Modul an den USB-UART-Adapter an, z. B. BM8051und geben Sie den Befehl AT + GMR aus. Wenn die Firmware-Version als 0021 angezeigt wird, ist alles in Ordnung. Wenn nicht, gibt es zwei Möglichkeiten: Ändern Sie das Programm für Arduino entsprechend möglichen Nichtübereinstimmungen der Befehlsformate oder führen Sie ein erneutes Flashen des Moduls durch. ESP8266-Flashing-Probleme geben einen separaten Artikel vor, daher werden wir sie hier nicht berücksichtigen. Wir empfehlen Ihnen jedoch, auf die auf Websites und in speziellen Foren zu diesem Modul veröffentlichten Materialien zu verweisen. Als Temperatursensor verwenden wir den im NR05-Kit enthaltenen DS18B20-Sensor. Das Tutorial-Kit enthält ein Kapitel zum Anschließen und Verwenden dieses Sensors sowie Programmierbeispiele zum Lesen und Anzeigen von Temperaturmessungen. Der Sensor wird an die entsprechend gekennzeichneten Kontakte auf der Erweiterungskarte des NR05-Kits angeschlossen.

Als auf ESP8266 basierendes Modul können Sie mehrere Geräte aus dem Master Kit-Sortiment verwenden: MP8266-01 , MP8266-03 , MP8266-07 , MP8266-12E sowie MP3508 . Das letzte Gerät ist das Entwicklerboard und wird maximal „gestopft“. Für die Programmierung sind kein zusätzlicher 3,3-V-Stabilisator und kein USB-UART-Adapter erforderlich - all dies ist bereits auf der Platine enthalten.

Bei anderen Modulen ist bei Bedarf möglicherweise ein USB-UART-Adapter zum Blinken erforderlich, aber ein 3,3-V-Stabilisator (z. B. AMS1117) ist mit Sicherheit erforderlich, da die Spannungsquelle auf der im NR05-Kit enthaltenen Arduino Nano-Platine nicht den erforderlichen Strom liefert Netzteil ESP8266.

In jedem Fall verwenden wir im fertigen Projekt nur vier ESP-Ausgänge: Power, Ground sowie RX und TX, um mit Arduino zu kommunizieren.

Der allgemeine Algorithmus des Programms für Arduino lautet wie folgt:
- Überprüfen Sie die Bereitschaft des ESP;
- Wenn Sie bereit sind, stellen Sie eine Verbindung zum Zugangspunkt her.

(weitere Aktionen werden einmal pro Minute wiederholt):
- Wir lesen Daten vom Temperatursensor;
- die aktuelle Temperatur auf der Anzeige der Erweiterungskarte anzeigen;
- eine Verbindung zur Website thingspeak.com herstellen;
- Übertragen Sie die aktuelle Temperatur auf den entsprechenden Kanal des Standorts.

Über die Theorie vielleicht genug. Lass uns weiter üben.

Registrieren Sie sich zunächst kostenlos auf thingspeak.com und erhalten Sie als Ergebnis der Registrierung einen API-Schlüssel, der beim Übertragen von Daten auf den Kanal verwendet werden muss. Die Benutzeroberfläche der Website ändert sich, sodass unsere Beschreibung in Bezug auf die im Browser sichtbaren Elemente möglicherweise etwas inkonsistent ist. Im Allgemeinen ist die Benutzeroberfläche jedoch intuitiv, sodass beim Registrieren und Erstellen eines neuen Kanals keine ernsthaften Probleme auftreten sollten.
Erstellen Sie nach der Registrierung einen neuen Kanal: Channels-My Channels-New Channel. Der Kanal muss einen Namen und eine kurze Beschreibung erhalten, und der Kanal kann privat und öffentlich sein. Wählen Sie ihn selbst aus. Nach dem Erstellen des Kanals können Sie den gewünschten API-Schlüssel sehen. Wir benötigen den Write API Key, um Daten in den Kanal zu schreiben.

Sie können den Datensatz testen, indem Sie die folgende Zeile in die Browserzeile eingeben:api.thingspeak.com/update?key=yourAPIkey&field1=0
Das letzte Zeichen in der Zeichenfolge (0) kann ein beliebiger Wert sein. Es wird in den Kanal geschrieben. Nach dem Drücken der Eingabetaste antwortet die Site mit einer Nummer, die der Anzahl der im Kanal aufgezeichneten Werte entspricht. Beachten Sie, dass das Mindestintervall zwischen den Aufnahmen 15 Sekunden beträgt. Jetzt können Sie Daten übertragen, ähnliche Linien in Arduino bilden und diese mit ESP8266 an unseren Kanal übertragen.

Das Anschlussdiagramm der Elemente ist in der folgenden Abbildung dargestellt:



Wir haben das MP8266-07-Modul verwendet, daher brauchten wir einen Stabilisator und einen Kondensator. Für den korrekten Betrieb des Moduls ist es außerdem erforderlich, den GPIO15-Pin mit Masse und den CH_PD-Pin (Chipauswahl) mit 3,3 V zu verbinden. Das Modul verbindet sogar eine eingebaute Antenne sicher mit einem Zugangspunkt in einem angrenzenden Raum in einer Entfernung von etwa 20 Metern.

Skizzenliste für Arduino mit detaillierten Kommentaren:
//
#include <DallasTemperature.h>
#include <OneWire.h>
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
// ,
unsigned long pauseTime = 60000;
//
unsigned long currentTime;
unsigned long previousTime = 0;
// D10 D18B20
// ONE WIRE
#define ONE_WIRE_BUS 10
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// WiFi
#define SSID «»
#define PASS «»
// IP thingspeak.com
#define IP «184.106.153.149»
// GET API thingspeak.com
String GET = «GET /update?key=API&field1=»;
// ESP8266
// AT- ;
// ( AT- v0.21 SDK 0.9.5
// esp8266.ru/esp8266-sdk-0-9-5-v0-21 )
SoftwareSerial esp(11, 12); // RX, TX
// LCD-
LiquidCrystal lcd(A1, A2, A3, 2, 4, 7);

void setup()
{
// :
esp.begin(9600); // - ESP8266 9600
Serial.begin(9600); // - COM- ( )
sensors.begin(); //
lcd.begin(16, 2); // LCD-
lcd.clear();
// ESP8266 AT
Send(«AT»);
delay(1000);
// OK,
if(esp.find(«OK»)){
Serial.println(«ESP8266 Ready: OK»);
connectWiFi();
previousTime = millis() + 2*pauseTime;
}
}

void loop(){
currentTime = millis();
if(currentTime — previousTime > pauseTime) {
//
sensors.requestTemperatures();
float tempC = sensors.getTempCByIndex(0);
//
char buffer[10];
String temp = dtostrf(tempC, 4, 1, buffer);
// thingspeak.com
updateData(temp);
lcd.setCursor(0,0);
lcd.print(temp);
lcd.print("\xDF"«C»); // \xDF —
previousTime = currentTime;
}
}

// ESP8266 thingspeak.com
void updateData(String data){
// thingspeak.com
String cmd = «AT+CIPSTART=\»TCP\",\"";
cmd += IP;
cmd += "\",80";
Send(cmd);
delay(3000);
if(esp.find(«OK»))
Serial.println(«CONNECT TO IP: OK»);
else
Serial.println(«CONNECT TO IP: Error»);
//
cmd = GET;
cmd += data;
cmd += "\r\n";
esp.print(«AT+CIPSEND=»);
esp.println(cmd.length());
// ESP8266
if(esp.find(">")){
Serial.print(">");
//
esp.print(cmd);
Serial.print(cmd);
if(esp.find(«OK»)) Serial.println(«DATA SEND: OK»);
else Serial.println(«DATA SEND: Error»);
}
else{
Send(«AT+CIPCLOSE»);
if(esp.find(«OK»)) Serial.println(«CONNECTION FOR IP CLOSE: OK»);
else Serial.println(«CONNECTION FOR IP CLOSE: Error»);
}
Serial.println();
}

// ESP8266
void Send(String cmd){
Serial.print(«SEND TO ESP8266: „);
esp.println(cmd);
Serial.println(cmd);
}

// WiFi
boolean connectWiFi(){
esp.println(“AT+CWMODE=1»);
delay(2000);
String cmd=«AT+CWJAP=\»";
cmd+=SSID;
cmd+="\",\"";
cmd+=PASS;
cmd+="\"";
Send(cmd);
delay(5000);
if(esp.find(«OK»)){
Serial.println(«CONNECT TO WIFI: OK»);
return true;
}
else{
Serial.println(«CONNECT TO WIFI: Error»);
return false;
}
}


Alle Elemente werden zusammengesetzt, das Programm wird gestartet:



Und so sehen die Messergebnisse auf der Website aus:



Das erste Diagramm zeigt die Temperaturänderung über die Zeit und das zweite ist ein Histogramm, das mit in ThingSpeak integrierten MatLab-basierten Visualisierungstools erstellt wurde und anzeigt, wie oft in den letzten 24 Stunden Jeder Temperaturwert wird gemessen. Auf der Baustelle wird ein solches Histogramm als "Temperaturschwankung" bezeichnet, der nächstgelegene russische Begriff ist Temperaturschwankung.

Mit der Digital Laboratory Suite in Kombination mit dem von der ThingSpeak-Plattform bereitgestellten Service ist es somit möglich, Daten von verschiedenen Sensoren in maximal acht Kanälen zu sammeln und zu verarbeiten. Mit der im vorherigen Artikel beschriebenen Vierkanal-Voltmeter-Schaltung können Sie beispielsweise den Zustand von Batterien oder Sonnenkollektoren überwachen und gleichzeitig Wetterinformationen am Installationsort erhalten.

Source: https://habr.com/ru/post/de394357/


All Articles