Raspberry pi e il pensiero creativo

Da aptiva.

Indice

Introduzione

L'attività proposta è pensata per un'intera area di progetto in un itis con indirizzo in informatica. Tutta l'attività si basa sul materiale presente sul blog ufficiale di raspberry pi [1]opportunamente scelto per proporre un percorso organico finalizzato alla stimolazione del pensiero creativo.

Area di progetto

L’area di progetto nasce con l’idea di stimolare nello studente quelle competenze che nel normale svolgimento curricolare non sono approfondite. In particolare il carattere multidisciplinare è una caratteristica molto importante: lo studente è spinto a vedere le materie non più come scorrelate l’una dall’altra, ma come una serie di competenza ognuna delle quali può risultare utile per sviluppare l’obiettivo preposto. L’area di progetto è strutturata in modo che i docenti che partecipano al progetto offrono fino al 10% del loro monte ore per quest’attività che si propone, in linea generale, di: L'area di progetto si propone di:

  • far cogliere all'alunno quanto i concetti più o meno astratti insegnati a lezione si concretizzino nella realtà;
  • sollecitare le capacità di problem solving dello studente;
  • stimolare la creatività;
  • promuovere la socializzazione degli alunni, stimolando il confronto delle idee, la capacità di imparare e di insegnare ad altri studenti, e la capacità di convogliare gli sforzi di un gruppo in un’unica direzione;
  • favorire il confronto tra la realtà scolastica e la realtà di lavoro, mostrando esempi e problemi reali.

Proprio per queste ragioni l’attività didattica che cercherò di proporre in queste pagine vuole inserirsi proprio in questo spazio, ed pensata quindi per un monte ore considerevole visto che dovrà avere una durata annuale; tuttavia può essere opportunamente scalata e modulata in base alle esigenze di tempo, visto che lo schema proposto ha alcuni punti da sviluppare, ma lascia libertà sia agli studenti che alla gestione del docente. L’attività è pensata per un ITIS con indirizzo informatica in una classe terza, età nella quale gli studenti sono molto aperti, curiosi e facilmente stimolabili e in più posseggono già competenze informatiche utili per lo sviluppo del progetto. Nel seguito si farà riferimento ai prerequisiti richiesti agli studenti per affrontare questa attività didattica con successo.

La multidisciplinarità proposta non comprende tutte le materie studiate dagli studenti in terza superiore, ma sicuramente i concetti incontrati sono di interesse per tutte le materie informatiche (Informatica, Sistemi, TPS) e anche per inglese; in base alle scelte dei ragazzi nella fase finale dell’attività, anche matematica e fisica potrebbero essere coinvolte facilmente.

Rapsberry PI

Raspberry pi è una computer realizzato su una singola scheda di dimensioni ridotte; si tratta di un progetto voluto e realizzato con il contributo del Regno Unito, ed è stato pensato per stimolare l’insegnamento dell’informatica di base nelle scuole britanniche. Nel corso degli anni ha ottenuto un gran successo per le tanti applicazioni sviluppate e per il prezzo decisamente contenuto. Il vantaggio di questo sistema è da un lato la possibilità di comprare un computer con circa 30€, sul quale è possibile installare una quantità enorme di software open-source. Un altro importante vantaggio dell’architettura è la possibilità di poter accedere ai pin gpio (general purposeinput/output) controllabili attraverso librerie. Questo da il vantaggio di poter disporre di un sistema utile per comandare a basso livello attuatori, o leggere dati provenienti da sensori, e nel contempo disporre di tutti i vantaggi di un sistema operativo quale linux, con tutti le funzionalità che questo porta: basti pensare alla risorse di comunicazione di rete messe a disposizione. La comunità di sviluppatori collegata al blog ufficiale di raspberry pi [2] rappresenta indubbiamente una risorsa importante per chiunque voglia avvicinarsi in questo mondo: sul sito infatti sono presenti tante informazioni per il setup di raspberry pi, e tanto materiale proprio per scopo didattico: tra le risorse è presente una sezione “teach” con spunti per lezioni su networking, web, setting-up di raspberry pi; inoltre nella sezione “learn” e “make” sono presenti progetti e percorsi di apprendimento di tantissimi aspetti legati alla programmazione, all’uso di periferiche ecc.

