“Mai fidarsi di un computer che non si può gettare fuori da una finestra.”
Steve Wozniak
Preso dalla curiosità e convinto dal prezzo decisamente basso, ho acquistato dal un distributore francese Kubii un Raspberry Pi Zero W con alcuni cavi e scheda miniSd da 4GByte per il SO per 30€ spedizione inclusa (ho poi scoperto che su Kiwi-Electronics, distributore olandese, sarebbero bastati 11€ + spedizione…).
Arrivato dopo pochi giorni, sono rimasto decisamente stupito dalle dimensioni estremamente contenute di questo dispositivo, che oltre alla CPU da 1GHz (single-core, but who cares ?) e 512MB RAM, incorpora periferica una WiFi 802.11n e Bluetooth 4.0. On board, troviamo anche le porte Mini-HDMI, Micro-USB On-The-Go, Micro-USB, HAT-compatible 40-pin header, Composite video and reset headers e il CSI camera connector.
il pinout del connettore GPIO 40 pin è il seguente (direttamente dal sito RaspberryPI.org):
Installare il sistema operativo
Come prima cosa, è necessario installare il sistema operativo sulla miniSD (da 4GByte). Per i primi esperimenti ho deciso di partire con Raspbian, la distribuzione Debian-like sviluppata proprio per il Raspberry. Può essere scaricata, ovviamente gratis, da qui: Download Raspbian.
Una volta scompattato il pacchetto .zip, bisogna copiare l’immagine raw sulla miniSD. Su sistema operativo GNU/Linux (altri non ne prendo in considerazione…) c’è il comodissimo e potentissimo comando “dd“, da usare però con cautela onde evitare di scrivere dove non si desidera.
Procediamo quindi collegando la miniSD (eventualmente con un adattatore o lettore di schede di memoria) al nostro PC e consultare, da terminale con il comando “dmesg“, qual’è il device assegnato. Una volta identificato, ad esempio “sdc”, sempre da terminale lanciare il comando:
dd if=./2017-03-02-raspbian-jessie-lite.img of=/dev/sdc bs=1024k
Breve spiegazione del comando “dd” (eventualmente potete consultare il manuale con “man dd“): “if” significa “input file“, ovvero la sorgente dei dati, “of” significa “output file“, ovvero dove scrivere questi dati. “bs” è “block size“, ovvero che la copia da if a of può avvenire per blocchi di dati, velocizzando il processo.
Una volta terminata la copia dei dati, la miniSD conterrà due partizioni, una “boot” da 63MByte FAT32 e una “root” da 3,6GByte in ExtFS.
A questo punto, se vogliamo accedere al nostro Raspberry via SSH connettendosi attraverso la porta USB dati (quella più vicina al processore)…
Connettersi al Raspberry Pi via SSH attraverso la porta USB
Premetto, per correttezza, che le istruzioni seguenti le ho prese da questo articolo RASPBERRY PI ZERO – PROGRAMMING OVER USB!.
Dalla partizione “boot” apriamo il file config.txt con un qualsiasi editor di testo (è sufficiente “nano” o “pico”) e in coda aggiungiamo una nuova riga:
dtoverlay=dwc2
salviamo e passiamo al file cmdline.txt, sempre nella stessa directory, accodando all’unica riga, dopo “rootwait”:
modules-load=dwc2,g_ether
ATTENZIONE: non aggiungere ulteriori righe !
Salviamo e diciamo al sistema di lanciare il demone SSHd al boot, creando un file “ssh” vuoto sempre dentro la partizione “boot“:
touch ssh
passiamo a configurare la rete, per dire al sistema come configurare l’interfaccia di rete usb non appena sarà attiva.
Cambiamo partizione, andando in quella “di sistema” e, con il nostro editor preferito, aggiungiamo al file /etc/networks/interfaces le righe:
allow-hotplug usb0 auto usb0 iface usb0 inet static address 192.168.1.22 netmask 255.255.255.0
Salviamo, inseriamo la microSD nello slot del Raspberry Pi Zero W ed accendiamolo, anche semplicemente collegandolo alla porta USB del nostro PC.
Dopo pochi secondi, nel nostro log di sistema troveremo:
usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0 usb 3-2: Product: RNDIS/Ethernet Gadget usb 3-2: Manufacturer: Linux 4.4.50+ with 20980000.usb cdc_subset: probe of 3-2:1.0 failed with error -22 cdc_ether 3-2:1.0 usb0: register 'cdc_ether' at usb-0000:00:14.0-2, CDC Ethernet Device, 6a:e6:72:b1:xx:xx cdc_ether 3-2:1.0 enp0s20u2: renamed from usb0
e la nuova interfaccia di rete enp0s20u2 con IP 192.168.1.x assegnato dal server dhcp del Raspberry.
A questo punto possiamo collegarci via ssh al nostro Raspberry con l’utente “pi” e password “raspberry“:
ssh -l pi 192.168.1.22
Connettere il Raspberry Pi Zero W alla rete Wifi
Avendo a disposizione il modulo Wifi, è comodo poter connettere alla rete wifi casalinga il nostro Raspberry Pi Zero W. Per farlo, è sufficiente impostare wpa_supplicant aggiungendo al file /etc/wpa_supplicant/wpa_supplicant.conf la configurazione della nostra rete wifi, ad esempio:
network={ ssid="[SSID della rete Wifi]" psk=[chiave wpa/wpa2] key_mgmt=WPA-PSK proto=WPA }
Per sapere quali reti wifi abbiamo intorno, lanciate il comando “iwlist wlan0 scanning“.
Hardware
Per chi fosse interessato alle specifiche hardware dei dispositivi a bordo del Raspberry Pi Zero W (come qualcuno sa, non è del tutto open) …
pi@raspberrypi:~ $ sudo lshw raspberrypi description: Computer product: Raspberry Pi Zero W Rev 1.1 serial: 00000000324xxxx width: 32 bits *-core description: Motherboard physical id: 0 capabilities: brcm_bcm2708 *-memory description: System memory physical id: 0 size: 434MiB *-cpu physical id: 1 bus info: cpu@0 size: 1GHz capacity: 1GHz capabilities: cpufreq *-usbhost product: DWC OTG Controller vendor: Linux 4.4.50+ dwc2_hsotg physical id: 1 bus info: usb@1 logical name: usb1 version: 4.04 capabilities: usb-2.00 configuration: driver=hub slots=1 speed=480Mbit/s *-network:0 description: Wireless interface physical id: 2 logical name: wlan0 serial: b8:27:eb:1d:xxxxx capabilities: ethernet physical wireless configuration: broadcast=yes driver=brcmfmac driverversion=7.45.41.26 firmware=01-df77e4a7 ip=xxxx multicast=yes wireless=IEEE 802.11bgn *-network:1 description: Ethernet interface physical id: 3 logical name: usb0 serial: 1e:90:1c:00:xxxx capabilities: ethernet physical configuration: broadcast=yes driver=g_ether driverversion=29-May-2008 firmware=20980000.usb ip=xxx link=yes multicast=yes
3 comments
Ciao dovrei collegare una scheda hx711 su una raspberry pi zero w.
assumendo che i pinout sono gli stessi per le diverse raspberry,
ho trovato un post che dice di collegare hx711 al GPIO 30 e 31 della rasp.
http://hivetool.org/w/index.php?title=Interface_the_HX711_to_Pi
non riesco però a trovare corrispondenza tra i pinout della rasp e quelli indicati.
puoi aiutarmi ?
Ciao Michele e grazie della guida.
Quando parli di /etc/networks/interfaces ti riferisci al pc da dove poi ci connetteremo via ssh?
Grazie
Salve Girolamo,
quel file -sulla distribuzione Raspbian (e Debian, in generale)- contiene la configurazione di rete per le porte. Va configurato per riflettere le caratteristiche della rete che vogliamo usare per connetterci dal nostro PC al RpiW.
Spero di essere stato chiaro e ti auguro buon divertimento!