Saltar al contenido

Configuración del número de serie en el dispositivo CH340 USB-Serial

Esta es la respuesta más correcta que encomtrarás aportar, pero primero obsérvala pausadamente y analiza si se puede adaptar a tu trabajo.

Solución:

No hay almacenamiento en el CH340 y la familia de UART donde pueda colocar una identificación única. Esto también es un problema para el tipo PL2303. He estado tratando de encontrar soluciones para este problema. Primero y más fácil es la posición del dispositivo en el bus USB. Será único para cada dispositivo. Si está utilizando Linux, puede encontrar cada dispositivo en /dev/serial/by-path . También hay un /dev/serial/by-id pero solo habrá una entrada allí para este dispositivo porque muestra el último conectado. Cada uno de los chips FTDI tendrá entradas únicas aquí. Los chips baratos no lo harán, pero cada uno tiene una entrada en /dev/serial/by-path. Esta posición y los nombres de los dispositivos deben persistir durante los reinicios. Si tiene muchos cambios en sus dispositivos USB, conecte todos los dispositivos CH340 al mismo concentrador y luego conéctelo. Los dispositivos se enumerarán en el orden en que están conectados al concentrador. Este truco de un concentrador también debería funcionar para MacOS y Windows, deberían aparecer en el mismo orden.

Método más difícil: reglas de udev. Para dispositivos con una identificación única como FTDI, puede establecer una regla udev que vea su número de serie y luego cree un enlace simbólico a ese dispositivo, es sencillo.

Para dispositivos con el mismo número de serie o sin él, es mucho más complejo. Creé una regla udev que se ve así:

SUBSISTEMA==”tty”, ATTRSproducto==”USB2.0-Serial”, EJECUTAR+=”/usr/local/bin/cheapduino.py %k”, ATTRSidVendor==”1a86″, ATTRS idProducto==”7523″, ENVID_MM_DEVICE_IGNORE=”1″

cuando el dispositivo coincide con el producto y el proveedor del arduino barato, ejecuta el script ‘cheapduino.py’ con el dispositivo como argumento, por ejemplo

baratoduino.py ttyUSB0

Luego, el script de cheapduino se conecta por serie al dispositivo y envía el string ‘ID’ y el software en el dispositivo responde DEVID=THX1138 o lo que sea. Luego, el script crea un enlace simbólico /dev/THX1138 que apunta a /dev/ttyUSB0

Hay muchos inconvenientes en este método. La secuencia de comandos debe expirar si el software de Cheapduino no responde. Además, esto no usa la función SYMLINK de udev, por lo que no limpiará los enlaces muertos al desconectarse, pero los sobrescribirá al volver a conectarse. Todos sus cheapduinos deben tener esta funcionalidad en su software, con diferentes ID de dispositivo configurados. Todos deben usar la misma velocidad en baudios que la secuencia de comandos, a menos que desee escribir una secuencia de comandos muy compleja que lleve mucho tiempo. Finalmente, este método funciona mucho mejor a una tasa de baudios baja que a una tasa de baudios alta, lo que por razones de tiempo puede no funcionar siempre. (¡los duinos baratos son baratos!) 9600 funciona mucho mejor que 115200 que funciona después de varios intentos. Pero dado que todos sus arduinos CH340 deben tener la misma velocidad con este método, solo puede ir tan lento como su dispositivo más rápido.

Sin embargo, este método SÍ funciona, y es lo que estoy usando porque compré demasiadas de estas cosas baratas.

Al final, compre Arduinos genuinos o al menos uno con chips FTDI u otra cosa que envíe una identificación de dispositivo única.

= Rico

Si lo que quieres es diferenciar 2 dispositivos básicamente idénticos, tienes 2 formas:

  • Conéctelos siempre en los mismos puertos y use el árbol USB para diferenciarlos.
  • crea un protocolo de protocolo de enlace, donde cada Arduino utiliza un código que previamente has almacenado en sus respectivas EEPROM. Incluso podría ser posible escribir una función de ayuda para UDEV, de modo que la función de ayuda haga el protocolo de enlace y le diga a UDEV el número de serie que está almacenado en cada EEPROM. Eso permitiría escribir una regla UDEV para sus dispositivos.

CH340B (no el G) tiene una EEPROM donde puede almacenar el número de serie.

https://www.mpja.com/download/35227cpdata.pdf

También hay una herramienta de Windows para leerlo/escribirlo:

http://www.downxia.com/downinfo/196126.html

Intentaré instalar y ver cómo se comporta la versión G…

Si conservas algún recelo o forma de arreglar nuestro escrito te recordamos dejar una apostilla y con deseo lo leeremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *