Estou desenvolvendo um produto de nicho que será produzido em um volume bastante baixo (centenas baixas). Estou usando um Atmega uC e um dos requisitos é a capacidade de ser lavável em campo pelo usuário. Meu plano é usar o carregador de inicialização do Arduino com um IC USB para UART (preguiçoso, eu sei, mas nesse volume é provavelmente a melhor opção).
Existem muitas opções. No momento, minha placa protótipo está usando o FTDI FT232RL, mas isso é muito caro para a produção, já que o preço para toda a placa é de cerca de US $ 20.
Os ICs que considerei incluem:
- CH340G
- Opção mais barata, mas qual é o status dos drivers assinados para OSX? Não consigo determinar se isso será completamente plug and play. Alguém sabe qual é o status disso?
- CP2102
- Robusto, sem preocupações com drivers assinados, etc. Mas é mais caro.
- MCP2200
- Também robusto, não se preocupe com drivers assinados. Como escolho isso em relação ao CP2102? Eles são quase o mesmo preço.
Existem outras "dicas" com as opções acima, exceto os drivers assinados? Não quero forçar o usuário a instalar drivers não assinados / adicionar um processo potencialmente doloroso ao procedimento de re-piscar, mas também não quero adicionar US $ 2 ao custo da lista técnica apenas para a capacidade de uso do usuário.
Qualquer orientação / conselho geral seria útil. Obrigado.
Respostas:
A opção mais simples, e a que eu recomendaria aqui, seria usar um microcontrolador que suporte USB nativamente e possa ser programado com um carregador de inicialização USB DFU (Device Firmware Update). Um exemplo desse microcontrolador é o ATmega32U4, como visto no Arduino Leonardo; outro é o ST ST323210. Mesmo que esses microcontroladores sejam um pouco mais caros do que o que você usaria de outra forma, o aumento no custo é provavelmente menor que o custo de uma interface USB UART discreta. O uso de uma única peça também reduzirá o tamanho geral e o consumo de energia do seu dispositivo.
fonte
Há um driver fornecido pela Apple para o CH340, incluído nas versões recentes do MacOS. "AppleUSBCHCOM".
fonte
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.
fonte
Para que seu produto seja programável em campo / cabo flash, use um pino de cabeçalho comum. A pinagem do Arduino é bastante comum. não é necessário incorporar um conversor USB para serial se suas atualizações não forem semanais. Para uma configuração de campo, eu aumentaria o custo do equipamento de programação em campo, em vez da capacidade do programa em campo.
Não é necessário incorporar um conversor serial se você precisar piscar com menos frequência.
Alguns conversores USB (serial) comuns (e de baixo custo) são baseados nos seguintes conjuntos de chips.
FTDI - Drivers do Windows e Linux, mas os drivers podem
bloquear seu cabo - evite o CH340 - Drivers do Windows e Linux
PL2303 - Driver do Windows e Linux
Os drivers estão facilmente disponíveis para a plataforma Windows e Linux. Não posso dizer muito sobre a maçã, pois não posso comprar um laptop da apple.
Prefiro deixar o USB-Serial fora do meu projeto se a probabilidade de programar em campo for <50%.
fonte