Obsah:

Vstavaná doska univerzálneho rozhrania - ovládanie USB/Bluetooth/WIFI: 6 krokov
Vstavaná doska univerzálneho rozhrania - ovládanie USB/Bluetooth/WIFI: 6 krokov

Video: Vstavaná doska univerzálneho rozhrania - ovládanie USB/Bluetooth/WIFI: 6 krokov

Video: Vstavaná doska univerzálneho rozhrania - ovládanie USB/Bluetooth/WIFI: 6 krokov
Video: LCD monitor 7 "čierny na palubnú dosku. ZAKÚPITE TU | 🛒 eshopBN.sk 📞 0907 722 036 2024, November
Anonim
Vstavaná doska univerzálneho rozhrania - ovládanie USB/Bluetooth/WIFI
Vstavaná doska univerzálneho rozhrania - ovládanie USB/Bluetooth/WIFI
Vstavaná doska univerzálneho rozhrania - ovládanie USB/Bluetooth/WIFI
Vstavaná doska univerzálneho rozhrania - ovládanie USB/Bluetooth/WIFI

Č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

Navrhovanie DPS
Navrhovanie DPS
Navrhovanie DPS
Navrhovanie DPS
Navrhovanie DPS
Navrhovanie DPS
Navrhovanie DPS
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

Navrhovanie protokolu
Navrhovanie 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

Navrhovanie firmvéru
Navrhovanie firmvéru
Navrhovanie firmvéru
Navrhovanie firmvéru
Navrhovanie firmvéru
Navrhovanie 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

Rozhranie cez Flowcode
Rozhranie cez Flowcode
Rozhranie pomocou Flowcode
Rozhranie pomocou Flowcode
Rozhranie cez Flowcode
Rozhranie cez 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
Hotový výrobok
Hotový výrobok
Hotový výrobok
Hotový výrobok
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: