10/03/2019

Jugando con ESP8266-01S



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.