Obsah:
- Krok 1: Navrhovanie DPS
- Krok 2: Návrh protokolu
- Krok 3: Návrh firmvéru
- Krok 4: Rozhranie pomocou Flowcode
- Krok 5: Iné metódy rozhrania
- Krok 6: Hotový výrobok
Video: Vstavaná doska univerzálneho rozhrania - ovládanie USB/Bluetooth/WIFI: 6 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:59
Často sa stretávam s tým, že na základe údajového listu zariadenia vytváram knižnice pre nové vstavané moduly úplne od začiatku. Pri generovaní knižnice zisťujem, že sa zasekávam v cykle kódu, kompilácie, programovania a testovania, keď zaisťujem, aby veci fungovali a boli bez chýb. Čas na kompiláciu a program môže byť často oveľa dlhší ako čas potrebný na úpravu kódu, a preto by bol veľmi užitočný spôsob, ako tieto kroky pri vývoji vynechať.
Často tiež zisťujem, že chcem prepojiť vstavaný modul s počítačom. Ak modul nemá konkrétne pripojenie USB, čo sa často stáva, potom si spravidla musíte kúpiť predražený prevodník USB, ktorý bude vykonávať jednu prácu, napríklad iba SPI alebo iba I2C.
Z týchto dôvodov som sa rozhodol vytvoriť dosku univerzálneho rozhrania. Je navrhnutý tak, aby umožňoval jednoduchú komunikáciu na počítači s integrovanými modulmi.
Medzi funkcie vstavaného rozhrania dosky, na ktorej som sa usadil, patrí.
- Digitálne I/O
- I2C
- SPI
- UART
- PWM
- Servo motor
- Vstup ADC
- Výstup DAC
To všetko je možné použiť úplne nezávisle.
Dosku rozhrania je možné ovládať pomocou pripojenia USB k počítaču, ale má tiež voliteľné pripojenie modulu WIFI alebo Bluetooth, čo umožňuje dosku používať na diaľku alebo v prípade typu IoT.
Použitím štandardných konektorov SIL s rozstupom 2,54 mm je možné priamo prepojiť dvojité dupontné káble medzi doskou a vstavaným modulom, čo umožňuje rýchle, spoľahlivé a nespájkovateľné spojenia.
Tiež som premýšľal o pridaní vecí ako CAN, LIN, H-bridge atď. Ale tieto môžu prísť neskôr s revíziou v2.
Krok 1: Navrhovanie DPS
Pri navrhovaní DPS sa snažím, aby veci boli čo najjednoduchšie. Keď budete stavať dosky ručne, je dôležité pridať komponenty iba vtedy, ak vykonávajú konkrétny účel a používajú čo najviac vnútorných funkcií mikrokontroléra.
Keď som sa pozrel na svojho preferovaného dodávateľa elektroniky, zistil som, že mi vyhovuje čip, ktorý má funkcie, ktoré som hľadal, a bol za rozumnú cenu. Čip, na ktorý som pristál, bol PIC18F24K50.
Vďaka 23 pinom I/O, ktoré sú k dispozícii, mi to umožnilo tieto funkcie
- Digtal I/O
- I2C
- SPI
- UART
- PWM x 2
- Servomotor x 6
- Vstup ADC x 3
- Výstup DAC x 1
- I/O napájané z 5 V alebo 3 V 3
- Stavová LED
Jednou nevýhodou integrovaného obvodu, ktorý som si vybral, je to, že má iba jedno periférne zariadenie UART, a preto používanie metódy ovládania Bluetooth alebo Wifi prestane môcť používať pripojenie UART.
Na obrázkoch vyššie sú zobrazené hotové schémy a DPS.
Krok 2: Návrh protokolu
Prvým krokom pri navrhovaní protokolu je rozhodnutie, čo konkrétne budete na doske potrebovať, aby ste mohli robiť. Rozbiť veci prináša lepšiu úroveň ovládania, zatiaľ čo kombinovanie vecí dohromady zjednodušuje rozhranie a znižuje komunikáciu medzi doskou a počítačom. Je to vyrovnávajúca hra a ťažko sa zdokonaľuje.
Pre každú funkciu dosky by ste mali uviesť akékoľvek parametre a výnosy. Napríklad funkcia na čítanie vstupu ADC môže mať parameter na určenie, ktorý vstup sa má vzorkovať, a návratovú hodnotu obsahujúcu výsledok.
V mojom návrhu je zoznam funkcií, ktoré som chcel zahrnúť:
-
Digitálne I/O
- SetPin (PinNumber, State)
- Stav = GetPin (PinNumber)
-
SPI
- Inicializácia (režim SPI)
- DataIn = prenos (DataOut)
- ControlChipSelect (kanál, štát)
- SetPrescaler (sadzba)
-
I2C
- Inicializácia ()
- Štart ()
- Reštart ()
- Zastaviť ()
- SlaveAck = Odoslať (DataOut)
- DataIn = príjem (posledný)
-
UART
- Inicializácia ()
- TX Byte (DataOut)
- BytesAvailable = Počet RX ()
- DataIn = RX bajt ()
- SetBaud (Baud)
-
PWM
- Povoliť (kanál)
- Zakázať (kanál)
- SetFrequency (kanál, frekvencia)
- GetMaxDuty (Duty)
- SetDuty (Duty)
-
Servo
- Povoliť (kanál)
- Zakázať (kanál)
- Nastaviť pozíciu (kanál, pozícia)
-
ADC
ADCsample = vzorka (kanál)
-
DAC
- Povoliť
- Zakázať
- SetOutput (napätie)
-
WIFI
- SetSSID (SSID)
- Nastaviť heslo (heslo)
- Stav = CheckConnectionStatus ()
- IP = GetIPAddress ()
Parametre sú uvedené v zátvorkách a návraty sú uvedené pred symbolom rovná sa.
Predtým, ako začnem kódovať, priradím každej funkcii príkazový kód začínajúci na 128 (binárne 0b10000000) a postupujúcim nahor. Protokol dokumentujem v plnom rozsahu, aby som zabezpečil, že akonáhle budem mať hlavu v kóde, budem mať k dispozícii pekný dokument, na ktorý sa budem môcť vrátiť. Priložený je kompletný dokument protokolu k tomuto projektu, ktorý obsahuje prichádzajúce kódy príkazov a šírky bitov.
Krok 3: Návrh firmvéru
Akonáhle je protokol vytvorený, potom ide o implementáciu funkcií na hardvéri.
Pri vývoji podradených systémov používam jednoduchý prístup typu stavový stroj, aby som sa pokúsil maximalizovať potenciálnu priepustnosť príkazov a údajov a zároveň zachovať jednoduché pochopenie a ladenie firmvéru. Ak potrebujete lepšiu interakciu s inými pripojenými zariadeniami, môžete namiesto toho použiť pokročilejší systém, ako napríklad Modbus.
Stavový stroj pozostáva z troch stavov:
1) Čakanie na príkazy
2) Parametre príjmu
3) Odpovedať
Tieto tri stavy interagujú nasledovne:
1) Prejdeme prichádzajúce bajty vo vyrovnávacej pamäti, kým nemáme bajt, ktorý má nastavený najvýznamnejší bit. Hneď ako dostaneme taký bajt, skontrolujeme ho podľa zoznamu známych príkazov. Ak nájdeme zhodu, priradíme počet bajtov parametrov a vrátime bajty, aby zodpovedali protokolu. Ak neexistujú žiadne bajty parametrov, môžeme príkaz vykonať tu a buď prejsť na stav 3 alebo reštartovať stav 1. Ak existujú bajty parametrov, prejdeme do stavu 2.
2) Prejdeme prichádzajúce bajty a uložíme ich, kým neuložíme všetky parametre. Keď máme všetky parametre, vykonáme príkaz. Ak existujú bajty návratu, prejdeme do fázy 3. Ak nie sú k dispozícii žiadne bajty na odoslanie, vrátime sa do fázy 1.
3) Prejdeme prichádzajúce bajty a pre každý bajt prepíšeme bajt ozveny platným návratovým bajtom. Keď sme odoslali všetky bajty návratu, vrátime sa do fázy 1.
Na návrh firmvéru som použil Flowcode, pretože pekne vizuálne ukazuje, čo robím. To isté sa dá rovnako dobre urobiť v Arduine alebo iných vstavaných programovacích jazykoch.
Prvým krokom je nadviazanie komunikácie s počítačom. Aby to bolo možné, mikro musí byť nakonfigurovaný tak, aby bežal správnou rýchlosťou, a musíme pridať kód na pohon periférnych zariadení USB a UART. V Flowcode je to také jednoduché, ako pretiahnuť do projektu sériový komponent USB a komponent UART z ponuky komponentov Komunikácia.
Pridáme prerušenie RX a vyrovnávaciu pamäť, aby sme zachytili prichádzajúce príkazy na UART, a pravidelne robíme prieskumy USB. Potom môžeme vo svojom voľnom čase vyrovnávaciu pamäť.
Priložený je projekt Flowcode a vygenerovaný C kód.
Krok 4: Rozhranie pomocou Flowcode
Simulácia Flowcode je veľmi účinná a umožňuje nám vytvoriť komponent, s ktorým sa môžete rozprávať s doskou. Pri vytváraní komponentu teraz môžeme komponentu jednoducho pretiahnuť do nášho projektu a okamžite tak mať k dispozícii funkcie dosky. Ako bonus je možné pri simulácii použiť ktorýkoľvek existujúci komponent s periférnymi zariadeniami SPI, I2C alebo UART a údaje z komunikácie je možné prepojiť s doskou rozhrania prostredníctvom injektorového komponentu. Na priložených obrázkoch je zobrazený jednoduchý program na vytlačenie správy na displej. Údaje o komunikáciách, ktoré sa odosielajú cez dosku rozhrania na skutočný hardvér displeja a nastavenie komponentov s komponentmi I2C Display, I2C Injector a Interface Board.
Nový SCADA režim pre Flowcode 8.1 je absolútny bonus navyše v tom, že potom môžeme vziať program, ktorý v simulátore Flowcode niečo robí, a exportovať ho, aby bežal samostatne na akomkoľvek počítači bez problémov s licenciou. To by mohlo byť skvelé pre projekty, ako sú testovacie zariadenia alebo klastre senzorov.
Tento režim SCADA používam na vytvorenie konfiguračného nástroja WIFI, ktorý je možné použiť na konfiguráciu SSID a hesla, ako aj na zber adresy IP modulu. To mi umožňuje nastaviť všetko pomocou pripojenia USB a potom, ako sú veci spustené, prejsť na sieťové pripojenie WIFI.
Niektoré príklady projektov sú priložené.
Krok 5: Iné metódy rozhrania
Okrem Flowcode môžete na doske rozhrania do značnej miery používať aj svoj zvolený programovací jazyk. Použili sme Flowcode, pretože mal už zahrnutú knižnicu dielov, ktoré sme mohli ihneď uviesť do prevádzky, ale to platí aj pre mnoho ďalších jazykov.
Tu je zoznam jazykov a spôsobov komunikácie s doskou rozhrania.
Python - Použitie sériovej knižnice na streamovanie údajov na port COM alebo IP adresu
Matlab - Použitie príkazov File na streamovanie údajov na port COM alebo IP adresu
C ++ / C# / VB - Použitie buď vopred napísanej knižnice DLL, priamy prístup na port COM alebo Windows TCP / IP API
Labview - používa buď vopred napísanú knižnicu DLL, sériový komponent VISA alebo komponent TCP/IP
Ak by niekto chcel vidieť implementáciu vyššie uvedených jazykov, dajte mi prosím vedieť.
Krok 6: Hotový výrobok
Hotový výrobok bude pravdepodobne prominentnou súčasťou mojej vstavanej súpravy nástrojov na dlhé roky. Už mi to pomohlo pri vývoji komponentov pre rôzne displeje a senzory Grove. Teraz môžem kód úplne pribitý, než sa uchýlim k akýmkoľvek vylepšení kompilácie alebo programovania.
Dokonca som rozdal niekoľko tabúľ pre kolegov, aby si tiež mohli zlepšiť pracovný tok, a tieto boli veľmi dobre prijaté.
Ďakujem, že ste si prečítali môj návod. Dúfam, že ste ho považovali za užitočný a dúfame, že vás bude inšpirovať k vytváraniu vlastných nástrojov na urýchlenie vašej produktivity.
Odporúča:
Výpočet vlhkosti, tlaku a teploty pomocou rozhrania BME280 a fotónového rozhrania .: 6 krokov
Výpočet vlhkosti, tlaku a teploty pomocou BME280 a fotónového rozhrania: Stretávame sa s rôznymi projektmi, ktoré vyžadujú monitorovanie teploty, tlaku a vlhkosti. Uvedomujeme si, že tieto parametre skutočne zohrávajú zásadnú úlohu pri odhade pracovnej účinnosti systému pri rôznych atmosférických podmienkach
Doska MXY - nízkorozpočtová doska robota na kreslenie plotrov XY: 8 krokov (s obrázkami)
Doska MXY - nízkorozpočtová doska robota na kreslenie plotrov XY: Mojím cieľom bolo navrhnúť dosku mXY tak, aby bol nízkorozpočtový kresliaci stroj plotrov XY. Preto som navrhol dosku, ktorá to uľahčuje tým, ktorí chcú urobiť tento projekt. V predchádzajúcom projekte, pri použití 2 ks krokových motorov Nema17, táto doska
Doska na vlákno: Micro: bit E-textilná prototypová doska: 5 krokov (s obrázkami)
Doska na prototypy ThreadBoard: Micro: bit E-Textile: ThreadBoard je magnetická doska pre nositeľné počítače, ktorá umožňuje rýchle prototypovanie obvodov z e-textilu. Motiváciou ThreadBoard je vyvinúť nástroj, ktorý sa prispôsobí jedinečnej množine obmedzení, ktoré e-textil
Vytvorenie univerzálneho diaľkového ovládača s NodeMCU: 7 krokov
Vytvorenie univerzálneho diaľkového ovládača s NodeMCU: V tomto projekte postavíme univerzálne diaľkové ovládanie schopné klonovať a odosielať infračervené signály. Na ovládanie tohto celého procesu bude použité webové rozhranie. NodeMCU v spojení s infračerveným fotoreceptorom bude zodpovedné za klonovanie
Zásuvky budúcnosti aka Vstavaná nabíjačka USB: 7 krokov (s obrázkami)
Zásuvky pre budúcnosť aka Vstavaná USB nabíjačka: Váš Iphone je mŕtvy, niekomu odbehla batéria s vašou nástennou nabíjačkou Ipod, aj keď iba tam, kde budúcnosť a všetky zásuvky boli USB! Tento návod vám ukáže, ako previesť štandardnú zásuvku na vstavanú nabíjačku USB. Ja