Innholdsfortegnelse:

Design din egen Raspberry Pi Compute Module PCB: 5 trinn (med bilder)
Design din egen Raspberry Pi Compute Module PCB: 5 trinn (med bilder)

Video: Design din egen Raspberry Pi Compute Module PCB: 5 trinn (med bilder)

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

Hvis du aldri har hørt om Raspberry Pi Compute Module før, er det i utgangspunktet en fullverdig Linux -datamaskin med formfaktoren en bærbar RAM -pinne!

Med det blir det mulig å designe dine egne tilpassede brett der Raspberry Pi bare er en annen komponent. Det gir deg en enorm fleksibilitet, ettersom det gir deg tilgang til en mye større mengde IO -pinner, samtidig som du får velge nøyaktig hvilken maskinvare du vil ha på brettet ditt. Den innebygde eMMC eliminerer også behovet for et eksternt micro SD-kort, noe som gjør Compute Module perfekt for å designe Raspberry Pi-baserte produkter.

Dessverre, mens Compute Module lar deg gjøre alt dette, ser det fortsatt ut til å være mangel på popularitet sammenlignet med den tradisjonelle Raspberry Pi Model A og B. Som et resultat er det ikke mange maskinvareprosjekter med åpen kildekode der ute basert på den. Og for alle som ønsker å komme i gang med å designe sine egne brett, er mengden ressurser de har ganske begrenset.

Da jeg først begynte med Raspberry Pi Compute Module for noen måneder siden, var det akkurat det problemet jeg sto overfor. Så jeg bestemte meg for å gjøre noe med det. Jeg bestemte meg for å designe en åpen kildekode -PCB basert på Compute Module, som skal ha alle de grunnleggende funksjonene som gjør Raspberry Pi flott. Det inkluderer en kamerakontakt, USB -vert, lydutgang, HDMI og selvfølgelig et GPIO -topptekst som er kompatibelt med de vanlige Raspberry Pi -kortene.

Målet med dette prosjektet er å tilby en åpen kildekode -design for et Compute Module -basert kort, som alle vil kunne bruke som utgangspunkt for å designe sitt eget tilpassede bord. Brettet ble designet på KiCAD, en åpen kildekode og EDA -programvarepakke på tvers av plattformer, slik at så mange som mulig kan dra nytte av den.

Bare ta tak i designfilene, tilpass dem til dine behov og snu ditt eget tilpassede bord for prosjektet ditt.

Trinn 1: Deler og verktøy

Deler og verktøy
Deler og verktøy
Deler og verktøy
Deler og verktøy
Deler og verktøy
Deler og verktøy
Deler og verktøy
Deler og verktøy

For å komme i gang med Raspberry Pi Compute Module trenger du følgende deler:

1 x Raspberry Pi Compute Module 3 - Jeg anbefaler på det sterkeste å få den vanlige versjonen som inkluderer innebygd eMMC og ikke Lite -versjonen. Hvis du vil bruke Lite -versjonen i prosjektet ditt, må du gjøre noen få endringer i designet, og det inkluderer å legge til en mikro -SD -kortkontakt. Til slutt har jeg bare testet brettet med CM3, og jeg kan ikke garantere at det vil fungere med den første CM -versjonen som ble utgitt tilbake i 2014.

Oppdatering 29/1/2019: Det ser ut til at Foundation nettopp har gitt ut Compute Module 3+ og ikke bare det, men nå kommer det også med muligheten for 8 GB, 16 GB eller 32 GB eMMC! I henhold til databladet ser det ut til at CM3+ er elektrisk identisk med CM3, noe som betyr at det i utgangspunktet er en dråpe i erstatning for CM3.

1 x Compute Module IO Board - Designet mitt var ment å tjene som et utgangspunkt for å designe ditt eget tilpassede bord basert på det, ikke å erstatte Compute Module IO -kortet. Så for å gjøre livet ditt enklere anbefaler jeg på det sterkeste å få hendene til et IO -kort og bruke det til utvikling før du går over til et tilpasset bord. Bortsett fra å gi deg tilgang til hver eneste pin i CM pluss en rekke kontakter, er IO-kortet også nødvendig for å blinke den innebygde eMMC. Noe du ikke kan gjøre med brettet mitt, med mindre du gjør noen endringer i designet først.

