Enlace Digital Lab NR05 a Internet de las cosas



En este artículo, mostraremos cómo, según el kit de Laboratorio Digital NR05, ensamblar un dispositivo que recolecte datos de un sensor de temperatura y los envíe a un sitio especializado para almacenar y procesar dichos datos.

Como hemos señalado repetidamente, el kit de Laboratorio Digital de la serie Alphabet of the Electronics Engineer está destinado no solo a enseñar los principios de la programación de microcontroladores y diseñar dispositivos electrónicos basados ​​en ellos, sino también a crear dispositivos completamente terminados y útiles. En nuestro proyecto, utilizaremos ThingSpeak, una plataforma abierta para proyectos basados ​​en el concepto de Internet de las cosas. La plataforma está diseñada para recopilar y procesar datos de varios sensores. Las características principales de ThingSpeak son:
- recopilación de datos en tiempo real;
- procesamiento de datos matemáticos y estadísticos;
- visualización de datos.

La plataforma ThingSpeak tiene una API (interfaz de programación de aplicaciones) desarrollada, una interfaz entre el sitio y sus aplicaciones, que no solo le permite enviar, almacenar y acceder a datos, sino que también proporciona varios métodos estadísticos para procesarlos. Por ejemplo, consideraremos un canal para recopilar datos; en total, la plataforma proporciona hasta 8 canales para cada usuario. Con los datos de cada canal, puede realizar acciones separadas y utilizar los resultados a su discreción.

Para acceder a Internet, utilizaremos un módulo de Wi-Fi basado en el chip ESP8266 con AT-firmware versión 0.21 . Este popular chip sirve como base para construir una gran cantidad de módulos que difieren físicamente en la cantidad de salidas, tipo de antena, interfaz USB y características adicionales. En principio, cualquier dispositivo construido sobre la base del ESP8266 es un dispositivo autosuficiente al que se pueden conectar sensores externos, pero esto es un tema de consideración por separado. En este caso, usamos el módulo solo como un dispositivo para acceso inalámbrico a Internet, y lo usaremos para conectarnos a cualquier punto de acceso y transferir datos a ThingSpeak. Aquí puede encontrar una lista de todos los comandos de firmware AT para compararlos con el programa Arduino .

Deben decirse algunas palabras sobre cómo verificar la versión del firmware y cómo actualizar el módulo si la versión no es adecuada. Para hacer esto, conecte el módulo al adaptador USB-UART, por ejemplo BM8051y emita el comando AT + GMR. Si la versión del firmware se muestra como 0021, entonces todo está en orden. De lo contrario, hay dos formas: cambiar el programa para Arduino de acuerdo con posibles desajustes de formatos de comando, o volver a actualizar el módulo. Los problemas de flasheo ESP8266 pretenden un artículo separado, por lo que aquí no los consideraremos, pero le recomendamos que consulte los materiales publicados en los sitios y foros especializados dedicados a este módulo. Como sensor de temperatura, utilizamos el sensor DS18B20 incluido en el kit NR05. El kit tutorial contiene un capítulo sobre la conexión y el uso de este sensor, así como ejemplos de programación relacionados con la lectura y visualización de mediciones de temperatura. El sensor está conectado a los contactos etiquetados correspondientemente en la placa de expansión del kit NR05.

Como módulo basado en ESP8266, puede usar varios dispositivos de la gama Master Kit: MP8266-01 , MP8266-03 , MP8266-07 , MP8266-12E , así como MP3508 . El último dispositivo es la placa del desarrollador y está "relleno" al máximo. No requiere un estabilizador adicional de 3.3V y un adaptador USB-UART para la programación; todo esto ya está en la placa.

Para los módulos restantes, puede ser necesario un adaptador USB-UART para flashear si es necesario, pero un estabilizador de 3.3V (por ejemplo, AMS1117) será seguro, ya que la fuente de este voltaje en la placa Arduino Nano incluida en el kit NR05 no proporciona la corriente requerida para fuente de alimentación ESP8266.

En cualquier caso, en el proyecto terminado, usamos solo cuatro salidas ESP: alimentación, tierra y RX y TX para comunicarnos con Arduino.

El algoritmo general del programa para Arduino es el siguiente:
- verifique la disponibilidad del ESP;
- si está listo, conéctese al punto de acceso;

(se repiten más acciones una vez por minuto):
- leemos los datos del sensor de temperatura;
- muestra la temperatura actual en el indicador de la tarjeta de expansión;
- establecer una conexión con el sitio web thingspeak.com;
- transferir la temperatura actual al canal correspondiente del sitio.

Sobre la teoría, tal vez lo suficiente. Pasemos a practicar.

Primero, regístrese gratis en thingspeak.com y obtenga una clave API como resultado del registro, que debe usarse al transferir datos al canal. La interfaz del sitio está cambiando, por lo que nuestra descripción puede no ser un poco coherente con lo que se ve en el navegador. Pero, en general, la interfaz es intuitiva, por lo que no debería haber problemas serios al registrar y crear un nuevo canal.
Entonces, después del registro, cree un nuevo canal: Canales-Mis canales-Nuevo canal. El canal debe tener un nombre y una breve descripción, así como el canal puede ser privado y público, elija usted mismo. Después de crear el canal, puede ver la clave API deseada, necesitamos la clave API de escritura para escribir datos en el canal.

Puede probar el registro de datos ingresando la siguiente línea en la línea del navegador:api.thingspeak.com/update?key=yourAPIkey&field1=0
El último carácter en la cadena (0) puede ser cualquier valor, se escribirá en el canal. Después de presionar Enter, el sitio responderá con un número correspondiente al número de valores registrados en el canal. Tenga en cuenta que el intervalo mínimo entre grabaciones es de 15 segundos. Ahora puede transferir datos, formando líneas similares en Arduino y transmitiéndolas usando ESP8266 a nuestro canal.

El diagrama de conexión de los elementos se presenta en la siguiente figura:



Utilizamos el módulo MP8266-07, por lo que necesitábamos un estabilizador y un condensador. Además, para el correcto funcionamiento del módulo, es necesario conectar el pin GPIO15 a tierra y el pin CH_PD (selección de chip) con una potencia de 3.3V. El módulo conecta con confianza incluso una antena incorporada a un punto de acceso ubicado en una habitación adyacente a una distancia de unos 20 metros.

Listado de croquis para Arduino con comentarios detallados:
//
#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;
}
}


Todos los elementos están ensamblados, el programa se está ejecutando:



y así es como se ven los resultados de la medición en el sitio:



el primer gráfico muestra el cambio de temperatura con el tiempo, y el segundo es un histograma creado por las herramientas de visualización basadas en MatLab incorporadas en ThingSpeak que muestra cuántas veces en las últimas 24 horas Se mide cada valor de temperatura. En el sitio, dicho histograma se llama "variación de temperatura", el término ruso más cercano es fluctuación de temperatura.

Por lo tanto, al usar la suite Digital Laboratory en combinación con el servicio proporcionado por la plataforma ThingSpeak, es posible recopilar y procesar datos de varios sensores en un máximo de ocho canales. Por ejemplo, utilizando el circuito de voltímetro de cuatro canales descrito en el artículo anterior, puede controlar el estado de las baterías o los paneles solares, mientras recibe información meteorológica en el lugar de instalación.

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


All Articles