Arrivata in pochi giorni la BeagleBone Black, acquistata via eBay sul negozio di RoboSavvy a poco meno di 50€ spedizione (dall’UK) inclusa.
La ben più famosa alternativa, il Raspberry Pi, dopo avermi allettato per un bel po’ a causa del prezzo assolutamente competitivo, alla fine l’ho scartata per le peculiarità troppo “media” e meno “server”: cercavo qualcosa adatto a sostituire egregiamente il mio SheevaPlug di cui ho già parlato in questo blog.
Unboxing
La prima impressione, davanti alla misera scatolina di cartone, è stata piuttosto deludente: capisco di risparmiare sul packaging per poter mantenere il prezzo basso ma…così si esagera !!!
Comunque, scatola a parte, sono rimasto sorpreso dalle dimensioni veramente ridotte della BeagleBone: le foto accanto ad una moneta da 1€ rendono bene l’idea di quanto è piccola la board.
All’interno un piccolissimo manuale di istruzioni minimale, che però non contiene l’informazione più importante: la polarità del jack di alimentazione ! Così, a rischio di bruciare subito la scheda, vi informo che la polarità è +5V al centro e GND l’esterno.
L’alimentatore NON E’ INCLUSO: le caratteristiche sono 5V 2A e ne trovate a pochi euro anche su eBay.Nella scatola, oltre alla BeagleBone, trovate anche il cavetto USB per il collegamento al PC.
Ecco, per vostra comodità, qualche foto della board:
CPU AM335x 1GHz ARM® Cortex-A8
con a corredo:
- 512MB DDR3 RAM
- 2GB 8-bit eMMC on-board flash storage
- 3D graphics accelerator
- NEON floating-point accelerator
- 2x PRU 32-bit microcontrollers
- USB client
- USB host
- Ethernet 10/100
- slot per mini SD
- mini HDMI
- 92 pin headers
- Display LCD 7″
- Display 4.3” TFT LCD (anche con touchscreen)
- Battery power
- Breadboard per prototyping
Uno degli aspetti più frustranti è una grande disponibilità di accessori per il mercato americano. Tuttavia anche in Europa ci sono alcuni distributori che forniscono comunque diverso materiale:
Prima di farvi prendere dall’entusiasmo, ci tengo a precisare che non si tratta di qualcosa che vi arriva a casa, attaccate la corrente e funziona (qualunque cosa significhi per voi). O, meglio: funziona, ma prima dovete decidere cosa volete far fare alla vostra BeagleBoard: non è un sostituto del PC casalingo, non è un sostituto per un tablet, non è un sostituto per il vostro NAS o router.Certo, potete farlo funzionare come router, come firewall, come Centralino VoIP con Asterisk, come server web …insomma, qualsiasi applicazione da server SOHO. Se vi piace l’idea di poterci far girare sopra un emulatore come il MAME o lo SNES; forse è meglio puntare sul RaspberryPI che offre, a differenza del BeagleBone, migliori prestazioni multimediali ed una GPIO dedicata (esistono fior di post/blog/libri sull’argomento).Power on
Dopo questa prima overview sul BeagleBone, prendiamo il cavo USB e colleghiamo al nostro PC: si accenderanno subito alcuni led blu sulla board, che iniziando a lampeggiare vi informano che “qualcosa lì sopra vive“.
Sopra la board trovate anche dei micropulsanti RESET e POWER, il cui significato dovrebbe essere abbastanza chiaro… La BeagleBone si accende anche sfruttando la porta USB del vostro PC, senza bisogno di alimentatore esterno. Ricordate, ovviamente, che le porte USB non possono erogare più di 500mA… Se avete un sistema operativo GNU/Linux (non discuto con chi ha Windows…non lo uso da anni e ne sono felice !), il vostro log di sistema (dmesg) mostrerà queste righe:[12491.604085] usb 1-1: new high-speed USB device number 3 using ehci_hcd [12491.813124] Initializing USB Mass Storage driver... [12491.820930] scsi4 : usb-storage 1-1:1.4 [12491.821252] usbcore: registered new interface driver usb-storage [12491.821262] USB Mass Storage support registered. [12492.024814] usbcore: registered new interface driver cdc_ether [12492.031633] rndis_host 1-1:1.0: eth1: register 'rndis_host' at usb-0000:00:1d.7-1, RNDIS device, c8:a0:30:a9:98:7c [12492.033832] usbcore: registered new interface driver rndis_host [12492.038583] cdc_acm 1-1:1.2: This device cannot do calls on its own. It is not a modem. [12492.038824] cdc_acm 1-1:1.2: ttyACM0: USB ACM device [12492.046222] usbcore: registered new interface driver cdc_acm [12492.046232] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters [12492.057374] usbcore: registered new interface driver rndis_wlan [12492.826758] scsi 4:0:0:0: Direct-Access Linux File-CD Gadget 0308 PQ: 0 ANSI: 2 [12492.829173] sd 4:0:0:0: Attached scsi generic sg1 type 0 [12492.830983] sd 4:0:0:0: [sdb] 144522 512-byte logical blocks: (73.9 MB/70.5 MiB) [12492.832558] sd 4:0:0:0: [sdb] Write Protect is off [12492.832572] sd 4:0:0:0: [sdb] Mode Sense: 0f 00 00 00 [12492.834549] sd 4:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [12492.842850] sdb: [12492.845593] sd 4:0:0:0: [sdb] Attached SCSI removable diskMolto velocemente, significano che avete accesso diretto alla scheda di memoria incorporata da 70MByte (sdb, in questo caso) e che dovreste trovarvi con una interfaccia di rete aggiuntiva (nel mio caso è stata la eth1) con IP 192.168.7.1Nella scheda di memoria trovate documenti, guide, sorgenti…Con l’interfaccia di rete potete direttamente accedere al sistema operativo della BeagleBone attraverso SSH:
~$ ssh -l root 192.168.7.2Al prompt “Password:” digitate semplicemente INVIO:
root@192.168.7.2's password: root@beaglebone:~#
Benvenuti nel cuore della BeagleBone ! Un veloce uname -a, giusto per iniziare:
Linux beaglebone 3.8.13 #1 SMP Wed Sep 4 09:09:32 CEST 2013 armv7l GNU/Linux
e un df -h per capire il contesto:
Filesystem Size Used Avail Use% Mounted on rootfs 1.7G 1.1G 586M 64% / /dev/root 1.7G 1.1G 586M 64% / devtmpfs 250M 0 250M 0% /dev tmpfs 250M 4.0K 250M 1% /dev/shm tmpfs 250M 236K 250M 1% /run tmpfs 250M 0 250M 0% /sys/fs/cgroup tmpfs 250M 4.0K 250M 1% /tmp /dev/mmcblk0p1 70M 54M 16M 78% /media/BEAGLEBONE_
Pinout e I/O
Il punto di forza della BeagleBone è l’alto numero di linee di I/O accessibili attraverso i due connettori P8 e P9 posti su i due lati.
L’immagine a destra mostra il pinout dei connettori.
Su questo sito, http://beaglebone.cameon.net/home, trovate informazioni più approfondite con esempi di programmazione.
Giusto per chi è alle prime armi:
GPIO = General Purpose I/O, linea utilizzabile sia in ingresso che in uscita con segnale digitale.
Queste linee sono TTL 3,3 V e NON a 5V: la tensione massima applicabile è di 3,3VAIN = Analog INput, linea per l’ingresso di segnali ANALOGICI che vanno direttamente all’ADC (Analog to Digital converter).
A questi ingressi possiamo applicare una tensione MASSIMA di 1,8VPWM = Pulse Width Modulation, linee in USCITA per segnali in PWM (motori passo-passo, sirene, etc etc etc…).
Ovviamente ciascuna di queste linee dovrà essere adeguatamente programmata via software, secondo quanto indicato nei documenti.
Ultima nota, sono le revisioni hardware della scheda. In particolare, quella in mio possesso è la rev. A6: verificate sempre di acquistare l’ultima revisione disponibile !