1 x Raspberry Pi Zero Camera Cable eller Compute Module Camera Adapter - På designen min bruker jeg en veldig lik kamerakontakt som den som brukes av Compute Module IO Board og Raspberry Pi Zero. Så for å feste et kamera trenger du enten en adapterkabel designet for Pi Zero eller kameraadapterkortet som følger med Compute Module Development Kit. Så vidt jeg vet er det ganske dyrt å kjøpe adapterkortet separat. Så hvis du liker meg bestemte meg for å kjøpe CM og IO -kortet separat for å spare penger, anbefaler jeg deg å få kameraadapterkabelen designet for Pi Zero i stedet.

1 x Raspberry Pi kameramodul - Jeg har bare testet brettet med den originale 5MP kameramodulen og ikke den nyere 8MP versjonen. Men siden førstnevnte ser ut til å fungere helt fint, ser jeg ingen grunn til at det senere ikke ville, da det skal være bakoverkompatibelt. Uansett kan 5MP -versjonen bli funnet for mindre enn 5 € på eBay i dag, og derfor vil jeg anbefale å kjøpe en.

4 x Jumper Wire til Female - Du trenger minst 4 for å konfigurere kamerakontakten på IO -kortet, men du vil sannsynligvis få mer. De er ikke nødvendige for det tilpassede kortet, men kan være nyttige hvis du planlegger å koble til ekstern maskinvare via GPIO -toppteksten.

1 x HDMI -kabel - Jeg bestemte meg for å bruke en HDMI -kontakt i full størrelse på kortet mitt for å eliminere behovet for adaptere. Selvfølgelig, hvis du foretrekker å bruke en mini eller til og med en mikro HDMI -kontakt, kan du gjerne tilpasse designet til dine behov.

1 x 5V mikro -USB -strømforsyning - Telefonladeren din bør sannsynligvis gjøre det bra i de fleste tilfeller så lenge den kan gi minst 1A. Husk at dette bare er en generell verdi. De faktiske strømkravene dine kommer til å avhenge av maskinvaren du bestemmer deg for å inkludere på det tilpassede kortet.

1 x USB Ethernet -adapter - Hvis du planlegger å installere eller oppdatere stort sett hvilken som helst pakke på systemet ditt, trenger du minst midlertidig Internett -tilgang. En 2-i-1 Ethernet-adapter pluss USB-hub er sannsynligvis en god kombinasjon, da du bare har en USB-port tilgjengelig. Personlig bruker jeg Edimax EU-4208 som fungerer ut av esken med Pi og ikke krever ekstern strøm, men den har ikke en USB-hub innebygd. Hvis du ønsker å kjøpe en USB Ethernet-adapter her kan du finn en liste med de som er testet med Raspberry Pi.

Hvis du vil legge til flere USB -porter og til og med Etherent direkte på det egendefinerte kortet, vil jeg foreslå å ta en titt på LAN9512 fra Microchip. Det er den samme brikken som ble brukt av den originale Raspberry Pi Model B og kommer til å gi deg 2 USB -porter og 1 Ethernet -port. Alternativt, hvis du trenger 4 USB -porter, kan du vurdere å se på fetteren LAN9514.

1 x DDR2 SODIMM RAM -kontakt - Dette er sannsynligvis den viktigste komponenten på hele kortet og sannsynligvis den eneste som ikke lett kan byttes ut. For å redde deg fra trøbbel er delen du bør få TE CONNECTIVITY 1473005-4. Den er tilgjengelig fra de fleste store leverandører, inkludert TME, Mouser og Digikey, så du bør ikke ha problemer med å finne den. Vær imidlertid veldig forsiktig, dobbeltsjekk og sørg for at delen du bestiller faktisk er 1473005-4. Ikke gjør den samme feilen som jeg gjorde, og få den speilvendte versjonen, disse kontaktene er ikke billige.

For resten av delene som jeg velger å inkludere på tavlen kan du ta en titt på styklisten for å få mer informasjon. Jeg prøvde å inkludere lenker til databladene for de fleste av dem.

Loddeutstyr - De minste komponentene på brettet er avkoblingskondensatorene 0402, men HDMI så vel som kameraet og SODIMM -kontaktene kan også være litt utfordrende uten noen form for forstørrelse. Hvis du har god erfaring med SMD -lodding, mente det ikke burde være et stort problem. Uansett, hvis du tilfeldigvis har tilgang til et mikroskop, anbefaler jeg det på det sterkeste.

