Buenas,
Ha llovido mucho desde el ultimo mensaje, pero con el calor
y el poco tiempo, ni de escribir tiene uno ganas. Hoy vengo a escribiros sobre
los módulos ESP8266-01S, son baratos y muy funcionales, ahora bien, hay que
pelearse con ellos si quieres conseguir que funcionen.
|
|
Figura 1: módulo ESP8266-01S. Figura 2: ESP8266-01s con
adaptador usb.
|
Instalar este tipo de placa en el Arduino es simple Podéis
seguir este enlace,
o si ya tienes practica añadir esta dirección,
en “Gestor de URLs Adiciones de Tarjetas” en preferencias e instalar el modelo
ESP8266, pero para transferir el programa tendrás que poner el Pin 5 a GND, yo
he optado por una solución poco elegante como me venían tres adaptadores de
USB, en uno les he hecho un puente y lo uso solamente para programar. Los otros
para depurar el programa.
|
Figura 3: Pines
|
Una vez sobrepasado el escollo de poder programarlos, se comportan
igual que un Arduino, hay que adaptar algunas librerías, pero funcionan muy
bien, para hacer “internet de las cosas”. Aquí el primer proyecto para el que
lo hemos usado es medir mediante un acelerómetro, el uso de un palo de billar. Y
es que necesitamos saber el momento exacto que el usuario golpea la bola. Cosas
de los científicos.
|
|
Figura 4 y 5 : el Sensor
ADXL345 conectado con ESP8266-01s mediante I2c
|
Bueno he explicado que aquí se terminan los problemas, y así
seria si no fuerais tan tozudos como yo. He empleado este sensor, pero no ha
sido el único que probado sin éxito, el motivo principalmente por
desconocimiento o torpeza.
Cuando empleamos la librería “Wire.h” en un Arduino o teensy
y empleamos el i2c solo tenemos que
hacer
wire.begin();
Con esta placa hay que indicarle que pines son el SDA y el SCL
wire.begin(0,2);
Pues esta tontada me hizo perder toda la mañana a parte de rehacer
librerías que eran incompatibles con el ESP8266. De todo se aprende.
Os dejo el código para que envié la información vía UDP, a
quien le pregunte. La información del sensor la podéis encontrar aquí ADXL345
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include "Wire.h"
#include <ADXL345.h>
#include<stdio.h>
unsigned int localPort = 8888;
char msgString[128];
WiFiUDP Udp;
ADXL345 adxl;
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(STASSID, STAPSK);
while (WiFi.status() != WL_CONNECTED) {
Serial.print('.');
delay(500);
}
Wire.begin(0,2); //Iniciando I2C
Serial.print("Connected! IP address:
");
Serial.println(WiFi.localIP());
Serial.printf("UDP server on port
%d\n", localPort);
Udp.begin(localPort);
accelerometreSetup();
}
void loop() {
readSensor();
if (Udp.parsePacket()) {
Udp.beginPacket(Udp.remoteIP(),
Udp.remotePort());
Udp.write(msgString);
Udp.endPacket();
}
}
Anakleto.
No hay comentarios:
Publicar un comentario