De Raspberry Pi 400, uitgebracht in november 2020, is eigenlijk een Raspberry 4 maar ingebouwd in een toetsenbord, met de GPIO-uitbreidingsconnector aan de achterkant van de behuizing. Het aansluiten van extra hardware brengt altijd risico's met zich mee, zeker tijdens prototyping. Het bufferboard dat we hier presenteren is speciaal ontworpen voor de Raspberry Pi 400. Het maakt interfacing mogelijk met externe logica van zowel 3,3 V als 5 V voor alle 26 GPIO's, en de buffers/level shifters die hiervoor worden gebruikt, bieden ook ESD-bescherming.

De 400

Raspberry Pi-boards hebben hier nauwelijks introductie nodig. Sinds de introductie van de eerste versie in 2012 zijn ze het onderwerp (of onderdeel) van vele projecten in Elektor magazine. We hebben heel wat verschillende hardwareprojecten en uitbreidingskaarten voor deze processorboards gepresenteerd. Laten we voor dit project meteen de spanning doorbreken: het circuit dat ik zal behandelen is niet nieuw, aangezien de eerste versie ervan in 2015 werd besproken in Elektor Labs. In 2018 werd het ontwerp aangepast aan de uitgebreide, 40-pins I/O-connector die sinds de introductie van de Raspberry Pi B+ de standaard is voor het aansluiten van extra hardware op deze processorboards. En nu is de laatste versie aangepast aan een van de recentere leden van de Raspberry Pi-productfamilie - de Raspberry Pi 400. Heel simpel gezegd, de 400 is een Raspberry 4, ingebouwd in een toetsenbord. Het lijkt op de ooit beroemde computers van de jaren 80, zoals de Commodore 64, Sinclair Spectrum, Acorn BBC en dergelijke. Qua specificaties is de Raspberry Pi natuurlijk vele malen krachtiger dan zijn inmiddels antieke voorgangers, maar er is ook een opvallende overeenkomst: de GPIO-uitbreidingsconnector aan de achterkant van de behuizing, waarop de gebruiker externe (zelf ontworpen) hardware op kan aansluiten. Het aansluiten van deze hardware brengt altijd risico's met zich mee, vooral tijdens prototyping, en het hier gepresenteerde bufferboard voorkomt dat de Raspberry Pi tijdens dit proces wordt beschadigd. Bovendien maakt het bufferboard interfacing met externe logica van zowel 3,3 V als 5 V mogelijk, en de buffers/level shifters die hiervoor worden gebruikt bieden ook ESD-bescherming.

De hardware

Het schema van het project (Afbeelding 1 en bijgevoegd als download) is precies hetzelfde als dat uit onze publicatie in 2018. De TXS0108E 8-bit buffers/level shifters die in dit project worden gebruikt, zijn bidirectioneel en elke A-poort en B-poort pin heeft een pull-up weerstand. De pull-down weerstand van een GPIO van de Raspberry Pi is in de orde van 40 tot 60 kΩ (Typ.). Deze waarde is te hoog om de I/O voldoende laag te trekken wanneer het bufferboard is aangesloten. Houd er dus rekening mee dat met deze input configuratie het logische niveau niet laag zal zijn; de pull-down zal niet werken zoals bedoeld.
 

Raspberry Pi 400 buffer board hardware
Afbeelding 1: Déjà vu. Het schema van het bufferboard.

De I/O's hebben aparte voedingspinnen voor respectievelijk de Raspberry Pi-zijde en de buitenwereld, VCCA en VCCB. Elke A-poort I/O van de TXS0108E heeft een pull-up weerstand naar VCCA, aangesloten op de +3,3 V voeding van de Raspberry Pi 400, en elke B-poort I/O heeft een pull-up weerstand naar VCCB. VCCB — voor het niveau van de I/O's op K2 — kan worden ingesteld op +3,3 V of +5 V logica door jumper JP3. De pull-ups van de buffers hebben een waarde van 40 kΩ wanneer de output laag is en een waarde van 4 kΩ wanneer de output hoog is. De outputs van de buffers zijn dus in feite open drain. Als er bijvoorbeeld een LED wordt aangesloten van de output van de buffer naar aarde, ontstaat er een spanningsdeler als er een extra serieweerstand wordt gebruikt. Een resistieve belasting op de output zal het logische hoog niveau doen dalen. Iets om in gedachten te houden!

Er zijn twee 0. 5 A PPTC resetbare zekeringen (F1 en F2) in de stroomaansluitingen tussen K1 tot K2 op het bufferboard om de +5 V en +3,3 V voedingen van de Raspberry Pi 400 te beschermen.

Voor de implementatie van een I2C bus om met externe hardware te communiceren, GPIO2 is SDA en GPIO3 is SCL, extra pull-up weerstanden R1 en R2 kunnen worden bijgeschakeld door jumpers JP1 en JP2.

Tijdens het opstarten van de Raspberry Pi worden GPIO0 (ID_SD) en GPIO1 (ID_SC) gebruikt om een ​​EEPROM van een I2C HAT uit te lezen (hardware aan de bovenkant bevestigd). Na het opstarten kunnen deze GPIO's worden gebruikt zoals de 26 andere, maar wees voorzichtig als een I2C HAT is gemonteerd, het systeem wordt niet beïnvloed. Om het lezen van GPIO0 en GPIO1 tijdens het opstarten te voorkomen, voeg je het volgende item toe aan /boot/config.txt:

force_eeprom_read=0

Kijk voor meer informatie in de Raspberry Pi-documentatie over het config.txt-bestand.

De printplaat

Het schema is misschien oud nieuws, maar de printplaat (Afbeelding 2) is speciaal aangepast voor de Raspberry Pi 400. Het is iets kleiner dan het originele bufferboard dat in 2018 werd gepresenteerd. De Gerber-bestanden voor dit nieuwe board zijn beschikbaar om te downloaden, zodat je deze kunt bestellen bij de PCB-fabrikant van jouw keuze. Maar het is natuurlijk veel handiger om het compleet gemonteerde bufferboard te kopen in de Elektor-Store.

Buffer PCB
Afbeelding 2: De lay-out van de nieuwe bufferprint.

Voor de connector aan de Raspberry Pi 400-zijde van het bufferboard (K1) wordt een haakse connector gebruikt, zodat deze in de GPIO-header aan de achterkant van de behuizing kan worden gestoken (Afbeelding 3). De connector voor de gebufferde I/O's is een standaard verticale 40-pins male header (K2). De afmeting van de module is 55 x 44 mm, inclusief de K1 bus connector, die over de rand van de print uitsteekt. In vergelijking met de originele print 150719-1 zijn de twee rijen met pinnen van K1 verwisseld, omdat hier een bus connector wordt gebruikt. Het plaatsen van een standaard verticale 40-polige male pin-header voor K1 om dit bufferboard via een flatcable aan te sluiten op een Raspberry Pi 2, 3 of 4 - zoals bij de oudere versie van de buffer - zal hier niet werken.

Raspberry Pi 400 Buffer plugged in
Afbeelding 3: Het bufferboard aangesloten op de Raspberry Pi 400.

Afbeelding 4 laat echter zien dat deze module nog steeds kan worden gebruikt met een Raspberry Pi 2, 3 of 4.

The board in use
Afbeelding 4: Het board kan ook worden gebruikt met 'klassieke' Raspberry Pi-boards.

De output connector K2 kan worden aangesloten op externe circuits met behulp van een korte 40-polige lintkabel met twee 2 x 20 bus connectoren eraan bevestigd, of slechts een enkele socket met korte draden eraan gesoldeerd of enkele sockets met draden. Maar wees voorzichtig door een 40-voudig bus op K2 te drukken of het los te koppelen van het board. Doe dit niet terwijl het bufferboard nog in de Raspberry Pi 400 zit, omdat er behoorlijk wat kracht voor nodig is en de GPIO-header van de Raspberry Pi 400 beschadigd kan raken.

Het bufferboard testen