Contesto e prerequisiti

Il contesto per cui è proposta questa attività è quello di una classe terza di un ITIS con indirizzo informatico. Come già sottolineato questa proposta didattica vuole essere trasversale principalmente sulle materie di indirizzo, e si prefigge principalmente l’obiettivo di stimolare la creatività degli studenti e la loro capacità di risolvere problemi nuovi. Nessuno vieta ovviamente di poter portare la stessa attività anche in altri contesti, come ad esempio delle attività extra-scolastiche; pur tuttavia occorre precisare che alcuni pre-requisiti sono richiesti agli studenti per operare in maniera sufficientemente agile. Un primo requisiti è avere delle nozioni di base di informatica e di reti di calcolatori, e soprattutto conoscere, seppur in maniera molto limitata e superficiale, il python. Inoltre sono richiesti alcuni requisiti tecnici relativi alle attrezzature disponibili in laboratorio; in particolare occorrerà per ogni gruppo di lavoro (indicativamente composto da 4 studenti) di:

  • un raspberry pi
  • mouse e tastiera usb
  • un monitor con ingresso HDMI o un monitor VGA e un convertitore HDMI-VGA e i relativi cavi di collegamento
  • un cavo di rete
  • un alimentatore micro-usb
  • una scheda micro-sd
  • Inoltre saranno richiesti anche altri sensori e attuatori (un paio di picam ad esempio, led e pulsanti, sensori di gas ecc...), in base ai progetti che si sceglieranno in seguito, alcune breadboard e i cavi di collegamento.

Le fasi del lavoro

Installazione e configurazione del sistema

Inizialmente il professore introdurrà l’architettura del raspberry mettendo in evidenza il fatto che si tratta di un computer a tutti gli effetti (con i relativi vantaggi). Quindi il primo obiettivo che la classe si porrà sarà quello di installare un SO sul dispositivo e prendere confidenza con l’ambiente stesso. Per introdurre l’argomento potrebbe essere utile vedere il video “quick start guide” all’indirizzo [3] dove sono presenti oltre a questo anche altri video interessanti e utili. Il video ovviamente è in inglese, ma questo è solo un vantaggio, visto che l’attività che si sta svolgendo è multidisciplinare: andrà quindi coinvolto il docente di inglese per supervisionare l’attività e cercare di aiutare gli studenti nella comprensione. Il concetto importante che gli studenti apprenderanno sarà anche quello che la stragrande maggioranza del materiale consultabile in internet relativo all’informatica è in lingua inglese, e non si può pensare di prescindere dalla conoscenza di questa lingua per operare in questo settore.

Dopo l’introduzione al sistema, il professore mostrerà come scarica l’immagine del SO scaricabile da [4], e quindi mostrerà le fasi completamento del sistema operativo. Dopo questo passaggio verrano distribuite le sd-card con già copiato l’immagine del sistema di installazione NOOBS, e verrà quindi chiesto agli studenti di ripercorrere i passi eseguiti dal professore per installare correttamente il sistema. A questo punto verrà chiesto semplicemente di prendere familiarità con il sistema provando il menù dei programmi ed anche un semplice programma in python “Hello World”.

Configurazione della rete - IP statico

Una volta installato il sistema, il professore può introdurre il concetto di rete di calcolatori. Normalmente questa attività può essere fatta sinergia con il docente di sistemi che in una terza affronta questi temi. L’idea che si vuole far passare con questa attività non è solamente come configurare una rete, ma far comprendere agli studenti che le reti di computer sono quanto di più comune ci circonda. Un’interessante attività preparatoria può essere proprio quella di chiedere agli studenti di elencare alcuni device collegati in rete che loro conoscono e poi di elencarne alcuni non così scontati come ad esempio, bancomat, semafori, alcuni sistemi domotici, o banalmente la televisione (se non fosse già stata evidenziata dagli studenti).

