Volvemos al ataque con una librería muy interesante que nos puede ayudar mucho en nuestros proyectos y que nos facilitará la comunicación de cualquier proyecto basado en microcontroladores tipo Arduino, (AVR) ESP8266, ESP32 (espressif), etc para que podamos comunicarnos con un sistema MySQL como si fuéramos un cliente, y ejecutar nuestras consultas contra la base de datos MySQL.
Ingredientes.
- Una máquina donde alojar nuestros servicios de MySQL, apache y demás
- Odroid XU4
- octacore
- 2 GB RAM
- eMMC 16 GB
- Odroid XU4
- Un sistema operativo
- Debian / ARMBIAN
- Una base de datos a elegir
- Un microcontrolador con pila de protocolos TCP /IP
- Arduino + Shield ethernet
- ESP8266
- ESP32
- Libreria MySQL
- https://github.com/ChuckBell/MySQL_Connector_Arduino
- O la descargamos en el IDE de Arduino.
- Arduino IDE
- Librerías para ESP8266 (como se hace aquí)
En este recetario no vamos a entrar en la instalación de Linux, Apache, MySQL, PHP (LAMP), con estos enlaces tendremos todo lo necesario para nuestra prueba.
- https://www.tecmint.com/install-lamp-with-phpmyadmin-in-ubuntu-18-04/
- https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-debian-8
Vamos a usar un módulo ESP8266 con un sabor a WEMOS(LOLIN)D1 R2
Vamos a cocinar nuestro programa
Aquí tenemos nuestros ingredientes.
.- 1 Wemos (LOLIN) D1 R2
.- OLED I2C (0.98”) (libreria SSD1306Wire)
.- Giroscopio I2C (aunque no lo vamos a usar para las pruebas de base de datos)
.- Programa de ejemplo de manejo de bases de datos con el ESP8266 (github de zaragoza maker space)
El ejemplo está dividido en diferentes apartados, un programa principal (.ino) y diferentes librerías locales (.h)
define.h:
.- Información de a que pines conectamos nuestro bus de datos I2C
.- Información sobre la WiFi a la que me voy a conectar (SSID, PSK)
.- Función para trabajar por tiempos sin usar delay
oled.h
.- Inicializar la pantalla
.- Mostrar mensajes en pantalla (recomendable ver ejemplo que viene con la librería SSD1306Wire)
.- Función de mostrar información por pantalla (debugoled(String msg));
wifi.h
.- Función de conectar a una red WiFi indicada en el define.h
mysql.h
.- Conectar a una base de datos.
.- Ejemplo de la consulta SQL necesaria para introducir los datos
Nota:
Importante para trabajar con I2C conocer las direcciones físicas de nuestros dispositivos (usar librería I2Cdetect)