Trinn 2: Blinker EMMC

Det første du må gjøre før du begynner å bruke beregningsmodulen, blinker det siste Raspbian Lite -bildet på eMMC. Den offisielle Raspberry Pi -dokumentasjonen er veldig godt skrevet og beskriver hele prosessen i detalj for både Linux og Windows. Av den grunn skal jeg bare beskrive trinnene du må ta veldig kort på Linux, slik at de kan tjene som en rask referanse.

Først av alt må du sørge for at IO -kortet er satt til programmeringsmodus og Compute Module er satt inn i SODIMM -kontakten. For å sette kortet til programmeringsmodus, flytt J4 -jumperen til EN -posisjonen.

Deretter må du bygge rpiboot -verktøyet på systemet ditt, slik at du kan bruke det til å få tilgang til eMMC. For å gjøre dette trenger du en kopi av usbboot -depotet som enkelt kan fås ved hjelp av git som følger, git klon --depth = 1 https://github.com/raspberrypi/usbboot && cd usbboot

For å bygge rpiboot må du sørge for at både libusb-1.0-0-dev og make-pakker er installert på systemet ditt. Så forutsatt at du er på en Debian -basert distro som Ubuntu -kjøring, sudo apt update && sudo apt install libusb-1.0-0-dev make

Hvis du ikke bruker en Debian-basert distro, kan navnet på libusb-1.0.0-dev-pakken være annerledes, så sørg for å finne ut hvordan det heter i ditt tilfelle. Når build -avhengighetene er installert, kan du bygge binæren rpiboot ganske enkelt ved å kjøre, gjøre

Etter at den innebygde er fullført, kjør rpiboot som root, og den begynner å vente på en tilkobling, sudo./rpiboot

Koble nå IO -kortet til datamaskinen din ved å koble en mikro -USB -kabel til USB SLAVE -porten, og koble deretter strøm til POWER IN -porten. Etter noen sekunder skal rpiboot være i stand til å oppdage beregningsmodulen og gi deg tilgang til eMMC. Det skulle føre til at en ny blokkeringsenhet vises under /dev. Du kan bruke fdisk -programmet til å finne navnet på enheten, sudo fdisk -l

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

Enheter: sektorer på 1 * 512 = 512 byte Sektorstørrelse (logisk/fysisk): 512 bytes/512 bytes I/O -størrelse (minimum/optimal): 512 byte/512 byte Disklabeltype: dos Diskidentifikator: 0x8e3a9721

Enhetsstart Start Sluttsektorer Størrelse Id Type

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

I mitt tilfelle var det /dev /sdi ettersom jeg har ganske mange stasjoner allerede tilknyttet systemet mitt, men din vil definitivt variere.

Etter at du har vært helt sikker på at du har funnet riktig enhetsnavn, kan du bruke dd for å brenne Raspbian Lite -bildet til eMMC. Før du gjør det, må du imidlertid kontrollere at det ikke er noen partisjon av eMMC som allerede er montert på systemet ditt.

df -h

Hvis du finner noen avmonter dem som følger, sudo umount /dev /sdXY

Vær nå ekstremt forsiktig, bruk av feil enhetsnavn med dd kan potensielt ødelegge systemet ditt og forårsake tap av data. Ikke fortsett med neste trinn med mindre du er helt sikker på at du vet hva du gjør. Hvis du trenger mer informasjon, kan du se på dokumentasjonen om dette.

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

Når kommandoene dd og synkronisering er fullført, bør du kunne koble IO -kortet fra datamaskinen. Til slutt, ikke glem å flytte J4 -jumperen tilbake til DIS -stillingen, og Compute Module skal være klar for sin første oppstart.

Trinn 3: Første oppstart

Sørg for å koble et USB -tastatur og en HDMI -skjerm til IO -kortet før du starter for første gang. Hvis alt går som forventet og Pi -en er ferdig med å starte opp, kan du samhandle med den når du har den vedlagt.

