Sparkfun Interactive Badges

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

http://s4a.cat/snap/

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

arduinoISP.jpg - ArduinoISP (122 KB) Michele Vece, 12-11-2014 02:32