Archivi categoria: Arduino

Corso base arduino 2014 – Lucca

Il corso

Con arduino è possibile realizzare progetti di domotica o automazione in generale. Può essere utilizzato per controllare le luci di casa così come come l’impianto di irrigazione o un robot.

Le caratteristiche principali che distinguono questa scheda sono il suo prezzo contenuto e la semplicità con cui è possibile programmarla, per questo ha conquistato il cuore di tantissimi, hobbisti ma anche artisti e artigiani.

Programma

  • Introduzione alla programmazione su Arduino
  • Circuiti elementari
  • Acquisire segnali digitali
  • Acquisire segnali analogici
  • I sensori, introduzione ed esempi
  • Utilizzare sensori digitali ed analogici
  • Controllare led ed attuatori

Destinatari

Il corso è rivolto alle persone che per hobby, studio o interesse professionale sono appassionati di elettronica, domotica, automazione, informatica e robotica

Obbiettivi

Essere in grado di realizzare in autonomia semplici progetti:

  • dalla scelta e reperimento dei componenti;
  • alla ricerca di documentazione;
  • allo sviluppo del software;
  • fino alla realizzazione del prototipo;

Durata e costo

Il corso ha una durata di 20 ore ed un costo di 75 €

Iscrizione

le iscrizioni sono chiuse;

Stampante 3D in rete

In occasione dell’edizione lucchese del Linux Day 2013 ho presentato una possibile applicazione di Cosino alla stampa 3D, rendendo con un unica board la stampante RepRap I3 del Luccalug accessibile via rete.

Cosino

cosino

Cosino è un sistema embedded chiavi-in-mano(TM). Nato per semplificare al massimo lo sviluppo di nuovi prototipi, viene venduto con preinstallata Debian/Wheezy.  Un sistema Debian/Linux permette infatti di sviluppare applicazioni, anche complesse, basandosi su delle librerie ed applicazioni già presenti nel sistema o mediante script.

Il concetto di Cosino è semplice: un modulo di base che mantiene il cuore del sistema e poi una serie di estensioni che permettono di avere tutte le periferiche di cui abbiamo bisogno.

In sintesi è possibile usare tutto il software e l’hardware Arduino Mega 2560 e, in più, avere accanto un sistema Debian GNU/Linux pronto all’uso. Quindi, ad esempio, se la nostra applicazione Arduino aveva bisogno di un PC esterno per funzionare, ora la possiamo portare tutta all’interno di un’unica macchina che consuma meno di 3 Watt senza utilizzare un ulteriore hardware come il Raspberry.

Con Cosino si possono evitare i costosi shield per aggiungere il supporto LAN, WiFi, USB o sdcard al sistema Arduino, la connettività e la memorizzazione vengono date dalla parte Linux senza consumare le risorse della CPU del Mega 2560.

mega_2560La versione di Cosino con estensione Mega 2560 ha a bordo:

  • CPU Atmel AT91sam9G35 (400MHz)
  • 128MB RAM DDR2
  • 1 console seriale via connettore USB device
  • 1 porta ethernet 10/100
  • 1 porta USB host e 1 port USB device
  • 1 slot microSD
  • 1 UARTs RS485.
  • 1 USB host (full speed), 4 ADC, 4 PWM, 8 GPIO, 1 prta seriale, I2C, SPI (su connettore di espansione).
  • 1 sistema Arduino Mega 2560-Compatible

Utilizzando l’estensione mega 2560 che permette di avere a dispozione un arduino mega è stato possibile collegare la diffusa scheda di controllo per la stampa 3D RAMPS.

OctoPrint

logo-octoOctoprint è un software di stampa scritto in python che permette di controllare la propria stampante tramite un interfaccia web.  Quest’ultima caratteristica permmette di controllare la propria stampante attraverso un qualsiasi dispositivo connesso alla propria rete locale o se opportunamente configurato attraverso  internet. Al fine di raggiungere questo obiettivo, OctoPrint fa un uso massiccio delle più moderne  tecnologie web come AJAX e HTML5.

OctoPrint è stato sviluppato per essere eseguito su piccoli dispositivi embedded come ad esempio il popolare RaspberryPI e puo essere facilmente installato anche all’interno di Cosino.