Når du blir bedt om å logge inn, bruker du "pi" for brukernavnet og "bringebær" for passordet, da dette er standard påloggingsinformasjon. Du kan nå kjøre noen kommandoer for å sikre at alt fungerer som forventet som du vanligvis ville gjort på en hvilken som helst Raspberry Pi, men ikke prøv å installere noe enda, siden du fremdeles ikke har en Internett -tilkobling.

En viktig ting du må gjøre før du slår av Pi -en, er å aktivere SSH, slik at du kan koble deg til den fra datamaskinen din etter neste oppstart. Du kan gjøre det veldig enkelt ved å bruke raspi-config-kommandoen, sudo raspi-config

For å aktivere SSH, gå til Grensesnittalternativer, velg SSH, velg YES, OK og Fullfør. I tilfelle du blir spurt om du vil starte avvisningen på nytt. Etter at du er ferdig med å slå av Pi -en og når den er ferdig, fjern strømmen.

sudo shutdown -h nå

Deretter må du opprette en Internett -tilkobling ved hjelp av USB Ethernet -adapteren som du allerede burde ha. Hvis adapteren også har en USB -hub, kan du bruke den til å koble til tastaturet hvis du vil, ellers kan du bare koble til Pi over SSH. Uansett, hold HDMI -skjermen tilkoblet i det minste for nå, for å sikre at oppstartsprosessen avsluttes som forventet.

I slutten bør den også vise deg IP -adressen som Pi -en din fikk fra DHCP -serveren. Prøv å bruke dette for å koble til din Pi via SSH.

ssh pi@

Etter vellykket tilkobling til Pi over SSH trenger du ikke lenger skjermen og tastaturet plugget inn, så ta dem ut hvis du vil. På dette tidspunktet bør du også ha tilgang til Internett fra din Pi, du kan prøve å pinge noe som google.com for å bekrefte det. Etter å ha kontrollert at du har tilgang til Internett, er det en god idé å oppdatere systemet ved å kjøre, sudo apt update && sudo apt upgrade

Trinn 4: Konfigurere kameraet

Konfigurere kameraet
Konfigurere kameraet

Den største forskjellen mellom et vanlig Raspberry Pi-kort og Compute Module er at i tilfelle senere, bortsett fra bare å aktivere kameraet ved å bruke raspi-config, trenger du også en egendefinert enhetstrefil.

Du finner mer informasjon om konfigurasjonen av Compute Module for bruk med et kamera i dokumentasjonen. Men generelt har kamerakontakten blant de andre også 4 kontrollpinner, som må kobles til 4 GPIO -pinner på Compute Module, og det er opp til deg å bestemme hvilke mens du designer det tilpassede kortet.

I mitt tilfelle velger jeg CD1_SDA for å gå til GPIO28, CD1_SCL til GPIO29, CAM1_IO1 til GPIO30 og CAM1_IO0 til GPIO31. Jeg velger akkurat disse GPIO -pinnene da jeg ønsket å ha en 40 -pinners GPIO -topptekst på brettet mitt, som også opprettholder kompatibilitet med GPIO -kontakten til de vanlige Raspberry Pi -kortene. Og av den grunn måtte jeg sørge for at GPIO -pinnene jeg bruker til kameraet ikke også vises i GPIO -toppteksten.

Så, med mindre du bestemmer deg for å gjøre endringer i ledningene til kamerakontakten, trenger du en /boot/dt-blob.bin som forteller Pi å konfigurere GPIO28-31 som beskrevet ovenfor. Og for å generere en dt-blob.bin, som er en binær fil, trenger du en dt-blob.dts for å kompilere. For å gjøre ting enkelt skal jeg oppgi mine egne dt-blob.dts som du kan bruke som du deretter kan tilpasse til dine behov hvis du må.

For å kompilere enhetens trefil bruker du enhetens trekompilator som følger:

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

Jeg er ikke sikker på hvorfor, men det ovennevnte skal resultere i ganske mange advarsler, men så lenge dt-blob.bin har blitt generert vellykket, burde alt være bra. Flytt dt-blob.bin du nettopp har generert til /boot ved å kjøre, sudo mv dt-blob.bin /boot/dt-blob.bin

Ovenstående gir deg sannsynligvis følgende advarsel, mv: klarte ikke å bevare eierskapet for '/boot/dt-blob.bin': Drift ikke tillatt

Dette er bare mv som klager over at det ikke kan bevare fil eierskapet da /boot er en FAT -partisjon som kan forventes. Du har kanskje lagt merke til at /boot/dt-blob.bin ikke eksisterer som standard, dette er fordi Pi bruker et innebygd enhetstre i stedet. Hvis du legger til din egen innside /oppstart, overstyrer den den innebygde en og lar deg konfigurere funksjonen til pinnen slik du vil. Du finner mer om enhetstreet i dokumentasjonen.

Etter at det er gjort må du aktivere kameraet, sudo raspi-config

Gå til Grensesnittalternativer, velg Kamera, velg YES, OK og Fullfør. I tilfelle du blir spurt om du vil starte avvisningen på nytt. Slå av Pi -en og fjern strømmen.

Etter at strømmen er fjernet fra IO -kortet, bruker du 4 hun -til -hun -jumperkabler, og kobler pinnene for GPIO28 til CD1_SDA, GPIO29 til CD1_SCL, GPIO30 til CAM1_IO1 og GPIO31 til CAM1_IO0. Fest til slutt kameramodulen til CAM1 -kontakten ved hjelp av kameraadapterkortet eller en kamerakabel designet for Raspberry Pi Zero og koble til strøm.

Hvis alt fungerte som forventet etter Pi -støvlene, burde du kunne bruke kameraet. For å prøve å ta et bilde etter å ha koblet til Pi via SSH -kjøring, raspistill -o test.jpg

Hvis kommandoen avsluttes uten feil og en test-j.webp

sftp pi@

sftp> get test.jpg sftp> exit

Trinn 5: Flytte fra IO -kortet til et tilpasset kretskort

Flytte fra IO -kortet til et tilpasset kretskort
Flytte fra IO -kortet til et tilpasset kretskort
Flytte fra IO -kortet til et tilpasset kretskort
Flytte fra IO -kortet til et tilpasset kretskort
Flytte fra IO -kortet til et tilpasset kretskort
Flytte fra IO -kortet til et tilpasset kretskort

Nå som du er ferdig med all den grunnleggende konfigurasjonen, kan du gå til å designe ditt eget tilpassede bord basert på Compute Module. Siden dette kommer til å bli ditt første prosjekt, oppfordrer jeg deg til å ta tak i designet mitt og utvide det til å omfatte eventuell ekstra maskinvare du liker.

Baksiden av brettet har god plass til å legge til dine egne komponenter og for relativt små prosjekter trenger du sannsynligvis ikke engang å øke dimensjonene på brettet. Hvis dette er et frittstående prosjekt og du ikke trenger et fysisk GPIO -topptekst på brettet ditt, kan du enkelt bli kvitt det og spare plass på oversiden av kretskortet. GPIO -overskriften er også den eneste komponenten som føres gjennom det andre indre laget og fjerner det frigjør det helt.

Jeg bør påpeke at jeg har montert og testet et av kortene selv, og jeg har bekreftet at alt inkludert kameraet og HDMI -utgangen ser ut til å fungere som forventet. Så, så lenge du ikke gjør noen store endringer i måten jeg har rutet alt, bør du ikke ha noen problemer.

I tilfelle du må gjøre noen store layoutendringer, må du huske på at de fleste sporene som går til HDMI- og kamerakontaktene blir dirigert som 100 ohm differensialpar. Dette betyr at du må ta hensyn til dette i tilfelle du må flytte dem rundt på brettet. Det betyr også at selv om du slipper GPIO -overskriften fra designet, noe som betyr at de interne lagene ikke vil inneholde spor, trenger du fortsatt en 4 -lags PCB for å oppnå en differensialimpedans nær 100 Ohm. Hvis du ikke kommer til å benytte deg av HDMI -utgangen og kameraet, bør du imidlertid kunne gå med et 2 -lags brett ved å kvitte seg med dem og redusere kostnaden for brettene litt.

Bare for referanse ble platene bestilt fra ALLPCB med en total tykkelse på 1,6 mm, og jeg spurte ikke om impedanskontroll, da det sannsynligvis ville øke kostnaden ganske mye, og jeg ville også se om det hadde noen betydning. Jeg valgte også nedsenket gullfinish for å gjøre håndlodding av kontaktene enklere, da det garanterer at alle putene blir fine og flate.

Anbefalt: