In generale, se dai ai tuoi clienti la possibilità di eseguire il flashing del tuo dispositivo, vuoi che non lo facciano.
Pertanto, la principale priorità fornita è una connessione solida e sicura al dispositivo host. Nella mia esperienza, tutti i chip funzionano piuttosto bene negli ambienti urbani e di laboratorio che presumo tu stia prendendo di mira.
Considera anche il tempo necessario per far funzionare correttamente il componente: il tuo conteggio della produzione è basso, e aggiungi $ 2 a ciascuno. Quella "perdita" vale più del tuo tempo (o dello sviluppatore)? Un chip ben documentato potrebbe effettivamente essere una scelta migliore, anche se costa di più.
CH340
Sì, è davvero una cattiva idea, almeno se vuoi Plug-And-Play. Per me su Win 8.1, dovevo installare manualmente il driver ( CH340SER.exe
) che dovevo scaricare dal sito Web del produttore (cinese) che non aveva (a quel tempo) traduzione in inglese.
È stato ospitato in Cina, che potrebbe essere un problema per gli individui orientati alla sicurezza e quelli vincolati da regole organizzative e / o politiche. Inoltre è stato superato come risultato di ricerca da molti siti di download di driver "gratuiti".
Se si trattasse di un equipaggiamento serio (al contrario di "solo" un Arduino), questo avrebbe sollevato le mie sopracciglia al soffitto. L'installazione manuale potrebbe anche essere molto fastidiosa se i tuoi clienti non dispongono di apparecchiature dedicate per il flashing.
Altrimenti, questo chip ha funzionato come previsto.
CP2102
Non c'è molto da dire, ha funzionato fuori dagli schemi e non ha sollevato alcun problema. Probabilmente sarebbe la mia scelta per un design medio.
FTDI
Ho questo su una scheda convertitore USB-seriale standalone e funziona bene. Come hai scritto, è piuttosto costoso, ma credo che potrebbe essere una scelta migliore in ambienti difficili (ad esempio contatti corrosi sui connettori, anche EMI). Potrebbe darti una calda sensazione confusa perché supporti gli sviluppatori originali.
Altre idee
ISP
Secondo la risposta di @Chetan Bhargava, un'opzione sarebbe quella di avere un connettore per l'SPI e quindi utilizzare un convertitore USB-seriale autonomo.
Ciò richiede inoltre di fornire un connettore affidabile e sicuro da utilizzare per il collegamento dell'ISP. Ovviamente puoi andare a buon mercato con le intestazioni dei pin qui, ma se vuoi farlo bene (e / o non fidarti abbastanza dei tuoi clienti ), allora questo connettore potrebbe essere più costoso del chip aggiuntivo e di un connettore USB di serie. Le connessioni seriali sono furiosamente difficili da eseguire il debug se non funzionano, al contrario di USB in cui il cliente verrà almeno informato che il dispositivo USB non funziona.
Se unisci un convertitore standalone con la tua scheda, dovrai pagare anche il prezzo per la scheda del convertitore. Suppongo che questo non sarebbe più economico dell'integrazione del chip. Questo potrebbe funzionare se ogni cliente possiede molte delle tue schede, quindi il convertitore potrebbe essere riutilizzato o se puoi semplicemente spingere i costi di acquisizione del programmatore sul lato cliente.
Se questa opzione è una possibilità, a questo punto, c'è anche il proprio AVRISP di Atmel che è una buona scelta qui invece del semplice USB-a-seriale, anche se un po 'obsoleto. Penso che si chiuda a circa 100 o 200 kbps in cui i moderni convertitori USB-seriale vanno nella gamma dei megabit. Ma è molto robusto per quanto riguarda il (cattivo) utilizzo.
Un'altra buona opzione potrebbe essere un connettore TC2030. Funziona solo con i pad sul PCB, ma richiede un po 'di esperienza (devi tenerlo sul posto fino al termine della programmazione).
Interfacce di comunicazione
I moderni microcontrollori sono inoltre dotati di numerose altre interfacce di comunicazione (Ethernet, WiFi, Bluetooth) e in genere possono essere utilizzate come flash. Un esempio potrebbe essere l' ESP32 che ha un costo di circa 6 USD ed è un SoC con tutti i componenti necessari per una connessione wifi. Inoltre è compatibile con Arduino (puoi persino usare l'IDE) e ha un set di esempi molto accurato, incluso un bootloader OTA WiFi. Avresti solo bisogno di un ISP per la distribuzione iniziale del bootloader.
Se - come sembra nella tua domanda - il tuo progetto è per lo più finito, questa probabilmente non è più un'opzione.