Kazalo:

Vgrajena univerzalna vmesniška plošča - krmiljenje USB/Bluetooth/WIFI: 6 korakov
Vgrajena univerzalna vmesniška plošča - krmiljenje USB/Bluetooth/WIFI: 6 korakov

Video: Vgrajena univerzalna vmesniška plošča - krmiljenje USB/Bluetooth/WIFI: 6 korakov

Video: Vgrajena univerzalna vmesniška plošča - krmiljenje USB/Bluetooth/WIFI: 6 korakov
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, November
Anonim
Vgrajena univerzalna vmesniška plošča - krmiljenje USB/Bluetooth/WIFI
Vgrajena univerzalna vmesniška plošča - krmiljenje USB/Bluetooth/WIFI
Vgrajena univerzalna vmesniška plošča - krmiljenje USB/Bluetooth/WIFI
Vgrajena univerzalna vmesniška plošča - krmiljenje USB/Bluetooth/WIFI

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

Oblikovanje tiskanega vezja
Oblikovanje tiskanega vezja
Oblikovanje tiskanega vezja
Oblikovanje tiskanega vezja
Oblikovanje tiskanega vezja
Oblikovanje tiskanega vezja
Oblikovanje tiskanega vezja
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

Oblikovanje protokola
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

Oblikovanje vdelane programske opreme
Oblikovanje vdelane programske opreme
Oblikovanje vdelane programske opreme
Oblikovanje vdelane programske opreme
Oblikovanje vdelane programske opreme
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

Povezovanje prek kode toka
Povezovanje prek kode toka
Povezovanje prek kode toka
Povezovanje prek kode toka
Povezovanje prek kode toka
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čan izdelek
Končan izdelek
Končan izdelek
Končan izdelek
Končan izdelek
Končan 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: