Turinys:

Įterpta universali sąsajos plokštė - USB/Bluetooth/WIFI valdymas: 6 žingsniai
Įterpta universali sąsajos plokštė - USB/Bluetooth/WIFI valdymas: 6 žingsniai

Video: Įterpta universali sąsajos plokštė - USB/Bluetooth/WIFI valdymas: 6 žingsniai

Video: Įterpta universali sąsajos plokštė - USB/Bluetooth/WIFI valdymas: 6 žingsniai
Video: Изучаем iOS: создайте собственное приложение с помощью Objective-C! от Тянью Лю 2024, Lapkritis
Anonim
Įterpta universali sąsajos plokštė - USB/Bluetooth/WIFI valdymas
Įterpta universali sąsajos plokštė - USB/Bluetooth/WIFI valdymas
Įterpta universali sąsajos plokštė - USB/Bluetooth/WIFI valdymas
Įterpta universali sąsajos plokštė - USB/Bluetooth/WIFI valdymas

Dažnai matau, kad kuriu naujų įterptųjų modulių bibliotekas nuo nulio, remdamasis įrenginio duomenų lapu. Kurdamas biblioteką, manau, įstrigsiu kodo, kompiliavimo, programavimo ir testavimo cikle, užtikrindamas, kad viskas veikia ir kad be klaidų. Dažnai kompiliavimo ir programos laikas gali būti daug ilgesnis nei laikas, kurio reikia kodo redagavimui, todėl būdas sukurti šiuos veiksmus būtų labai patogu.

Taip pat dažnai pastebiu, kad noriu sujungti įterptąjį modulį su kompiuteriu. Jei modulyje nėra specialiai USB jungties, kuri dažnai būna, paprastai turite nusipirkti per brangų USB keitiklį, kuris atliks vieną darbą, pvz., Tik SPI arba tiesiog I2C.

Dėl šių priežasčių nusprendžiau sukurti universalią sąsajos plokštę. Jis sukurtas taip, kad būtų galima lengvai bendrauti kompiuteriu naudojant įterptus modulius.

Lentos, į kurią įsitaisiau, įterptosios sąsajos funkcijos apima.

  • Skaitmeninis įvestis/išvestis
  • I2C
  • SPI
  • UART
  • PWM
  • Servo variklis
  • ADC įvestis
  • DAC išvestis

Visa tai galima naudoti visiškai savarankiškai.

Sąsajos plokštę galima valdyti per USB jungtį prie kompiuterio, tačiau taip pat yra pasirenkami WIFI arba „Bluetooth“modulio jungtys, leidžiančios plokštę naudoti nuotoliniu būdu arba pagal IoT tipo scenarijų.

Naudojant standartines 2,54 mm žingsnio SIL antraštes, galima tiesiogiai prijungti moteriškus dupontinius kabelius tarp plokštės ir įterpto modulio, kad būtų galima greitai, patikimai ir be litavimo prijungti.

Aš taip pat galvojau pridėti tokius dalykus kaip CAN, LIN, H-bridge ir tt, bet jie gali būti pateikti vėliau, kai bus peržiūrėtas v2.

1 žingsnis: PCB projektavimas

PCB projektavimas
PCB projektavimas
PCB projektavimas
PCB projektavimas
PCB projektavimas
PCB projektavimas
PCB projektavimas
PCB projektavimas

Kurdamas PCB man patinka stengtis, kad viskas būtų kuo paprasčiau. Kai ketinate statyti lentas rankomis, svarbu pridėti komponentų tik tada, kai jie turi tam tikrą tikslą ir naudoja kuo daugiau vidinių mikrovaldiklio funkcijų.

Žvelgdamas į pageidaujamą elektronikos tiekėją, radau man patinkantį lustą, kuris turėjo funkcijas, kurių aš ieškojau, ir kainavo protingai. Lustas, ant kurio nusileidau, buvo PIC18F24K50.

Turėdamas 23 įvesties/išvesties kaiščius, tai suteikė man šias funkcijas

  • „Digtal I/O“
  • I2C
  • SPI
  • UART
  • PWM x 2
  • Servo variklis x 6
  • ADC įvestis x 3
  • DAC išėjimas x 1
  • Įvestis/išvestis varoma nuo 5 V arba 3 V3
  • Būsenos šviesos diodas

Vienas pasirinkto IC trūkumas yra tas, kad jis turi tik vieną UART išorinį įrenginį, todėl naudojant „Bluetooth“ar „Wifi“valdymo metodą nebegalėsite naudotis UART ryšiu.

Aukščiau esančiuose paveikslėliuose parodyta baigta schema ir PCB.

2 žingsnis: Protokolo kūrimas

Protokolo projektavimas
Protokolo projektavimas

Pirmasis žingsnis kuriant protokolą yra nuspręsti, ko konkrečiai jums reikės, kad lenta galėtų tai padaryti. Sugriauti dalykus suteikia geresnį valdymo lygį, o šukavimas kartu supaprastina sąsają ir sumažina komunikacijos srautą tarp plokštės ir kompiuterio. Tai pusiausvyros žaidimas, kurį sunku ištobulinti.

Kiekvienai lentos funkcijai turėtumėte nurodyti visus parametrus ir grąžą. Pavyzdžiui, funkcija, skirta skaityti ADC įvestį, gali turėti parametrą, nurodantį, kurį įvestį imti, ir grąžinimo vertę, kurioje yra rezultatas.

Savo projekte čia yra funkcijų, kurias norėjau įtraukti, sąrašas:

  • Skaitmeninis įvestis/išvestis

    • „SetPin“(„PinNumber“, būsena)
    • Būsena = „GetPin“(„PinNumber“)
  • SPI

    • Inicijuoti (SPI režimas)
    • „DataIn“= perdavimas („DataOut“)
    • „ControlChipSelect“(kanalas, valstija)
    • „SetPrescaler“(norma)
  • I2C

    • Inicijuoti ()
    • Pradėti ()
    • Perkrauti ()
    • Sustabdyti ()
    • SlaveAck = Siųsti („DataOut“)
    • DataIn = gauti (paskutinis)
  • UART

    • Inicijuoti ()
    • TX baitas („DataOut“)
    • BytesAvailable = RX skaičius ()
    • DataIn = RX baitas ()
    • „SetBaud“(„Baud“)
  • PWM

    • Įgalinti (kanalas)
    • Išjungti (kanalas)
    • „SetFrequency“(kanalas, dažnis)
    • „GetMaxDuty“(pareiga)
    • „SetDuty“(pareiga)
  • Servo

    • Įgalinti (kanalas)
    • Išjungti (kanalas)
    • „SetPosition“(kanalas, pozicija)
  • ADC

    ADCsample = Pavyzdys (kanalas)

  • DAC

    • Įgalinti
    • Išjungti
    • SetOutput (įtampa)
  • BEVIELIS INTERNETAS

    • SetSSID (SSID)
    • Nustatyti slaptažodį (slaptažodį)
    • Būsena = CheckConnectionStatus ()
    • IP = „GetIPAddress“()

Parametrai rodomi skliausteliuose, o grąžos - prieš simbolį lygus.

Prieš pradėdamas koduoti, kiekvienai funkcijai priskiriu komandos kodą, pradedant nuo 128 (dvejetainis 0b10000000) ir einant aukštyn. Aš visiškai dokumentuoju protokolą, kad įsitikinčiau, jog kai mano galva yra kodu, turiu gražų dokumentą, į kurį galiu grįžti. Pridedamas visas šio projekto protokolo dokumentas, kuriame yra gaunamų komandų kodai ir bitų pločiai.

3 žingsnis: programinės įrangos kūrimas

Firmware programavimas
Firmware programavimas
Firmware programavimas
Firmware programavimas
Firmware programavimas
Firmware programavimas

Nustačius protokolą, reikia įdiegti aparatinės įrangos funkcionalumą.

Kurdamas vergines sistemas, taikau paprastą būsenos mašinos tipo metodą, kad galėčiau maksimaliai padidinti galimą komandų ir duomenų pralaidumą, o programinę įrangą būtų paprasta suprasti ir derinti. Jei reikia geresnės sąveikos su kitais prijungtais įrenginiais, vietoj to galima naudoti pažangesnę sistemą, tokią kaip „Modbus“, tačiau tai prideda pridėtinių išlaidų, kurios sulėtins situaciją.

Būsenos mašina susideda iš trijų būsenų:

1) Komandų laukimas

2) parametrų priėmimas

3) Atsakyti

Trys valstybės sąveikauja taip:

1) Mes einame per gaunamus baitus buferyje, kol turime baitą, kuriame yra svarbiausias bitų rinkinys. Gavę tokį baitą, mes jį patikriname pagal žinomų komandų sąrašą. Jei randame atitikimą, priskiriame parametrų baitų skaičių ir grąžiname baitus, kad jie atitiktų protokolą. Jei nėra parametrų baitų, mes galime čia atlikti komandą ir pereiti prie 3 būsenos arba iš naujo paleisti būseną 1. Jei yra parametrų baitų, pereiname prie 2 būsenos.

2) Mes einame per gaunamus baitus, juos išsaugodami, kol išsaugosime visus parametrus. Kai turime visus parametrus, vykdome komandą. Jei yra grąžinimo baitų, pereiname prie 3 etapo. Jei nėra grąžintinų baitų, mes grįžtame į 1 etapą.

3) Mes einame per gaunamus baitus ir už kiekvieną baitą perrašome aido baitą su galiojančiu grąžinimo baitu. Išsiuntę visus grąžinimo baitus, grįžtame į 1 etapą.

Aš naudojau „Flowcode“kurdamas programinę -aparatinę įrangą, nes ji puikiai vizualiai parodo, ką darau. Tą patį galima padaryti ir „Arduino“ar kitomis įterptosiomis programavimo kalbomis.

Pirmasis žingsnis yra užmegzti ryšį su kompiuteriu. Norėdami tai padaryti, „micro“turi būti sukonfigūruotas taip, kad veiktų tinkamu greičiu, ir mes turime pridėti kodą, kad galėtume valdyti USB ir UART išorinius įrenginius. „Flowcode“tai taip pat paprasta, kaip į projektą įterpti USB nuoseklųjį komponentą ir UART komponentą iš „Comms“komponento meniu.

Pridedame RX pertraukimą ir buferį, kad gautume gaunamas UART komandas, ir reguliariai apklausiame USB. Tada laisvalaikio metu galime naudoti buferį.

Pridedamas „Flowcode“projektas ir sukurtas C kodas.

4 žingsnis: sąsaja naudojant srauto kodą

Sąsaja naudojant srauto kodą
Sąsaja naudojant srauto kodą
Sąsaja naudojant srauto kodą
Sąsaja naudojant srauto kodą
Sąsaja naudojant srauto kodą
Sąsaja naudojant srauto kodą

„Flowcode“modeliavimas yra labai galingas ir leidžia mums sukurti komponentą kalbėtis su lenta. Kurdami komponentą dabar galime tiesiog nuvilkti komponentą į savo projektą ir iš karto turėti prieinamas plokštės funkcijas. Kaip papildoma premija, bet koks esamas komponentas, turintis SPI, I2C arba UART periferinius įrenginius, gali būti naudojamas modeliavimui, o komunikacijų duomenys gali būti siunčiami į sąsajos plokštę per purkštuvo komponentą. Pridedamuose paveikslėliuose rodoma paprasta programa, skirta spausdinti pranešimą į ekraną. „Comms“duomenys, kurie siunčiami per sąsajos plokštę į faktinę ekrano aparatūrą ir komponentų sąranką naudojant „I2C Display“, „I2C“purkštukų ir sąsajos plokštės komponentus.

Naujasis „Flowcode 8.1“SCADA režimas yra absoliuti papildoma premija, nes tada galime pasiimti programą, kuri ką nors daro „Flowcode“simuliatoriuje, ir eksportuoti ją taip, kad ji veiktų atskirai bet kuriame kompiuteryje be jokių licencijavimo problemų. Tai gali būti puiku tokiems projektams kaip bandymo įrenginiai ar jutiklių grupės.

Aš naudoju šį SCADA režimą, norėdamas sukurti WIFI konfigūravimo įrankį, kuris gali būti naudojamas sukonfigūruoti SSID ir slaptažodį, taip pat surinkti modulio IP adresą. Tai leidžia man viską nustatyti naudojant USB jungtį ir tada, kai viskas veikia, perkelti į WIFI tinklo ryšį.

Pridedami keli projektų pavyzdžiai.

5 žingsnis: kiti sąsajos metodai

Be „Flowcode“, bendraudami su sąsajos lenta, galite naudoti pasirinktą programavimo kalbą. Mes naudojome „Flowcode“, nes joje jau buvo įtraukta dalių biblioteka, kurią galėjome nedelsiant pradėti naudoti, tačiau tai taip pat taikoma daugeliui kitų kalbų.

Čia yra kalbų ir būdų, kaip bendrauti su sąsajos lenta, sąrašas.

„Python“- serijinės bibliotekos naudojimas duomenims perduoti į COM prievadą arba IP adresą

„Matlab“- failų komandų naudojimas duomenims srautu perduoti į COM prievadą arba IP adresą

C ++ / C# / VB - naudojant iš anksto parašytą DLL, tiesiogiai pasiekiant COM prievadą arba „Windows“TCP / IP API

„Labview“- naudojant iš anksto parašytą DLL, VISA serijos komponentą arba TCP/IP komponentą

Jei kas nors norėtų, kad minėtos kalbos būtų įdiegtos, praneškite man.

6 žingsnis: paruoštas produktas

Galutinis produktas
Galutinis produktas
Galutinis produktas
Galutinis produktas
Galutinis produktas
Galutinis produktas

Gatavas produktas tikriausiai bus svarbi mano įterpto įrankių rinkinio savybė daugelį metų. Tai jau padėjo man sukurti komponentus įvairiems „Grove“ekranams ir jutikliams. Dabar galiu visiškai prikalti kodą prieš imdamasis kompiliavimo ar programavimo klaidų.

Aš netgi išdalinau keletą lentų kolegoms, kad jie taip pat galėtų pagerinti savo darbo eigą, ir jos buvo labai gerai įvertintos.

Dėkojame, kad perskaitėte mano „Instructable“. Tikiuosi, kad tai jums buvo naudinga, ir tikiuosi, kad tai įkvėps jus kurti savo įrankius, kad padidintumėte produktyvumą.

Rekomenduojamas: