lunes, 10 de diciembre de 2018

Cambiando firmware a Orvibo B25

Hace unos meses me compré un enchufe Orvibo "S20", pero me llegó un Orvibo B25, que no era integrable directamente con HomeAssistant, así que se quedó en un cajón hasta que he tenido tiempo de abrirlo y ponerme a trastear.

Lo primero que se ve nada más abrirlo es que tiene un chip muy similar a un ESP8266... (OW8266-02Q)


Imagen del OW8266-02Q

Buscando algo de documentación y probando parece que tiene el mismo pinout que el WT8266-S1



Así que buscamos el datasheet de este último y nos ponemos a soldar cables para intentarlo hacerlo entrar en modo flash (https://www.seeedstudio.com/document/word/WT8266-S1%20DataSheet%20V1.0.pdf)

Los pines que hay que localizar son:

- 5V (para poder hacer las pruebas sin tener que enchufar a la corriente posteriormente)
- GND
- RX
- TX
- GPIO0 (Para entrar en modo download)
- GPIO2 (Para entrar en modo download)
- GPIO15 (Para entrar en modo download)


Esquemita para tener encima de la mesa

Empezamos soldando los 3 primeros (5V, TX y RX) que están localizados en la placa (están indicados por detrás). El GND lo soldé en el regulador de tensión AMS1117 que hay en la parte inferior porque haciendo pruebas de continuidad no tenía muy claro que alguno de los otros lo fuera.





Pasamos a los GPIO necesarios para entrar en modo "download". Esto hay que hacerlo directamente sobre el chip ESP:




A los pines GPIO0, GPIO2 y GPIO15.

Después conectamos los pines de la placa al FTDI de la siguiente manera:



Enchufe FTDI
5V 5V
GND GND
RX TX
TX RX
GPIO0 GND
GPIO2 3.3V
GPIO15 GND


Conectamos el FTDI a nuestro PC y buscamos el puerto usando dmesg. En mi caso es /dev/ttyUSB0, así que procedemos a intentar sacar el firmware original para tenerlo de backup.



Una vez sacado el firmware anterior, procedemos a buscar uno que funcione. En esta ocasión probé con varios "espurna" de la familia Itead pero en ningún caso funcionaba puesto que el pinout no coindicía (el del switch, relé y led).

La siguiente opción era buscar el pinout, para ello hice un programa de arduino para probar entradas y otro para probar salidas.

El software para testear entradas era simple, le decías un pin por el terminal serie, lo accionabas y te decía si cambiaba de estado o no. Así descubrí que el swtich se correspondía al GPIO14.

Para los de salida, algo similar. El software te pedía el pin y cuando lo introduces empieza a alternar entre "HIGH" y "LOW". Así fue posible encontrar el relé (tictac), y los leds azul y rojo.

Tabla resumen de un par de horas de trabajo
Así que continuamos creando un nuevo dispositivo en espurna con los datos del B25, quedando tal que así:


Finalmente se compila y se carga en el dispositivo con:

sudo esptool.py --port /dev/ttyUSB0 write_flash --flash_size 1MB --flash_mode dout 0x00000 espurna-1.13.3-orvibo-b25.bin

Desconectamos todo de la protoboard, probamos que todo funciona correctamente y se crea la red WiFi para configurar espurna. ¡Conseguido! Ahora procedemos a desoldar todos los cables que habíamos puesto previamente para poder cerrar jeje.

El pullrequests en el repo de espurna ya está hecho y aceptado (https://github.com/xoseperez/espurna/pull/1402), pero los binarios compilados todavía no incluyen el del Orvibo B25, así que lo dejo por aquí por si alguien quiere probar antes de que se publique la siguiente release.


Si tenéis alguna duda podéis preguntar en los comentarios.

No hay comentarios:

Publicar un comentario