Sisukord:
- Samm: trükkplaadi kujundamine
- 2. samm: protokolli koostamine
- 3. samm: püsivara kujundamine
- Samm: liidestamine vookoodi kaudu
- 5. samm: muud liidese meetodid
- 6. samm: valmistoode
Video: Sisseehitatud universaalne liideseplaat - USB/Bluetooth/WIFI juhtimine: 6 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
Ma leian sageli, et loon uute manustatud moodulite jaoks raamatukogud seadme andmelehe põhjal nullist. Teeki luues leian, et jään koodide, kompileerimise, programmeerimise ja testimise tsüklisse, tagades asjade toimimise ja olen veatu. Kompileerimis- ja programmiajad võivad sageli olla palju pikemad kui koodi redigeerimiseks kuluv aeg ja seega oleks nende sammude väljatöötamisel väljaarendamine väga mugav.
Samuti leian sageli, et tahan ühendada sisseehitatud mooduli arvutiga. Kui moodulil pole spetsiaalselt USB -ühendust, mis sageli juhtub, peate tavaliselt ostma ülehinnatud USB -muunduri, mis teeb ühe töö, näiteks SPI või lihtsalt I2C.
Nendel põhjustel otsustasin luua universaalse liidese. Selle eesmärk on võimaldada sisseehitatud moodulitega hõlpsat arvutipõhist suhtlust.
Tahvli sisseehitatud liidese funktsioonid, millele ma otsustasin, hõlmavad.
- Digitaalne sisend/väljund
- I2C
- SPI
- UART
- PWM
- Servomootor
- ADC sisend
- DAC väljund
Kõiki neid saab kasutada täiesti iseseisvalt.
Liideseplaati saab juhtida arvutiga USB -ühenduse kaudu, kuid sellel on ka valikulised WIFI- või Bluetooth -mooduliühendused, mis võimaldavad plaati kasutada eemalt või IoT -tüüpi stsenaariumi korral.
Kasutades standardseid 2,54 mm sammuga SIL -päiseid, on võimalik otse ühendada naissoost dupontkaablid plaadi ja sisseehitatud mooduli vahele, võimaldades kiireid, usaldusväärseid ja jooteteta ühendusi.
Mõtlesin ka selliste asjade lisamisele nagu CAN, LIN, H-bridge jne, kuid need võivad hiljem tulla koos v2 versiooniga.
Samm: trükkplaadi kujundamine
PCB kujundamisel meeldib mulle proovida asju võimalikult lihtsana hoida. Kui kavatsete käsitsi ehitusplaate ehitada, on oluline lisada komponente ainult siis, kui need täidavad kindlat eesmärki ja kasutavad võimalikult palju mikrokontrolleri sisemisi funktsioone.
Vaadates oma eelistatud elektroonikatarnijat, leidsin mulle sobiva kiibi, millel olid otsitavad omadused ja mis oli mõistliku hinnaga. Kiip, millele ma sattusin, oli PIC18F24K50.
Olemasolevate 23 sisend-/väljundpistikutega võimaldas see neid funktsioone
- Digitaalne sisend/väljund
- I2C
- SPI
- UART
- PWM x 2
- Servomootor x 6
- ADC sisend x 3
- DAC väljund x 1
- Sisend-/väljundpinge töötab 5 V või 3 V3
- Olek LED
Üks minu valitud IC puudus on see, et sellel on ainult üks UART -välisseade ja seega peatab Bluetoothi või Wifi juhtimismeetodi kasutamine UART -ühenduse kasutamise.
Ülaltoodud piltidel on näidatud valmis skeem ja trükkplaat.
2. samm: protokolli koostamine
Esimene samm protokolli väljatöötamisel on otsustada, mida konkreetselt vajate tahvlit. Asjade lõhkumine lisab paremat kontrolli, samas kui asjade kombineerimine lihtsustab liidest ja vähendab kommunikeerimisliiklust plaadi ja arvuti vahel. See on tasakaalustav mäng ja seda on raske täiustada.
Tahvli iga funktsiooni puhul peaksite näitama kõik parameetrid ja tagastused. Näiteks ADC -sisendi lugemise funktsioonil võib olla parameeter, mis määrab, millist sisendit proovist võtta, ja tagasiväärtus, mis sisaldab tulemust.
Minu disainis on siin funktsioonide loend, mida tahtsin lisada:
-
Digitaalne sisend/väljund
- SetPin (PIN -number, osariik)
- Olek = GetPin (PinNumber)
-
SPI
- Initsialiseerimine (SPI -režiim)
- DataIn = Edastamine (DataOut)
- ControlChipSelect (kanal, osariik)
- SetPrescaler (määr)
-
I2C
- Initsialiseerimine ()
- Alusta ()
- Taaskäivita ()
- Peata ()
- SlaveAck = Saada (DataOut)
- DataIn = saada (viimane)
-
UART
- Initsialiseerimine ()
- TX bait (DataOut)
- BytesAvailable = RX Count ()
- DataIn = RX bait ()
- SetBaud (Baud)
-
PWM
- Luba (kanal)
- Keela (kanal)
- SetFrequency (kanal, sagedus)
- GetMaxDuty (tollimaks)
- SetDuty (tollimaks)
-
Servo
- Luba (kanal)
- Keela (kanal)
- SetPosition (kanal, positsioon)
-
ADC
ADCsample = Näide (kanal)
-
DAC
- Luba
- Keela
- SetOutput (pinge)
-
WIFI
- SetSSID (SSID)
- Määra parool (parool)
- Olek = CheckConnectionStatus ()
- IP = GetIPAddress ()
Parameetrid on näidatud sulgudes ja tagasitulekud on näidatud võrdusmärgi ees.
Enne kodeerimise alustamist määran igale funktsioonile käsukoodi, mis algab 128 -st (binaarne 0b10000000) ja töötab ülespoole. Ma dokumenteerin protokolli täielikult, tagamaks, et kui mu pea on koodis, on mul tore dokument, millele tagasi pöörduda. Selle projekti täielik protokollidokument on manusesse lisatud ja see sisaldab sissetulevaid käsukoode ja bitilaiused.
3. samm: püsivara kujundamine
Kui protokoll on loodud, on vaja riistvara funktsionaalsust rakendada.
Alam -süsteemide väljatöötamisel kasutan lihtsat olekumasina tüüpi lähenemisviisi, et proovida potentsiaalset käsu ja andmete läbilaskevõimet maksimeerida, hoides püsivara lihtsalt arusaadavana ja silumiseks. Selle asemel võiks kasutada arenenumat süsteemi, näiteks Modbus, kui vajate paremat suhtlemist teiste ühendatud seadmetega, kuid see lisab üldkulusid, mis aeglustab asju.
Olekumasin koosneb kolmest olekust:
1) Käskude ootamine
2) Parameetrite vastuvõtmine
3) Vasta
Kolm osariiki suhtlevad järgmiselt:
1) Me läbime puhvrisse saabuvad baidid, kuni meil on bait, millel on kõige olulisem bitt. Kui oleme sellise baidi saanud, kontrollime seda teadaolevate käskude loendi alusel. Kui leiame vaste, määrame protokollile vastavaks parameetrite baitide arvu ja tagastame baidid. Kui parameetrite baite pole, saame siin käsu täita ja kas hüpata olekusse 3 või taaskäivitada olek 1. Kui parameetrite baite on, liigume olekusse 2.
2) Me läbime sissetulevad baidid, salvestades need seni, kuni oleme salvestanud kõik parameetrid. Kui meil on kõik parameetrid, täidame käsu. Kui tagastusbaite on, liigume 3. etappi. Kui tagasisaatmise baite pole, siis naaseme 1. etappi.
3) Me läbime sissetulevad baidid ja kirjutame iga baidi kohta kajabaidi üle kehtiva tagastusbaidiga. Kui oleme kõik tagasipööratud baidid saatnud, naaseme 1. etappi.
Püsivara kujundamiseks kasutasin Flowcode'i, kuna see näitab visuaalselt kenasti, mida ma teen. Sama asja saab teha võrdselt hästi Arduino või teistes manustatud programmeerimiskeeltes.
Esimene samm on luua side arvutiga. Selleks tuleb mikro seadistada õige kiirusega töötamiseks ning peame lisama koodi USB ja UART välisseadmete juhtimiseks. Flowcode'is on see sama lihtne kui USB -jadakomponendi ja UART -komponendi lohistamine projekti Comms -komponentide menüüst.
UART -i sissetulevate käskude püüdmiseks lisame RX -katkestuse ja puhvri ning küsitleme regulaarselt USB -d. Seejärel saame puhkeprotsessis puhverdada.
Flowcode'i projekt ja loodud C -kood on lisatud.
Samm: liidestamine vookoodi kaudu
Flowcode'i simulatsioon on väga võimas ja võimaldab meil luua tahvliga rääkimiseks vajaliku komponendi. Komponendi loomisel saame komponendi lihtsalt oma projekti lohistada ja tahvli funktsioonid on kohe saadaval. Lisaboonusena saab simulatsioonis kasutada mis tahes olemasolevat komponenti, millel on SPI, I2C või UART välisseade, ja kommuuni andmed saab pihustuskomponendi kaudu liidese pardale suunata. Lisatud piltidel on lihtne programm sõnumi ekraanile printimiseks. Kommunikatsiooniandmed, mis saadetakse liideseplaadi kaudu tegelikule ekraaniriistvarale ja komponentide seadistamisele koos I2C kuvari, I2C pihusti ja liideseplaadi komponentidega.
Flowcode 8.1 uus SCADA -režiim on absoluutne lisaboonus, kuna saame seejärel võtta programmi, mis teeb Flowcode -simulaatoris midagi, ja eksportida see nii, et see töötab iseseisvalt mis tahes arvutis ilma litsentsimisprobleemideta. See võib olla suurepärane selliste projektide jaoks nagu testimisseadmed või anduriklastrid.
Kasutan seda SCADA -režiimi WIFI seadistustööriista loomiseks, mida saab kasutada SSID ja parooli konfigureerimiseks ning mooduli IP -aadressi kogumiseks. See võimaldab mul USB -ühenduse abil kõik seadistada ja seejärel WIFI -võrguühendusele üle kanda, kui asjad töötavad.
Lisatud on mõned näidisprojektid.
5. samm: muud liidese meetodid
Lisaks Flowcode'ile saate liideseplaadiga suhtlemiseks üsna palju kasutada oma valitud programmeerimiskeelt. Kasutasime Flowcode'i, kuna selle osade raamatukogu oli juba kaasas ja mille saime kohe tööle panna, kuid see kehtib ka paljude teiste keelte kohta.
Siin on loetelu keeltest ja meetoditest, kuidas liideseplaadiga suhelda.
Python - jadaraamatukogu kasutamine andmete voogesitamiseks COM -porti või IP -aadressile
Matlab - faili käskude kasutamine andmete voogesitamiseks COM -porti või IP -aadressile
C ++ / C# / VB - Kasutades kas eelnevalt kirjutatud DLL -i, pääsete otse juurde COM -pordile või Windowsi TCP / IP API -le
Labview - Kas eelnevalt kirjutatud DLL -i, VISA jadakomponendi või TCP/IP komponendi kasutamine
Kui keegi soovib ülaltoodud keeli rakendada, andke mulle sellest teada.
6. samm: valmistoode
Valmis toode on tõenäoliselt minu sisseehitatud tööriistakomplekti silmapaistev omadus veel aastaid. Juba see on aidanud mul arendada komponente erinevatele Grove näidikutele ja anduritele. Nüüd saan koodi täielikult naelutada, enne kui kasutan kompileerimist või programmeerimishäireid.
Olen kolleegidele isegi mõned tahvlid kätte andnud, et ka nemad saaksid oma töövoogu parandada ja need on väga hästi vastu võetud.
Täname, et lugesite minu juhendit. Loodan, et see oli teile kasulik ja loodetavasti inspireerib see teid tootlikkuse kiirendamiseks oma tööriistu looma.
Soovitan:
Pildihoidja koos sisseehitatud kõlariga: 7 sammu (piltidega)
Pildihoidja koos sisseehitatud kõlariga: Siin on suurepärane projekt, mida nädalavahetusel ette võtta, kui soovite endale teha kõneleja, kuhu mahuvad pildid/postkaardid või isegi ülesannete loend. Ehituse osana kasutame projekti südames Raspberry Pi Zero W ja
Sisseehitatud aknahaldur: 10 sammu
Sisseehitatud aknahaldur: see projekt näitab, kuidas teisaldatavate kattuvate akendega aknahaldurit juurutada LCD-paneeli ja puuteekraaniga sisseehitatud mikrokontrollerile. Selleks on müügil tarkvarapakette, kuid need maksavad raha ja on lähedal
Sisseehitatud kapp: 4 sammu
Sisseehitatud kapp: Õndsas auras on asjade sees hoidmine midagi, mis on nagu tohutu põnevus. Nimi "Lock of Lock" on tõesti kaasav osa minu igapäevastest artiklitest, mis on oma olemuse tõttu kõikjal levinud, kuid mida see teeb? Lihtne
Seadme juhtimine Androidi WiFi abil Esp8266 Juhtimine: 6 sammu
Seadme juhtimine Androidi WiFi abil Esp8266 Juhtimine: nüüd teame, kuidas juhtida seadmeid esp8266 WiFi -mooduli abil ja Arduino teie seadet Androidi WiFi -juhtimise abil lisateabe saamiseks. klõpsake linki mohamed ashraf
ESP8266 RGB LED -riba WIFI juhtimine - NODEMCU IR -kaugjuhtimispuldina LED -riba jaoks, mida juhitakse Wifi kaudu - RGB LED STRIP nutitelefoni juhtimine: 4 sammu
ESP8266 RGB LED -riba WIFI juhtimine | NODEMCU IR -kaugjuhtimispuldina LED -riba jaoks, mida juhitakse Wifi kaudu | RGB LED STRIP nutitelefoni juhtimine: Tere poisid, selles õpetuses õpime, kuidas kasutada nodemcu või esp8266 IR -kaugjuhtimispuldina, et juhtida RGB LED -riba ja Nodemcu saab juhtida nutitelefoniga WiFi kaudu. Nii et põhimõtteliselt saate oma nutitelefoniga juhtida RGB LED -riba