Généralement, si vous donnez à vos clients la possibilité de flasher votre appareil, vous voulez qu'ils ne le briquent pas.
Ainsi, la principale priorité apportée est une connexion robuste et sûre au périphérique hôte. D'après mon expérience, toutes les puces fonctionnent plutôt bien dans les environnements urbains et de laboratoire que je suppose que vous ciblez.
Considérez également le temps qu'il faudrait pour que le composant fonctionne correctement - votre décompte de production est dans les centaines faibles et vous ajoutez 2 $ à chacun. Cette «perte» vaut-elle plus que votre temps (ou celui du développeur)? Une puce bien documentée pourrait être en fait un meilleur choix, même si elle coûte plus cher.
CH340
Oui, c'est vraiment une mauvaise idée, du moins si vous voulez Plug-and-Play. Pour moi sur Win 8.1, j'avais besoin d'installer manuellement le pilote ( CH340SER.exe
) que je devais télécharger sur le site Web du fabricant (chinois) qui n'avait (à l'époque) aucune traduction en anglais.
Il a été organisé en Chine, ce qui pourrait être un problème pour les individus soucieux de la sécurité et ceux liés par des règles organisationnelles et / ou politiques. En outre, il a été devancé en tant que résultat de recherche par de nombreux sites de téléchargement de pilotes "gratuits" douteux.
S'il s'agissait d'un équipement sérieux (opposé à "juste" un Arduino), ce serait lever les sourcils au plafond. L'installation manuelle peut également être très gênante si vos clients n'ont pas d'équipement dédié au flashage.
Sinon, cette puce a fonctionné comme prévu.
CP2102
Pas grand chose à dire, a fonctionné hors de la boîte et n'a soulevé aucun problème. Serait probablement mon choix pour un design moyen.
FTDI
J'ai celui-ci sur une carte convertisseur USB-série autonome et il fonctionne bien. Comme vous l'avez écrit, c'est assez cher, mais je pense que cela pourrait être un meilleur choix dans des environnements difficiles (par exemple des contacts corrodés sur des connecteurs, également EMI). Pourrait vous donner un sentiment flou chaleureux parce que vous soutenez les développeurs originaux.
Autres idées
FAI
Selon la réponse de @Chetan Bhargava, une option serait d'avoir un connecteur pour le SPI, puis d'utiliser un convertisseur USB-série autonome.
Cela vous oblige également à fournir un connecteur fiable et sûr à utiliser auquel le FAI peut se connecter. Évidemment, vous pouvez vous rendre à bon marché avec des en-têtes de broches ici, mais si vous voulez le faire correctement (et / ou ne faites pas suffisamment confiance à vos clients ), ce connecteur pourrait être plus coûteux que la puce supplémentaire et un connecteur USB d'origine. Les connexions série sont furieusement difficiles à déboguer si elles ne fonctionnent pas, contrairement à l'USB où le client sera au moins informé que le périphérique USB ne fonctionne pas.
Si vous regroupez un convertisseur autonome avec votre carte, vous devrez également payer le prix de la carte du convertisseur. Je suppose que ce ne serait pas moins cher que d'intégrer la puce. Cela pourrait fonctionner si chaque client possède plusieurs de vos cartes, de sorte que le convertisseur pourrait être réutilisé, ou si vous pouvez simplement pousser les coûts d'acquisition du programmateur du côté client.
Si cette option est possible, à ce stade, il y a aussi le propre AVRISP d'Atmel qui est un bon choix ici au lieu du simple USB-à-série, bien qu'un peu dépassé. Je pense qu'il plafonne à environ 100 ou 200 kbps où les convertisseurs USB-série modernes vont dans la gamme mégabits. Mais il est très robuste en matière de (mauvaise) utilisation.
Une autre bonne option pourrait être un connecteur TC2030. Il ne nécessite que des pads sur le PCB pour fonctionner, mais nécessite une certaine expertise (vous devez le tenir sur place jusqu'à la fin de la programmation).
Interfaces de communication
Les microcontrôleurs modernes sont également livrés avec un certain nombre d'autres interfaces de communication (Ethernet, WiFi, Bluetooth) et peuvent généralement être flashées à l'aide de celles-ci. Un exemple serait l' ESP32 qui coûte environ 6 USD et est un SoC avec tous les composants nécessaires pour une connexion wifi. Il est également compatible Arduino (vous pouvez même utiliser l'IDE) et dispose d'un ensemble d'exemples très complet, y compris un chargeur de démarrage WiFi OTA. Vous n'auriez besoin que d'un FAI pour le déploiement initial du chargeur de démarrage.
Si - comme cela semble dans votre question - votre projet est presque terminé, ce n'est probablement plus une option.