Cosino si occupa di eseguire OctoPrint e di comunicare con l’arduino contenuto sulla shield che gestisce la stampante.

cosino-i3

Nelle prossime settimane pubblicherò un articolo più tecnico sulla procedura di configurazione.

corso base arduino 2012 – Lucca

Il corso

Con arduino è possibile realizzare progetti di domotica o automazione in generale. Può essere utilizzato per controllare le luci di casa così come come l’impianto di irrigazione o un robot.

Le caratteristiche principali che distinguono questa scheda sono il suo prezzo contenuto e la semplicità con cui è possibile programmarla, per questo ha conquistato il cuore di tantissimi, hobbisti ma anche artisti e artigiani.

Programma

  • Introduzione alla programmazione su Arduino
  • Circuiti elementari
  • Acquisire segnali digitali
  • Acquisire segnali analogici
  • I sensori, introduzione ed esempi
  • Utilizzare sensori digitali ed analogici
  • Controllare led ed attuatori

Costo e orari

CORSO COMPLETO – ISCRIZIONI CHIUSE

Destinatari

Il corso è rivolto alle persone che per hobby, studio o interesse professionale sono appassionati di elettronica, domotica, automazione, informatica e robotica

Obbiettivi

Essere in grado di realizzare in autonomia semplici progetti:

  • dalla scelta e reperimento dei componenti;
  • alla ricerca di documentazione;
  • allo sviluppo del software;
  • fino alla realizzazione del prototipo;

Python-Xbee

Python-xbee è  una libreria in python che permette di lavorare in modalità API sui moduli di comunicazione xbee ( vedi articolo: Digimesh ).

Digimesh

La libreria non implementa correttamente le api dei moduli Digimesh, per questo ho deciso di contribuire al progetto implementando i tipi di pacchetti mancanti.

Ho deciso di utilizzarla per sviluppare un progetto in cui dovrò mettere in comunicazione più arduino con un pc che funga da coordinatore.

Anche se alcune questioni sintattiche non mi aggradano troppo, trovo il python un ottimo linguaggio per la velocità con cui riesco a svilupparvi applicazioni funzionali, inoltre la libreria è molto semplice e anch’essa veloce da utilizzare.

Ecco un esempio:

In questo esempio ho voluto testare la funzione “ND” Network Discovery dei moduli Xbee. Al pc è connesso un Xbee Explorer e nell’area circostante sono attivi 2 Arduino Fio con anch’essi muniti di modulo Xbee DigiMesh.

Lo script non fa altro che un discovery dei nodi attivi, dopodiche invia un comando “RS” ciascuno per valutare la qualità del link.

In uscita viene restituita una tabella con identificativo,indirizzo e qualità della trasmissione.

#! /usr/bin/python

#importo Digimesh
from xbee import DigiMesh
import serial, time

#definisco una funzione di callback a cui saranno passati ipacchetti ricevuti
frame=[]
def print_data(data):
frame.append(data)

#inizializzo la seriale e vi associo la classe
ser = serial.Serial('/dev/ttyUSB0', 9600)
xbee = DigiMesh(ser, escaped=True, callback=print_data)

#invio il comando di scansione
print "eseguo la scansione dei nodi"
xbee.send('at', frame_id="S", command="ND")

#attendo 5 secondi che tutti i nodi abbiano risposto
time.sleep(5)
xbee.halt()
d=1
#per ogni pacchetto ricevuto eseguo il ciclo
for f in frame:
i=10
ID=''
while f['parameter'][i]!='x00':
ID+=f['parameter'][i]
i+=1
xbee = DigiMesh(ser, escaped=True)
#invio ad ogni modulo la richiesta della qualità di comunicazione
xbee.send('remote_at', frame_id='B', dest_addr_long=f['parameter'][2:10], command='DB')
indirizzo=' '.join( [ "%02X " % ord( x ) for x in f['parameter'][2:10] ] )
potenza=xbee.wait_read_frame()['parameter']
#stampa i dati ottenuti
print "nodo %d t| ID: %s t| Indirizzo: %s t|Potenza Segnale: -%d Db " % (d,ID,indirizzo,ord(potenza))
d+=1

