IoT por un centavo: una guía práctica. Parte 2, software
Continuamos la serie de artículos de guía en los que consideramos cómo implementar un dispositivo IoT simple y económico basado en la nube con un enorme potencial desde cero sin soldaduras y dificultades innecesarias. Tome un microchip ESP8266 limpio, instale el firmware de DeviceHive, configure y escriba una aplicación web simple para acceder a un servidor en la nube. Ensamblamos y conectamos un dispositivo simple al microchip, que se puede controlar con un par de clics en el navegador. Aquí está la segunda parte del ciclo, que describe qué software se necesita, cómo iniciarlo, cómo flashear ESP8266 y hacer amigos con el servidor.El autor del artículo demuestra lo que se discutirá hoy.Los primeros artículos de la serie:• IoT por un centavo, o qué puede hacer DeviceHive.• IoT por un centavo: una guía práctica. Parte 1, hardware.Crear un servidor
Avancemos por el camino más fácil y usemos el área de juegos gratuita DeviceHive. Para hacer esto, vaya aquí y regístrese. Después de eso, inicie sesión y acceda a esta página:¡Felicidades! Ahora tienes tu propio parque infantil en DeviceHive. Para conectarse al grupo de juego desde el exterior, use el enlace Url API. Esta es la dirección que utilizamos para acceder al servidor desde ESP8266 y la aplicación cliente. Para acceder al panel de administración (en la URL del administrador), use el inicio de sesión especificado (inicio de sesión inicial) y la contraseña (contraseña inicial).Una pequeña digresión: el servidor se puede implementar localmente o en un servicio en la nube. Busque las instrucciones de instalación aquí . Puede hacerlo más fácil: inicie el servidor con Docker en una línea: busque aquí una descripción completa . DeviceHive es un proyecto de código abierto. Esto significa que el servidor se puede implementar tanto en casa como en un servicio en la nube, por ejemplo, Azuredocker run -d --name=devicehive -p 8080:80 -p 9001:9001 devicehive/devicehive-standalone
.Firmware
Es hora de hacer el firmware. Para hacer esto, necesitamos conectar el ESP8266 a la computadora, luego conectar el adaptador USB-> UART, la fuente de alimentación y el módulo ESP8266.Instale el controlador para su adaptador. Los usuarios de Linux son más fáciles aquí, porque el núcleo ya incluye la mayoría de estos controladores. Pero los usuarios de Windows y OS X deberán instalar el controlador del adaptador ellos mismos.Enlaces a las páginas de descarga oficiales para los chips más populares:CP210x: www.silabs.com/products/mcu/pages/usbtouartbridgevcpdrivers.aspxPL230x: www.prolific.com.tw/US/ShowProduct.aspx?pcid=41FTDI: www. ftdichip.com/Drivers/VCP.htmCH341: www.wch.cn/index.php?s=/page-search_content-keyword-CH341SER.htmlConecte el adaptador y asegúrese de que el controlador funciona correctamente. En Linux, el dispositivo debería aparecer en el sistema de archivos / dev / ttyUSB *, en OS X - /dev/tty.*, y en Windows - debería aparecer un puerto COM adicional en el administrador de dispositivos. Si todo está bien, desconecte el adaptador de la computadora.A continuación, conecte la salida de la fuente de alimentación (3,3 voltios) al ESP8266 con dos cables. Para que el módulo se encienda, cuando se enciende, se debe permitir que funcione proporcionando un alto nivel a la salida de CH_PD. Es necesario informar al módulo que utilizaremos la memoria interna, por lo que cuando se enciende el GPIO15 debe estar bajo. Y para ingresar al modo de programación, necesitamos aplicar un nivel bajo a GPIO0. Necesitamos este último solo durante el firmware. Suena espeluznante, pero en realidad solo necesitamos conectar los tres cables de CH_PD con el plus de la fuente de alimentación, y conectar GPIO0 y GPIO15 a la tierra (menos) de la fuente de alimentación. Por último, conectamos el adaptador USB-> UART con tres cables más: conectamos los terminales menos la fuente (GND) a la tierra del adaptador,la salida del adaptador RX está conectada a la salida del módulo TX del ESP8266 y la salida del adaptador TX a la salida del módulo RX. Obtenemos el diagrama de conexión final para tres módulos estándar diferentes. Si falta alguna salida, lo más probable es que ya esté conectada dentro del módulo, el cable morado es la conexión más temporal para ingresar al modo de programación.


Un ejemplo de la ejecución de dicha conexión:Como puede ver, no se requería nada para soldar, todas las conexiones se pueden hacer con conectores comunes.Luego, encienda la fuente de alimentación, conecte el adaptador a la computadora y descargue el firmware recompilado de DeviceHive para ESP8266. En el momento de la publicación, la primera y última versión está disponible aquí .Siempre se pueden encontrar nuevas versiones precompiladas en GitHub . También puede tomar el repositorio completo aquí , compilar el firmware usted mismo y modificarlo como desee. Todo el código en el repositorio está licenciado bajo MIT.Descomprima el archivo descargado del enlace anterior en un directorio separado, ejecute esp-flasher- <su nombre de SO> desde la consola (los usuarios de Windows pueden simplemente hacer doble clic en esp-flasher-win.exe). Como resultado, deberías tener algo como esto:Además de la utilidad incluida para el firmware ESP8266, puede usar cualquier otro, por ejemplo, esptool .¡Felicitaciones, el firmware está instalado y ya está funcionando! Ahora desconecte la tierra del pin GPIO0 (ya no será necesario) para que el módulo no vuelva a ingresar al modo de programación. Para conectarse al terminal ESP8266, ejecute esp-terminal- <su nombre de sistema operativo> o cualquier otro terminal de puerto serie que admita caracteres de escape, por ejemplo, PuTTY o la 'pantalla' de la utilidad GNU. Parámetros de puerto: velocidad 115200, 8N1.Ambas utilidades incluidas pueden detectar automáticamente el puerto al que está conectado el ESP8266, es decir no se requieren parámetros al inicio.Iniciando la terminal, veremos la invitación:De hecho, este es un terminal similar de Unix que admite la finalización automática (tecla Tab) y el historial (teclas arriba, abajo). Pero, de hecho, no hay archivos o sistemas operativos allí. Una lista de comandos disponibles está disponible en 'ayuda':Estamos interesados en el comando 'configurar'. Ejecútelo para configurar el dispositivo.La utilidad hará cinco preguntas simples:- El nombre de su red Wi-Fi.
- Contraseña de su red wifi.
- La dirección API de su servidor.
- DeviceID de su dispositivo.
- DeviceKey de su dispositivo.
En la "URL del servidor DeviceHive" ingrese la "URL del API" del servidor. En "DeviceID", un identificador de dispositivo único para el servidor, es con este nombre que distinguiremos los dispositivos en el servidor. "DeviceID" puede ser texto sin formato. En particular, puede generar un GUID de texto haciendo clic en Tabulador. Y en la última solicitud de DeviceKey, ingrese la contraseña seleccionada. Se puede generar presionando la tecla Tab.Aquí vale la pena hacer una pequeña digresión. ESP8266 utiliza la autenticación del servidor por DeviceID. Tan pronto como DeviceID y DeviceKey se registren en el servidor, no se puede conectar ningún otro dispositivo con el mismo DeviceID pero con una contraseña diferente. En el futuro, es posible que se requiera una contraseña de DeviceKey solo si desea reemplazar el dispositivo físico con otro dispositivo con el mismo DeviceID.Así es como se ve la configuración:Si hicimos todo correctamente, podemos ver la salida de depuración y asegurarnos de que el dispositivo se haya conectado correctamente al servidor. Aquí está la salida de depuración de un dispositivo conectado con éxito:El adaptador USB-> UART ahora se puede desactivar. Puede dejarlo si desea poder ver la salida de depuración o el estado de la red.Ahora en la pestaña "Dispositivos" en el panel de administración aparecerá el primer dispositivo.Intentemos enviar el primer comando al dispositivo . Para hacer esto, vaya al panel de administración de la siguiente manera: "Dispositivos" -> "ESP" -> "detalles" -> "comandos" -> "ingresar nuevo comando". En el campo "nombre", especifique "gpio / read" y presione "push". Equipo enviado!La respuesta llegará muy rápidamente, pero los resultados de los comandos en el panel de administración no se actualizan automáticamente. Para esto, hay un botón de actualización opuesto al comando. Haga clic en él uno o dos segundos después del envío y verá esta pantalla:¿Que pasó? Al presionar el botón, envió un comando desde el panel de administración (que en este caso es el cliente del servidor) al comando del servidor. ESP8266 lo recogió, lo ejecutó y pasó el resultado al servidor. Al hacer clic en el botón Actualizar, solicitó al servidor el resultado del comando: la lista de comandos disponibles se encuentra en el archivo PDF que vino con el firmware. También está disponible aquí , pero puede no coincidir con la versión de su firmware.{"0":"1","1":"0","2":"1","3":"0","4":"1","5":"1","12":"0","13":"0","14":"0","15":"0"}
Por una buena tradición, iluminaremos el LED en el tablero. En la mayoría de los módulos ESP8266, el LED está en una salida de tipo TX, y lo trataremos. Se ilumina cuando aparece un nivel bajo en la salida del chip. En el documento veremos que GPIO1 no es más que la misma salida TX, así que establezcamos un cero lógico. En este caso, el LED se ilumina sin ningún problema. Después de eso, el terminal en el módulo dejará de funcionar hasta el reinicio.Ahora configuramos el comando también indicado en el documento. En el campo "nombre" establecemos y en el campo "parámetros" - . Después de ejecutar el comando, el LED en el tablero debería encenderse, como en la foto de abajo."gpio/write"
"gpio/write"
{"1":"0"}
Un LED azul debajo del cuarzo, junto al cual aún brilla uno rojo, lo que indica que la placa tiene energía.Como puede ver en la foto, solo dos cables con alimentación y dos puentes están conectados al módulo para encender el módulo en el modo correcto. Para apagar, envíe un comando con un parámetro . El formato de los parámetros del comando es JSON ordinario. Los campos que se pueden completar, así como sus posibles valores, se describen en el archivo PDF. Hoy descubrimos cómo enviar los comandos más simples desde el panel de administración al dispositivo. En el próximo artículo, le diremos cómo escribir una aplicación cliente simple para el servidor que le permita acceder al dispositivo e implementar un dispositivo un poco más serio (¿recuerda el láser del primer artículo?). ¡Estén atentos, será interesante!{"1":"1"}
Publicado por Nikolai Khabarov, Desarrollador Integrado Senior. Source: https://habr.com/ru/post/es383027/
All Articles