De HyperPixel 2.1 Round from Pimoroni is een rond 2,1" IPS (In-Plane Switching) capacitief touchscreen met een snelle Display Pixel Interface (DPI). Net als zijn vierkante en rechthoekige HyperPixel 4 verwanten is de 2.1 Round bedoeld voor Raspberry Pi. Eigenlijk is het qua afmetingen geoptimaliseerd voor de Raspberry Pi Zero en Zero 2W, maar omdat hij een standaard 40-pins HAT connector heeft, kan hij op elke Raspberry Pi met zo'n connector worden aangesloten, als je maar voorzichtig bent met de mechanische kant van de zaak.

HyperPixel 2.1 Round specificaties

De resolutie van het scherm is 480 bij 480 pixels, maar omdat het rond is, moet je de hoeken er natuurlijk aftrekken. Het heeft 18-bits kleurdiepte, wat 262.144 kleuren oplevert, en ondersteunt tot 60 fps (beelden per seconde). Het kijkgedeelte heeft een diameter van 2,1" of 53,3 mm en een kijkhoek van 175 graden. De volledige diameter is 72 mm (2.83") met een hoogte van 11 mm (0.43"). Met een Pi Zero bevestigd is de totale hoogte (of diepte) 17 mm (0.67").
 
Q: hoeveel pixels gaan er verloren door de afgeronde hoeken?*

Omdat het scherm bijna elke pin van de HAT (Hardware Attached on Top) connector gebruikt, kun je geen andere uitbreidingsboards toevoegen. Het scherm biedt echter wel een alternatieve I2C poort om andere zaken op aan te sluiten..

Het stroomverbruik van een HyperPixel + Raspberry Pi Zero 2W systeem is ongeveer 300 mA onder normale omstandigheden. Bij het opstarten zag ik pieken van meer dan 500 mA, dus om aan de veilige kant te blijven zou je een 5 W, 5 V voeding nodig hebben.

Driver & Bibliotheken

Om de HyperPixel 2.1 Round op een Raspberry Pi te kunnen gebruiken moet je eerst een driver installeren. Gedetailleerde instructies over hoe dit te doen staan op de Pimoroni website en in hun GitHub omgeving. De drivers zijn alleen voor Raspberry Pi OS Buster, maar er wordt gewerkt aan ondersteuning voor Bullseye. Hoewel Bullseye nog niet ondersteund wordt, heb ik het toch geprobeerd. Mijn demonstratie programma (zie hieronder) werkte hetzelfde, behalve dat het desktop menu over de bovenkant van het scherm werd weergegeven.
 
Pimoroni HyperPixel 2r on Raspberry Pi Buster
De HyperPixel 2.1 Round toont de Raspberry Pi Buster desktop.
Ik sloot de HyperPixel 2.1 Round aan op een Raspberry Pi Zero 2W met Buster en schakelde SSH in om het leven later wat gemakkelijker te maken. Na installatie van de driver en herstarten toonde het beeldscherm een kleine versie van de desktop, en kon ik een terminal venster openen. Op dit moment werkt de HDMI poort niet meer en is de HyperPixel het enige beeldscherm geworden. Omdat hij nogal piepklein is, deed ik het meeste werk over SSH op mijn Windows laptop computer.

Om het display in je eigen toepassingen te gebruiken heb je Pimoroni's Python3 bibliotheek nodig. Er staan een paar voorbeelden bij, maar die werkten voor mij niet goed. Na wat zoeken ontdekte ik dat het upgraden van de pygame bibliotheek naar de nieuwste versie (2.1.0 op dat moment) de problemen oploste die ik had. Daarna werkten alle demo's prima. Let op dat ze aanraakfuncties hebben, dus raak het scherm aan om de kleuren te veranderen.

Let op dat aanraakfuncties een driver nodig hebben om het te laten werken net zoals een muis op een computer. Helaas lijkt zo'n driver nog niet te bestaan, maar je kunt in plaats daarvan bijvoorbeeld de bibliotheken 'deamon' uinput-touch.py gebruiken. Dat werkt prima.

Mijn eerste toepassing

Toen ik het display eenmaal werkend had, was het tijd om te zien of ik er iets mee kon doen. Mijn idee was om het te gebruiken voor mijn YouTube abonneeteller om het 7-segment display te vervangen door iets wat er aantrekkelijker uitzag. De klokdemo leek een goed uitgangspunt. Ik hoefde alleen maar het YouTube API query gedeelte toe te voegen om het aantal abonnees te kunnen opvragen en dan het getal op het scherm weer te geven.

Eerst installeerde ik httplib2 dat nodig is voor de YouTube abonneeteller snippet. Bij het draaien van het programma bleek nu dat ik ook libsdl2-ttf nodig had om tekst op het scherm weer te geven. Bedenk dat je programma pygame.init moet aanroepen als je met tekst en lettertypes wilt werken en dat je een lettertype moet laden. Het laden van een lettertype duurt nogal lang op een Raspberry Pi Zero, dus ik zette dat aan het begin van het programma. Met het lettertype render je de tekst tot een beeld dat je naar de schermbuffer kopieert om het zichtbaar te maken.
 
Pimoroni HyperPixel 2r running YouTube subscriber counter app
Met de YouTube abonneeteller klok kun je de waarde van de teller verslepen.
Omdat het scherm aanraakfunctionaliteit heeft, voegde ik een functie toe waarmee je de abonneeteller overal op het scherm kunt plaatsen door hem simpelweg te verslepen. Net als de klok is de kleur ervan afhankelijk van waar je het scherm aanraakt. Om het op te laten vallen gebruikt het niet dezelfde kleur als de klok, tenzij je het midden aanraakt om alles wit te maken.

Mijn code kun je vinden op ClemensAtElektor at GitHub.

Aanvullende opmerkingen

Nog iets over het draaien van het scherm. Ik wilde het scherm zo gedraaid hebben dat de USB en HDMI aansluitingen van de Raspberry Pi Zero naar boven wijzen. Dit komt overeen met 180 graden of 'omgekeerd'. Het Pimoroni stuurprogramma biedt hulpprogramma's om dit te doen, maar die werkten niet voor mij. Wat wel werkte was eenvoudig de regel display_lcd_rotate=2 toevoegen aan het bestand /boot/config.txt en het systeem opnieuw opstarten.

Let op dat om een of andere reden het midden van de schermbuffer niet precies het midden van het scherm kan zijn, het kan er in verticale richting enkele pixels naast zitten. Je kunt dit corrigeren door een offset toe te voegen waarbij het teken van de offset afhangt van de draaiing van het scherm. Je kunt in mijn code zien hoe ik dat heb aangepakt.

Alternatieve I2C poort

Ik heb even snel de alternatieve I2C poort van het scherm geprobeerd. Volgens de Pimoroni website zou het I2C poort 3 zijn, maar ik vond hem als poort 11. Je kunt erachter komen welke poort je hebt door het commando i2cdetect -l te geven of door in de map /dev te zoeken naar bestanden die beginnen met i2c.

Ik sloot er een Mabee MPU6050 accelerometer module op aan om te zien of die gevonden zou worden. De i2cdetect tool toonde een onderdeel op adres 68 hexadecimaal, wat inderdaad het adres is dat op de module staat, dus het leek te werken. Ik kon de sensor ook uitlezen na installatie van de mpu6050-raspberrypi bibliotheek.

Het past precies in een Pringles blikje!

Ik merkte toevallig dat de diameter van het HyperPixel 2.1 Round display bijna gelijk is aan die van een Pringles blikje, hij past er precies in. Daarom besloot ik mijn YouTube abonneeteller klok in een leeg Pringles blikje te bouwen.

Ik knipte de boven- en onderkant van een blikje en bevestigde het scherm-met-Raspberry-Pi samen aan het onderste deel met afstandhouders, zodat het scherm gelijk kwam met de binnenkant van de ring op het bovenste deel. Nu is het display beschermd als het deksel erop zit, terwijl de aanraakfunctie blijft werken.
 
HyperPixel 2r in Pringles can
De HyperPixel 2.1 Round heeft dezelfde diameter als de binnenkant van een Pringles blikje.

Samenvatting

Samenvattend denk ik dat de HyperPixel 2.1 Round een erg leuke uitbreiding is voor een Raspberry Pi Zero 2W. Hij werkt ook op een Zero. De beeldkwaliteit is erg goed en de aanraakfunctie werkt ook prima in je eigen toepassingen. Het zou een erg leuke aanvulling zijn op een domotica systeem.

Officieel is er alleen ondersteuning voor Buster, maar ik probeerde het wel op Bullseye. Mijn programma werkte hetzelfde, behalve dat het desktopmenu over het bovenste deel van het scherm werd weergegeven.
 
*A: 480 × 480 × (1 - 0.25 π) = 49,444 (d.w.z. bijna 21.5%)


Vertaling: Hans Adams