Raspberry Pi Zero W

“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
Questo articolo è stato visto 467 volte (Oggi 1 visite)

Hai trovato utile questo articolo?

3 comments
  1. Ciao Michele e grazie della guida.
    Quando parli di /etc/networks/interfaces ti riferisci al pc da dove poi ci connetteremo via ssh?
    Grazie

    1. 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!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.