Twee zeer eenvoudige Python-programma's voor het testen van het bufferboard - geleend van het oudere project - zijn beschikbaar om te downloaden op de Elektor Labs-pagina van dit project. Een daarvan is om alle GPIO's als outputs te testen, Check_all_GPIOs_as_output.py, en de andere is om alle GPIO's als input te testen, Check_all_GPIOs_as_input.py (210320-11.zip). Dubbelklik in Raspbian op een van de bestanden en de standaard-IDE voor Python wordt geopend en selecteer vervolgens RUN om de test te starten.

Bij het testen van de GPIO's als output is slechts een enkele low-current LED aangesloten tussen een pin en GND nodig om te zien of een output werkt of niet. Als serieweerstand voor de LED kan een weerstand van 1,8 kΩ worden gebruikt, maar de waarde is niet echt kritisch. Het zal de stroom door de LED beperken als deze direct is aangesloten op de positieve voedingsspanning. De outputs worden achtereenvolgens getest in vier groepen van elk maximaal acht pinnen, genaamd IOA naar IOD. Vanwege de open drain-output is de spanning over een LED (rood) plus weerstand ongeveer 2,6 V, wanneer 5 V is geselecteerd als voeding voor de outputs (JP3). Sluit de weerstand plus LED aan op een van de geselecteerde outputs en deze wordt voor 0,2 seconden ingeschakeld. De herhalingssnelheid van deze puls is afhankelijk van de grootte van de groep: 1,6 seconden voor de groepen A t/m C (elk met acht outputs) en slechts 0,4 seconden voor groep D (twee outputs). Wijzig 'IOA' in een van de andere groepen in de regel

voor i in IOA: # leds blink 0.2 s in IOx group

om de andere groepen outputs te testen. Natuurlijk kunnen GPIO0 en GPIO1 (ID_SD en ID_SC) ook aan een van de groepen worden toegevoegd.

Het programma om de GPIO's als input te testen, gebruikt één I/O als output om aan te geven dat de te testen invoer werkt, standaard GPIO3. Sluit een weerstand van 1,8 kΩ en een LED aan tussen pin 5 (IO3') van K2 en GND. Er wordt slechts één invoer tegelijk getest in de broncode, om er zeker van te zijn dat alleen deze als invoer werkt. Wijzig het nummer in de volgende regel om een ​​andere GPIO als invoer te testen:

IN1 = 2 #selected GPIO to test as input

Het programma geeft ook de geselecteerde GPIO en het input niveau weer. De inputs hebben hun pull-ups ingeschakeld. Dus om de aangesloten LED te laten branden, moet de huidige input pin met aarde worden verbonden. Als je dit doet, verandert de weergave. Kies tot slot een andere GPIO voor de output zodat je ook GPIO3 als input kunt testen. Natuurlijk zijn er talloze manieren om de GPIO's te testen, als iemand een efficiëntere en/of snellere manier heeft: deel dit dan met ons.

Met dit bufferboard kun je met een gerust hart nieuwe hardware aansluiten op de Raspberry Pi 400, waardoor de kans verminderd dat het beschadigd raakt tijdens experimenten. Maar toch, het verminderen van het risico door het gebruik van dit bufferboard betekent niet dat er niets mis kan gaan. In veel gevallen kan het geen kwaad om ook wat gezond verstand toe te voegen.


Vragen over het bufferboard?


Als je technische vragen of opmerkingen hebt over het bufferboard of dit artikel, stuur dan een e-mail naar de Elektor-redactie via editor@elektor.com.

 

 

Componentenlijst
Weerstanden
R1,R2 = 10 kΩ, 100 mW, 1 %, SMD 0603
 
Condensators
C1…C8 = 100 nF, 50 V, 10 %, X7R, SMD 0603
 
Halfgeleiders
IC1…IC4 = TXS0108EPWR, SMD TSSOP-20
 
Overige
K1 = 2 x 20 bus, haaks, steek 2.54 mm
K2 = 2 x 20 pin header, verticaal, steek 2.54 mm
JP1,JP2 = 2-weg pin header, verticaal, steek 2.54 mm
JP3 = 3-weg pin header, verticaal, steek 2.54 mm
JP1,JP2,JP3 = shunt jumper, steek 2.54 mm
F1,F2 = PPTC resetbare zekering, SMD, polyfuse, 1210L050YR Littelfuse
PCB 210320-1 v1.0