Il primo passo è quello di configurare la rete sui dispositivi: per questo viene questo agli studenti di seguire in maniera autonoma (divisi in gruppi) la guida all’indirizzo [5] che guida passo passo l’utente ad un settaggio a mano dell’indirizzo ip attraverso la modifica del file /etc/network/interfaces . Attraverso questo tipo di configurazione è possibile costruire una rete senza necessità di introdurre i concetti di assegnazione dinamica degli indirizzi e dhcp; ovvio che nel caso si abbia l’esigenza di sottolineare questi aspetti il docente potrebbe soffermarsi di più su questo argomento. A questo punto i raspberry pi dei vari gruppi possono essere connessi insieme e si devono invitare gli studenti attraverso il comando ping a verificare la presenza degli altri dispositivi in rete e il comportamento dello stesso programma quando si inserisce un indirizzo non presente sulla rete, o si scollega un raspberry dalla rete.

Accensione del led sul device remoto

Dopo aver configurato la rete quello che si vorrà mostrare agli studenti è l’utilità della rete nella concretezza di un esempio, che seppur banale, mostra le potenzialità che una comunicazione tra due dispositivi ha. Si tratta di accendere un led su di un device remoto. L’attività ha ovviamente degli importanti legami con il programma del corso di sistemi di reti, e quindi può essere approfondita a piacere dal docente nel caso si ritenga opportuno.

I passi da compiere sono i seguenti:

  • installazione del modulo network.py attraverso il comando: wget http://goo.gl/LE4Po3 -O network.py --no-check-certificate .
  • creare il file thing-server.py con il seguente codice:
import RPi.GPIO as GPIO
import time
import network

SWITCH = 10
GPIO.setmode(GPIO.BCM)
GPIO.setup(SWITCH, GPIO.IN)

def heard(phrase):
 print "heard:" + phrase
 for a in phrase:
   if a == "\r" or a == "\n":
     pass # strip it
   else:
     if (GPIO.input(SWITCH)):
       network.say("1")
     else:
       network.say("0")
while True:
 print "waiting for connection"
 network.wait(whenHearCall=heard)
 print "connected"
 while network.isConnected():
   print "server is running"  
   time.sleep(1)
 print "connection closed"

Questo codice è preso dal blog ufficiale di rapseberry pi [6].

  • Per il client si deve creare un file chiamato thing-client.py con il seguente codice python:
import RPi.GPIO as GPIO
import time
import sys
import network 

SERVER_IP = sys.argv[1]
 
LED = 11
GPIO.setmode(GPIO.BCM) 
GPIO.setup(LED, GPIO.OUT)
gotResponse = False

def heard(phrase):
  global gotResponse
  print "heard:" + phrase

  for a in phrase:
    if a == "\r" or a == "\n":
      pass # skip it
    elif a == "0":
      GPIO.output(LED, False)
    else:
      GPIO.output(LED, True)
  gotResponse = True

while True:
  while True:
    try:
      print "connecting to switch server"
      network.call(SERVER_IP, whenHearCall=heard)
      break
    except:
      print "refused"
      time.sleep(1)

  print "connected"

  while network.isConnected():
    gotResponse = False
    print "polling"
    network.say("?")

    while network.isConnected() and not gotResponse:
      print "waiting"  
      time.sleep(1)

  print "connection closed"

Il codice può essere trovato qui [7].

Una volta creati i file occorre connettere l’hardware in maniera opportuna. Sulla raspberry che fungerà da client occorre mettere un led in serie ad una resistenza da 330 Ω collegato a GND e al GPIO numero 11 del raspberry, e un interruttore sulla macchina server che colleghi GND con il pin 10. Per mettere in esecuzioni il server basterà digitare:

python thing-server.py

mentre per mettere in esecuzione il client:

python thing-client.py SERVER_IP_ADDRESS

dove SERVER_IP_ADDRESS rappresenta l’indirizzo IP del server, ad esempio 192.168.0.2 .

Tutto questo può essere fatto dal docente spiegando passo-passo le cose da fare, oppure lasciando più libertà agli studenti e dicendogli di seguire le istruzioni che troveranno all’indirizzo [8] in cui sono disponibili i passi da compiere in lingua inglese.

Esempio di uso della picamera

Giunti a questo punto il docente, oltre ad aver mostrato le funzionalità di raspberry pi in rete avrà anche evidenziato come sia possibili controllare pin GPIO in maniera molto semplice; questo fa si che gli utilizzi del rapsberry possono essere molto più creativi e interattivi rispetto un normale pc. Oltre ai pin general purpose però è importante spiegare che esistono anche altre periferiche: un esempio molto interessante è quello di mostrare il funzionamento della picamera, una videocamera che si collega direttamente ad un connettore dedicato. Attraverso questa telecamera e il software sviluppato a corredo è possibile in maniera molto semplice acquisire immagini e video.

