Aan de slag met de nieuwe Raspberry Pi Pico

De Raspberry Pi Pico is een forse afdwaling van de gebruikelijke Raspberry Pi’s die we kennen: het heeft geen besturingssysteem zoals elk van de andere Raspberry Pi’s maar draait in plaats daarvan een enkel programma. De Pico is daarom meer vergelijkbaar met de functionaliteit van Arduino-gebaseerde besturingscomputers dan met de Linux computers uit de rest van de Raspberry Pi familie. De reden dat de Pico toch ‘Raspberry Pi’ heet is omdat dit de naam is van de organisatie die de Raspberry Pi computers heeft ontwikkeld. De naam is in dit geval echter geenszins een indicatie van de werking.

De Raspberry Pi Pico is klein en eenvoudig van opzet (foto Rudi Niemeijer)

Een belangrijkste argument voor de Raspberry Pi Pico is de prijs: met een gemiddelde verkoopprijs van € 6,95 (en nog goedkoper in bundels) is er weinig reden om nog op zoek te gaan naar Arduino klonen en compatibles. De overweging om een Raspberry Pi Pico in te zetten in plaats van bijvoorbeeld een Raspberry Pi Zero kan ook zijn dat de toepassing toch maar altijd één (Python) programma draait en het besturingssysteem van een Zero helemaal niet nodig heeft. Vele ingebedde toepassingen in alledaagse apparaten zullen zich hiervoor lenen.

De Raspberry Pi Pico wordt geprogrammeerd met een host computer zoals een Apple Macintosh, Windows computer of Linux computer. Met een code editor op één van deze computers wordt een programma in C/C++ (vergelijkbaar met Arduino’s Processing) of MicroPython (een Python implementatie voor microcontrollers) geschreven en met een druk op de knop op de Pico geladen. Als een programma eenmaal op de Pico is geladen dan blijft het daar draaien, ook als de Pico wordt uit- en weer aangezet, totdat het programma wordt overschreven door een nieuw programma.

Nieuwe hardware

De Raspberry Pi Pico is de eerste van een reeks van nieuwe besturingscomputers die gebruik maakt van de RP2040 chip. Vorige Raspberry Pi computers waren gebaseerd op een Broadcom implementatie van een ARM processor; de RP2040 is in huis ontwikkeld door het Raspberry Pi team en voorziet in een met twee processorkernen uitgeruste Cortex M0+ ARM implementatie op 133 MHz met 264 KB aan werkgeheugen en 2 MB aan flashgeheugen voor programma- en bestandsopslag. Programma’s en bestanden worden in het flashgeheugen bewaard ook als het geheugen niet meer van stroom wordt voorzien.

De Raspberry Pi Pico (onder) heeft geen besturingssysteem zoals de Raspberry Pi Zero W (boven) (foto Rudi Niemeijer)

De RP2040 is door de Raspberry Pi Foundation vrijgegeven voor gebruik en verkoop door derden en de chip gaan we onder andere zien op besturingscomputers van Adafruit, Pimoroni, SparkFun en Arduino. Wat specificaties betreft ligt de capaciteit van de RP2040 ruim onder die van de Raspberry Pi Zero’s 1 GHz ARM11 processor met enkele processorkern en het valt hierom niet te verwachten dat de RP2040 in de toekomst met een eigen Raspberry Pi OS wordt uitgerust.

Het grootste nadeel van de RP2040 is het gemis van draadloze connectiviteit, wat ervoor zorgt dat de Pico niet zonder extra voorzieningen in een internet of things toepassing kan worden gebruikt. Maar zowel op het gebied van uitbreidingen voor de Pico als op het gebied van doorontwikkeling op de RP2040 zijn veel initiatieven en een toekomstige versie van de RP2040 mét Bluetooth en WiFi ligt voor de hand.

Gebruik als besturingscomputer

De Raspberry Pi Pico is geen microcomputer met een eigen besturingssysteem, code editor of compiler. In plaats daarvan wordt een programma in een code editor op een andere computer geschreven en ‘geflasht’ op de Pico. ‘Flashen’ is overschrijven van het flashgeheugen van de Pico en wordt ook wel ‘branden’ genoemd, hoewel er geen vuur of rook aan te pas komt. Het schrijven van een programma kan bijvoorbeeld in de Thonny Python IDE op een andere Raspberry Pi (de Raspberry Pi 400 voldoet uitstekend voor het schrijven van programma’s) of met Microsoft Visual Studio Code op een macOS of Windows computer.

Er zijn veel verschillende besturingscomputers op de markt met veel verschillende eigenschappen (foto Rudi Niemeijer)

Programma’s voor de Pico kunnen worden geschreven in C/C++ zoals we bij Arduino zijn gewend, of in Python zoals we op de Raspberry Pi (en laten we wel zijn, op iedere andere computer) doen. Zowel in C/C++ als in MicroPython zijn verschillende codebibliotheken beschikbaar voor de hardwareuitbreidingen die op de markt worden gebracht. Zo is het eenvoudig om een led strip op de Pico aan te sluiten en met een passende codebibliotheek aan te sturen.

Ook AdaFruit heeft de nieuwe RP2040 microcontroller omarmd en er hun CircuitPython programmeertaal voor vrijgegeven. CircuitPython wordt door AdaFruit voor veel van hun eigen microcontrollerboards gebruikt en beschikt over een indrukwekkend arsenaal aan codevoorbeelden en -bibliotheken voor sensoren, LCD- en OLED schermen en andere randapparaten zoals kleurenledstrips en kassabon-printers. CodePython moet eerst op de RP2040 worden geflashd alvorens gebruik gemaakt kan worden van de AdaFruit codevoorbeelden, maar dit is een eenvoudig en omkeerbaar proces.

Python (en MicroPython) is een geïnterpreteerde programmeertaal dat op moment van uitvoering van tekst naar code wordt vertaald. Die vertaling vindt op de RP2040 plaats met de MicroPython of CircuitPython interpreter. Verwerking in C/C++ vereist een compileer-link stap die voor het flashen moet worden uitgevoerd op de computer waarop ook de code editor draait. Hiervoor dienen enkele stappen te worden uitgevoerd om het Pico programma te ‘bouwen’. De Microsoft Visual Studio Code omgeving doet dit automatisch en flasht dan ook gelijk het programma op de Pico. Arduino heeft al aangekondigd dat zijn ondersteuning voor de RP2040 gaan leveren zodat de RP2040 net als iedere andere Arduino kan worden geprogrammeerd.

Aansluitingen

De Raspberry Pi Pico heeft zoveel mogelijk van de aansluiting van de RP2040 naar buiten uitgevoerd, hetgeen de relatief grote printplaat verklaart. Beide zijden van de print zijn met 20 gaten met een standaard afstand uitgevoerd, maar is net wat breder dan een 40-pens IC. Halve maantjes zijn bij ieder aansluiting geplaatst om de printplaat eenvoudig in toepassingen te kunnen verwerken. Het is niet gegarandeerd dat de gehele opzet van de aansluitingen van de Pico in volgende besturingscomputers wordt overgenomen, hoewel dat (met de Arduino en de rest van de Raspberry Pi familie als voorbeeld) wel gebruikelijk is. Toekomstige besturingscomputers die op de RP2040 zijn gebaseerd zijn mogelijk (veel) kleiner en hebben minder (of meer) aansluitingen.

De Raspberry Pi Pico is even lang als een traditioneel 40-pens IC zoals hierboven afgebeeld, maar net even breder (foto Rudi Niemeijer)

Vooral de aansluitingen van de Pico maken duidelijk dat deze in andere toepassingsgebieden kan worden ingezet dan de andere leden van de Raspberry Pi familie. Deze zijn ook voorzien van verschillende mogelijkheden om sensoren in te lezen of actuatoren aan te sturen, maar hun mogelijkheden zijn beperkt in vergelijking met die van de Pico. De aanwezigheid van 3 analoge ingangen en in totaal 6 verschillende poorten voor seriële communicatie maakt al een groot verschil, maar het grote aantal GPIO en PWM aansluitingen is kenmerkend voor de Pico. De aansluitingen van de Pico zijn wat vergelijkbaar met die van een Arduino:

Pen functieArduino UnoRaspberry Pi Pico
Analoge ingang6 (10 bits)3 (12 bits)
Generiek I/O (GPIO)1426
Seriële communicatie via SPI12
Seriële communicatie via I2C/TWI12
Pulsbreedtemodulatie (PWM)516
Overige aansluitingen3 hardware interrupts, 1 seriële poort8 toestandsmachines, 2 seriële poorten
Aansluitingen van Arduino en Raspberry Pi Pico vergeleken

Van een afstandje lijkt de Raspberry Pi Pico op een vervanger van de Arduino, maar dat is niet het geval. ‘Arduino’ is een ecosysteem dat bestaat uit een archetype ontwikkelsysteem ter grootte van een bankpas met gestandaardiseerde aansluitingen, een microcontroller met een Arduino bootloader en een ontwikkelomgeving waarin programma’s in de programmeertaal ‘Processing’ worden geschreven. De oorspronkelijke microcontroller voor Arduino’s was een Atmel ATmega328, maar microcontrollers van veel andere fabrikanten kunnen in het Arduino ecosysteem worden gebruikt. De populaire Espressif ESP32 microcontroller met ingebouwde WiFi wordt bijvoorbeeld veel ‘met Arduino’ geprogrammeerd. De Arduino organisatie heeft een samenwerking met de Raspberry Pi Foundation aangekondigd zodat de RP2040 microcontroller en hiermee de Raspberry Pi Pico, vanuit de Arduino ontwikkelomgeving kunnen worden geprogrammeerd.

De Raspberry Pi Pico is een duidelijke tegenhanger voor de Arduino creditcard besturingscomputer (boven), met vergelijkbare aansluitingen (foto Rudi Niemeijer)

De GPIO aansluitingen zijn bedoeld als digitale ingang of uitgang en kunnen worden gebruikt met andere digitale schakelingen. Zo kan met een GPIO als ingang de stand van een schakelaar worden ingelezen of een relais worden aangestuurd. De SPI, I2C en UART aansluitingen kunnen worden gebruikt om de communicatie tussen microcontrollers, sensoren, actuatoren of andere apparaten te verzorgen. Met de analoge ingangen kunnen nauwkeurige metingen worden uitgevoerd van analoge spanningen, die tussen 0 en 3,3V mogen liggen. De PWM worden gebruikt voor puslbreedtemodulatie, zoals het regelen van de helderheid van een led of de snelheid van een elektromotor. PWM wordt ook gebruikt voor eenvoudige audio en het aansturen van servo’s.

Aansluitingen van de Raspberry Pi Pico (illustratie Raspberry Pi Foundation)

Programmeren van de Raspberry Pi Pico

De Raspberry Pi Pico wordt in C/C++ of in MicroPython geprogrammeerd. Het programma wordt geschreven op een host computer, zoals een Raspberry Pi 400 of andere Linux computer, een Windows computer of een macOS computer. Wanneer de Raspberry Pi Pico via de ISB aansluiting op de computer wordt aangesloten en de bootsel knop ingedrukt wordt gehouden dan gaat de Raspberry Pi Pico in ‘opslagmedium modus’. Het gevolg is dat een bestaand programma op de Pico niet wordt uitgevoerd, maar dat in plaats daarvan het bootsel programma wordt uitgevoerd, dat een USB opslagmedium apparaat nabootst. Een extra schijfstation is nu op de host computer beschikbaar. Het geschreven programma wordt hierop gekopieerd, waarna de Raspberry Pi Pico automatisch herstart en het nieuwe programma gaat uitvoeren.

Kletsende afscheidskaart met Speaker pHAT en Raspberry Pi

Een collega nam deze week afscheid van het team en na enig brainstormen kwamen we tot de conclusie dat het afscheidskado iets met 'een kaart met onze namen', 'gadget', 'irritant' en 'iets met lopen' moest zijn. Genoeg aanknopingspunten om een A4-kaart met ingebouwde ghettoblaster en "goedbedoelde adviezen van de oud-collega's" te knutselen.

Collega Klaas nam het kaart-deel voor z'n rekening, iedereen kwam met een opname van wat goedbedoelde adviezen en ik heb het technische deel opgepakt: een Raspberry Pi Zero en een Pimoroni Speaker pHAT.

Pimoroni Speaker pHAT en Raspberry Pi Zero in zwart A4 foamboard met airbrush wit en groen/blauw, met namen van teamleden in goudkleurige viltstift. Achterzijde heeft USB powerbank en standaard

Van de audioboodschappen heb ik een stuk of 50 verschillende .wav bestanden gemaakt en die met scp naar de Raspberry Pi geupload. Het resultaat was een directory met allemaal verschillende .wav bestanden.

De Speaker pHAT komt met een handige one-line installer van Pimoroni, die ervoor zorgt dat de benodigde software wordt geïnstalleerd en dat de SPI-aansturing, waarmee de Speaker pHAT werkt, wordt ingesteld:

curl -sS https://get.pimoroni.com/speakerphat | bash

De aangemaakte Pimoroni directory kun je gelijk weggooien: het enige bruikbare is een grappig audiobestand test.wav. Een .wav afspelen gaat met het geïnstalleerde programma aplay. Om een willekeurige .wav uit een directory af te spelen combineer ik de linux commando's ls en shuf:

aplay -N "$(ls /home/pi/wavs/*.wav | shuf -n1)"

Ik laat het commando iedere minuut uitvoeren door een regel in de crontab.

Pimoroni Speaker pHAT op Raspberry Pi Zero

De Speaker pHAT maakt een wat ielig geluid. Zodra je het geheel in foamboard monteert echter, verandert dat als bij klokslag: het geluid wordt voller en luider. Achteraf gezien had ik het kleine luidsprekertje niet alleen vast moeten schroeven, maar ook met iets van kit moeten vastlijmen; dan was het geluid nog indrukwekkender geweest.

3,5 inch aanraakscherm voor Raspberry Pi

In diverse Chinese webwinkels wordt een 3,5 inch 480x320 pixels aanraakscherm voor een Raspberry Pi aangeboden. BangGood levert er een plexiglazen behuizing van 92 x 67 x 34mm bij, waar de Pi en het scherm netjes in kunnen worden afgemonteerd.

3,5 inch aanraakscherm in plexiglas behuizing voor Raspberry Pi 2 en 3

Voor de prijs hoef je het niet te laten: de hele set (display, behuizing en pennetje voor het aanraakscherm) komt inclusief verzending op € 14,-. Alleen de behuizing is het dat al waard.

Chinese websites staan niet bekend om hun kwalitatief hoogwaardige software. Bij BangGood is dat ook in dit geval zo. Maar één van de fabrikanten van het display, Elecrow (er zijn, zoals dat in China betaamt, diverse klonen van hetzelfde product), levert een stappenplan voor de installatie. Op een Raspberry Pi waar de SPI-interface al is aangezet betekent dit:

git clone https://github.com/Elecrow-keen/Elecrow-LCD35.git
cd Elecrow-LCD35
sudo ./Elecrow-LCD35

Na het opnieuw opstarten van de Pi zou het scherm nu als primair display moeten opkomen. Als je een grafische schil hebt geïnstalleerd wordt dat getoond (en kun je dit met vinger of pennetje bedienen), als je tekstuitvoer hebt gekozen dan wordt terminaluitvoer getoond. Voor het gebruik als aanraakscherm staat in het stappenplan hoe het scherm moet worden gekalibreerd en hoe een schermtoetsenbord moet worden aangezet.

Na het opstarten werkt het kleine beeldscherm

LoRaWAN met Raspberry Pi Zero

Als je een internet of things toepassing wilt maken met een Raspberry Pi Zero W en wilt aansluiten aan KPN LoRa of The Things Network, dan heb je niet al te veel keus in kant-en-klare pHATs. Eén van de weinige opties die ik tegenkwam is de Uputronics Raspberry Pi Zero LoRa(tm) Expansion Board, een niet al te duur bordje ter grootte van een Raspberry Pi Zero, voorzien van een HopeRF RFM96W (een Semtech SX1276 kloonn) zendontvanger-module.

De Uputronics Raspberry Pi Zero LoRa board

De HopeRF RFM96W heeft de volgende specificaties (zie datasheet):

  • SPI interface
  • LoRa modem
  • Ingebouwde temperatuursensor en batterijvoltagemeting
  • Frequentiebereik 137 MHz - 1020 MHz (de RMF96/97/98 verschillen hierin)
  • Spreading factor 6 - 12
  • Bit rate 0,018 - 37,5 kbps

Het Uputronics bordje heeft een vaste SMA antenneaansluiting, geschikt voor een schroefbare antenne. Ik had persoonlijk liever een kleine U.FL printconnector gezien, zodat je wat flexibeler bent in de montage van de antenne, maar voor experimenteerdoeleinden kan dit geen kwaad.

Om te verbinden met een LoRaWAN gateway zijn de volgende stappen nodig:

  • Activeren van de SPI interface op de Raspberry Pi
  • Python bibliotheek voor de SPI interface
  • Python bibliotheek voor gebruik met de RFM96W module
  • Python bibliotheek om te verbinden met de LoRaWAN gateway
  • Instellingen op het LoRaWAN netwerk (APP ID, etc)
  • Toepassing die data genereert om te versturen naar de gateway

Da's nog wel veel om helemaal vanaf nul te ontwikkelen. Maar misschien hoeft dat ook niet. Er zijn wat modules en ander voorwerk beschikbaar die mogelijk gaan helpen:

Ik ben op zoek naar een Python basis die gebruikt kan worden voor onderwijsdoeleinden. Dat betekent ondermeer inzicht in alle code, zowel voor het LoRa deel als het LoRaWAN deel.

Geen toegang tot mysql database bij nieuwe Raspbian installatie

Nieuwe installaties van mySQL (suo apt-get install mysql-server) regelen de authenticatie op een andere manier dan voorheen: er wordt niet meer tijdens de installatie gevraagd naar een 'database administrator user'. In plaats daarvan wordt gebruik gemaakt van 'local unix authorization'. Het effect is, dat je oeverloos op zoek kunt naar de oorzaak van de foutmelding mysql - ERROR 1698 (28000): Access denied for user 'root'@'localhost', en via omwegen zonder enig effect het wachtwoord van de root user kunt wijzigen, of de installatie helemaal opnieuw doen en tot de conclusie komen dat er nog stééds niet om een wachtwoord wordt gevraagd. De oplossing is simpel, echter: wijzig het account van de root gebruiker zodat deze van een los wachtwoord gebruikt maakt, en voeg de normale pi user toe aan de mySQL installatie:

$ sudo mysql -u root

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

$ service mysql restart

en toevoegen pi user aan toegangsrechten:

$ sudo mysql -u root

mysql> USE mysql;
mysql> CREATE USER 'pi'@'localhost' IDENTIFIED BY '';
mysql> GRANT ALL PRIVILEGES ON * . * TO 'pi'@'localhost';
mysql> UPDATE user SET plugin='auth_socket' WHERE User='pi';
mysql> FLUSH PRIVILEGES;
mysql> exit;

$ service mysql restart

Zonsopgang en zonsondergang

Zonsopgang:

curl -s http://zonsondergang.info | grep -o '<span class="vandaag ">.............</span>' | grep -o "..:.. - ..:.." | cut -c 1-5

Zonsondergang:

curl -s http://zonsondergang.info | grep -o '<span class="vandaag ">.............</span>' | grep -o "..:.. - ..:.." | cut -c 9-13

Voorbeeld uitvoering tussen zonsopgang en zonsondergang:

sunrise=$(curl -s http://zonsondergang.info | grep -o '.............' | grep -o "..:.. - ..:.." | cut -c 1-5)
sunset=$(curl -s http://zonsondergang.info | grep -o '.............' | grep -o "..:.. - ..:.." | cut -c 9-13)

begin=$(date --date="$sunrise" +%s)
end=$(date --date="$sunset" +%s)
now=$(date +%s)

if [ "$begin" -le "$now" -a "$now" -le "$end" ]; then
    echo Checked daylight.. sun is still up..
    echo Doing some meaningful task that can stand daylight..
fi

Internet snelheidstest met Raspberry Pi

Om eenduidig de snelheid van een internetaansluiting vast te stellen zijn er verschillende meetmethoden. Eén hiervan is het gebruik van speedtest.net, een website waarmee de download- en uploadbandbreedte van een internetaansluiting kan worden gemeten.

Schermafdruk 2016-02-21 08.30.28

Deze vorm van internet snelheidsmeting is ook beschikbaar om periodiek vanaf een Raspberry Pi uit te voeren, in de vorm van speedtest-cli. Dit script heeft dezelfde functionaliteit als de interactieve meting via de website van speedtest.net, maar kan op een Raspberry Pi met bijvoorbeeld cron automatisch worden uitgevoerd. Installeer speedtest-cli als volgt:

wget https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py
chmod a+rx speedtest_cli.py
sudo mv speedtest_cli.py /usr/local/bin/speedtest-cli
sudo chown root:root /usr/local/bin/speedtest-cli

Je kunt nu de snelheidstest handmatig opstarten met speedtest-cli:

pi@raspberrypi:~ $ speedtest-cli
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from KPN...
Selecting best server based on latency...
Hosted by CJ2 Hosting & Development (Groningen) [2.06 km]: 54.695 ms
Testing download speed...
Download: 20.82 Mbit/s
Testing upload speed...
Upload: 1.71 Mbit/s

Om de meetwaarden in een bestandje te bewaren heb ik het volgende shell-script geschreven:

date +"%d-%m-%Y %T" >> /home/pi/speedtest.output; ip link | grep "state UP" | awk -F ":" '{print $2}' >> /home/pi/speedtest.output; /usr/local/bin/speedtest-cli | egrep 'Download|Upload' >> /home/pi/speedtest.output;
tail -4 speedtest.output

Dit script heb ik in de cron tabel opgenomen om ieder half uur een meting uit te voeren. Ik voer de metingen zowel bedraad, direct aan het modem, als op verschillende plaatsen draadloos uit om de effecten van meervoudige wifi-toegangspunten te bepalen.

Backup maken van Raspberry Pi SD kaart op een Mac

Wie verscheidene uren heeft geïnvesteerd in het downloaden en configureren van software op een Raspberry Pi komt aardig thuis van de koude kermis als op een zekere dag het (micro) SD kaartje ermee stopt. "Had ik maar een backup gemaakt", denk je dan. Pas.

Het maken van een backup en het uitvoeren van een restore is met het 'disk duplicator' command line tooltje dd op een Mac een peuleschil. In ongeveer 5 minuten is een volledige 16 GB SD kaart veiliggesteld. Gebruik hiervoor de volgende stappen:

  • Plaats de (micro) SD kaart in de Mac
  • Open de terminal
  • Bepaal het devicenummer van de (micro) SD kaart, door een lijst opslagapparaten op te vragen met diskutil list. In de voorbeelden hieronder is het devicenummer aangegeven met n
  • Maak een backup met sudo dd if=/dev/rdiskn of=/pad/naar/backup.img bs=1m. Door het gebruik van sudo wordt om het wachtwoord van de beheerder van de Mac gevraagd
  • Het maken van een backup duurt, afhankelijk van de grootte van het SD kaartje, tussen de 100 en 400 seconden

Het uitvoeren van een restore gaat met dd op dezelfde manier, maar kost wat meer tijd om uit te voeren, zo tussen de 10 en 20 minuten. Om de melding 'resource busy' te voorkomen is het overigens nodig om van tevoren een unmountDisk uit te voeren:

  • diskutil list en bepaal het devicenummer van de (micro) SD kaart
  • diskutil unmountDisk /dev/diskn
  • sudo dd if=/pad/naar/backup.img of=/dev/rdiskn bs=1m

Een schijfkopie neemt zoveel ruimte in als de lege grootte van de SD kaart. Met gzip is daar wel wat vanaf te snoepen:

  • Backup: sudo dd if=/dev/rdiskn bs=1m | gzip > /pad/naar/backup.img
  • Restore: gzip -dc /pad/naar/backup.gz | sudo dd of=/dev/rdiskn bs=1m

Raspbian installatie op Raspberry Pi

Een nieuwe Raspberry Pi komt soms met een voorgeïnstalleerd besturingssysteem. Maar ook dan is het af en toe handig om opnieuw met een schone installatie te beginnen. Ik doorloop hiervoor de volgende stappen:

  • Formatteer een betrouwbare microSD kaart met behulp van het tooltje van SD Association op een Mac of Windows PC (microSD kaartjes worden vaak met een SD kaart adapter geleverd die in de meeste Macs en PC's past)
  • Download de meest recente versie van NOOBS naar de Mac of Windows PC
  • Kopieer alle gedownloade en uitgepakte bestanden naar de root van het geformatteerde microSD kaartje
  • Plaats de microSD kaart nu in de Raspberry Pi en sluit dan de stroom aan, plus een (HDMI) monitor en een (USB) toetsenbord
  • Het microSD kaartje wordt nu geherformatteerd en het besturingssysteem NOOBS wordt uitgepakt. Dit neemt een minuutje in beslag. Na herstart volgt een keuzemenu
  • Kies in het menu voor het installeren van Raspbian. De installatie neemt ongeveer 10 minuten in beslag. Tijdens deze installatie is het mogelijk om een geschikte toetsenbordindeling te kiezen, zoals US
  • Voer enkele wijzigingen in raspi-config door: laat Raspbian in de command line modus opstarten, wijzig de datum- en tijdlocatie naar Europa/Amsterdam, zet ssh toegang aan, zet de camera aan (indien er een Raspberry Pi camera gebruikt wordt)
  • Herstart en stel vast dat de Raspberry Pi nu opstart in de command line modus. Soms lijkt de herstart niet goed te gaan, maak dan de USB kabel los en sluit deze na een paar seconden weer aan voor een koude herstart
  • Wijzig de instellingen voor wifi internettoegang

Na de installatie voer ik vaak enkele van de volgende aanpassingen door, afhankelijk van het gebruik van de Raspberry Pi:

  • Verwijder de X Server bestanden met sudo apt-get remove --auto-remove --purge 'libx11-.*' en ruim de overgebleven bibliotheken op met sudo apt-get autoremove --purge
  • Voer een update van de installatiebestanden uit met sudo apt-get update
  • Installeer de updates met sudo apt-get upgrade
  • Installeer ftp met sudo apt-get install ftp
  • Installeer ImageMagick's convert met sudo apt-get install imagemagick
  • Zet de LED van de camera uit, door in /boot/config.txt de regel disable_camera_led=1 op te nemen
  • Maak een script om foto's met de camera te nemen en deze op een server op te slaan, of foto's met een USB webcam te maken

Het hele installatieproces duurt ongeveer een uur, inclusief de upgrades en updates.

Configureer wifi op een Raspberry Pi

Hoewel een Raspberry Pi vanaf de fabriek is voorzien van een bedrade 100 megabit netwerkaansluiting zullen veel toepassingen gebaat zijn bij draadloos internet. Er zijn verschillende kleine wifi modules op de markt waarmee de Raspberry Pi kan worden uitgebreid. De Edimax wifiplug is hiervan een voorbeeld.

Mijn /etc/network/interfaces configuratiebestand bevat de volgende instellingen:

auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet manual

auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

auto wlan1
allow-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Het /etc/wpa_supplicant/wpa_supplicant.conf configuratiebestand bevat de definities van de draadloze netwerken waarmee verbonden moet kunnen worden:

cltr_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="netwerk1"
    psk="wachtwoord"
}

netwerk={
    ssid="open netwerk"
    key_mgmt=NONE
}

Na het herstarten wordt nu verbinding gemaakt met één van de opgegeven netwerken. Dit is een mooie gelegenheid om de installatie bij te werken, door eerst alle nieuwe beschikbare pakket op te halen:

sudo apt-get update

en daarna de nieuwe versies te installeren met:

sudo apt-get upgrade