Kazalo:
- 1. korak: Oblikovanje tiskanega vezja
- 2. korak: Oblikovanje protokola
- 3. korak: Oblikovanje vdelane programske opreme
- 4. korak: Povezovanje prek kode toka
- 5. korak: Druge metode povezovanja
- 6. korak: Končni izdelek
Video: Vgrajena univerzalna vmesniška plošča - krmiljenje USB/Bluetooth/WIFI: 6 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
Pogosto se mi zdi, da ustvarjam knjižnice za nove vdelane module od začetka na podlagi podatkovnega lista naprave. Pri ustvarjanju knjižnice se mi zdi, da se zataknem v ciklu kode, sestavljanja, programiranja in preizkušanja, ko zagotovim, da stvari delujejo in so brez napak. Pogosto je lahko čas zbiranja in programiranja veliko daljši od časa, potrebnega za urejanje kode, zato bi bil način za izrezovanje teh korakov pri razvoju zelo priročen.
Pogosto se mi tudi zdi, da želim povezati vgrajen modul z osebnim računalnikom. Če modul nima posebej povezave USB, kar se pogosto zgodi, morate na splošno kupiti predragi pretvornik USB, ki bo opravil eno samo delo, na primer samo SPI ali samo I2C.
Zaradi teh razlogov sem se odločil ustvariti univerzalno vmesniško ploščo. Zasnovan je tako, da omogoča enostavno komunikacijo na računalniku z vgrajenimi moduli.
Lastnosti vgrajenega vmesnika plošče, na kateri sem se odločil, vključujejo.
- Digitalni V/I
- I2C
- SPI
- UART
- PWM
- Servo motor
- Vhod ADC
- DAC izhod
Vse to je mogoče uporabiti popolnoma neodvisno.
Vmesniško ploščo je mogoče upravljati prek povezave USB z osebnim računalnikom, poleg tega pa ima tudi izbirne povezave modulov WIFI ali Bluetooth, ki omogočajo uporabo plošče na daljavo ali v scenariju tipa IoT.
S standardnimi 2,54 -milimetrskimi nastavki SIL z naklonom je mogoče neposredno priključiti ženske dupont kable med ploščo in vgrajenim modulom, kar omogoča hitre, zanesljive in brez spajkanja povezave.
Razmišljal sem tudi o tem, da bi dodal stvari, kot so CAN, LIN, H-bridge itd., Vendar lahko do njih pride kasneje s revizijo v2.
1. korak: Oblikovanje tiskanega vezja
Pri oblikovanju tiskanega vezja se trudim, da so stvari čim bolj preproste. Ko boste ročno izdelovali plošče, je pomembno, da komponente dodate le, če imajo poseben namen in uporabljajo čim več notranjih funkcij mikrokrmilnika.
Če pogledam svojega najljubšega dobavitelja elektronike, sem našel čip, ki mi je bil všeč, ki je imel značilnosti, ki sem jih iskal, in so bili razumni stroški. Čip, na katerega sem pristal, je bil PIC18F24K50.
Z razpoložljivimi 23 V/I zatiči mi je to omogočilo te funkcije
- Digtal I/O
- I2C
- SPI
- UART
- PWM x 2
- Servo motor x 6
- Vhod ADC x 3
- Izhod DAC x 1
- V/I pogon od 5V ali 3V3
- LED status
Ena pomanjkljivost IC -ja, ki sem ga izbral, je, da ima samo eno periferno enoto UART, zato z uporabo načina upravljanja Bluetooth ali Wifi ne boste mogli uporabljati povezave UART.
Na zgornjih slikah sta prikazana končana shema in tiskana vezja.
2. korak: Oblikovanje protokola
Prvi korak pri oblikovanju protokola je odločitev, kaj konkretno boste potrebovali na plošči. Prekinitev stvari dodaja boljšo raven nadzora, medtem ko združevanje stvari poenostavi vmesnik in zmanjša komunikacijski promet med ploščo in računalnikom. To je uravnotežena igra in jo je težko izpopolniti.
Za vsako funkcijo plošče morate navesti vse parametre in vračila. Na primer, funkcija za branje vhoda ADC ima lahko parameter za določitev vhoda za vzorčenje in vrnjeno vrednost, ki vsebuje rezultat.
V mojem dizajnu je seznam funkcij, ki sem jih želel vključiti:
-
Digitalni V/I
- SetPin (številka pin, stanje)
- Stanje = GetPin (številka pin)
-
SPI
- Inicializacija (način SPI)
- DataIn = Prenos (DataOut)
- ControlChipSelect (kanal, stanje)
- SetPrescaler (stopnja)
-
I2C
- Inicializiraj ()
- Začni ()
- Ponovni zagon ()
- Ustavi ()
- SlaveAck = Pošlji (DataOut)
- DataIn = Prejemanje (zadnje)
-
UART
- Inicializiraj ()
- TX bajt (DataOut)
- BytesAvailable = RX Count ()
- DataIn = RX bajt ()
- SetBaud (Baud)
-
PWM
- Omogoči (kanal)
- Onemogoči (kanal)
- SetFrequency (kanal, frekvenca)
- GetMaxDuty (dolžnost)
- SetDuty (dolžnost)
-
Servo
- Omogoči (kanal)
- Onemogoči (kanal)
- SetPosition (kanal, položaj)
-
ADC
ADCsample = Vzorec (kanal)
-
DAC
- Omogoči
- Onemogoči
- SetOutput (napetost)
-
WIFI
- SetSSID (SSID)
- Nastavi geslo (geslo)
- Status = CheckConnectionStatus ()
- IP = GetIPAddress ()
Parametri so prikazani v oklepajih, vrnitve pa pred simbolom enakovredno.
Preden začnem s kodiranjem, vsaki funkciji dodelim ukazno kodo, ki se začne od 128 (binarno 0b10000000) in deluje navzgor. Protokol v celoti dokumentiram, da se prepričam, da bom, ko imam glavo v kodi, prijeten dokument, na katerega se bom lahko skliceval. Celoten protokolarni dokument za ta projekt je priložen in vključuje dohodne ukazne kode in bitne širine.
3. korak: Oblikovanje vdelane programske opreme
Ko je protokol vzpostavljen, gre za implementacijo funkcionalnosti na strojni opremi.
Pri razvoju podrejenih sistemov sem uporabil preprost pristop tipa državnega stroja, da bi poskušal čim bolj povečati potencialno prepustnost ukazov in podatkov, hkrati pa omogočil enostavno razumevanje in odpravljanje napak vdelane programske opreme. Namesto tega bi lahko uporabili naprednejši sistem, kot je Modbus, če potrebujete boljšo interakcijo z drugimi povezanimi napravami, vendar to povečuje stroške, ki bodo upočasnili stvari.
Državni stroj je sestavljen iz treh stanj:
1) Čakanje na ukaze
2) Sprejemni parametri
3) Odgovorite
Tri stanja medsebojno delujejo:
1) Prehajamo skozi vhodne bajte v medpomnilniku, dokler nimamo bajta, ki ima nastavljen najpomembnejši bit. Ko prejmemo takšen bajt, ga preverimo glede na seznam znanih ukazov. Če najdemo ujemanje, dodelimo število bajtov parametrov in vrnitev bajtov, da se ujemajo s protokolom. Če ni bajtov parametrov, lahko tukaj izvedemo ukaz in preskočimo na stanje 3 ali znova zaženemo stanje 1. Če obstajajo parametri bajtov, se premaknemo v stanje 2.
2) Gremo skozi dohodne bajte in jih shranimo, dokler ne shranimo vseh parametrov. Ko imamo vse parametre, izvedemo ukaz. Če obstajajo povratni bajti, se premaknemo na stopnjo 3. Če ni povratnih bajtov za pošiljanje, se vrnemo na 1. stopnjo.
3) Gremo skozi dohodne bajte in za vsak bajt odmevni bajt prepišemo z veljavnim povratnim bajtom. Ko pošljemo vse povratne bajte, se vrnemo na 1. stopnjo.
Za oblikovanje vdelane programske opreme sem uporabil Flowcode, ki lepo vizualno prikazuje, kaj počnem. Enako bi lahko naredili enako dobro v Arduinu ali drugih vgrajenih programskih jezikih.
Prvi korak je vzpostavitev komunikacije z osebnim računalnikom. Če želite to narediti, je treba mikro konfigurirati za pravilno delovanje in dodati kodo za pogon zunanjih naprav USB in UART. V protokolu je to tako preprosto, kot da v projekt povlečete serijsko komponento USB in komponento UART iz menija komponente Comms.
Dodamo prekinitev in medpomnilnik RX za ulov dohodnih ukazov na UART in redno anketiramo USB. Nato lahko v prostem času obdelamo pufer.
Priložena sta projekt Flowcode in ustvarjena koda C.
4. korak: Povezovanje prek kode toka
Simulacija protokolov je zelo zmogljiva in nam omogoča, da ustvarimo komponento za pogovor s ploščo. Pri ustvarjanju komponente lahko komponento preprosto povlečemo v naš projekt in takoj imamo na voljo funkcije plošče. Kot dodaten bonus se lahko pri simulaciji uporabi vsaka obstoječa komponenta s periferno enoto SPI, I2C ali UART, podatki o komunikaciji pa se lahko prek komponente Injector prenesejo na vmesniško ploščo. Priložene slike prikazujejo preprost program za tiskanje sporočila na zaslon. Podatki o komunikaciji, ki se pošljejo prek vmesniške plošče do dejanske strojne opreme zaslona in nastavitve komponent s komponentami I2C Display, I2C Injector in Interface Board.
Novi način SCADA za Flowcode 8.1 je absolutni dodaten bonus, saj lahko nato vzamemo program, ki naredi nekaj v simulatorju Flowcode, in ga izvozimo, tako da bo deloval sam na katerem koli računalniku brez težav z licenciranjem. To je lahko odlično za projekte, kot so preskusne ploščadi ali senzorske skupine.
Ta način SCADA uporabljam za ustvarjanje orodja za konfiguracijo WIFI, ki ga je mogoče uporabiti za konfiguracijo SSID in gesla ter zbiranje naslova IP modula. To mi omogoča, da nastavim vse z uporabo povezave USB in nato prenesem na omrežno povezavo WIFI, ko se stvari zaženejo.
Nekaj primerov projektov je priloženih.
5. korak: Druge metode povezovanja
Poleg protokola lahko za komunikacijo z vmesniško ploščo precej uporabite tudi izbrani programski jezik. Uporabili smo protokolo, saj je imela že vključeno knjižnico delov, ki bi jih lahko takoj zagnali, vendar to velja tudi za številne druge jezike.
Tu je seznam jezikov in načinov komuniciranja z vmesniško ploščo.
Python - Uporaba serijske knjižnice za pretakanje podatkov na vrata COM ali naslov IP
Matlab - Uporaba ukazov File za pretakanje podatkov na vrata COM ali naslov IP
C ++ / C# / VB - z uporabo vnaprej napisanega DLL -ja za neposreden dostop do vrat COM ali Windows TCP / IP API
Labview - z uporabo vnaprej napisane datoteke DLL, komponente VISA Serial ali komponente TCP/IP
Če bi kdo rad videl zgoraj navedene jezike, naj mi to sporoči.
6. korak: Končni izdelek
Končni izdelek bo v prihodnjih letih verjetno pomemben element v mojem vgrajenem orodju. Že zdaj mi je pomagal pri razvoju komponent za različne prikazovalnike in senzorje Grove. Zdaj lahko kodo popolnoma pribijem, preden se zatečem k kompilacijam ali programiranju.
Kolegom sem celo izročil nekaj tabel, da lahko izboljšajo tudi potek svojega dela, kar je bilo zelo dobro sprejeto.
Hvala, ker ste prebrali moj Instructable. Upam, da vam je bil koristen in upam, da vas bo navdihnil, da ustvarite svoja orodja za pospešitev produktivnosti.
Priporočena:
Univerzalna USB tipkovnica s stikali RGB: 6 korakov
Univerzalna tipkovnica USB s stikali RGB: V tem navodilu vam bom pokazal, kako sestaviti svojo lastno tipkovnico USB po meri, ki se obnaša tako kot običajna računalniška tipkovnica. Lahko dodelite katero koli kombinacijo tipk ali zaporedje tipk, ki jih želite pritisniti, medtem ko pritisnete samo eno tipko. Uporabite ga lahko
Vgrajena omarica .: 4 koraki
Vgrajena omarica. V blaženi avri je ohranjanje stvari v notranjosti nekaj, kar je kot velik val navdušenja. Ime 'ključavnica ključavnice' je res poglobljen del mojih dnevnih člankov, ki je zaradi svoje narave vseprisoten, toda kaj počne? Simpl
"Univerzalna" ura: 10 korakov (s slikami)
"Univerzalna" ura: ta ura lahko prikazuje čas v 24 časovnih pasovih sveta; ta zmogljivost je dosežena zahvaljujoč razporeditvi, prikazani na risbi, ki prikazuje osnovne komponente ure. Ura 1 je nameščena v nosilcu 2, ki se lahko obrne
EAL- vgrajena notranja klima: 5 korakov
EAL-Embedded Indoor-podnebje: Za naš šolski projekt smo imeli nalogo vključiti arduino v avtomatiziran sistem. Odločili smo se, da naredimo notranji klimatski senzor, ki zaznava temperaturo, vlažnost in raven decibelov v zaprtih prostorih. V omari smo izvrtali nekaj lukenj,
Vmesniška plošča HD44780 LCD na I2C za avtobusnega pirata: 9 korakov
Vmesniška plošča HD44780 LCD na I2C za Bus Pirate: Poceni LCD zasloni, ki temeljijo na naboru čipov HD44780, so različnih velikosti: 2x16, 4x20 itd. Ti zasloni imajo dva standardna načina vmesnika, 4 -bitni in 8 -bitni vzporedni. 8bit zahteva skupaj 11 podatkovnih vrstic, 4bit zahteva 7 (6 samo za pisanje). Nekateri