Mostrando entradas con la etiqueta FTDI. Mostrar todas las entradas
Mostrando entradas con la etiqueta FTDI. Mostrar todas las entradas

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.

jueves, 6 de diciembre de 2018

Deschinando un ESP-01/01S Relay v4.0

El otro día con tanta oferta durante el BlackFriday pedí cosas que ni recordaba, así que ayer llegó esto:



Como no podía ser de otra forma, pasé a "deschinarlo" para tener la toda la funcionalidad del ESP8266 controlada con el HomeAssistant.

Lo primero fue conectar el ESP-01 al programador serie de la siguiente forma:



Teniendo en cuenta que el pinout es el siguiente mirando la placa desde arriba:
(Imágenes sacadas de https://www.instructables.com/id/ESP0101S-RELAY-MODULE-TUTORIAL/)

Tras esto, conectamos el programador serie a nuestro PC y usando esptool extraemos el firmware original (¡Nunca se sabe para qué puede servir!):

sudo esptool.py --port /dev/ttyUSB0 read_flash 0x00000 0x100000 esp01_backup.bin


Esperamos a que termine y buscamos un firmware que ponerle a nuestro cacharrito. Hemos ido a lo fácil y espurna ya tiene uno compilado que funciona bien, así que descargamos el firmware desde https://github.com/xoseperez/espurna/releases/ , concretamente este (o la versión que haya en el momento que estés leyendo esto):

espurna-1.13.3-generic-esp01s-relay-40.bin

Ahora procedemos a flashearlo de nuevo con esptool.py, así que DESENCHUFAMOS Y VOLVEMOS A ENCHUFAR el programador serie a nuestro PC y ejecutamos el siguiente comando:

sudo esptool.py --port /dev/ttyUSB0 write_flash --flash_size 1MB --flash_mode dout 0x00000 espurna-1.13.3-generic-esp01s-relay-40.bin
Con esto comenzará a flashearse nuestro ESP01.


Una vez terminado el proceso, desenchufamos el ESP01 del programador, lo enchufamos en la placa con su relé y lo alimentamos a 5V:


Una vez conectada la fuente de alimentación, pulsamos el botón reset y ya debería activarse la WiFi del espurna para configurar todo. Está pendiente un minitutorial de esto, pero podéis ver las instrucciones oficiales que están bastante claras: https://github.com/xoseperez/espurna/wiki/Configuration#first-boot

Finalmente, activamos la integración con HomeAssistant y MQTT:



Configuramos los detalles en HomeAssistant, dentro del bloque switch:


Reiniciamos HomeAssistant y listo!


Si tenéis cualquier duda preguntad en los comentarios. Un saludo!

domingo, 2 de noviembre de 2014

Reparando cable Vag-Com 704

Vag-Com es un producto (software + hardware) para diagnosis de los coche del grupo Vag (Audi, VW, Seat y Skoda). Pues bien, hace unos 5 años compré este cable para poder tocar cositas del coche por unos 20€.

Cable Vag-Com v704
Con él activé el cierre automático de pestillos, diagnostiqué un fallo que tenía en el motor de la ventanilla, encendí el piloto de los cinturones de seguridad y algunas otras cosas que no recuerdo.

Después de usarlo tres o cuatro veces dejó de reconocerlo el sistema operativo y ahí se quedó guardado en un cajón, hasta la semana pasada, que salió haciendo limpieza de cables.

Lo primero que hice fue abrirlo para mirar los microcontroladores que tenía y estaba formado por un ATmega que conecta con la interfaz del coche y un FTDI que hace la conexión con el USB. Hace tiempo leí en un foro que estos chips daban problemas (de ahí su precio) y que podían ser reprogramados, así que me puse al lío.

Voy a explicar los pasos necesarios, me voy a ahorrar el proceso de investigación que creo que poco interesa :P
  1. Tener un cable como el de la primera foto o similar, el caso es que sea v704 o v704.1 como el mío.
  2. Descargar este archivo con todo lo necesario. 
  3. Tener una máquina con Windows XP de 32 bits. En mi caso uso una virtualizada con VirtualBox, porque recuerdo que WinXP ya no tiene soporte ^^.
  4. Tenemos que averiguar el VID y el PID de la interfaz USB. 
    1. Si usamos Linux sólo tenemos que conectar el cable e inmediatamente después hacer en la consola un "dmesg | tail" y nos saldrá algo como esto:
      idVendor=0403, idProduct=fa20
    2. Si usamos Windows, tenemos que dar botón derecho en Mi PC -> Administrar -> Adm inistrador de dispositivos -> Interfaz USB genérica. Doble click -> Detalles -> Id. de instancia del dispositivo.
  5. Instalar el software de Vag-Com en la máquina con Windows. IMPORTANTE: Leer el tip al final de la página para esto.
  6. Buscar el la carpeta "C:\Ross-Tech\vag-com" el archivo RT-USB.inf y abrirlo
  7. Dentro de la sección [RossTechHw] debemos poner la siguiente línea, sustituyendo las xxxx por los valores que hemos copiado antes:
    "%USB\VID_xxxx&PID_xxxx.DeviceDesc%=RT-USB,USB\VID_xxxx&PID_xxxx"
  8. Al final del mismo archivo debemos insertar otra línea como esta:
    USB\VID_xxxx&PID_xxxx.DeviceDesc="VAG-COM Compatible USB"
  9. Cerramos el archivo (guardando los cambios, obviamente)
  10. Desconectamos el cable del USB y lo volvemos a conectar. Esta vez, si no encuentra los drivers, le indicamos la carpeta donde los tiene que buscar: "C:\Ross-Tech\vag-com" 
  11. Nos dirá que nuestros drivers están correctamente instalados. Si no es así, tenemos que forzar la instalación buscando Hardware y reinstalando el controlador.
  12. Vamos a cambiar el VID y el PID para que lo reconozca como un VagCom. Para ello abrimos el ejecutable "vidpidfix.exe".
  13. Pulsas en "Search" y te saldrá en el cuadro de texto inferior algo como:
    1 device(s) attached:
    0
  14. Pulsamos en el "0" que nos ha salido, "Open" y nos mostrará información y luego sobre "Write default EE data". Si todo ha salido bien, nos debe mostrar una ventana con "EE_Program Complete!". Pulsamos "Aceptar" y cerramos.
  15. Desconectamos el cable y lo volvemos a conectar.
  16. Nos va a salir otra vez lo de instalar el controlador, debemos hacer lo mismo que en el punto 10.
  17. Ahora vamos a reprogramar el controlador FTDI. Primero instalamos el "Mprog2.8_setup.exe".
  18. Vamos a la ruta de instalación y donde está el .exe (C:\Program Files\MProg 2.8a) y pegamos el contenido de la carpeta DLLs que he adjuntado.
  19. Abrimos Mprog2.8 y vamos a File->Open y seleccionamos el archivo "vagcom.ept", que también va en el zip que he puesto en el punto 2.
  20. Pulsamos el botón con una cruz roja ("Erase All Existing Devices)" y nos debe salir un mensaje "Era successful Device 0".
  21. Pulsamos en el icono del rayito azul ("Program All Existing Devices") y nos debe salir, si todo sale bien, un mensaje: "Programmed Serial Number: Disabled"
  22. Ya tenemos nuestro cable reprogramado.
  23. Cada vez que lo conecto al USB me vuelve a saltar la instalación de controladores, pero bueno, vuelvo a hacer el punto 10 y problema resuelto.
Cable Vag-Com reconocido por el software

TIP IMPORTANTE: El software del Vag-Com (de RossTech) debe instalarse y después, conectarlo al coche sin conexión a Internet (a veces llega el wifi desde casa). Después de conectarlo por primera vez, vamos a "Options" -> "User Interface and Identification" -> "Do not check for updates", guardamos todo, cerramos y podemos volver a conectarnos a Internet.
P.D.: No preguntéis la razón, que no se puede decir. (licen...ejem...cia...) :D