xbee.halt()
ser.close()

Questo è quello che viene restituito nel mio caso:

 nodo 1 | ID: lulu3 | Indirizzo: 0013A200406914A4 |Potenza Segnale: -59 Db
 nodo 2 | ID: lulu2 | Indirizzo: 0013A20040691491 |Potenza Segnale: -48 Db

Digimesh.py

In allegato la nuova classe Digimesh in attesa che sia inclusa nel repository ufficiale:

digimesh.py

DigiMesh

Xbee e DigiMesh

In questi giorni ho cominciato a sperimentare con Arduino nel settore della comunicazion wireless. In particolare sto utilizzando dei moduli XBee prodotti da Digi nella versione DigiMesh.

Gli XBee sono essenzialmente dei moduli, prodotti dalla DIGI (www.digi.com - ex
Maxstream) che consentono il trasferimento dati via RF (Radio Frequenza) sfruttando
una normale comunicazione seriale. Questo vuol dire che per riuscire a trasferire dei
dati, senza fili, è necessario soltanto saper utilizzare la periferica UART inclusa sul
nostro microcontrollore preferito o la porta seriale del PC: è possibile difatti
immaginare, nella loro configurazione più semplice, una coppia di XBee come un
sostituto di un cavo seriale. Ne esistono di diverse tipologie e serie.
(tratto da "Easy bee di Giovanni Bernardo")

I moduli Digimesh appartengono alla serie 1 e si differenziano da essi esclusivamente dal firmware che permette di implementare a topologia di rete DigiMesh

Purtroppo ll protocollo è proprietario della DIGI, ma la sua versatilità mi ha spinto a considerarlo un interessante prodotto. In particolare consente di creare delle reti Mesh di tipo Peer to Peer (ovvero senza coordinatori):

In questo tipo di topologia ogni nodo può comunicare con tutti gli altri e di conseguenza non c’è bisogno di dispositivi che fungono da coordinatore.

Per maggiori informazioni vi consiglio la guida Easy Bee

API Mode

I moduli Xbee hanno la possibilità di funzionare in due diverse configurazioni:

  • Modalità Trasparente
  • Modalità API
Nella prima i dati inviati al modulo vengono trasmessi “così come sono” al nodo configurato (la configurazione avviene tramite la modalità AT, ma vi rimando alla lettura della guida linkata sopra)
La modalità API (Application Programming Interface) è un’alternativa alla modalità trasparente che consente, oltre che trasmettere e ricevere dati, di interagire ad un livello più basso con i moduli XBee consentendo, tra le altre cose, di:
  • Cambiare i parametri di configurazione (inviare comandi AT) senza entrare in modalità comandi
  • Conoscere l’ RSSI (Received Signal Strength Indicator – Indicatore di forza del segnale ricevuto)
  • Ricevere una conferma di pacchetto dati consegnato correttamente per ogni pacchetto trasmesso o un’indicazione di consegna fallita
  • Trasmettere dati a più destinatari Identificare l’indirizzo di chi ha trasmesso il pacchetto dati
La comunicazione in modalità API avviene inviando sulla linea seriale dei pacchetti di dati appositamente strutturati in frames.
Un frame è costituito da un byte di start (0x7E), due byte che identificano la lunghezza del messaggio, seguono quindi i bytes di dati da inviare e infine 1 byte di checksum: Si capisce quindi perchè la modalità trasparente abbia tale nome: i dati vengono inviati sulla seriale vengono inviati tal quale, in modalità API invece i dati vengono interpretati.

Sabato 22 ottobre Linux day

Sabato pomeriggio sarò presente al Lucca Linux day che si svolgerà presso l’ITIS Enrico Fermi di Lucca a partire dalle ore 15:00.

In particolare presenterò il primo prototipo funzionante di ArduRacing. Di seguito un filmato dell’ ultimo test prima della presentazione vera e propria:

[youtube http://www.youtube.com/watch?v=jqguk1sYwTU&w=420&h=315]
Continua la lettura di Sabato 22 ottobre Linux day