Programmazione

Tutorial generici sulla programmazione di logiche programmabili come Arduino, Netduino e Raspberry PI

Usare il modulo RTC DS1307 con Arduino

Cosa devi sapere per usare un real time clock DS1307

Considero molto utile avere un dispositivo che permetta di tenere traccia del tempo e della data, poiché in molti progetti, come quelli della domotica, richiedono un sistema per recuperare queste informazioni. Avere un circuito che mi garantisca, anche in mancanza di alimentazione, un riferimento temporale sicuro è fondamentale.

DS1307 real time clock RTC pin function

Tipicamente, l’integrato che viene utilizzato maggiormente, in campo hobbistico, è il DS1307. Le sue caratteristiche tecniche sono le seguenti Continua a leggere

Programmare un ATtiny85 utilizzando Arduino UNO

Come utilizzare Arduino ISP per caricare un firmware su un ATtiny85

La piattaforma Arduino, come sappiamo, offre molte possibilità, una tra tante è la programmazione dei piccoli microcontrollori ATtiny85, utilizzando un set di istruzioni ridotto, ma compatibile con quelle per programmare la Arduino UNO. La procedura per caricare uno sketch su questi dispositivi è quella usate per l’ATMEGA328 stand alone.

Pin function Attiny85

Continua a leggere

Usare l’RTC della Fez Panda II

Come gestire il real time clock della Fez Panda II

Solitamente quando ho il bisogno di avere un riferimento temporale, che risulta ininfluente dalle mancanze di alimentazione o da riavvi casuali della scheda, utilizzo un RTC esterno, tipicamente un DS1307. La soluzione fornita dalla Fez Panda II impiega un rtc on board che necessita solamente di una batteria tampone esterna, tipicamente quella utilizzata nei computer da 3.3Vdc.

La prima operazione da effettuare, dopo aver collegato la batteria tampone tra il pin BAT e il pin GND, è l’inizializzazione dell’RTC con una data ed un ora valida:

[csharp]
//Setto la data e l’ora per l’RTC
//Anno, Mese, Giorno, Ora, Minuti, Secondi
RealTimeClock.SetTime(new DateTime(2012, 02, 23, 12, 0, 0));
[/csharp]

questo settaggio non agisce automaticamente sulle impostazioni di data ed ora della classe DateTime, ma è soltanto il metodo per inizzializzare l’RTC.

Per poter leggere la data ed il tempo è necessario utilizzare la classe Utility per settare il local time con quello dell’RTC

[csharp]
//Leggo la data ed il tempo dall’RTC e lo assegno al local time
Utility.SetLocalTime(RealTimeClock.GetTime());
[/csharp]

Adesso la classe DateTime ha come riferimento la data e l’ora dell’RTC, posso richiamarla utilizzando questo esempio

[csharp]
//visualizzo a console la data e l’ora corrente
Debug.Print(DateTime.Now.ToString());
[/csharp]

Queste poche linee di coidce permettono di gestire l’RTC on board della Fez Panda II e di implementare ne progetti un sistema basato sul tempo.

Pilotare un motore DC tramite ponte ad H

Come usare Arduino per gestire la rotazione di un piccolo motore DC

Uno dei primi circuiti elettronici che realizzai fu un semplice driver che pilotava un piccolo motore DC, potevo gestire la rotazione a destra o a sinistra e anche la velocità di rotazione, usando un segnale PWM generato dal mitico NE555.
A distanza di qualche anno ho deciso di riprendere il progetto iniziale utilizzando Arduino che permette in modo veloce, con un controllo completo, di ripercorrere quell’esperienza.

Come sapiamo bene le uscite di Arduino non possono fornire una corrente sufficiente da permettere la rotazione del motore, quindi è importante usare dei transistor (o dei circuiti integrati appositi, vedi L298) per fornire la corrente necessaria all’alimentazione del motore. Il circuito da realizzare deve anche permettere la rotazione del rotore sia in un senso che nell’altro. La soluzione più veloce è realizzare un ponte ad H che sfrutta 4 transistors, due del tipo NPN e due del tipo PNP collegati come nella figura seguente:.

Continua a leggere

Shift register 74LS595 esperimenti con Arduino

Come impiegare uno shift register per incrementare le uscite di Arduino

La board Arduino UNO possieda pochi pin digitali, ma fortunatamente esistono dei metodi che ne incrementano il numero impiegando componenti esterni di facile impiego e con un costo contenuto. Il sistema che ho realizzato impiega uno shift register a 8 bit (SN74LS595) che viene controllato da Arduino tramite la funzione ShiftOut.

ShiftOut permette di serializzare un dato su una linea di 2 fili, mentre lo shift register parallelizza il dato pilotando le sue 8 uscite. Questa funzione rappresenta l’emulazione software del protocollo SPI, come la SoftwareSerial lo è per la RS232.

Lo schema seguente mostra i collegamenti tra il 74LS595 e l’Arduino. Il pin 12 di Arduino genera il clock del dato seriale disponibile in uscita al pin 11, mentre il pin 8 viene usato per permettere il caricamento del dato sullo shift register.

Continua a leggere

Operatori per spostare i bit (bitwise)

Usare Arduino per spostare i bit di una variabile

Oltre alle funzioni viste nel precedente articolo, Arduino è capace di eseguirne altre ed in particolare lo spostamento a destra o a sinistra bit a bit. L’operatore per lo spostamento a destra si esprime con questo operatore >> mentre per lo spostamento a sinistra viene usato questo operatore <<.
Per capire meglio cosa avviene utilizziamo delle immagini che semplificano la spiegazione. In questo caso ho una variabile di tipo byte (8 bit) il cui valore è 255. All’interno del chip atmega328 viene allocata, nella memoria ram, uno spazio di 8 bit i cui valori sono settati a 1

Continua a leggere

Visualizzare immagini con un Webserver Arduino

Visualizzare immagini in una pagina web gestita da Arduino

Quando utilizziamo Arduino Ethernet (o EthernetShield) in modalità webserver, non è disponibile una funzione nativa che permetta di visualizzare una immagine nella pagina web generata da Arduino. Esiste però un metodo molto semplice che permette di visualizzare delle immagini, di piccole dimensioni, utilizzando la codifica Base64.

L’idea è quella di utilizzare una stringa che codifica un file immagine, da inserire nello sketch. Diversi siti web offrono un convertitore online che codifica un file immagine (jpg, gif o png) in una stringa equivalente in standard Base64.
Per questo tutorial ho utilizzato il servizio di webcodertools.com disponibile a questo indirizzo. Basta caricare un file immagine per ottenere direttamente una stringa Base64 con in aggiunta il tag html img.

Continua a leggere

Tutorial installazione Arduino su Windows 7

Guida per l’installazione Arduino su sistema Windows 7

Nonostante la semplicità di installazione dell’IDE e della board Arduino, capita che molti neofiti non riescano ad eseguire l’installazione Arduino su Windows 7. In effetti con questo sistema operativo l’installazione dei driver è automatica ma ci sono dei casi in cui non si riesce ad installare i driver, soprattutto per le schede che montano l’integrato Mega8U per convertire il segnale da usb a seriale.

La procedura seguente mostra, passo passo, come installare una Arduino Ethernet collegata con la scheda USB2Serial Light.

Il primo passo è scaricare la versione 1.0 del software Arduino IDE, che contiene sia i driver sia la il software necessario per lo sviluppo. Dopo la decompressione posizioniamo questa cartella in modo che sia facilmente accessibile. Nel mio caso l’ho decompressa nella cartella di sistema Documenti.

Colleghiamo il cavo Usb della board USB2Serial Light al pc, Windows 7 avvia automaticamente la ricerca nuovo hardware

Continua a leggere

Preferiti
Rimani aggiornato

Sondaggi
Sorry, there are no polls available at the moment.
Seguimi su Twitter