Archivi autore: admin

Raspberry Pi – lezione 03: prepariamo la scheda SD ed effettuiamo il primo avvio

Configurazione

Prima di connettere all’alimentazione il vostro Raspberry Pi dovrete installare sulla scheda SD un sistema operativo valido tra quelli indicati sul sito RaspberryPi.org
Per l’installazione della distribuzione ufficiale Raspbian potete procedere scaricandola direttamente da http://www.raspberrypi.org/downloads. Selezionate la modalità di download, nell’esempio ho scelto di prelevare direttamente il file .zip

Sarete reindirizzati su un’altra pagina, ed il download partirà automaticamente:

Nella cartella download verrà scaricata l’immagine .zip del sistema operativo che ha una dimensione di circa 1,94 GB:

2012-08-16-wheezy-raspbian.img

Continua a leggere

Appunti di programmazione su Arduino: orologio interno

delay(ms)

Mette in pausa un programma per la quantità di tempo specificata in millisecondi, un valore di 1000 millisecondi equivale a 1 secondo.

delay(1000);   // attende per 1 secondo

millis()

Restituisce il numero di millisecondi da quando la scheda Arduino ha incominciato l’esecuzione del programma corrente. Il tipo di dato è un unsigned long.

value = millis();   // imposta la variabile 'value'
                    // al valore restituito dalla funzione

Nota: questo valore va in overflow (supera il limite della memoria) per cui ricomincia da zero dopo circa 9 ore.

micros()

Restituisce il numero di microsecondi da quando la scheda Arduino ha incominciato l’esecuzione del programma corrente. Il tipo di dato è un unsigned long.

Nota: questo valore va in overflow (supera il limite della memoria) per cui ricomincia da zero dopo circa 70 minuti.

Sulle schede Arduino a 16MHz (ad es. Duemilanove e Nano), questa funzione ha una risoluzione di 4 microsecondi (il valore restituito è un multiplo di 4 secondi). Sulle schede Arduino a 8 MHz (ad es. LilyPad), questa funzione ha una risoluzione di 8 microsecondi.

Nota: ci sono 1.000 microsecondi in un millisecondo e 1.000.000 di microsecondi in un secondo.

delayMicroseconds(us)

Mette in pausa il programma per una quantità di tempo (in microsecondi) specificato dal parametro della funzione. Il tipo di dato è un unsigned long.

delayMicrosecons(1000);   // attende un millesimo di secondo

Per le lezioni precedenti consultare la sezione Appunti di programmazione che trovate nella pagina Arduino di questo sito.

Nuova sezione Raspberry Pi, lavori in corso e previsioni per il futuro

Sto testando in questi giorni il Raspberry Pi, sono impegnato nella lettura di documentazione on-line e svolgo esperimenti, ho deciso quindi di raccogliere questa esperienza in una serie di lezioni ed articoli che spero possano essere di aiuto ai mie studenti attuali e ai molti diplomati e per tutti i “passanti” su questo sito che via mail mi hanno scritto per avere informazioni. Potete trovare la collezione delle risorse da me prodotte e quelle che ritengo essenziali che ho trovato on-line direttamente nella sezione Raspberry Pi di questo sito o dal menù: Area Studenti -> Raspberry Pi o ancora facendo click sul banner presente in colonna destra.


In questo ultimo periodo non ho risposto a tutte le richieste in quanto gran parte delle mail mi sono giunte durante il periodo di vacanza ed ero impossibilitato nel dare risposte esaurienti a tutti, quindi spero che le domande e i dubbi possano essere in parte risolti con queste lezioni. Al lettore esperto che si troverà a passare per il mio sito chiedo, se possibile, di lasciare suggerimenti, segnalazioni, correzioni in modo che possano essere di aiuto per i miei studenti.

Come sempre a causa dei miei impegni non potrò promettere una periodicità puntuale nell’uscita delle lezioni, come anche una risposta a tutti i commenti, cercherò come sempre di fare il possibile.

E per tutti quelli che mi hanno chiesto: “ed Arduino? Continuerai a scrivere lezioni ed articoli didattici?”

La mia risposta è: “sì! Assolutamente sì”

Il primo amore non si scorda mai 🙂 ma soprattutto perché fa parte del percorso didattico dei miei studenti e credo che sia una stupenda piattaforma di apprendimento, inoltre come ho spesso detto via mail a molti utenti, per me Raspberry Pi e Arduino hanno applicazioni didattiche diverse ed insieme si integrano in maniera ottimale nella formazione elettronico/informatico impartita in istituti professionale e ITIS (ad indirizzo elettrico/elettronico); inoltre il connubio delle due piattaforme risponde all’esigenza della scuola attuale: “poca spesa tanta resa” 🙂

Grazie ancora a tutti i lettori.

Raspberry Pi – lezione 02: colleghiamo la scheda

Materiali necessari per il collegamento delle periferiche

Possiamo effettuare tre tipologie di connessione:

  1. Connessione ad un televisore HDMI
  2. Connessione ad un monitor LCD con ingresso DVI-D
  3. Connessione ad un TV con ingresso composito

1. Connessione ad un televisore HDMI

  1. Alimentazione mediante micro USB (potete utilizzare un alimentatore per cellulare)
  2. Scheda SD da almeno 2GB
  3. Connettore HDMI (su HDMI viene convogliato anche l’audio)
  4. Lan: cavo Ethernet da connettere ad un hub o switch
  5. USB: connessione mouse e tastiera (potete utilizzare anche una chiavetta Bluetooth per connetere le periferiche)

Fare click sulla barra per visualizzare il dettaglio dei collegamenti.

[wpspoiler name=”Dettagli sui collegamenti” ]

[/wpspoiler]

2. Connessione ad un monitor LCD

  1. Alimentazione mediante micro USB (potete utilizzare un alimentatore per cellulare)
  2. Scheda SD da almeno 2GB
  3. Convertitore HDMI – DVI-D (su DVI-D non viene convogliato anche l’audio)
  4. Lan: cavo Ethernet da connettere ad un hub o switch
  5. USB: connessione mouse e tastiera (potete utilizzare anche una chiavetta Bluetooth per connetere le periferiche)
  6. Audio: cavo audio con jack da 3,5 mm (standard cuffie e casse per computer) da collegare all’uscita audio della scheda.

Fare click sulla barra per visualizzare il dettaglio dei collegamenti.

[wpspoiler name=”Dettagli sui collegamenti” ]

[/wpspoiler]

3. Connessione ad un TV con ingresso composito

Fare click sulla barra per visualizzare il dettaglio dei collegamenti.

[wpspoiler name=”Dettagli sui collegamenti” ]

[/wpspoiler]

Prima di procedere con i passi che seguono inserite la scheda SD

  1. Non connettete la scheda all’alimentazione, questo dovrà essere fatto quanto tutto è collegato.
  2. Connettete il connettore HDMI all’uscita HDMI della scheda, se non avete un cavo HDMI andate al passo 6
  3. Connettete il cavo di rete alla porta Ethernet (si assume che voi siate dotati di connessione internet)
  4. Connettete la tastiera e il mouse ai connettori USB 2
  5. Connettete il cavo audio, ciò è necessario solo se non puoi connettere la tua scheda attraverso il cavo HDMI.
  6. Connettere il cavo video composito, questo è necessario solo se avete un TV di vecchio tipo.

Il passo finale è quello di connettere l’alimentazione. Non esistono interruttori di accensione, la scheda si avvia non appena inserite l’alimentazione.

Per l’alimentazione viene usato un connettore micro USB, identica a quella usata dai moderni telefoni cellulari. La tensione di alimentazione dovrà essere di 5V con una corrente di almeno 700 mA.

Il Raspberry Pi possiede due connettori USB, ma potete espandere la quantità di ingressi USB con un hub USB esterno che può essere inserito direttamente in una delle due porte della scheda.
Se utilizzate un hub USB ricordate che questo deve essere munito di alimentazione esterna Raspberry Pi non è in grado di alimentare direttamente l’hub.
Se disponete di un apparato wireless USB questo dovrà essere connesso ad uno degli ingressi della scheda, in questo caso avrete necessità di un hub per poter utilizzare mouse o tastiera.

Potete connettere direttamente il cavo HDMI dal Raspberry Pi direttamente all’ingresso HDMI del TV/monitor o in alternativa, se possedete un vecchio TV usate l’ingresso composito del TV.

Se effettuate un collegamento HDMI per il video, l’audio transiterà sullo stesso cavo HDMI, se invece utilizzate un collegamento composito per il video dovrete utilizzare un’ulteriore cavo per collegare l’uscita audio analogica del Raspberry Pi con il TV.

Per la connessione ad internet disponete di un connettore RJ45 a cui collegherete un cavo Ethernet (categoria 5).

Dovrete inoltre avere a disposizione di una scheda SD su cui installare il sistema operativo.

A questo punto siete pronti per utilizzare il vostro ultra miniaturizzato PC 🙂

Per non perdersi questa la lista delle cose necessarie per partire:

1. Raspberry Pi;
2. alimentatore con connettore micro USB;
3. mouse USB;
4. tastiera USB;
5. cavo HDMI o cavo composito;
6. scheda SD che contiene il sistema operativo;
7. una TV o un monitor;

Opzionale

8. cavo Ethernet categoria 5;
9. adattatore Wireles per connessione internet;
10. hub USB per la connessione di altri dispositivi.

Nella prossima lezione vedremo come copiare sulla scheda SD il sistema operativo ed avviare il Raspberri Pi.

Appunti di programmazione su Arduino: ingressi e uscite analogiche


analogRead(pin)
Legge un valore di tensione applicato al piedino analogico ‘pin’ con una risoluzione di 10 bit. La funzione restituisce un valore compreso tra 0 e 1023.

value = analogRead(pin);   // imposta 'value' uguale al
                           // valore letto su 'pin'
                           // dalla funzione analogRead

Nota: i pin analogici a differenza di quelli digitali non hanno bisogno di essere dichiarati come pin di INPUT o OUTPUT.

analogWrite(pin, value)

Cambia il duty cycle (nella funizione: ‘value’) della modulazione di ampiezza di impulso (PWM: Pulse Width Modulation) su uno dei ‘pin’ contrassegnati dall’etichetta PWM.
Sull’attuale Arduino UNO su cui è montato un ATmega 328, il PWM è abilitato sui piedini 3,5,6,9,10 e 11.
Il valore del duty cycle può essere specificato da una variabile o una costante con un valore compreso tra 0 e 255.

analogWrite(pin, value);   // scrive il valore 'value'
                           // sul 'pin' analogico

Un valore di 0 genera in uscita una tensione continua di 0 volt sul pin specificato nella funzione; un valore di 255 genera una tensione continua 5 volt sul pin specificato nella funzione. Per valori compresi tra 0 e 255, il valore in uscita varierà rapidamente tra 0 e 5 volt. Più alto sarà il valore di ‘value’ più spesso su ‘pin’ si avrà una tensione di 5 volt. Ad esempio un valore di ‘value’ pari a 64 genera un segnale in cui per tre quarti del periodo dell’onda il segnale sarà a 0 volt e per un quarto del periodo dell’onda sarà a 5 volt. Se ‘value’ è posto a 128 avremo un segnale che per metà del periodo sarà a 0 volte e per la restante metà del periodo sarà a 5 volt. Se ‘value’ è posto a 192 avremo 0 volt per un quarto del periodo e 5 volt per i restanti tre quarti del periodo.

Per approfondire l’argomento sul PWM leggete la lezione su questo sito: Arduino – lezione 06: modulazione di larghezza di impulso (PWM) corredata da esempi pratici e filmati.

Poiché analogWrite è una funzione hardware, sul pin avremo un onda quadra dopo una chiamata della funzione analogWrite e questa verrà continuativamente emessa in background fino alla successiva chiamata della analogWrite (o chiamata della digitalRead o digitalWrite sullo stesso pin).

L’esempio che segue legge un valore analogico da un pin di ingresso analogico, converte il valore dividendolo per 4, e fornisce un segnale PWM sul pin PWM specificato:

int led = 10;   // al pin 10 è collegato un LED
                // in cui in serie è posta un
                // resistore da 220 Ohm
int pin = 0;    // inseriamo un potenziometro sul pin 0
int value;      // valore che sarà letto

void setup(){} // non è necessaria nessuna configurazione
void loop()
{
   value = analogRead(pin); // imposta 'value' al
                            // valore letto su 'pin'
   value /= 4; // dividendo per 4 si converte
               // il valore letto compreso tra
               // 0 e 1023 in un valore
               // compreso tra 0 e 255
   analogWrite(led, value); // il valore del PWM
                            // viene assegnato al led
}

Per le lezioni precedenti consultare la sezione Appunti di programmazione che trovate nella pagina Arduino di questo sito.