Inhoudsopgave:

Ontwerp je eigen Raspberry Pi Compute Module PCB - Ajarnpa
Ontwerp je eigen Raspberry Pi Compute Module PCB - Ajarnpa

Video: Ontwerp je eigen Raspberry Pi Compute Module PCB - Ajarnpa

Video: Ontwerp je eigen Raspberry Pi Compute Module PCB - Ajarnpa
Video: Build a Raspberry Pi Laptop Computer in Less Than 10 Minutes! 2024, November
Anonim
Ontwerp uw eigen Raspberry Pi-computermodule-PCB
Ontwerp uw eigen Raspberry Pi-computermodule-PCB
Ontwerp uw eigen Raspberry Pi-computermodule-PCB
Ontwerp uw eigen Raspberry Pi-computermodule-PCB
Ontwerp uw eigen Raspberry Pi-computermodule-PCB
Ontwerp uw eigen Raspberry Pi-computermodule-PCB

Als je nog nooit van de Raspberry Pi Compute-module hebt gehoord, is het eigenlijk een volwaardige Linux-computer met de vormfactor een laptop-RAM-stick!

Hiermee wordt het mogelijk om je eigen custom boards te ontwerpen waarbij de Raspberry Pi gewoon een ander onderdeel is. Dat geeft je een enorme hoeveelheid flexibiliteit omdat je toegang hebt tot een veel groter aantal IO-pinnen, terwijl je tegelijkertijd precies kunt kiezen welke hardware je op je bord wilt. De ingebouwde eMMC elimineert ook de noodzaak voor een externe micro SD-kaart, waardoor de Compute Module perfect is voor het ontwerpen van op Raspberry Pi gebaseerde producten.

Helaas, hoewel de Compute Module je dit allemaal mogelijk maakt, lijkt het nog steeds te ontbreken in termen van populariteit in vergelijking met de traditionele Raspberry Pi Model A en B. Als gevolg hiervan zijn er niet veel open source hardwareprojecten die gebaseerd zijn op het. En voor iedereen die aan de slag wil gaan met het ontwerpen van hun eigen borden, is de hoeveelheid middelen die ze hebben vrij beperkt.

Toen ik een paar maanden geleden voor het eerst begon met de Raspberry Pi Compute Module, was dat precies het probleem waarmee ik werd geconfronteerd. Dus besloot ik er iets aan te doen. Ik besloot een open source PCB te ontwerpen op basis van de Compute Module, die alle basisfuncties zal hebben die de Raspberry Pi geweldig maken. Dat omvat een cameraconnector, USB-host, audio-uitgang, HDMI en natuurlijk een GPIO-header die compatibel is met de reguliere Raspberry Pi-borden.

Het doel van dit project is om een open source-ontwerp te bieden voor een op Compute Module gebaseerd bord, dat iedereen kan gebruiken als uitgangspunt voor het ontwerpen van zijn eigen aangepaste bord. Het bord is ontworpen op KiCAD, een open source en platformonafhankelijk EDA-softwarepakket, om zoveel mogelijk mensen ervan te laten profiteren.

Pak gewoon de ontwerpbestanden, pas ze aan uw behoeften aan en draai uw eigen aangepaste bord voor uw project.

Stap 1: Onderdelen en gereedschappen

Onderdelen en gereedschappen
Onderdelen en gereedschappen
Onderdelen en gereedschappen
Onderdelen en gereedschappen
Onderdelen en gereedschappen
Onderdelen en gereedschappen
Onderdelen en gereedschappen
Onderdelen en gereedschappen

Om aan de slag te gaan met de Raspberry Pi Compute Module heb je de volgende onderdelen nodig:

1 x Raspberry Pi Compute Module 3 - Ik raad ten zeerste aan om de reguliere versie te kopen die de ingebouwde eMMC bevat en niet de Lite-versie. Als je de Lite-versie in je project wilt gebruiken, moet je een paar wijzigingen in het ontwerp aanbrengen, waaronder het toevoegen van een micro SD-kaartconnector. Ten slotte heb ik het bord alleen getest met de CM3 en ik kan niet garanderen dat het zal werken met de eerste CM-versie die in 2014 werd uitgebracht.

Update 29/1/2019: Het lijkt erop dat de Foundation zojuist de Compute Module 3+ heeft uitgebracht en niet alleen dat, maar nu ook met de optie voor een 8GB, 16GB of 32GB eMMC! Volgens de datasheet lijkt het erop dat de CM3+ elektrisch identiek is aan de CM3, wat betekent dat het in feite een vervanging is voor de CM3.

1 x Compute Module IO Board - Mijn ontwerp was bedoeld als uitgangspunt voor het ontwerpen van uw eigen aangepaste board op basis daarvan, niet als vervanging voor het Compute Module IO-board. Dus, om je leven gemakkelijker te maken, raad ik je ten zeerste aan om een IO-bord in handen te krijgen en dat voor ontwikkeling te gebruiken voordat je naar een aangepast bord gaat. Behalve dat je toegang hebt tot elke pin van de CM plus een verscheidenheid aan connectoren, is het IO-bord ook nodig voor het flashen van de ingebouwde eMMC. Dat is iets dat je niet kunt doen met mijn bord, tenzij je eerst wat wijzigingen aan het ontwerp aanbrengt.

1 x Raspberry Pi Zero Camerakabel of Compute Module Camera Adapter - In mijn ontwerp gebruik ik een zeer vergelijkbare cameraconnector als degene die wordt gebruikt door het Compute Module IO Board en de Raspberry Pi Zero. Dus om een camera te bevestigen, heb je ofwel een adapterkabel nodig die is ontworpen voor de Pi Zero of de camera-adapterkaart die wordt geleverd met de Compute Module Development Kit. Voor zover ik weet is het apart kopen van het adapterbord vrij duur. Dus als je net als ik hebt besloten om je CM en IO Board apart te kopen om wat geld te besparen, raad ik je aan om in plaats daarvan de camera-adapterkabel te kopen die is ontworpen voor de Pi Zero.

1 x Raspberry Pi-cameramodule - Ik heb het bord alleen getest met de originele 5MP-cameramodule en niet met de nieuwere 8MP-versie. Maar aangezien de eerste prima lijkt te werken, zie ik geen reden waarom de laatste dat niet zou doen, omdat het achterwaarts compatibel zou moeten zijn. Hoe dan ook, de 5MP-versie is tegenwoordig voor minder dan € 5 op eBay te vinden, daarom zou ik aanraden er een te kopen.

4 x vrouwelijke naar vrouwelijke jumperdraden - Je hebt er minimaal 4 nodig voor het configureren van de cameraconnector op het IO-bord, maar je wilt waarschijnlijk meer. Ze zijn niet nodig voor het aangepaste bord, maar kunnen handig zijn als u van plan bent externe hardware via de GPIO-header aan te sluiten.

1 x HDMI-kabel - Ik heb besloten om een HDMI-connector van volledige grootte op mijn bord te gebruiken om de noodzaak voor adapters te elimineren. Als u liever een mini- of zelfs een micro-HDMI-connector gebruikt, kunt u het ontwerp natuurlijk aanpassen aan uw behoeften.

1 x 5V micro-USB-voeding - Uw telefoonoplader zou in de meeste gevallen prima moeten werken, zolang deze maar minimaal 1A kan leveren. Houd er rekening mee dat dit slechts een algemene waarde is, uw daadwerkelijke stroomvereisten zullen afhangen van de hardware die u besluit op uw aangepaste bord op te nemen.

1 x USB Ethernet-adapter - Als u van plan bent vrijwel elk pakket op uw systeem te installeren of bij te werken, heeft u op zijn minst tijdelijke internettoegang nodig. Een 2-in-1 Ethernet-adapter plus USB-hub is waarschijnlijk een goede combinatie omdat je maar één USB-poort beschikbaar hebt. Persoonlijk gebruik ik de Edimax EU-4208 die direct uit de doos werkt met de Pi en geen externe voeding nodig heeft, maar die geen ingebouwde USB-hub heeft. Als u hier een USB Ethernet-adapter wilt kopen, kunt u vind een lijst met degenen die zijn getest met de Raspberry Pi.