Questa parte dell’attività è pensata per essere mostrata dal docente, anche perchè presumibilmente non si dispone di una picamera per ogni gruppo. Il docente mostra come collegare la telecamera collegando la strip al connettore posto vicino al connettore ethernet. Dopodichè attiva la camera eseguendo il comando:

sudo raspi-config

e naviga il menù fino alla voce “Enable Camera”, abilitandola. Al termine riavvia il dispositivo.

A questo punto dopo aver installato le librerie picamera attraverso il comando:

sudo apt-get install python-picamera python3-picamera python-rpi.gpio

il docente scriverà il seguente codice, mostrando quello che accade e commentandolo opportunamente.

import time
import picamera

with picamera.PiCamera() as camera:
    camera.start_preview()
    time.sleep(5)
    camera.capture('/home/pi/Desktop/image.jpg')
    camera.stop_preview()

Sul sito [9] è possibile trovare numerose varianti del codice, in base a quando il docente vuole approfondire questo aspetto. Quello che sicuramente è importante è mostrare le potenzialità e riportare agli studenti le innumerevoli applicazioni che si possono realizzare con questo strumento. Alcuni studenti sicuramente nel lavoro successivo approfondiranno i temi legati alla gestione della picamera e ai suoi utilizzi.

Progetti degli studenti

L’ultima parte dell’attività, quella a cui era rivolto tutto il lavoro preparatorio è in realtà una parte poco strutturata. Il docente dovrà semplicemente invitare i gruppi a sviluppare un progetto in maniera autonoma. I progetti dovranno essere scelti tra quelli disponibili sul sito ufficiale di raspberry alla voce Make [10]. Ciascun progetto è ben documentato e mette a disposizione una guida passo-passo per l’implementazione. Il lavoro richiesto agli studenti sarà dunque quello di leggere e comprendere quanto scritto sulla guida e in principio copiare il codice. Come sempre accade quando ci sia approccia a problemi di questo tipo sorgeranno sicuramente problemi e non tutto funzionerà subito; il lavoro, coadiuvato dal docente, sarà quello di cercare di risolvere i problemi che si presenteranno offrendo strade di debug che possano far entrare i ragazzi sempre di più nel codice. Se anche l’obiettivo venisse raggiunto velocemente e senza particolare sforzo, quindi senza una comprensione approfondita del progetto, il docente dovrà richiedere delle piccole modifiche e lasciare che gli studenti, anche in maniera autonoma, cerchino di introdurre features, o modifiche al programma. I progetti realizzati devono necessariamente prevedere l’hardware necessario, e quindi in base a questo verranno indirizzati gli studenti verso alcuni progetti e non verso altri. In un’esperienza realmente realizzata sono stati sviluppati:

  • “twitting babbage”: un orsetto con una picamera al posto dell’occhio e un pulsante in una mano che ogni volta che viene premuto fa sì che venga scattata una foto e twittata con un account pre-impostato (necessario: picamera, wifi, batteria, e pulsante).
  • “fart detector”: viene generato un allarme in caso di gas presenti in atmosfera (interessante perchè oltre all’utilizzo di un sensore apposito permette di comprendere e riflettere sulla differenza tra analogico e digitale)
  • “Quick reaction game”: gioco di reazione in cui premere è importante premere un pulsante il più velocemente possibile dopo un certo segnale luminoso. Il materiale da utilizzare è minimo (pulsanti e led) ma permette una castomizzazione molto ampia, inventandosi giochi diversi: sequenze luminose da riprodurre premendo la giusta sequenza di pulsanti.

Valutazione

La valutazione di questo tipo di attività deve essere espressa in base all’impegno e alla partecipazione degli alunni: non è tanto il risultato finale la cosa importante, ma lo sforzo impiegato per ottenerlo. Inoltre il fatto di essere un’attività pensata per l’area di progetto non ha necessità che venga valutata in maniera formale, ma può portare al conseguimento per gli studenti di crediti formativi.

Commenti sulle scelte metodologiche

Come più volte detto questa attività didattica è pensata per l’area di progetto di una terza ITIS indirizzo informatica. Questo è importante perchè l’obiettivo che si vuole raggiungere non è quello di insegnare la programmazione su sistemi embedded o il python come linguaggio, ma bensì di stimolare la creatività degli studenti in un’età in cui possono essere coinvolti profondamente se opportunamente stimolati.

Attività di gruppo

Come tutte le attività di gruppo anche questa presenta il vantaggio che gli studenti hanno la possibilità di confrontarsi tra pari, risolvere in maniera più immediata che rispetto al confronto col docente i dubbi che eventualmente un compagno ha già chiarito. Il lavorare insieme, inoltre, è stimolante a livello umano e questo sicuramente è importante per l’aggregazione e l’inclusione che comunque rimangono obiettivi importanti per un docente. L’altra faccia della medaglia è che tuttavia dietro i lavori dei gruppi potrebbero celarsi i lavori di singoli individui che portano avanti il lavoro senza una reale partecipazione di tutto il team. Questo è un inconveniente che tutti i lavori di gruppo portano con sè: l’attenzione del professore deve essere finalizzata a fare in modo che avvenga uno scambio all’interno dei gruppi e che il lavoro sia partecipato. Il fatto che la valutazione sia fatta in base all’impegno e non al risultato offre al docente una leva in più nei confronti di coloro che non si impegnano a sufficienza.

Approccio Top-Down

L’approccio presentato è di tipo top-down, e praticamente la totalità di codice utilizzato non deve essere scritto dagli studenti ma copiato da quello presentato dal professore o presente in una guida di riferimento. Questo approccio presenta alcuni vantaggi:

  • in primo luogo la possibilità di arrivare a realizzare progetti con una certa complessità e con uno sforzo contenuto, provocando quindi un certo livello di appagamento negli studenti.
  • La comprensione che esistono comunità di sviluppatori (e che si può anche entrare da protagonisti in queste comunità quando si avranno le competenze necessarie) che offrono il codice frutto del loro lavoro. L’idea di una comunità che sviluppa in maniera distribuita è importante nell’informatica di oggi.
  • Vedere del codice scritto da altri “bravi” sviluppatori è di aiuto perché permette di confrontare il proprio stile con quello di programmatori più esperti, e quindi di migliorare sotto questo aspetto.

Gli svantaggi però sono altresì presenti:

  • il rischio di banalizzare il lavoro senza far comprendere la complessità di quello che stanno facendo esiste, e al contempo di creare negli studenti la sensazione che le cose funzionino quasi per “magia”.
  • L’approccio di utilizzare il codice altrui libera gli studenti dalla necessità di costruire quelle competenze di sintassi necessarie nella programmazione ma che verranno in parte sottovalutate visto che tutto funziona senza un grosso intervento di debug.

Si sarebbe potuto scegliere un approccio opposto, andando ad approfondire un semplice esempio di partenza e costruendo da questo in maniera più solida altre funzionalità: ad esempio si potrebbe costruire un progetto di gestione dei GPIO ma in cui tutto il software è scritto dagli studenti (ad esempio implementazione di funzioni anti-rimbalzo) e quindi concentrandosi anche sulla stesura del codice, sulla sintassi python (che gli studenti non hanno approfondito in seconda, ma solo visto superficialmente). La scelta proposta vuole però focalizzare l’attenzione sulle potenzialità stimolando la voglia di “giocare” in maniera autonoma con questo strumento. Un approccio top-down è sterile se ci si ferma al top senza scendere in profondità, tuttavia ci si auspica che gli studenti (probabilmente non tutti) possano appassionarsi e approfondire gli argomenti, andando a studiare in maniera autonoma come risolvere i problemi che si presenteranno e quindi andando a raffinare i concetti che intuitivamente e a livello superficiale hanno iniziato a masticare. Il fatto che l’attività sia pensata per l’area di progetto offre la possibilità di non dover necessariamente trattare dei temi specifici, o comunque di fornire le basi di informatica su cui dovranno essere costruiti i concetti successivi, ma al contrario offrire una visione dell’informatica più ampia e, perché no, divertente.

Strumenti personali
Namespace

Varianti
Azioni
Navigazione
Strumenti