Innehållsförteckning:

Designa din egen Raspberry Pi Compute Module PCB: 5 steg (med bilder)
Designa din egen Raspberry Pi Compute Module PCB: 5 steg (med bilder)

Video: Designa din egen Raspberry Pi Compute Module PCB: 5 steg (med bilder)

Video: Designa din egen Raspberry Pi Compute Module PCB: 5 steg (med bilder)
Video: ESP32 Tutorial 3 - Resistor, LED, Bredboard and First Project: Hello LED -ESP32 IoT Learnig kit 2024, Juni
Anonim
Designa din egen Raspberry Pi Compute Module PCB
Designa din egen Raspberry Pi Compute Module PCB
Designa din egen Raspberry Pi Compute Module PCB
Designa din egen Raspberry Pi Compute Module PCB
Designa din egen Raspberry Pi Compute Module PCB
Designa din egen Raspberry Pi Compute Module PCB

Om du aldrig har hört talas om Raspberry Pi Compute Module tidigare är det i grunden en fullvärdig Linux -dator med formfaktorn ett bärbart RAM -minne!

Med det blir det möjligt att designa dina egna anpassade brädor där Raspberry Pi bara är en annan komponent. Det ger dig en enorm flexibilitet eftersom det ger dig tillgång till en mycket större mängd IO -stift, samtidigt som du får välja exakt vilken hårdvara du vill ha på ditt bräde. Inbyggda eMMC eliminerar också behovet av ett externt micro SD-kort, vilket gör Compute Module perfekt för att designa Raspberry Pi-baserade produkter.

Tyvärr, medan Compute Module låter dig göra allt detta verkar det fortfarande saknas när det gäller popularitet jämfört med den traditionella Raspberry Pi Model A och B. Som ett resultat finns det inte många open source -hårdvaruprojekt där ute baserat på den. Och för alla som kanske vill komma igång med att designa sina egna brädor är resursmängden ganska begränsad.

När jag först kom igång med Raspberry Pi Compute Module för några månader sedan var det just det problemet jag stod inför. Så jag bestämde mig för att göra något åt det. Jag bestämde mig för att designa ett PCB med öppen källkod baserat på Compute Module, som kommer att ha alla grundläggande funktioner som gör Raspberry Pi bra. Det inkluderar en kamerakontakt, USB -värd, ljudutgång, HDMI och naturligtvis ett GPIO -huvud som är kompatibelt med de vanliga Raspberry Pi -korten.

Målet med detta projekt är att tillhandahålla en öppen källkoddesign för ett Compute Module -baserat kort, som vem som helst kommer att kunna använda som utgångspunkt för att designa sitt eget anpassade kort. Kortet har utformats på KiCAD, ett EDA -programvarupaket med öppen källkod och plattform, för att så många som möjligt ska kunna dra nytta av det.

Ta bara tag i designfilerna, anpassa dem efter dina behov och snurra din egen anpassade tavla för ditt projekt.

Steg 1: Delar och verktyg

Delar och verktyg
Delar och verktyg
Delar och verktyg
Delar och verktyg
Delar och verktyg
Delar och verktyg
Delar och verktyg
Delar och verktyg

För att komma igång med Raspberry Pi Compute Module behöver du följande delar:

1 x Raspberry Pi Compute Module 3 - Jag rekommenderar starkt att du får den vanliga versionen som innehåller inbyggd eMMC och inte Lite -versionen. Om du vill använda Lite -versionen i ditt projekt måste du göra några ändringar i designen, och det inkluderar att lägga till ett micro SD -kortkontakt. Slutligen har jag bara testat kortet med CM3 och jag kan inte garantera att det kommer att fungera med den första CM -versionen som släpptes redan 2014.

Uppdatering 29/1/2019: Det verkar som att stiftelsen just har släppt Compute Module 3+ och inte bara det, men nu kommer det också med alternativet för en 8 GB, 16 GB eller 32 GB eMMC! Enligt databladet verkar det som om CM3+ är elektrisk identisk med CM3 vilket betyder att det i princip är en minskning av ersättningen för CM3.

1 x Compute Module IO Board - Min design var avsedd att fungera som en utgångspunkt för att designa ditt eget anpassade kort baserat på det, inte att ersätta Compute Module IO -kortet. Så för att göra ditt liv enklare rekommenderar jag starkt att du tar tag i ett IO -kort och använder det för utveckling innan du flyttar till ett anpassat kort. Förutom att du får tillgång till varje stift i CM plus en mängd olika kontakter behövs också IO-kortet för att blinka inbyggd eMMC. Vilket är något som du inte kan göra med min tavla, om du inte gör några ändringar i designen först.

1 x Raspberry Pi Zero Camera Cable eller Compute Module Camera Adapter - På min design använder jag en mycket liknande kamerakontakt som den som används av Compute Module IO Board och Raspberry Pi Zero. Så, för att ansluta en kamera behöver du antingen en adapterkabel utformad för Pi Zero eller kamerakortet som följer med Compute Module Development Kit. Så vitt jag vet är det ganska dyrt att köpa adapterkortet separat. Så om du som jag bestämde mig för att köpa din CM och IO -kort separat för att spara lite, råder jag dig att istället få kamerakabeln utformad för Pi Zero.

1 x Raspberry Pi kameramodul - Jag har bara testat kortet med den ursprungliga 5MP kameramodulen och inte den nyare 8MP versionen. Men eftersom det förstnämnda verkar fungera bra ser jag ingen anledning att det senare inte skulle göra det eftersom det ska vara bakåtkompatibelt. Hur som helst kan 5MP -versionen hittas för mindre än 5 € på eBay nuförtiden, varför jag skulle rekommendera att skaffa en.

4 x kvinnliga till kvinnliga bygelkablar - Du kommer att behöva minst 4 för att konfigurera kamerakontakten på IO -kortet, men du kommer troligen att få mer. De behövs inte för det anpassade kortet men kan vara användbara om du planerar att ansluta någon extern hårdvara via GPIO -rubriken.

1 x HDMI -kabel - Jag bestämde mig för att använda en HDMI -kontakt i full storlek på mitt kort för att eliminera behovet av adaptrar. Naturligtvis, om du föredrar att använda en mini- eller till och med en mikro -HDMI -kontakt, kan du anpassa designen efter dina behov.

1 x 5V Micro USB -strömförsörjning - Din telefonladdare borde förmodligen fungera bra i de flesta fall så länge den kan ge minst 1A. Tänk på att detta bara är ett allmänt värde, dina effektbehov kommer faktiskt att bero på hårdvaran du väljer att inkludera på ditt anpassade kort.

1 x USB Ethernet -adapter - Om du planerar att installera eller uppdatera i stort sett alla paket på ditt system behöver du åtminstone tillfällig internetåtkomst. En 2-i-1 Ethernet-adapter plus USB-hubb är förmodligen en bra kombination eftersom du bara har en USB-port tillgänglig. Personligen använder jag Edimax EU-4208 som fungerar ur lådan med Pi och inte kräver extern ström, men den har ingen USB-hubb. Om du funderar på att köpa en USB Ethernet-adapter här kan du hitta en lista med de som har testats med Raspberry Pi.

Om du vill lägga till fler USB -portar och till och med Etherent direkt på ditt anpassade kort, föreslår jag att du tittar på LAN9512 från Microchip. Det är samma chip som används av den ursprungliga Raspberry Pi Model B och kommer att ge dig 2 USB -portar och 1 Ethernet -port. Alternativt, om du behöver 4 USB -portar, överväga att titta på sin kusin LAN9514.

1 x DDR2 SODIMM RAM -kontakt - Detta är förmodligen den viktigaste komponenten i hela kortet och troligen den enda som inte lätt kan bytas ut. För att rädda dig från besväret är den delen du bör få TE CONNECTIVITY 1473005-4. Den är tillgänglig från de flesta större leverantörer inklusive TME, Mouser och Digikey, så du borde inte ha några problem att hitta den. Var dock mycket försiktig, dubbelkolla och se till att delen du beställer faktiskt är 1473005-4. Gör inte samma misstag som jag gjorde och få den speglade versionen, dessa kontakter är inte billiga.

För resten av delarna som jag väljer att inkludera på tavlan kan du ta en titt på BOM för att få mer information, jag försökte inkludera länkar till databladen för de flesta av dem.

Lödutrustning - De minsta komponenterna på kortet är 0402 -avkopplingskondensatorerna, men HDMI samt kameran och SODIMM -kontakterna kan också vara lite utmanande utan någon form av förstoring. Om du har god erfarenhet av SMD -lödning trodde det inte borde vara en stor fråga. Hur som helst, om du råkar ha tillgång till ett mikroskop rekommenderar jag det starkt.

Steg 2: blinkar EMMC

Det första du behöver göra innan du börjar använda din beräkningsmodul blinkar den senaste Raspbian Lite -bilden på eMMC. Den officiella Raspberry Pi -dokumentationen är mycket välskriven och beskriver hela processen i detalj för både Linux och Windows. Av den anledningen kommer jag bara att beskriva stegen du behöver ta mycket kort på Linux, så att de kan fungera som en snabbreferens.

Först och främst måste du se till att ditt IO -kort är inställt på programmeringsläge och beräkningsmodulen sätts in i SODIMM -kontakten. För att ställa in kortet på programmeringsläge, flytta J4 -bygeln till EN -läget.

Därefter måste du bygga rpiboot -verktyget på ditt system så att du kan använda det för att få åtkomst till eMMC. För att göra det behöver du en kopia av usbboot -förvaret som enkelt kan erhållas med git enligt följande, git -klon --depth = 1 https://github.com/raspberrypi/usbboot && cd usbboot

För att kunna bygga rpiboot måste du se till att både libusb-1.0-0-dev och make-paket är installerade på ditt system. Så, förutsatt att du är på en Debian -baserad distro som Ubuntu -körning, sudo apt update && sudo apt install libusb-1.0-0-dev make

Om du inte använder en Debian-baserad distro kan namnet på libusb-1.0.0-dev-paketet vara annorlunda, så se till att hitta hur det kallas i ditt fall. När byggberoenden är installerade kan du bygga binär rpiboot helt enkelt genom att köra, göra

När det byggda är klart kör rpiboot som root och det kommer att börja vänta på en anslutning, sudo./rpiboot

Anslut nu IO -kortet till din dator genom att ansluta en mikro -USB -kabel till dess USB SLAVE -port och anslut sedan strömmen till POWER IN -porten. Efter några sekunder ska rpiboot kunna upptäcka beräkningsmodulen och ge dig åtkomst till eMMC. Det bör leda till att en ny blockenhet visas under /dev. Du kan använda fdisk -programmet för att hitta namnet på enheten, sudo fdisk -l

Disk /dev /sdi: 3,7 GiB, 3909091328 byte, 7634944 sektorer

Enheter: sektorer på 1 * 512 = 512 byte Sektorstorlek (logisk/fysisk): 512 bytes/512 bytes I/O -storlek (minimum/optimal): 512 byte/512 byte Diskmärkningstyp: dos Diskidentifierare: 0x8e3a9721

Enhetsstart Start Slutsektorer Storlek Id Typ

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

I mitt fall var det /dev /sdi eftersom jag har en hel del enheter redan anslutna till mitt system, men dina kommer definitivt att variera.

När du har varit helt säker på att du har hittat rätt enhetsnamn kan du använda dd för att bränna Raspbian Lite -bilden till eMMC. Innan du gör det, se dock till att det inte finns någon partition av eMMC som redan är monterad på ditt system.

df -h

Om du hittar någon avmontera dem enligt följande, sudo umount /dev /sdXY

Var nu extremt försiktig, att använda fel enhetsnamn med dd kan potentiellt förstöra ditt system och orsaka dataförlust. Fortsätt inte med nästa steg om du inte är helt säker på att du vet vad du gör. Om du behöver mer information kan du titta på dokumentationen angående detta.

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

När kommandona dd och synkronisering är klar bör du kunna koppla ur IO -kortet från din dator. Slutligen, glöm inte att flytta J4 -bygeln tillbaka till DIS -läget och din beräkningsmodul bör vara redo för sin första start.

Steg 3: Första start

Innan du startar för första gången, se till att ansluta ett USB -tangentbord och en HDMI -skärm till ditt IO -kort. Om allt går som förväntat och din Pi startar, kan du interagera med det genom att ha dem bifogade.

När du uppmanas att logga in använder du "pi" för användarnamnet och "hallon" för lösenordet eftersom dessa är standardinloggningsuppgifterna. Du kan nu köra några kommandon för att se till att allt fungerar som förväntat som du normalt skulle göra på alla Raspberry Pi, men försök inte installera något ännu eftersom du fortfarande inte har en internetanslutning.

En viktig sak du måste göra innan du stänger av din Pi är att aktivera SSH, så att du kan ansluta till den från din dator efter nästa start. Du kan göra det mycket enkelt med kommandot raspi-config, sudo raspi-config

För att aktivera SSH, gå till gränssnittsalternativ, välj SSH, välj YES, OK och Slutför. Om du blir tillfrågad om du vill starta om avvisningen. När du är klar stänger du av din Pi och när den är klar tar du bort strömmen.

sudo avstängning -h nu

Därefter måste du upprätta en internetanslutning med USB Ethernet -adaptern som du redan bör ha. Om din adapter också har en USB -hubb kan du använda den för att ansluta ditt tangentbord om du vill, annars kan du bara ansluta till din Pi via SSH. I vilket fall som helst, håll HDMI -skärmen ansluten åtminstone för tillfället, för att se till att startprocessen slutar som förväntat.

Vid slutet bör det också visa dig IP -adressen som din Pi fick från DHCP -servern. Prova att använda detta för att ansluta till din Pi via SSH.

ssh pi@

Efter att du har anslutit till din Pi över SSH behöver du inte längre monitorn och tangentbordet anslutet, så ta gärna bort dem om du vill. Vid denna tidpunkt bör du också ha tillgång till Internet från din Pi, du kan försöka pinga något som google.com för att verifiera det. När du har kontrollerat att du har tillgång till Internet är det en bra idé att uppdatera systemet genom att köra, sudo apt update && sudo apt upgrade

Steg 4: Konfigurera kameran

Konfigurera kameran
Konfigurera kameran

Den största skillnaden mellan ett vanligt Raspberry Pi-kort och Compute Module är att när det gäller senare, förutom att bara aktivera kameran med hjälp av raspi-config, behöver du också en anpassad enhetsträdfil.

Du hittar mer information om konfigurationen av beräkningsmodulen för användning med en kamera i dokumentationen. Men i allmänhet har kamerakontakten bland de andra också fyra kontrollnålar, som måste anslutas till 4 GPIO -stift på beräkningsmodulen, och det är upp till dig att bestämma vilka medan du utformar ditt anpassade kort.

I mitt fall väljer jag CD1_SDA för att gå till GPIO28, CD1_SCL till GPIO29, CAM1_IO1 till GPIO30 och CAM1_IO0 till GPIO31. Jag väljer just dessa GPIO -stift eftersom jag ville ha ett 40 -stifts GPIO -huvud på mitt kort, som också bibehåller kompatibilitet med GPIO -kontakten på de vanliga Raspberry Pi -korten. Och av den anledningen var jag tvungen att se till att GPIO -stiften som jag använder för kameran inte också visas i GPIO -rubriken.

Så, om du inte bestämmer dig för att göra ändringar i kablarna till kamerakontakten, behöver du en /boot/dt-blob.bin som uppmanar din Pi att konfigurera GPIO28-31 enligt beskrivningen ovan. Och för att generera en dt-blob.bin, som är en binär fil, behöver du en dt-blob.dts för att kompilera. För att göra det enkelt ska jag tillhandahålla mina egna dt-blob.dts som du kan använda som du sedan kan anpassa efter dina behov om du måste.

För att kompilera enhetens trädfil använder du enhetens trädkompilator enligt följande:

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

Jag är inte säker på varför men ovanstående bör leda till en hel del varningar, men så länge dt-blob.bin har skapats framgångsrikt ska allt vara bra. Flytta nu dt-blob.bin du just skapade till /starta genom att köra, sudo mv dt-blob.bin /boot/dt-blob.bin

Ovanstående kommer förmodligen att ge dig följande varning, mv: misslyckades med att behålla ägandet för '/boot/dt-blob.bin': drift inte tillåten

Detta klagar bara på att det inte kan bevara filägandet eftersom /boot är en FAT -partition som kan förväntas. Du kanske har märkt att /boot/dt-blob.bin inte finns som standard, det beror på att Pi istället använder ett inbyggt enhetsträd. Om du lägger till din egen insida /boot, åsidosätter den den inbyggda enan och låter dig konfigurera funktionen för dess pin så som du vill. Du kan hitta mer om enhetsträdet i dokumentationen.

När det är gjort måste du aktivera kameran, sudo raspi-config

Gå till gränssnittsalternativ, välj Kamera, välj JA, OK och Slutför. Om du blir tillfrågad om du vill starta om avvisningen. Stäng nu av din Pi och ta bort strömmen.

Efter att strömmen har tagits bort från IO -kortet, anslut fyra stift för GPIO28 till CD1_SDA, GPIO29 till CD1_SCL, GPIO30 till CAM1_IO1 och GPIO31 till CAM1_IO0 med hjälp av fyra hona till honkablar. Slutligen, anslut din kameramodul till CAM1 -kontakten med kamerakortet eller en kamerakabel som är utformad för Raspberry Pi Zero och sätt på ström.

Om allt fungerade som förväntat efter Pi -stövlarna borde du kunna använda kameran. För att försöka ta en bild efter att ha anslutit till din Pi via SSH -körning, raspistill -o test.jpg

Om kommandot slutar utan några fel och ett test-j.webp

sftp pi@

sftp> get test.jpg sftp> exit

Steg 5: Flytta från IO -kortet till ett anpassat kretskort

Flytta från IO -kortet till ett anpassat kretskort
Flytta från IO -kortet till ett anpassat kretskort
Flytta från IO -kortet till ett anpassat kretskort
Flytta från IO -kortet till ett anpassat kretskort
Flytta från IO -kortet till ett anpassat kretskort
Flytta från IO -kortet till ett anpassat kretskort

Nu när du är klar med all grundkonfiguration kan du gå vidare till att designa ditt eget anpassade kort baserat på beräkningsmodulen. Eftersom detta kommer att bli ditt första projekt, uppmuntrar jag dig starkt att ta tag i min design och förlänga den till att inkludera ytterligare hårdvara du gillar.

Baksidan av brädet har gott om plats för att lägga till dina egna komponenter och för relativt små projekt behöver du sannolikt inte ens öka kortets dimensioner. Om det här är ett fristående projekt och du inte behöver ett fysiskt GPIO -huvud på ditt kort kan du enkelt bli av med det och spara lite utrymme på ovansidan av kretskortet. GPIO -rubriken är också den enda komponenten som dirigeras genom det andra inre lagret och tar bort det frigör det helt.

Jag bör påpeka att jag själv har monterat och testat ett av korten själv, och jag har verifierat att allt inklusive kameran och HDMI -utgången verkar fungera som förväntat. Så, så länge du inte gör några stora förändringar i hur jag har dirigerat allt så borde du inte ha några problem.

Om du måste göra några stora layoutändringar, kom ihåg att de flesta spåren som går till HDMI- och kamerakontakterna dirigeras som 100 Ohm differentialpar. Detta innebär att du måste ta hänsyn till detta om du måste flytta dem runt brädet. Det betyder också att även om du tappar GPIO -rubriken från din design, vilket innebär att de interna lagren nu inte innehåller några spår, behöver du fortfarande ett 4 -lager PCB för att uppnå en differentialimpedans nära 100 Ohm. Om du inte kommer att använda HDMI -utgången och kameran bör du dock kunna gå med ett tvålagerskort genom att bli av med dem och sänka kostnaden för korten lite.

Bara för referens beställdes brädorna från ALLPCB med en total tjocklek på 1,6 mm och jag bad inte om impedanskontroll, eftersom det sannolikt skulle öka kostnaden en hel del och jag ville också se om det skulle spela någon roll. Jag valde också nedsänkning av guld för att göra handlödning av kontakterna enklare eftersom det garanterar att alla kuddar blir snygga och platta.

Rekommenderad: