Sparkfun Interactive Badges¶
- Table of contents
- Sparkfun Interactive Badges
- Metodo Michele
Aggiornamento del 5 Luglio 2020¶
Le schede si programmano attraverso Arduino e si possono seguire le indicazioni riportate nel file allegato: [[https://dev.hacklabterni.org/attachments/1475/Hacking_Sparkfun_Badge_Update_28_06_2020.pdf]].
Scratch 2 Arduino (s2a) Demo Board¶
Demo Board realizzata per provare l'interfacciamento tra Scratch e Arduino. In questo caso al posto dell'Arduino abbiamo utilizzato una Sparkfun Interactive Badge.
Visto che i Badges sono sprovvisti di interfaccia USB abbiamo usato un adattatore da USB a seriale a basso costo basato sul chip pl2303.
Da questo adattatore si prendono i segnali TX, RX, GND, e V (5V o 3.3V) e si collegano ai rispettivi pin del connettore a sinistra del Badge. In questo modo possiamo far comunicare il PC e il Badge nello stesso modo in cui comunicano PC e Arduino, stesse chiamate alla libreria Serial.
Per la Demo Board come dispositivi di output abbiamo utilizzato il LED RGB e il Buzzer già presenti sul Badge, mentre come dispositivo di input abbiamo usato un potenziometro a slitta.
La Demo Board assemblata con le fascette sul cartone:
Lato PC occorre installare la versione offline di Scratch come spiegato in questa guida e la parte di comunicazione tra Scratch e Arduino come spiegato in quest'altra guida.
La comunicazione tra Scratch e Arduino è realizzata con Firmata e s2a_fm. Questa implica una parte firmware da caricare nell'Arduino, per la quale si può usare l'esempio "StandardFirmata" contenuto nell'ide di Arduino, e una parte software che gira nel PC implementa appunto da "s2a_fm". s2a_fm è un'estensione per Scratch/Snap! scritta in Python che permette a Scratch o Snap! e a un Arduino di comunicare fra loro.
Un semplice esempio in Scratch:
Snap4Arduino¶
Usando la stessa Demo Board del paragrafo precedente un semplice esempio in Snap:
Informazioni utili per la programmazione¶
https://github.com/sparkfun/Interactive_Badges
https://learn.sparkfun.com/tutorials/hacking-your-maker-faire-badge
Per programmarli serve un ISP AVR Programmer, tipo questo Pololu USB AVR Programmer o questo USBtinyISP, oppure un Arduino usato come ISP Programmer dal quale prendere i segnali MISO, MOSI, SCK, RST (vedi Metodo Michele sotto). L'ISP Programmer va collegato al connettore a 6 pin (2x3) sulla destra con scritto ICSP. Con una scheda tipo questa: ISP Pogo Adapter <https://www.sparkfun.com/products/11591> si può evitare di saldare i 6 pin.
L'ISP Programmer si può usare per programmare i Badges ogni volta che si vuole cambiare il firmware, oppure per metterci un bootloader per poi programmarlo via seriale con un adattatore tipo questo <https://www.sparkfun.com/products/9873> usando però il connettore a 6 pin (1x6) sulla sinistra. In questo modo l'adattatore può essere usato anche per comunicazioni Bdges <-> PC come si fà con Arduino.
Per programmare le schede con un ISP Programmer occorre seguire la seguente procedura (vale per IDE Arduino 1.0.5)
Programmatore Pololu USB AVR Programmer¶
- Appendere al file "<path-to-arduino-ide>/hardware/arduino/programmers.txt" le righe:
avrispv2.name=AVR ISP v2 avrispv2.communication=serial avrispv2.protocol=avrispv2
- Appendere al file "<path-to-arduino-ide>/hardware/arduino/boards.txt" le righe:
############################################################## atmega328bb.name=Sparkfun Board atmega328bb.upload.protocol=stk500 atmega328bb.upload.maximum_size=30720 atmega328bb.upload.speed=57600 atmega328bb.bootloader.low_fuses=0xE2 atmega328bb.bootloader.high_fuses=0xDA atmega328bb.bootloader.extended_fuses=0x06 atmega328bb.bootloader.path=arduino:atmega atmega328bb.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex atmega328bb.bootloader.unlock_bits=0x3F atmega328bb.bootloader.lock_bits=0x0F atmega328bb.build.mcu=atmega328p atmega328bb.build.f_cpu=8000000L atmega328bb.build.core=arduino:arduino atmega328bb.build.variant=arduino:standard
Programmatore USBtinyISP¶
- Il file "<path-to-arduino-ide>/hardware/arduino/programmers.txt" non va modificato in quanto già comprende la informazioni per questo programmatore.
- Il file "<path-to-arduino-ide>/hardware/arduino/boards.txt" va modificato come sopra.
- [Solo per Linux] Per avere i permessi anche da utente normale (non root) occorre creare il file "/etc/udev/rules.d/90-usbtiny.rules" con la seguente riga:
SUBSYSTEM=="usb", ATTR{product}=="USBtiny", ATTR{idProduct}=="0c9f", ATTRS{idVendor}=="1781", MODE="0660", GROUP="dialout"
Comune ai due programmatori¶
- Far partire l'IDE di Arduino, dal menu "Strumenti" scegliere la scheda "Sparkfun Board" e il programmatore "AVR ISP v2" nel primo caso e "USBtinyISP" nel secondo.
- Per compilare e caricare sul Badge lo sketch scritto con l'IDE: dal Menu "File" scegliere "Carica con un programmatore".
- Per caricare il bootloader sul Badge: dal menu "Strumenti" -> "Scrivi il bootloader".
Metodo Michele¶
Ecco come programmare la SparkfunBoard con un Arduino UNO
Prepara l'IDE Arduino¶
Per aggiungere la Sparkfun Board alle schede programmabili dall'IDE Arduino basta modificare file boards.txt presente in:
su GNU/Linux
.usr/share/arduino/hardware/arduino/boards.txt
su Windows XP da verificare
c:\Documents and Settings\<USERNAME>\Application Data\Arduino\preferences.txt
su Windows Vista da verificare
c:\Users\<USERNAME>\AppData\Roaming\Arduino\preferences.txt
su OSX
/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/boards.txt
aggiungendo in fondo al file di testo
############################################################## atmega328bb.name=Sparkfun Board atmega328bb.upload.protocol=stk500 atmega328bb.upload.maximum_size=30720 atmega328bb.upload.speed=57600 atmega328bb.bootloader.low_fuses=0xE2 atmega328bb.bootloader.high_fuses=0xDA atmega328bb.bootloader.extended_fuses=0x06 atmega328bb.bootloader.path=arduino:atmega atmega328bb.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex atmega328bb.bootloader.unlock_bits=0x3F atmega328bb.bootloader.lock_bits=0x0F atmega328bb.build.mcu=atmega328p atmega328bb.build.f_cpu=8000000L atmega328bb.build.core=arduino:arduino atmega328bb.build.variant=arduino:standard
Rendi Arduino un Programmatore ICSP¶
File > Esempi > ArduinoISP
File > Carica
Collega un condensatore elettrolitico da 10µF tra il pin RESET e pin GND (con il polo negativo verso GND)
Collegate i cavi così¶
Configura l'IDE Arduino per programmare la SparkfunBoard¶
Seleziona la board
Strumenti > Tipo di Arduino > Sparkfun Board
Seleziona il programmatore da utilizzare
Strumenti > Programmatore > Arduino as ISP
Scrivi il Bootloader o¶
Strumenti > Scrivi il bootloader
Carica firmware via ISP¶
File > Carica con un programmatore