Realizzare sequencer di segnalatori

Salve, vorrei realizzare un dispositivo che comanda un gruppo di mini-segnalatori, una ventina diciamo, che si accendono uno alla volta per una breve durata, in una sequenza che viene ricevuta dall'esterno. Un "segnalatore"può essere un micro-led, un motorino vibrante, un altoparlante, un emettitore di ultrasuoni, un emettitore di onde fm, una rotella che avanza di un giro, ecc.. . Comunque vorrei iniziare a fare i primi test con dei motorini vibranti. Il dispositivo che invia i comandi al microcontrollore è uno smartphone android: con un'applicazione dedicata, che programmerò io stesso, questo invia via bluetooth i comandi che indicando quale segnalatore si deve accendere e per quanto tempo. Dal lato del circuito però non so come iniziare: quali motorini scegliere, quale ricevitore bluetooth scegliere, quale piattaforma arduino per un primo prototipo. Il circuito finale dovrà essere portatile, quindi in un secondo momento vorrei affrontare il discorso di come alimentarlo e come realizzare una versione più piccola sfruttando la possibilità di portare tutti i componenti su una breadboard standalone. Chiedo aiuto non per la parte informatica, per la quale sono competente, ma solo per la parte elettronica. Grazie in anticipo a chi si interesserà e vorrà seguirmi con indicazioni e suggerimenti.

Non sono un elettronico. Per i motorini bisogna capire bene quel che ti serve, questo può andare ? http://www.robot-italy.com/it/vibrating-mini-motor-disc.html

Per il bluetooth hai provato a vedere questo megatopic sull'argomento? http://forum.arduino.cc/index.php?topic=104903.0

1) Scelta del Micro Visto che vuoi farti uno standalone, a meno che tu non abbia esperienza di PCB etc, non e' che hai molta scelta. Un ATmega328 ( quello su Arduino ) e' quasi d'obbligo Senza ricorrere a circuiteria esterna ( chip expander, etc ) ha 20 porte a disposizione, due ti serviranno per il Bluetooth, ne rimangono 18. Se ti bastano e se non devi comandare altro, ok.

2) Scelta dei motorini Qui dipende da quanto vuoi spendere, da quanto tempo sei disposto ad aspettarli, dalla tensione di lavoro e dalla corrente assorbita. Facciamo degli esempi, con questi o Questi

la tensione di lavoro e' di 3V-4.5V , ma la corrente assorbita e' sempre troppa per poter gestire ogni motorino direttamente dai pin dell'Atmega328, serve quindi qualcosa che faccia da amplificatore di corrente e puo' essere un transistor ( uno per ogni motorino ) o dei chip ( ad esempio ULN2003 ) che contengono al loro interno 7 ( o 8 ) amplificatori

3) Bluetooth C'e' il classico HC-05 che va' piu' che bene . qui un esempio

prima di tutto grazie per queste prime risposte. devo valutare bene che strade prendere in relazione a una serie di fattori: - come tempistiche vorrei avere il circuito funzionante entro il 15-20 ottobre; - per quanto riguarda la spesa economica, non ci sono problemi, ma vorrei comunque spendere i soldi in modo intelligente, nel senso comprando le cose quando servono e solo quali servono; - ho la possibilità di recarmi presso due negozi di componenti elettronici nella mia città, ma se non trovo qualcosa posso tranquillamente ordinare da qualsiasi sito; - la scelta del motorino si può rimandare, potrei utilizzare anche dei micro-led nel frattempo, perchè è più importante realizzare tutta la parte logica e di controllo prima; - mi sembra di capire che il micro-controllore ATmega328 va comunque programmato per poter interpretare i segnali bluetooth, vorrei capire quanto pesa questo lavoro sia dal punto del tempo che della complessità; - inoltre sono indeciso se utilizzare una piattaforma arduino normale, per realizzare un primo prototipo, e per poi convertire tutti in breadboard dopo, oppure se lavorare direttamente su come dovrebbe essere il dispositivo finale - ne approfitto anche per chiedere se c'è invece la possibilità di simulare arduino con il computer, nel senso se esista un simulatore che riproduca ATmega328 e HC-05 tramite il bluetooth integrato nel computer, per poter realizzare così parte del lavoro rimandando l'acquisto dei componenti fisici - ultima cosa, rivolta sempre a chi potrebbe orientarmi meglio, sono indeciso se controllare i motorini con l'app android o programmando un microcontrollore. la nota rilevante è che sono un esperto programmatore software per pc, ma non ho mai programmato microcontrollori.