Als je meer USB-poorten en zelfs Etherent rechtstreeks op je aangepaste bord wilt toevoegen, raad ik aan om de LAN9512 van Microchip te bekijken. Het is dezelfde chip die wordt gebruikt door de originele Raspberry Pi Model B en geeft je 2 USB-poorten en 1 Ethernet-poort. Als alternatief, als u 4 USB-poorten nodig heeft, overweeg dan eens een kijkje te nemen bij zijn neef LAN9514.

1 x DDR2 SODIMM RAM-connector - Dit is waarschijnlijk het belangrijkste onderdeel van het hele bord en waarschijnlijk het enige dat niet gemakkelijk kan worden vervangen. Om u uit de problemen te redden, is het onderdeel dat u zou moeten hebben de TE CONNECTIVITY 1473005-4. Het is verkrijgbaar bij de meeste grote leveranciers, waaronder TME, Mouser en Digikey, dus het zou geen probleem moeten zijn om het te vinden. Wees echter heel voorzichtig, controleer nogmaals en zorg ervoor dat het onderdeel dat u bestelt in feite de 1473005-4 is. Maak niet dezelfde fout als ik en koop de gespiegelde versie, deze connectoren zijn niet goedkoop.

Voor de rest van de onderdelen die ik ervoor kies om op het bord op te nemen, kun je de stuklijst bekijken voor meer informatie, ik heb geprobeerd om links naar de datasheets op te nemen voor de meeste van hen.

Soldeerapparatuur - De kleinste componenten op het bord zijn de 0402 ontkoppelcondensatoren, maar de HDMI, de camera en de SODIMM-connectoren kunnen ook een beetje uitdagend zijn zonder enige vorm van vergroting. Als je goede ervaring hebt met SMD-solderen, zou het geen groot probleem moeten zijn. Hoe dan ook, als je toevallig toegang hebt tot een microscoop, raad ik het ten zeerste aan.

Stap 2: Knipperen van de EMMC

Het eerste dat u moet doen voordat u uw Compute-module gaat gebruiken, is het flitsen van de nieuwste Raspbian Lite-afbeelding op de eMMC. De officiële Raspberry Pi-documentatie is zeer goed geschreven en beschrijft het hele proces tot in detail voor zowel Linux als Windows. Om die reden ga ik alleen de stappen beschrijven die je in Linux heel kort moet nemen, zodat ze als een snelle referentie kunnen dienen.

Allereerst moet u ervoor zorgen dat uw IO-kaart in de programmeermodus staat en dat de rekenmodule in de SODIMM-connector is geplaatst. Om het bord in de programmeermodus te zetten, zet u de J4-jumper in de EN-positie.

Vervolgens moet u de rpiboot-tool op uw systeem bouwen, zodat u deze kunt gebruiken om toegang te krijgen tot de eMMC. Om dit te doen, heb je een kopie van de usbboot-repository nodig die als volgt gemakkelijk kan worden verkregen met git, git clone -- depth=1 https://github.com/raspberrypi/usbboot && cd usbboot

Nu, om rpiboot te bouwen, moet je ervoor zorgen dat zowel libusb-1.0-0-dev als make-pakketten op je systeem zijn geïnstalleerd. Dus, ervan uitgaande dat je een op Debian gebaseerde distro gebruikt, zoals Ubuntu run, sudo apt update && sudo apt install libusb-1.0-0-dev make

Als u geen op Debian gebaseerde distro gebruikt, kan de naam van het libusb-1.0.0-dev-pakket anders zijn, dus zoek uit hoe het in uw geval wordt genoemd. Zodra de build-afhankelijkheden zijn geïnstalleerd, kunt u het rpiboot-binaire bestand eenvoudig bouwen door het uit te voeren, maken

Nadat de build is voltooid, voert u rpiboot uit als root en begint het te wachten op een verbinding, sudo./rpiboot

