Reliez le Digital Lab NR05 à l'Internet des objets



Dans cet article, nous allons montrer comment, sur la base du kit de laboratoire numérique NR05, assembler un appareil qui collecte les données d'un capteur de température et les envoie à un site spécialisé pour stocker et traiter ces données.

Comme nous l'avons noté à plusieurs reprises, le kit de laboratoire numérique de l'alphabet de la série Electronics Engineer est destiné non seulement à enseigner les principes de la programmation du microcontrôleur et à concevoir des appareils électroniques basés sur eux, mais également à créer des appareils complètement finis et utiles. Dans notre projet, nous utiliserons ThingSpeak, une plateforme ouverte pour des projets basés sur le concept de l'Internet des objets. La plateforme est conçue pour collecter et traiter les données de différents capteurs. Les principales caractéristiques de ThingSpeak sont:
- la collecte de données en temps réel;
- traitement des données mathématiques et statistiques;
- visualisation des données.

La plateforme ThingSpeak possède une API développée (Application Programming Interface) - une interface entre le site et vos applications, qui vous permet non seulement d'envoyer, de stocker et d'accéder aux données, mais fournit également diverses méthodes statistiques pour les traiter. Par exemple, nous considérerons un canal pour la collecte de données; au total, la plateforme fournit jusqu'à 8 canaux pour chaque utilisateur. Avec les données de chaque canal, vous pouvez effectuer des actions distinctes et utiliser les résultats à votre discrétion.

Pour accéder à Internet, nous utiliserons un module Wi-Fi basé sur la puce ESP8266 avec le firmware AT version 0.21 . Cette puce populaire sert de base à la construction d'un grand nombre de modules différant physiquement par le nombre de sorties, le type d'antenne, l'interface USB et les fonctionnalités supplémentaires. En principe, tout appareil construit sur la base de l'ESP8266 est un appareil autosuffisant auquel des capteurs externes peuvent être connectés, mais cela fait l'objet d'un examen séparé. Dans ce cas, nous utilisons le module uniquement en tant qu'appareil pour l'accès Internet sans fil, et nous l'utiliserons pour se connecter à n'importe quel point d'accès et transférer des données vers ThingSpeak. Une liste de toutes les commandes du firmware AT pour les comparer avec le programme Arduino peut être trouvée ici .

Il convient de dire quelques mots sur la façon de vérifier la version du micrologiciel et de mettre à niveau le module si la version ne convient pas. Pour ce faire, connectez le module à l'adaptateur USB-UART, par exemple BM8051et exécutez la commande AT + GMR. Si la version du micrologiciel est 0021, tout est en ordre. Sinon, il y a deux façons: changer le programme pour Arduino en fonction des incompatibilités possibles des formats de commande, ou reflasher le module. Les problèmes de flash ESP8266 font semblant d'un article séparé, donc ici nous ne les considérerons pas, mais nous vous conseillons de vous référer aux documents publiés sur les sites et forums spécialisés dédiés à ce module. En tant que capteur de température, nous utilisons le capteur DS18B20 inclus dans le kit NR05. Le kit de didacticiel contient un chapitre sur la connexion et l'utilisation de ce capteur, ainsi que des exemples de programmation concernant la lecture et l'affichage des mesures de température. Le capteur est connecté aux contacts étiquetés correspondants sur la carte d'extension du kit NR05.

En tant que module basé sur ESP8266, vous pouvez utiliser plusieurs appareils de la gamme Master Kit: MP8266-01 , MP8266-03 , MP8266-07 , MP8266-12E , ainsi que MP3508 . Le dernier appareil est la carte du développeur et est «bourré» au maximum. Il ne nécessite pas de stabilisateur 3,3 V supplémentaire et un adaptateur USB-UART pour la programmation - tout cela est déjà sur la carte.

Pour les modules restants, un adaptateur USB-UART peut être nécessaire pour clignoter si nécessaire, mais un stabilisateur de 3,3 V (par exemple AMS1117) sera nécessaire à coup sûr, car la source de cette tension dans la carte Arduino Nano incluse dans le kit NR05 ne fournit pas le courant requis pour alimentation ESP8266.

Dans tous les cas, dans le projet terminé, nous n'utilisons que quatre sorties ESP: alimentation, masse et RX et TX pour communiquer avec Arduino.

L'algorithme général du programme pour Arduino est le suivant:
- vérifier l'état de préparation de l'ESP;
- si prêt, connectez-vous au point d'accès;

(d'autres actions sont répétées une fois par minute):
- nous lisons les données du capteur de température;
- afficher la température actuelle sur l'indicateur de la carte d'extension;
- établir une connexion avec le site Web thingspeak.com;
- transférer la température actuelle sur le canal correspondant du site.

À propos de la théorie, peut-être assez. Passons à la pratique.

Tout d'abord, inscrivez-vous gratuitement sur thingspeak.com et obtenez une clé API à la suite de l'inscription, qui doit être utilisée lors du transfert de données vers le canal. L'interface du site étant en train de changer, notre description peut être légèrement incohérente en termes de ce qui est visible dans le navigateur. Mais en général, l'interface est intuitive, donc il ne devrait pas y avoir de problèmes sérieux lors de l'enregistrement et de la création d'une nouvelle chaîne.
Donc, après l'enregistrement, créez une nouvelle chaîne: Channels-My Channels-New Channel. La chaîne doit avoir un nom et une brève description, ainsi que la chaîne peut être privée et publique, choisissez par vous-même. Après avoir créé le canal, vous pouvez voir la clé API souhaitée, nous avons besoin de la clé API d'écriture pour écrire des données sur le canal.

Vous pouvez tester l'enregistrement de données en entrant la ligne suivante dans la ligne du navigateur:api.thingspeak.com/update?key=yourAPIkey&field1=0
Le dernier caractère de la chaîne (0) peut avoir n'importe quelle valeur, il sera écrit sur le canal. Après avoir appuyé sur Entrée, le site répondra avec un nombre correspondant au nombre de valeurs enregistrées dans le canal. Gardez à l'esprit que l'intervalle minimum entre les enregistrements est de 15 secondes. Vous pouvez maintenant transférer des données, former des lignes similaires dans Arduino et les transmettre en utilisant ESP8266 à notre canal.

Le schéma de connexion des éléments est présenté dans la figure suivante:



Nous avons utilisé le module MP8266-07, nous avions donc besoin d'un stabilisateur et d'un condensateur. De plus, pour le bon fonctionnement du module, il est nécessaire de connecter la broche GPIO15 à la masse et la broche CH_PD (sélection de puce) avec une puissance de 3,3 V. Le module connecte en toute confiance même une antenne intégrée à un point d'accès situé dans une pièce adjacente à une distance d'environ 20 mètres.

Liste de croquis pour Arduino avec commentaires détaillés:
//
#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;
}
}


Tous les éléments sont assemblés, le programme est lancé:



Et voici à quoi ressemblent les résultats de mesure sur le site:



Le premier graphique affiche le changement de température au fil du temps, et le second est un histogramme créé par des outils de visualisation basés sur MatLab intégrés à ThingSpeak qui affiche combien de fois au cours des 24 dernières heures chaque valeur de température est mesurée. Sur le site, un tel histogramme est appelé "variation de température", le terme russe le plus proche étant la fluctuation de la température.

Ainsi, en utilisant la suite Digital Laboratory en combinaison avec le service fourni par la plate-forme ThingSpeak, il est possible de collecter et de traiter les données de différents capteurs dans un maximum de huit canaux. Par exemple, en utilisant le circuit de voltmètre à quatre canaux décrit dans l'article précédent, vous pouvez surveiller l'état des batteries ou des panneaux solaires, tout en recevant des informations météorologiques sur le lieu d'installation.

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


All Articles