ultrasound91:

  • ne approfitto anche per chiedere se c’è invece la possibilità di simulare arduino con il computer, nel senso se esista un simulatore che riproduca ATmega328 e HC-05 tramite il bluetooth integrato nel computer, per poter realizzare così parte del lavoro rimandando l’acquisto dei componenti fisici

No, non c’e’

  • come tempistiche vorrei avere il circuito funzionante entro il 15-20 ottobre;

Auguri

  • mi sembra di capire che il micro-controllore ATmega328 va comunque programmato per poter interpretare i segnali bluetooth,vorrei capire quanto pesa questo lavoro sia dal punto del tempo che della complessità;

E chi puo' dirlo... certo che se parti da Zero la vedo dura

  • ultima cosa, rivolta sempre a chi potrebbe orientarmi meglio, sono indeciso se controllare i motorini con l'app android o programmando un microcontrollore. la nota rilevante è che sono un esperto programmatore software per pc, ma non ho mai programmato microcontrollori.

Questi dipende da cosa ci devi fare e da come vuoi gestire i motorini. Certamente serve una parte che riguarda la comunicazione Bluetooth, ma dato che viene visto come un collegamento Seriale non e' molto complessa. Poi servira' comunque una parte di software che interpreti il comando ricevuto e agisca di conseguenza. Insomma puoi o comandare i motori uno ad uno o invare dei codici che ti fanno fare certe sequenze. Questo dipende tutto da cosa vuoi fare con 18 motorini vibranti

Brunello: Questo dipende tutto da cosa vuoi fare con 18 motorini vibranti

]:D ]:D ]:D :grin:

maligno..

comunque m'era venuto il dubbio anche a me

  • la memoria dell'atm328 è 32 kb totali, mi servirebbe di più. che scelte ho?
  • i pulsanti di controllo che devo montare sono tre: uno è è il pulsante di accensione/spegnimento del dispositivo, quindi mi basterà metterlo fra la batteria e il microcontrollore, gli altri due dei controlli. per realizzare questi due controlli ho letto di una metodica: si prende un pin positivo e lo si collega a un altro pin, di quelli numerati, tramite un interruttore. si imposta il pin numerato come input. si legge lo stato della porta numerata. se lo stato è alto l'interrutore è chiuso, quindi si avvia una funzione, altrimenti è aperto e quindi non si fa nulla. vorrei sapere se ci sono metodiche migliori.
  • la memoria dell'atm328 è 32 kb totali, mi servirebbe di più. che scelte ho?

Senza un PCB dedicato e un po' di esperienza per saldare i case TQFP la vedo dura... ci sarebbero gli Atmega644 e Atmega1284 ( con 64K e 128K ) che ancora si trovano in formato PDIP. C'e' solo da aggiungerli nell'IDE di Arduino per poterli usare Oltre a piu' memoria hanno anche una trentina di porte a disposizione. 1284

Per quello che dici sui pulsanti, e' corretto, c'e' solo da dire che serve anche una resistenza tra il piedino e ( nel tuo esempio ) la massa, per mantenerlo in uno stato stabile quando il pulsante non e' premuto

forse 128 kb possono bastare. per quanto riguarda le saldature ho esperienza, però non mi va di lavorare estendendo i circuiti, preferirei comprare uno già all'altezza del compito.

nel video che ho visto io, l'interruttore ha quattro contatti due positivi e due negativi. quindi due coppie positivo - negativo. collegando l'uscita 5 volt di arduino a un positivo, e la massa al negativo della stessa coppia, quando il pulsante non è premuto non c'è possibilità che la corrente attraversi l'interruttore.

credo che tu non abbia le idee molto chiare sulla memoria necessaria, con 128K ci si pilota un drone.

io non ho capito una cosa...... vuoi sviluppare uno standalone o vuoi usare una scheda gia' pronta ? nel secondo caso il mondo delle Board e' talmente vasto che non c'e' che l'imbarazzo della scelta

quando il pulsante non è premuto non c'è possibilità che la corrente attraversi l'interruttore.

e quando e' premuto fai un bel corto.... Comunque se queste sono le basi, il 5 ottobre e' come se fosse domani

mi sono ricordato male. ho rivisto il video e in realtà sul lato della messa a terra c'è una resistenza da 200 ohm. ho perfettamente chiaro quanta memoria mi serve. sono programmatore esperto di software. nel video che ho visto io uno sketch che controlla un semplice led su arduino uno (quindi 32kb) occupa 1 kb. io ho già realizzato un simulatore software per pc, e il codice occupa 4 mb, non compilato. adesso sicuramente non sono capace di lavorare con chip elettronici che contengano tanta memoria. però 32kb mi sembrano un pò pochini. devo realizzare un prototipo standalone quindi va bene anche una versione ridotta. purtroppo ancora non mi è chiaro su come avviene la trasformazione in standalone. quello che significa per me è realizzare il circuito solo con i componenti fisici necessari. quindi da quello che ho in un primo momento intuito è che si tratta di dissaldare il microcontrollore atmega dalla board di arduino e risaldarlo su una breadboard qualsiasi, per esempio una basetta millefori.

Salve, sono a oltre metà del lavoro di questo progetto. Ho realizzato un prototipo su breadboard. Attualmente ci sono una decina di microled che vengono accesi secondo una sequenza che viene dettata dal microcontrollore (ATmega328). Ci sono anche dei controlli mediante switch che permettono di modificare la sequenza. Ora vorrei memorizzare lunghe sequenze, ma la memoria flash non basta. L'esigenza è di un quantità pari a 64 KiloByte. Potrei utilizzare un modulo bluetooth, l'HC-05, che ho già comprato, per ricevere le sequenza da uno smartphone ad esempio. Ma avrei pensato di usare una memoria EEPROM seriale. Chiedo consiglio su quale marca è consigliata, e da dove comprarla, perchè i siti che ho trovato io richiedono di effettuare un ordine di almeno 100 pezzi. Se mi indicate qualche link è ancora meglio. Grazie.

ebay ... vedi

RS components .... vedi

etc etc etc

Allego uno schema.
Funzionamento: i led si accendono da destra verso sinistra uno alla volta, poi alla fine il motorino vibra.
Le due resistenze che vedete da sole stanno lì perchè si sono bruciati i due led corrispondenti.
I due pulsanti sono collegati in pull down. Un pulsante serve a far aumentare la velocità di scorrimento dei led e l’altro a diminuirla.
Mi piacerebbe sapere come creare l’antiribalzo, perchè ho notato che a volte è come se vengano rilevate due pressioni del pulsante al posto di una. Riguardo ai pulsanti non ho capito una cosa: hanno 4 pin; io ho collegato i 2 di un lato, quindi alla pressione la corrente passa attraverso di loro, ma ai 2 del lato opposto cosa succede? Non ho capito come sfruttarli tutti.

Untitled Sketch.fzz (15 KB)

Mi piacerebbe sapere come creare l’antiribalzo

o in modo hardware o via Software

Riguardo ai pulsanti non ho capito una cosa: hanno 4 pin; io ho collegato i 2 di un lato, quindi alla pressione la corrente passa attraverso di loro, ma ai 2 del lato opposto cosa succede? Non ho capito come sfruttarli tutti

Fisicamente e’ come se avesse due soli contatti. Praticamente i due contatti di un lato sono ponticellati tra di loro

puls.png

La soluzione software non sarebbe una novità per me, perchè spesso mi ritrovo a dove programmare questo tipo di funzioni per i pulsanti delle interfacce software. Ma non è una soluzione che posso realizzare, perchè i due pulsanti gli ho collegati a pin 2 e 3 e gli ho assegnato degli interrupt. E all'interno degli interrupt la funzione delay non funziona. Quindi studierò quella hardware.

Sono andato un pò avanti, ho realizzato una versione completamente standalone, inclusiva di alimentazione tramite lm7805 e ho inserito uno shift register per gestire le sequenze.
Ho un problema. L’atmega328p che è montato, l’ho comprato con il bootloader pre-caricato. Per la programmazione uso arduino come isp. Ho provato a realizzare la versione a 8 mhz, seguendo una procedura, ma ho sbagliato qualche passaggio e ho perso il bootloader. Ne sono uscito fuori utilizzando OptiLoader. Però adesso c’è una differenza: se tento di programmare l’atmega328p quando questo è alimentato dall’alimentazione esterna (una batteria da 9 volt) ottengo un errore di invalid device signature.
Se invece prelevo 5 volt e gnd dalla scheda di arduino la programmazione va a buon fine.
La mia domanda è : perchè succede questo?
Inoltre non ho capito perchè sul pinout dell’atmega328 ci sono due linee di alimentazione

Per predisporre l'atmega ad essere programmato senza essere rimosso dallo zoccolo, avrei pensato di creare un'interfaccia verso l'esterno. Vorrei sapere, dai chi ha più esperienza pratica, se conviene installare dei pin di tipo maschio come questi: http://www.ebay.it/itm/Single-Row-PCB-Pin-Header-Connector-36-Way-Pack-of-2-/290915513683?pt=UK_BOI_Electrical_Components_Supplies_ET&hash=item43bbea7553 o di tipo femmina, esempio: http://www.ebay.it/itm/5x-Straight-IDC-PCB-Box-Header-Connector-1st-Class-UK-Post-/260969981942?pt=UK_BOI_Electrical_Components_Supplies_ET&var=&hash=item3cc305e7f6.