Não há armazenamento no CH340 e na família de UARTs em que você pode colocar um ID exclusivo. Este também é um problema para o tipo PL2303. Eu tenho tentado encontrar soluções para este problema. Primeiro e mais fácil é a posição do dispositivo no barramento USB. Será exclusivo para cada dispositivo. Se você estiver usando o Linux, poderá encontrar cada dispositivo em / dev / serial / by-path. Também existe um / dev / serial / by-id, mas haverá apenas uma entrada para este dispositivo, pois mostra o último conectado. Os chips FTDI terão entradas únicas aqui. Fichas baratas não, mas cada uma tem uma entrada em / dev / serial / by-path. Esta posição e os nomes dos dispositivos devem persistir durante as reinicializações. Se houver muitas alterações nos seus dispositivos USB, conecte todos os dispositivos CH340 no mesmo hub e conecte-os. Os dispositivos serão enumerados na ordem em que estão conectados ao hub. Esse truque de um hub também deve funcionar para MacOS e Windows; eles devem aparecer na mesma ordem.
Regras mais rígidas do método udev. Para dispositivos com um ID exclusivo, como o FTDI, você pode definir uma regra do udev que veja o número de série e, em seguida, criar um link simbólico para esse dispositivo, é simples.
Para dispositivos com o mesmo ou nenhum número de série, é muito mais complexo. Eu criei uma regra do udev que se parece com isso:
SUBSISTEMA == "tty", ATTRS {produto} == "USB2.0-Serial", EXECUÇÃO + = "/ usr / local / bin / cheapduino.py% k", ATTRS {idVendor} == "1a86", ATTRS { idProduct} == "7523", ENV {ID_MM_DEVICE_IGNORE} = "1"
quando o dispositivo corresponde ao produto e fornecedor do arduino barato, ele executa o script 'cheapduino.py' com o dispositivo como argumento, por exemplo
cheapduino.py ttyUSB0
Em seguida, o script cheapduino se conecta por série ao dispositivo e envia a string 'ID' e o software no dispositivo responde DEVID = THX1138 ou o que for. O script cria um link simbólico / dev / THX1138 que aponta para / dev / ttyUSB0
Existem muitas desvantagens neste método. O script deve expirar se o software no cheapduino não responder. Além disso, isso não está usando a função SYMLINK do udev, para que ele não limpe os links mortos ao desconectar, mas os substituirá ao reconectar. Todos os seus dicionários baratos devem ter essa funcionalidade em seu software, com diferentes IDs de dispositivo definidos. Todos eles devem usar a mesma taxa de transmissão que o script, a menos que você queira escrever um script muito complexo que demore muito. Por fim, esse método funciona muito melhor em baixa taxa de transmissão do que em alta taxa de transmissão, o que, por razões de tempo, pode não ser bem sucedido todas as vezes. 9600 funciona muito melhor que 115200, que funciona após várias tentativas. Mas como todos os seus arduinos CH340 devem ter a mesma velocidade com esse método, você pode ir tão devagar quanto o seu dispositivo mais rápido.
Esse método funciona, porém, e é o que estou usando porque comprei muitas dessas coisas baratas.
No final, compre Arduinos genuínos ou pelo menos outros com chips FTDI ou qualquer outra coisa que envie um ID de dispositivo exclusivo.
= Rico