• Autor de la entrada:
  • Categoría de la entrada:Arduino

Gracias a los módulos inalámbricos de transferencia de datos como el módulo WiFi ESP8266, podemos enviar datos de forma sencilla a MySQL. Por ejemplo podemos enviar la lectura de una LDR a MySQL. Esto es debido a que podemos realizar peticiones GET al servidor web.

Al igual que en otros tutoriales, la técnica consiste en realizar una petición GET a un servidor en la cual le mandamos el valor de la LDR. El servidor ejecuta un código PHP y este último código enlaza con la base de datos almacenando el valor que le enviamos desde la electrónica.

Para conseguir enviar datos de una LDR a MySQL usamos una LDR y un potenciómetro en forma de divisor de tensión y su punto medio lo conectamos al pin analógico 1 del microcontrolador, que es el pin 7. ESP8266 lo conectamos a los pines digitales 3 y 4 que corresponden con los pines físicos 3 y 2 del micro. Alimenta el micro en el pin 8 y masa en el 4.

NUNCA SE TE OLVIDE QUE ESP8266 FUNCIONA A 3.3 VOLTIOS, no lo conectes a 5 voltios.

LDR a MySQL con ESP8266
LDR a MySQL con ESP8266

Es muy importante que tengas claro que dependiendo del módulo de comunicaciones que estés usando la petición GET se hace de una forma o de otra. En este caso usando el módulo ESP8266 con su configuración de fábrica, las peticiones las haremos mandando comandos AT por puerto serie al modulo.

También recordar que el código PHP con el que estoy haciendo el tutorial no es el código ideal para enlazar con la base de datos. Podríamos usar PDO que es mucho más seguro. Pero puesto que este tutorial es sobre el microcontrolador y el módulo WiFi para no complicarnos mucho usamos un PHP sencillo.


LDR a MySQL con ESP8266 y Attiny85 RincónIngenieril

Código PHP

<?php
$conexion = mysql_connect("localhost", "TuUsuario", "TuContraseña");
mysql_select_db("proyectos",$conexion);
mysql_query("INSERT INTO 'var'('valor') VALUES ('" . $_GET['valor'] . "')", $conexion);
?>

Código Attiny85 para ESP8266

#include <SoftwareSerial.h>

SoftwareSerial serie(3, 4);

void setup() {
serie.begin(9600);
}

void loop() {
serie.println("AT+CIPSTART=\"TCP\",\"192.168.1.172\",80");
delay(3500);
serie.println("AT+CIPSEND=28");
delay(3500);
serie.print("GET /ejemplo.php?valor=");
serie.println(analogRead(1));
delay(8000);
}

Enrique Gómez

Ingeniero Electrónico Industrial y Automático, amante de la comunicación audiovisual y de la divulgación ingenieril y científica. Friki de Star Wars, cuenta más de lo que parece. Puedes saber más sobre mi y sobre mis trabajos en www.enriquegomez.me