Sluit nu het IO-bord aan op uw computer door een micro-USB-kabel aan te sluiten op de USB SLAVE-poort en sluit vervolgens de voeding aan op de POWER IN-poort. Na een paar seconden zou de rpiboot de Compute Module moeten kunnen detecteren en je toegang geven tot de eMMC. Dat zou moeten resulteren in een nieuw blokapparaat dat verschijnt onder /dev. U kunt het fdisk-programma gebruiken om de naam van het apparaat te vinden, sudo fdisk -l

Schijf /dev/sdi: 3,7 GiB, 3909091328 bytes, 7634944 sectoren

Eenheden: sectoren van 1 * 512 = 512 bytes Sectorgrootte (logisch/fysiek): 512 bytes / 512 bytes I/O-grootte (minimum/optimaal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x8e3a9721

Apparaat Opstarten Einde Sectoren Grootte Id Type

/dev/sdi1 8192 137215 129024 63M c W95 FAT32 (LBA) /dev/sdi2 137216 7634943 7497728 3.6G 83 Linux

In mijn geval was het /dev/sdi omdat ik al heel wat schijven op mijn systeem heb aangesloten, maar die van jou zullen zeker variëren.

Nadat je er absoluut zeker van bent dat je de juiste apparaatnaam hebt gevonden, kun je dd gebruiken om de Raspbian Lite-afbeelding naar de eMMC te branden. Voordat u dat doet, moet u ervoor zorgen dat er geen partitie van de eMMC al op uw systeem is aangekoppeld.

df -h

Als u ze als volgt ontkoppelt, sudo umount /dev/sdXY

Wees nu uiterst voorzichtig, het gebruik van de verkeerde apparaatnaam met dd kan uw systeem mogelijk vernietigen en gegevensverlies veroorzaken. Ga niet verder met de volgende stap tenzij u er volledig zeker van bent dat u weet wat u doet. Als u meer informatie nodig heeft, kunt u de documentatie hierover raadplegen.

sudo dd if=-raspbian-stretch-lite.img of=/dev/sdX bs=4M && sync

Zodra de dd- en sync-opdrachten zijn voltooid, zou u het IO-bord van uw computer moeten kunnen loskoppelen. Vergeet ten slotte niet om de J4-jumper terug te zetten naar de DIS-positie en uw Compute Module zou klaar moeten zijn voor de eerste keer opstarten.

Stap 3: Eerste keer opstarten

Voordat u voor de eerste keer opstart, moet u ervoor zorgen dat u een USB-toetsenbord en een HDMI-monitor aansluit op uw IO-kaart. Als alles gaat zoals verwacht en je Pi klaar is met opstarten, kun je ermee communiceren als je ze hebt aangesloten.

Wanneer u wordt gevraagd om in te loggen, gebruikt u "pi" voor de gebruikersnaam en "raspberry" voor het wachtwoord, aangezien dit de standaard inloggegevens zijn. Je kunt nu een aantal opdrachten uitvoeren om ervoor te zorgen dat alles werkt zoals verwacht zoals je normaal zou doen op een Raspberry Pi, maar probeer nog niets te installeren omdat je nog steeds geen internetverbinding hebt.

Een belangrijk ding dat u moet doen voordat u uw Pi afsluit, is SSH inschakelen, zodat u er na de volgende keer opstarten vanaf uw computer verbinding mee kunt maken. U kunt dat heel eenvoudig doen met de opdracht raspi-config, sudo raspi-config

Om SSH in te schakelen, gaat u naar Interfacing-opties, selecteert u SSH, kiest u JA, OK en Voltooien. Als u wordt gevraagd of u opnieuw wilt opstarten, weigert u. Nadat u klaar bent, sluit u uw Pi af en verwijdert u de stroom zodra deze klaar is.

sudo afsluiten -h nu

Vervolgens moet u een internetverbinding tot stand brengen met behulp van de USB Ethernet-adapter die u al zou moeten hebben. Als je adapter ook een USB-hub heeft, kun je deze gebruiken om je toetsenbord aan te sluiten als je wilt, anders kun je gewoon verbinding maken met je Pi via SSH. Hoe dan ook, houd de HDMI-monitor voorlopig aangesloten om ervoor te zorgen dat het opstartproces zoals verwacht wordt voltooid.

Tegen het einde zou het je ook het IP-adres moeten laten zien dat je Pi van de DHCP-server heeft gekregen. Probeer dit te gebruiken om via SSH verbinding te maken met je Pi.

ssh pi@

Nadat je met succes verbinding hebt gemaakt met je Pi via SSH, heb je de monitor en het toetsenbord niet langer nodig, dus voel je vrij om ze los te koppelen als je wilt. Op dit punt zou je ook toegang moeten hebben tot internet vanaf je Pi, je kunt proberen iets als google.com te pingen om het te verifiëren. Nadat u ervoor heeft gezorgd dat u toegang hebt tot internet, is het een goed idee om het systeem bij te werken door het uitvoeren van, sudo apt update && sudo apt upgrade

Stap 4: De camera configureren

De camera configureren
De camera configureren

Het grootste verschil tussen een gewoon Raspberry Pi-bord en de Compute-module is dat je in het laatste geval, afgezien van het inschakelen van de camera met raspi-config, ook een aangepast apparaatboombestand nodig hebt.

Meer informatie over de configuratie van de Compute Module voor gebruik met een camera vindt u in de documentatie. Maar over het algemeen heeft de cameraconnector onder de andere ook 4 controlepinnen, die moeten worden aangesloten op 4 GPIO-pinnen op de Compute Module, en het is aan jou om te beslissen welke tijdens het ontwerpen van je aangepaste bord.

In mijn geval, tijdens het ontwerpen van het bord, kies ik CD1_SDA om naar GPIO28, CD1_SCL naar GPIO29, CAM1_IO1 naar GPIO30 en CAM1_IO0 naar GPIO31 te gaan. Ik koos voor deze specifieke GPIO-pinnen omdat ik een 40-pins GPIO-header op mijn bord wilde hebben, die ook compatibiliteit behoudt met de GPIO-connector van de reguliere Raspberry Pi-borden. En om die reden moest ik ervoor zorgen dat de GPIO-pinnen die ik voor de camera gebruik, niet ook in de GPIO-header verschijnen.

Dus, tenzij je besluit wijzigingen aan te brengen in de bedrading van de cameraconnector, heb je een /boot/dt-blob.bin nodig die je Pi vertelt om GPIO28-31 te configureren zoals hierboven beschreven. En om een dt-blob.bin te genereren, wat een binair bestand is, heb je een dt-blob.dts nodig om te compileren. Om het u gemakkelijk te maken, ga ik u mijn eigen dt-blob.dts geven die u kunt gebruiken, die u indien nodig kunt aanpassen aan uw behoeften.

Om het apparaatboombestand te compileren, gebruikt u de apparaatboomcompiler als volgt:

dtc -I dts -O dtb -o dt-blob.bin dt-blob.dts

Ik weet niet zeker waarom, maar het bovenstaande zou tot nogal wat waarschuwingen moeten leiden, maar zolang de dt-blob.bin met succes is gegenereerd, zou alles in orde moeten zijn. Verplaats nu de dt-blob.bin die je zojuist hebt gegenereerd naar /boot door uit te voeren, sudo mv dt-blob.bin /boot/dt-blob.bin

Het bovenstaande geeft u waarschijnlijk de volgende waarschuwing, mv: kon het eigendom van '/boot/dt-blob.bin' niet behouden: bewerking niet toegestaan

Dit is alleen maar klagen dat het het bestandseigendom niet kan behouden, aangezien /boot een FAT-partitie is die te verwachten is. Het is je misschien opgevallen dat /boot/dt-blob.bin standaard niet bestaat, dit komt omdat de Pi in plaats daarvan een ingebouwde apparaatstructuur gebruikt. Het toevoegen van uw eigen inside /boot overschrijft echter de ingebouwde en stelt u in staat de functie van de pin te configureren zoals u dat wilt. Meer over de apparaatstructuur vindt u in de documentatie.

Nadat dat is gebeurd, moet u de camera inschakelen, sudo raspi-config

Ga naar Interface-opties, selecteer Camera, kies JA, OK en Voltooien. Als u wordt gevraagd of u opnieuw wilt opstarten, weigert u. Sluit nu je Pi af en verwijder de stroom.

Nadat de stroom van het IO-bord is verwijderd, verbindt u met behulp van 4 vrouwelijke naar vrouwelijke jumperdraden de pinnen voor GPIO28 naar CD1_SDA, GPIO29 naar CD1_SCL, GPIO30 naar CAM1_IO1 en GPIO31 naar CAM1_IO0. Sluit ten slotte uw cameramodule aan op de CAM1-connector met behulp van de camera-adapterkaart of een camerakabel die is ontworpen voor de Raspberry Pi Zero en schakel de voeding in.

Als alles werkte zoals verwacht nadat de Pi is opgestart, zou je de camera moeten kunnen gebruiken. Om te proberen een foto te maken nadat je verbinding hebt gemaakt met je Pi via SSH-run, raspistill -o test.jpg

Als het commando zonder fouten eindigt en er een test-j.webp

sftp pi@

sftp> test.jpg ophalen sftp> afsluiten

Stap 5: Verhuizen van het IO-bord naar een aangepaste PCB

Verhuizen van het IO-bord naar een aangepaste PCB
Verhuizen van het IO-bord naar een aangepaste PCB
Verhuizen van het IO-bord naar een aangepaste PCB
Verhuizen van het IO-bord naar een aangepaste PCB
Verhuizen van het IO-bord naar een aangepaste PCB
Verhuizen van het IO-bord naar een aangepaste PCB

Nu u klaar bent met alle basisconfiguraties, kunt u uw eigen aangepaste bord ontwerpen op basis van de Compute-module. Aangezien dit je eerste project wordt, raad ik je ten zeerste aan om mijn ontwerp te pakken en uit te breiden met extra hardware die je leuk vindt.

De achterkant van het bord heeft voldoende ruimte voor het toevoegen van je eigen componenten en voor relatief kleine projecten hoef je waarschijnlijk niet eens de afmetingen van het bord te vergroten. Ook als dit een op zichzelf staand project is en je geen fysieke GPIO-header op je bord nodig hebt, kun je deze eenvoudig verwijderen en wat ruimte besparen aan de bovenzijde van de PCB. De GPIO-header is ook het enige onderdeel dat door de tweede binnenlaag wordt geleid en door deze te verwijderen, wordt deze volledig vrijgemaakt.

Ik moet erop wijzen dat ik met succes een van de kaarten zelf heb samengesteld en getest, en ik heb geverifieerd dat alles, inclusief de camera en de HDMI-uitgang, lijkt te werken zoals verwacht. Dus zolang je geen grote veranderingen aanbrengt in de manier waarop ik alles heb gerouteerd, zou je geen problemen moeten hebben.

Als u echter een aantal grote lay-outwijzigingen moet doorvoeren, moet u er rekening mee houden dat de meeste sporen die naar de HDMI- en camera-aansluitingen gaan, worden geleid als differentiële paren van 100 Ohm. Dit betekent dat je hier rekening mee moet houden voor het geval je ze over het bord moet verplaatsen. Het betekent ook dat zelfs als je de GPIO-header uit je ontwerp laat vallen, wat betekent dat de interne lagen nu geen sporen bevatten, je nog steeds een 4-laags PCB nodig hebt om een differentiële impedantie van bijna 100 Ohm te bereiken. Als je echter geen gebruik gaat maken van de HDMI-uitgang en de camera, zou je een 2-laags bord moeten kunnen gebruiken door ze weg te doen en de kosten van de borden een beetje te verlagen.

Ter referentie: de platen zijn besteld bij ALLPCB met een totale dikte van 1,6 mm en ik vroeg niet om impedantiecontrole, omdat dit de kosten waarschijnlijk behoorlijk zou verhogen en ik wilde ook zien of het ertoe zou doen. Ik heb ook gekozen voor een gouden onderdompelingsafwerking om het met de hand solderen van de connectoren gemakkelijker te maken, omdat het garandeert dat alle pads mooi plat zullen zijn.

Aanbevolen: