Geralmente, se você der aos seus clientes a capacidade de atualizar seu dispositivo com flash, você deseja que ele não seja bloqueado.
Assim, o principal fornecimento prioritário é uma conexão robusta e segura ao dispositivo host. Na minha experiência, todos os chips funcionam muito bem nas configurações urbanas e de laboratório, que eu suponho que você esteja alvejando.
Considere também o tempo necessário para que o componente funcione corretamente - sua contagem de produção é de poucas centenas e você adiciona US $ 2 a cada. Essa "perda" vale mais do que o seu tempo (ou do desenvolvedor)? Um chip bem documentado pode ser realmente uma escolha melhor, mesmo que custe mais.
CH340
Sim, é realmente uma péssima idéia, pelo menos se você quiser o Plug-And-Play. Para mim, no Win 8.1, eu precisava instalar manualmente o driver ( CH340SER.exe
) que eu precisava baixar do site do fabricante (chinês) que não tinha (na época) tradução para o inglês.
Estava hospedado na China, o que pode ser um problema para indivíduos preocupados com a segurança e aqueles vinculados por regras organizacionais e / ou políticas. Também foi superado como resultado de pesquisa por muitos sites duvidosos de download de drivers "Free".
Se este fosse um equipamento sério (ao contrário de "apenas" um Arduino), isso estaria levantando minhas sobrancelhas para o teto. A instalação manual também pode ser muito irritante se seus clientes não tiverem equipamentos dedicados para piscar.
Caso contrário, esse chip funcionaria conforme o esperado.
CP2102
Não há muito a dizer sobre, trabalhou fora da caixa e não trouxe nenhum problema. Provavelmente seria a minha escolha para um design médio.
FTDI
Eu tenho este em uma placa de conversor USB-Serial autônoma e funciona bem. Como você escreveu, é bastante caro, mas acredito que pode ser uma escolha melhor em ambientes difíceis (por exemplo, contatos corroídos nos conectores, também EMI). Pode dar a você uma sensação confusa de calor, porque você apoia os desenvolvedores originais.
Outras ideias
ISP
De acordo com a resposta de @Chetan Bhargava, uma opção seria ter um conector para o SPI e, em seguida, usar um conversor USB-serial independente.
Isso também requer que você forneça um conector confiável e seguro para o ISP se conectar. Obviamente, você pode ficar barato com cabeçalhos de pinos aqui, mas se você quiser fazer o que é certo (e / ou não confiar suficientemente em seus clientes ), esse conector poderá ser mais caro que o chip adicional e um conector USB padrão. As conexões seriais são extremamente difíceis de depurar se não funcionarem, ao contrário do USB, onde o cliente será notificado pelo menos que o dispositivo USB não está funcionando.
Se você empacotar um conversor independente com sua placa, também terá que pagar o preço pela placa. Eu diria que isso não seria mais barato do que integrar o chip. Isso pode funcionar se cada cliente possuir muitas de suas placas, para que o conversor possa ser reutilizado ou se você puder apenas reduzir os custos de aquisição do programador para o lado do cliente.
Se essa opção for uma possibilidade, neste momento, também existe o AVRISP da Atmel, que é uma boa escolha aqui, em vez do USB-to-Serial simples, embora um pouco desatualizado. Eu acho que atinge cerca de 100 ou 200 kbps, onde os modernos conversores USB-Seriais vão para a faixa de megabits. Mas é muito robusto em relação ao uso (incorreto).
Outra boa opção poderia ser um conector TC2030. Ele requer apenas blocos no PCB para trabalhar, mas requer algum conhecimento (você deve mantê-lo no local até a programação terminar).
Interfaces de comunicação
Os microcontroladores modernos também vêm com várias outras interfaces de comunicação (Ethernet, WiFi, Bluetooth) e, geralmente, podem ser usados com flash. Um exemplo seria o ESP32, que custa cerca de 6 USD e é um SoC com todos os componentes necessários para uma conexão wifi. Além disso, é compatível com Arduino (você pode até usar o IDE) e possui um exemplo muito completo, incluindo um carregador de inicialização WiFi OTA. Você precisaria apenas de um ISP para a implantação inicial do carregador de inicialização.
Se - como parece na sua pergunta - seu projeto estiver quase completo, provavelmente essa não é mais uma opção.