BaroneRosso.it - Forum Modellismo

BaroneRosso.it - Forum Modellismo (https://www.baronerosso.it/forum/)
-   Circuiti Elettronici (https://www.baronerosso.it/forum/circuiti-elettronici/)
-   -   Arduino, questo (s)conosciuto (https://www.baronerosso.it/forum/circuiti-elettronici/176959-arduino-questo-s-conosciuto.html)

lol21 10 giugno 10 23:38

Arduino, questo (s)conosciuto
 
ciao a tutti :)
come state? tutto bene? i progetti vanno avanti?
tre tutte queste domande vorrei farvene una in particolare. chi ha mai usato l'arduino? :lol:

ho visto molti video in internet e vedo che la versione duemilanove equipaggia un ATmega, non ricordo in modello :D

secondo voi è un buon controllore? si può parlare ancora di microcontrollori a queste dimensioni? :blink:

come vi siete trovati a programmarlo? avendo una porta usb è oltretutto programmabile da qualsiasi pc ed è molto pratico no? :fiu:

ve lo chiedo perchè a giorni dovrei averne uno :P e volevo sapere se effettivamente è valido...

mi è sorto un dubbio però: se uso la comunicazione seriale e voglio usare i due pin rx e tx sulla board e non usare la USB come posso fare? basta collegarli o dovrei aggiungere qualche riga di codice? :wacko:

ciao a tutti e grazie..
lol21

illez 10 giugno 10 23:45

Io ho iniziato con quello e con il picaxe; li usavo per degli esperimenti di robotica.
Oramai è da un pezzo che non lo uso, avevo anche diverse schede (servi, audio mp3 e non ricordo più che altro).
Sono microcontrollori con un piccolo firmware già installato che fa da interprete. sono validi per certi scopi, meno per altri. Tu che ci devi fare?
Magari se li usi una volta in un progetto, una volta in un altro, finisci anche per spendere parecchio.

Ora mi diverto di piu a programmare direttamente i pic.

lol21 11 giugno 10 11:28

beh per il mio progetto dovrei collegare un lcd e un tastierino al duemilanove (si voglio provare la variante del progetto che ho fatto un po di tempo fa col pic :P anche per dal vedere con l'arduino sembra più facile)

il tastierino sono in realtà 5 pulsanti alimentati dall'uscita +5V dell'arduino e che tornano alle porte 7-8-9-10-13

mentre lcd è collegato come nell'esapio su arduino.cc ovvero
Citazione:

* LCD RS pin to digital pin 12
* LCD Enable pin to digital pin 11
* LCD D4 pin to digital pin 5
* LCD D5 pin to digital pin 4
* LCD D6 pin to digital pin 3
* LCD D7 pin to digital pin 2
poi vi è dentro una comunicazione seriale per la comunica dei totali... chiedevo come è possibile collegare i pin rx e tx perchè a fine pprogetto ne devo programmare ben 12 e alimentarne 12 da un computer portatile con poi 2 HUB USB da 7 porte da alimentare anch'essi con un alimentatore che debba fornire 3A...

io per la comunicazione seriale pensavo di collegare tutti i pin rx insieme e tutti i tx insieme e poi quando lo collego alla unica porta seriale invio dal pc la stringa "1" e ricevo dal primo tutti i punteggi poi il pc invia "2" e dal secondo ricevo i punteggi, poi 3 ecc....

è possibile questa cosa? ovvio gli arduino sarebbero alimentati a parte ^_^

ciao
lol21

illez 11 giugno 10 12:32

Citazione:

Originalmente inviato da lol21 (Messaggio 2103656)
[...]
io per la comunicazione seriale pensavo di collegare tutti i pin rx insieme e tutti i tx insieme e poi quando lo collego alla unica porta seriale invio dal pc la stringa "1" e ricevo dal primo tutti i punteggi poi il pc invia "2" e dal secondo ricevo i punteggi, poi 3 ecc....

è possibile questa cosa? ovvio gli arduino sarebbero alimentati a parte ^_^

ciao
lol21

Immagino sia fattibile, non ho esperienze in tal senso. Mai usato la seriale con PIC o Arduino: ma c'è tante info su web quindi con qualche ricerchina non dovresti aver problemi.
Però mi viene un dubbio: perché Arduino?:blink:
Ne devi comprare 12!?!?!!
Ma non ti costano moooolto meno 12 PIC? (non sono aggiornato sul prezzo dell'arduino, ma mi ricordo che come minimo eravamo sopra i 15eurini, un PIC che fa al caso tuo dovrebbe essere sull'1,5, circa un decimo)

lol21 11 giugno 10 13:13

sul prezzo non dovrei avere problemi, ho una disponibilità di circa 80€ e il costo dell'arduino è di 26€ il problema coi pic è che sono alquanto inesperto. ho provato col pic 16f628 costo circa 4€ e non sono riuscit neanche a programmarlo :D

pensavo all'arduino perchè comunque per farne 12 io lascio circuito, lato componenti e lato rame a una azienda che crea appunto circuiti stampati e non credo che alla fine il costo sia inferiore ai 20€. e poi il bello dell'arduino è che ho una memoria molto grande per il programma e visto che devo memorizzare circa 8 tipi di gare diverse è molto comodo. se dovessi farlo con un pic dovrei memorizzare il tutto in una e2prom esterna e comunicare con essa per l'analisi del programma, cosa che per ora per me è fuori dall'inconcepibile. inoltre con arduino lato programmazione ho librerie di gestione lcd e seriale già inclusi, con un pic dovrei crearle... in più l'adruino è riutilizzabile più facilmente, infatti se più avanti decidessimo di tagliare (fisicamente :P) i cavi di collegamento c'è il modulo xbee che addirittura ci da una disponibilità wifi. queste cose con un pic per me sono attualmente distanti 2 anzi 3 anni luce :D

grazie comunque :)

ciao
lol21

illez 11 giugno 10 13:18

Mi spiace solo che dell'arduino oramai ricordo bene poco e non posso esserti molto d'aiuto :rolleyes:

Facci sapere come va avanti il progetto, a me fa piacere.

lol21 11 giugno 10 13:33

grazie, ora vedo di mettere giù uno schemino e di ordinare l'arduino, al massimo poi lo uso per progetti personali miei :wink:

ciao
lol21

illez 11 giugno 10 13:43

Però non capisco una cosa, prendila per mia curiosità.
Premesso ovviamente che non fa mica male conoscere anche l'arduino, anzi. Son del parere che il bello sta sempre nel provare cose nuove.:wink:
Ma i PIC ti costanto molto molto meno, particolare non da poco visto che il costo lo moltiplichi per 12.

L'arduino lo programmi in C (o simil C, non ricordo se è davvero standard), i pic pure.

L'arduino ha tante librerie pronte, i pic idem

l'arduino ha tanta memoria, anche alcuni pic, un po' più costosi, credo abbiano più memoria del misero 16f628

A parte la ovvia curiosità verso l'arduino :) qualcosa nella scelta mi sfugge :D

Guglio 11 giugno 10 14:42

Non ti servono 12 arduino.
Usi il tuo per programmare altri 11 atmega e per queste costruisci questo semplice circuito
Perfboard Hackduino (Arduino-compatible circuit)

Vendono già le ATMEGA con già "installato" arduino (perdonatemi ma non so i termini)

Io volevo provare a costruirne uno per un progetto strambo ma sono fermo al primissimo passaggio, non ho avuto il coraggio di estrarre l'atmega dall' arduino :fiu::icon_rofl
Ho provato a fare un po' di leva, ho visto che non si alza e mi sono fermato subito xD

lol21 11 giugno 10 14:45

beh, io a parte la programmazione e il lato hardware e software del "palmare" in se bisogna considerare anche il software per la seriale che deve includere un interfaccia al database in mysql per il programma fornitoci dalla fitarco in cui bisogna inserire i punteggi. poi dovrei creare 12 basette e anche il costo di quelle è da contare. ma visto che in caso le affiderei a una industria di produzione di circuiti elettrici specializzata il costo aumenta comunque...

poi non saprei dove trovarle le librerie dei pic :(

insomma io nei pic sono abbastanza un neofita.. a proposito, che differenza c'è tra pic e dspic? :wacko:

ciao
lol21

lol21 11 giugno 10 14:57

Citazione:

Originalmente inviato da Guglio (Messaggio 2103890)
Non ti servono 12 arduino.
Usi il tuo per programmare altri 11 atmega e per queste costruisci questo semplice circuito
Perfboard Hackduino (Arduino-compatible circuit)

Vendono già le ATMEGA con già "installato" arduino (perdonatemi ma non so i termini)

Io volevo provare a costruirne uno per un progetto strambo ma sono fermo al primissimo passaggio, non ho avuto il coraggio di estrarre l'atmega dall' arduino :fiu::icon_rofl
Ho provato a fare un po' di leva, ho visto che non si alza e mi sono fermato subito xD

in pratica ricostruiscono l'arduino è una bella idea.... ma con quel tanto non mi vale la pena direttamente programmare un atmel? :D

ciao
lol21

Guglio 11 giugno 10 15:40

Non ho capito..
Tipo se devi fare una cassaforte l'atmega lo programmi una volta sola (inserendolo appunto sull'arduino originale) poi lo incastri sulla scheda tarocca...
L' arduino originale diventa comodo se devi fare degli esperimenti e devi continuamente riprogrammare l'atmega

lol21 11 giugno 10 16:05

beh, dovrei avere la possibilità di programmarlo più volte...
io invece ho trovato questo:
.: Robot Italy WebSite:. : ATmega328 with Arduino Bootloader [709217] - 4,80EUR

basta fargli un circuitino e poi programmarlo come se fosse un arduino questo? :blink:

ciao
lol21

illez 11 giugno 10 16:08

mai provato ma sapevo che si poteva fare.

Togli l'atmega dal tuo arduino, inserisci quello et voilà !:wink:
lo riprogrammi come il primo.

BBC25185 11 giugno 10 16:24

Non serve collegare tutte le Tx-RX insieme!!!

basta realizzare una archittettura Master-Slave con il protocollo I2C!!!

Praticamente avrai un arduino collegato a una presa USB configurato come Master I2C, mentre gli altri collegati come slave al primo arduino!!!

Praticamente i collegamenti tra i vari arduino per il protocollo I2C sono 3 (4 mettendo l'alimentazione: GND, SDA, SCL, VCC)

Il sistema è estremamente facile è già praticamente implementato!!!
Arduino playground - I2C

Il Master si occupa di raccogliere i dati dai vari arduino e spedirli tramite una singola porta COM (emulata sulla presa USB) al PC...
Sul PC, quindi, basta un programma per leggere i dati che gli invia l'arduino!!!

EDIT: Ovvio che tutti gli arduino avranno una programmazzione propria, dove il Master è un programma tutto suo, mentre quelli slave bisogna dargli un indirizzo che, volendo, si può fare in modo che lo pigli da un dipswitch esterno!!!

lol21 11 giugno 10 16:30

ma così se il master o uno qualsiasi decide di non funzionare io sono fermo con tutti, mentre con il mio sistema basta togliere una presa che gli altri continuano a funzionare no?

ciao
lol21

illez 11 giugno 10 16:35

Citazione:

Originalmente inviato da lol21 (Messaggio 2104070)
ma così se il master o uno qualsiasi decide di non funzionare io sono fermo con tutti, mentre con il mio sistema basta togliere una presa che gli altri continuano a funzionare no?

ciao
lol21

no,no

attenzione: si parla di bus i2c. E' quindi una sorta di binario al quale si attaccano le varie periferiche (nel tuo caso altri atmega)

Non ho voglia di fare un disegnino :P
http://ics.nxp.com/support/documents...cification.pdf

BBC25185 11 giugno 10 16:36

Con questo sistema, se uno decide di non funzionare, si sà quale è in quanto il sistema è fatto in modo che se un singolo Slave non risponde, semplicemente l'arduino non lo legge (risposta 0)... se salta il Master, invece, è diverso!!! però è facile fare in modo che si resetti da solo in caso di problemi (prova a vedere il WatchDog Timer)

Comunque sia il protocollo I2C prevede, di base, un controllo errori della trasmissione!!!
La porta seriale, invece (TX e RX) non è fatta per fare queste cose... rischi di bruciare qualcosa!!! Va bene per fare collegamenti tra 2 periferiche... non 12!!!

lol21 11 giugno 10 17:01

mi sa che opterò per le 12 USB :P
riguardo all'usare i microprocessori, ma mi basta usare un semplice atmega dello stesso tipo dell'arduino o devo prendere quello che ho trovato con già dentro il bootloader? :blink:

ciao
lol21

BBC25185 11 giugno 10 17:10

Citazione:

Originalmente inviato da lol21 (Messaggio 2104120)
mi sa che opterò per le 12 USB :P
riguardo all'usare i microprocessori, ma mi basta usare un semplice atmega dello stesso tipo dell'arduino o devo prendere quello che ho trovato con già dentro il bootloader? :blink:

ciao
lol21

quello con il bootloader...

Comunque considera una cosa!!! il bus I2C è abbastanza comodo e affidabile... oltretutto lo usano un pò dappertutto... compresa la wii!!! (i collegamenti dei controller sono con il bus I2C!!!

Pensa che, usando il bus I2C, basterebbe un solo Arduino e tanti I/O I2C come questi!!!
PCF8574 8 bit I2C I/O Port
MICROCHIP|MCP23017-E/SP|16BIT ESPANSORE, I/O, I2C I/F | Farnell Italia
http://www.google.it/url?sa=t&source...Pw-m-H5QIAzUsg

Guglio 11 giugno 10 17:34

Citazione:

Originalmente inviato da lol21 (Messaggio 2104025)
beh, dovrei avere la possibilità di programmarlo più volte...
io invece ho trovato questo:
.: Robot Italy WebSite:. : ATmega328 with Arduino Bootloader [709217] - 4,80EUR

basta fargli un circuitino e poi programmarlo come se fosse un arduino questo? :blink:

ciao
lol21

Si quello è il pezzo che devi montare sul circuitino.. solo che deve già avere su il software di arduino

Guglio 11 giugno 10 17:54

Arduino - ArduinoISP
L'ultimo esempio è il tuo, così non devi nemmeno comprare un atmega con già il software di arduino installato.

lol21 11 giugno 10 18:36

un momento, ho capito lo standard i2c, in pratica con un chip da una trasmissione seriale ricevo un numero determinato di pin I/O comandabili appunto dal protocollo seriale del master e dello slave giusto? questo è comodo soprattutto per risparmiare porte, ad esempio sul sito da te segnalatomi c'è l'esempio del controllo dell'lcd, ma allora se io usassi solo un arduino come "server" e tutti i terminali avessero un pic o atmel o quellochecè come microprocessore potrei usare il suo standard i2c per la comunicazione dei dati al server... giusto? ma comunque su ogni terminale ci deve essere un microprocessore, non credo che un solo arduino riesca a controllare 12 lcd e 12 tastierini accoppiandone 2 sapendo che probabilmente dovrò avere visualizzazioni diverse.

infatti una cosa che prevede il mio progetto dal prossimo firmware è la possibilità di vedere il nome dell'arciere corrispondente a quel bersaglio, quindi nome e cognome, insomma deve rimanere memorizzato nel terminale oltre al punteggio anche il nome e cognome dell'arciere... un solo arduino non credo riesca a gestire tutti questi dati.

insomma mi ci vuole comunque un microcontrollore di mezzo... giusto? :wacko:

ciao
lol21

lol21 11 giugno 10 18:38

Citazione:

Originalmente inviato da Guglio (Messaggio 2104156)
Arduino - ArduinoISP
L'ultimo esempio è il tuo, così non devi nemmeno comprare un atmega con già il software di arduino installato.

uhm... in tal caso potrei utilizzare il software di arduino sull'atmega e usare quello come controllore tra la comunicazione i2c e l'lcd e tastierino del palmare...

ciao
lol21

BBC25185 11 giugno 10 18:54

Un solo Aurduino non riesca a gestire 12 lcd e 12 tastierini da 5 pulsanti???

Ma hai visto qualche filmato dove con l'arduino riescono a pilotare contemporaneamente 512 led (un cubo da 8x8x8 led) in modo da creare animazioni 3d???

In fondo è solo software da scrivere!!!
Comunque sia il Master è l'unità che si occupa di gestire il canale dati (è lui e solo lui che autorizza a mandare e ricevere dati)... quindi è un microcontrollore (o un computer... anche il PC ha un bus I2C (localizzato sulla porta VGA)!!!

I slave, invece, si occupano di mandare quello che chiede il master!!!

Per esempio... WiiMotionPlus...
Con l'arduino, usando l'I2C, può chiedere al motionplus di spedirgli i valori dei 3 giroscopi presenti al suo interno!!!
Poi, magari, visto che è collegato sullo stesso bus anche un GPS, l'arduino può richiedere e riceve i dati della posizione GPS...

Tutto questo collegato sugli stessi 2 fili!!!

Tecnicamente potrebbe essere gestito tutto interamente dal PC, senza ausilio dell'arduino!!! basterebbe collegare le espansioni I2C alla porta I2C della VGA e usare il PC per pilotare i 12 LCD e i 12 tastierini!!!
VGA monitor cable information

EDIT: Esistono anche i display LCD comandati da presa I2C...
I2C display

lol21 11 giugno 10 19:11

in parole povere io sul terminale mi troverei solo 2 (uno credo sia insufficiente) bus I2C e si connettono tutti all'arduino (o alla VGA) e l'arduino gestisce tutti i dati tramite sole 2 porte... la comodità è molta, avremmo un risparmio dal punto di vista economico altissimo e la parte più complicata si sposta sulla programmazione del solo arduino che deve però gestire 24 periferiche.

io con questo protocollo non ho mai lavorato, provo a buttare giù qualche riga di codice dai. :wink:

grazie a tutti

ciao
lol21

illez 11 giugno 10 19:26

L'I2C è piuttosto semplice, trovi esempi a bizzeffe.
Io a suo tempo avevo fatto qualcosa ma su pic.

BBC25185 11 giugno 10 19:47

Citazione:

Originalmente inviato da lol21 (Messaggio 2104228)
in parole povere io sul terminale mi troverei solo 2 (uno credo sia insufficiente) bus I2C e si connettono tutti all'arduino (o alla VGA) e l'arduino gestisce tutti i dati tramite sole 2 porte... la comodità è molta, avremmo un risparmio dal punto di vista economico altissimo e la parte più complicata si sposta sulla programmazione del solo arduino che deve però gestire 24 periferiche.

io con questo protocollo non ho mai lavorato, provo a buttare giù qualche riga di codice dai. :wink:

grazie a tutti

ciao
lol21

Piccola spiegazione tecnica sul bus I2C...
Per il collegamento I2C servono minimo 3 fili: GND, SDA, SCL...
GND, ovvero la massa di riferimento
SCL, ovvero il clock generato dal master e serve a sicronizzare i trasferimenti dei dati
SDA, ovvero la linea dove viaggiano i dati!!!

Praticamente dall'arduino partono 3 fili (GND, ANALOG 5 e 4) che devono essere portati alti da una resistenza di PullUp!!!
l'unico limite di questa tecnologia è che la capacità della linea non superi i 100 pF!!!

Comunque sia, per la comunicazione I2C, generalmente si usa un sistema di questo tipo:
Il Master trasmette all'indirizzo xx (dove xx è un numero a 7 bit) il codice di quello che voglio!!!
Il slave ha ricevuto il comando e prepara per la prossima comunicazione I2C il dato che interessa al master
Il Master, questa volta, apre un canale di lettura dove lo Slave precedentemente interrogato, invia il dato!!!

In codice arduino, ecco qualche esempio:
Configurazione Arduino come master:

#include <Wire.h> //Libreria per utilizzare l'I2C
void setup() {
Wire.begin(); //Questo comando inizializza l'arduino come unità I2C Master
}

Configurazione Arduino come Slave:


#include <Wire.h> //Libreria per utilizzare l'I2C
void setup() {
Wire.begin(0x04); // Questo comando inizializza l'arduino come unità I2C Slave con indirizzo 0x04
Wire.onReceive(Evento); //Questa riga qua serve a creare un evento per cui, appena il Master prova a inviare un dato, lui esegue la SubRoutine "Evento"
}

Il master che invia alla periferica I2C 0x04 due byte:

void loop()
{
Wire.beginTransmission(0x04); //Apre il canale di trasmissione con 0X04
Wire.send(Byte1); //Invia il 1° Byte
Wire.send(Byte2); //Invia il 2° Byte
Wire.endTransmission(); //Chiude il canale di trasmissione
Delay (100);
}

Lo Slave che riceve i due Byte dal master:

void Evento(int howmany) //SubRoutine "Evento" Sopra citata
{
byte Byte1 = Wire.receive();//Riceve il primo Byte
byte Byte2 = Wire.receive();//Riceve il secondo Byte
}

Più semplice di così non si può!!!

lol21 11 giugno 10 21:55

ma se io usassi questo chip:
.: Robot Italy WebSite:. : Chip Multifunzione I2C [GPIO14] - 12,80EUR
come posso fare?

ciao
lol21

illez 12 giugno 10 00:46

a me quello sembra un pic preprogrammato....
ma te esattamente cosa vuoi fare?
Forse l'hai gia detto ma mi son perso :rolleyes:


Tutti gli orari sono GMT +2. Adesso sono le 09:38.

Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002