La Raspberry Pi ve equipada amb un port anomenat GPIO que consta de 40 pins que es poden fer servir d'entrades, sortides, alimentacions de 3'3V i 5V i terra. Amb aquest port, la nostra placa és una de les millors candidates per fer programació física, és a dir, programar qualsevol objecte que es pugui connectar perquè es comporti com volem. Amb aquestes tecnologies és amb les que s'està contruint actualment allò que anomenam l'internet de les coses (IOT).
Aquests pins es poden controlar amb qualsevol llenguatge de programació, però la realitat és que Raspberry Pi ha fet un gran esforç per desenvolupar la compatibilitat amb Python i Scratch, encara que, per la complexitat del primer al nivell al que ens trobam, farem servir el segon amb el que ja estam familiaritzats.
Scratch ve, per tant, amb tot el necessari per controlar cadascun dels pins del port GPIO:
El problema es presenta quan es volen connectar sensors un poc més sofisticats que necessiten d'una interfície més complexa. Per sort, la comunitat d'usuaris de Raspberry Pi és molt gran i aquest treball ja està fet amb la llibreria ScratchGPIO (simplesi).
Amb la instal·lació d'aquesta llibreria es descarreguen arxius d'Scratch que serveixen d'exemple de funcionament i que il·lustren com es poden connectar i controlar els sensors ultrasònics, els siguelínies, l'encesa i aturada de LEDs, els motors,... Després d'unes quantes pràctiques a classe, ja veuràs com és de fàcil programar al RBPI!!
Per poder controlar els pins de GPIO, s'ha de tenir present el seu esquema general (tal com es veu a la imatge) i que les noves funcions es poden utilitzar mitjançant els blocs que veurem a continuació (descripció completa a la web de l''autor).
Per començar, s'ha de tenir clar que, per defecte, els pins estan configurats com:
OUTPUTS: 11, 12, 13, 15, 16, 18
INPUTS: 3, 5, 7, 8, 10, 19, 21, 22, 23, 24, 26
Per manipular els valors dels outputs (high = on = 1 / low = off = 0) tenim diferents opcions:
Activar un pin: "broadcast pin11on" o "broadcast pin11high" encendran el pin 11. Si es canvia el nombre, es canviarà el pin sobre el que actua el comandament. També es poden fer servir variables amb "set pin11 to on".
Desactivar un pin: "broadcast pin11off" o "broadcast pin11low" apagaran el pin 11. Si es canvia el nombre, es canviarà el pin sobre el que actua el comandament. També es poden fer servir variables amb "set pin11 to off".
Activar o desactivar tots els pins: "broadcast allon" o "broadcast alloff". També "set allpins to on" o "set pinpattern to ...".
Combinar valors a pins diferents:
"broadcast alloff pin11on pin15on": apagarà tots i encendrà l'11 i el 15.
"broadcast pinpattern 000101": fa servir la seqüència (18, 16, 15, 13, 12, 11), per tant, el comandament només encén el 11 i el 13.
Per llegir inputs: "valor del sensor pin23".
En cas de necessitar més sortides, "broadcast pin7on" configura automàticament el 7 com output i l'encén i "broadcast config11in", el configura com input.
A la pàgina de l'autor es pot trobar més informació de com controlar motors, servos, steppers, sensors d'ultrasons i més... La connexió és un poc més complicada que el que s'ha explicat fins ara, sobretot si es vol controlar la velocitat dels motors.
Pràctica 1: Prova d'encendre un led connectat a la Raspberry Pi amb una placa de prototipat. Recorda que has de fer servir una resistència en sèrie per tal d'alimentar el led amb el voltatge adequat. Quins serà el valor òptim d'aqquesta R?
Prova de programar el led perquè parpellegi.
Pràctica 2: A la mateixa placa de prototipat i el mateix arxiu de ScratchGPIO, però de manera independent, munta tres leds de color vermell, groc i verd. Programa'ls perquè es comportin com un semàfor. Recorda les resistències!
Pràctica 3: A la mateixa placa i el mateix arxiu de ScratchGPIO, però de manera independent, connecta un motor que avanci només quan s'activi un polsador connectat a un pin d'entrada. Fes servir el circuit integrat ULN2003 tal com es mostra a la imatge.
Desa l'arxiu amb el codi i conserva el muntatge a la placa. Crea un document a mode de petita memòria on comentis els punts més rellevants d'aquests tres pràctiques.