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.