Obsah:

Integrovaná deska univerzálního rozhraní - ovládání USB/Bluetooth/WIFI: 6 kroků
Integrovaná deska univerzálního rozhraní - ovládání USB/Bluetooth/WIFI: 6 kroků

Video: Integrovaná deska univerzálního rozhraní - ovládání USB/Bluetooth/WIFI: 6 kroků

Video: Integrovaná deska univerzálního rozhraní - ovládání USB/Bluetooth/WIFI: 6 kroků
Video: NEW DACIA DUSTER 2022 2024, Listopad
Anonim
Integrovaná deska univerzálního rozhraní - ovládání USB/Bluetooth/WIFI
Integrovaná deska univerzálního rozhraní - ovládání USB/Bluetooth/WIFI
Integrovaná deska univerzálního rozhraní - ovládání USB/Bluetooth/WIFI
Integrovaná deska univerzálního rozhraní - ovládání USB/Bluetooth/WIFI

Často zjišťuji, že vytvářím knihovny pro nové integrované moduly úplně od začátku na základě datového listu zařízení. Při generování knihovny zjišťuji, že se zaseknu v cyklu kódu, kompilace, programování a testování, když zajišťuji, aby věci fungovaly a byly bez chyb. Čas kompilace a programu může být často mnohem delší než doba potřebná k úpravě kódu, a proto by byl velmi praktický způsob, jak tyto kroky při vývoji vynechat.

Často také zjišťuji, že chci propojit integrovaný modul s počítačem. Pokud modul konkrétně nemá připojení USB, což je často případ, pak obecně musíte koupit předražený převodník USB, který bude dělat jedinou práci, například SPI nebo I2C.

Z těchto důvodů jsem se rozhodl vytvořit desku univerzálního rozhraní. Je navržen tak, aby umožňoval snadnou komunikaci na PC s integrovanými moduly.

Mezi funkce integrovaného rozhraní desky, na které jsem se usadil, patří.

  • Digitální I/O
  • I2C
  • SPI
  • UART
  • PWM
  • Servomotor
  • Vstup ADC
  • Výstup DAC

To vše lze použít zcela samostatně.

Desku rozhraní lze ovládat pomocí připojení USB k počítači, ale má také volitelná připojení modulu WIFI nebo Bluetooth, což umožňuje použití desky na dálku nebo ve scénáři typu IoT.

Použitím standardních SIL konektorů s roztečí 2,54 mm je možné přímo připojit samičí dupontní kabely mezi desku a vestavěný modul, což umožňuje rychlé, spolehlivé a nepájivé připojení.

Také jsem přemýšlel o přidání věcí jako CAN, LIN, H-bridge atd., Ale ty mohou přijít později s revizí v2.

Krok 1: Návrh desky plošných spojů

Navrhování DPS
Navrhování DPS
Navrhování DPS
Navrhování DPS
Navrhování DPS
Navrhování DPS
Navrhování DPS
Navrhování DPS

Při navrhování desek plošných spojů se snažím, aby věci byly co nejjednodušší. Když budete stavět desky ručně, je důležité přidávat komponenty pouze tehdy, když plní konkrétní účel a používají co nejvíce interních funkcí mikrokontroléru.

Když jsem se podíval na svého preferovaného dodavatele elektroniky, našel jsem čip, který mi vyhovoval a který měl funkce, které jsem hledal, a byl za rozumnou cenu. Čip, na který jsem přistál, byl PIC18F24K50.

S dostupnými 23 I/O piny mi to umožnilo tyto funkce

  • Digtal I/O
  • I2C
  • SPI
  • UART
  • PWM x 2
  • Servomotor x 6
  • Vstup ADC x 3
  • Výstup DAC x 1
  • I/O řízené z 5V nebo 3V3
  • Stavová LED

Jednou nevýhodou integrovaného obvodu, který jsem si vybral, je, že má pouze jedno periferní zařízení UART, a proto pomocí metody ovládání Bluetooth nebo Wifi přestanete moci používat připojení UART.

Na výše uvedených obrázcích je zobrazeno hotové schéma a PCB.

Krok 2: Navrhování protokolu

Navrhování protokolu
Navrhování protokolu

Prvním krokem při navrhování protokolu je rozhodnutí, co konkrétně budete desku potřebovat, abyste mohli dělat. Rozbíjení věcí přináší lepší úroveň ovládání, zatímco kombinování věcí dohromady zjednodušuje rozhraní a snižuje komunikaci mezi deskou a počítačem. Je to vyrovnávací hra a těžko se zdokonaluje.

Pro každou funkci desky byste měli uvést všechny parametry a výnosy. Například funkce pro čtení vstupu ADC může mít parametr určující, který vstup se má vzorkovat, a návratovou hodnotu obsahující výsledek.

V mém návrhu je seznam funkcí, které jsem chtěl zahrnout:

  • Digitální I/O

    • SetPin (PinNumber, State)
    • State = GetPin (PinNumber)
  • SPI

    • Inicializace (režim SPI)
    • DataIn = Přenos (DataOut)
    • ControlChipSelect (kanál, stát)
    • SetPrescaler (Rate)
  • I2C

    • Inicializace ()
    • Start ()
    • Restartovat ()
    • Stop ()
    • SlaveAck = Odeslat (DataOut)
    • DataIn = příjem (poslední)
  • UART

    • Inicializace ()
    • TX Byte (DataOut)
    • BytesAvailable = RX Count ()
    • DataIn = RX Byte ()
    • SetBaud (Baud)
  • PWM

    • Povolit (kanál)
    • Zakázat (kanál)
    • SetFrequency (kanál, frekvence)
    • GetMaxDuty (Duty)
    • SetDuty (Duty)
  • Servo

    • Povolit (kanál)
    • Zakázat (kanál)
    • Nastavit polohu (kanál, poloha)
  • ADC

    ADCsample = Ukázka (kanál)

  • DAC

    • Umožnit
    • Zakázat
    • SetOutput (napětí)
  • WIFI

    • SetSSID (SSID)
    • Nastavit heslo (heslo)
    • Status = CheckConnectionStatus ()
    • IP = GetIPAddress ()

Parametry jsou uvedeny v závorkách a návraty jsou uvedeny před symbolem rovná se.

Než začnu kódovat, přiřadím každé funkci kód příkazu začínající na 128 (binární 0b10000000) a pracující směrem nahoru. Protokol plně dokumentuji, abych zajistil, že jakmile bude moje hlava v kódu, budu mít pěkný dokument, na který se budu moci vrátit. Celý dokument protokolu pro tento projekt je přiložen a obsahuje příchozí kódy příkazů a šířky bitů.

Krok 3: Navrhování firmwaru

Navrhování firmwaru
Navrhování firmwaru
Navrhování firmwaru
Navrhování firmwaru
Navrhování firmwaru
Navrhování firmwaru

Jakmile je protokol vytvořen, je to případ implementace funkcí na hardware.

Při vývoji podřízených systémů používám jednoduchý přístup typu stavový stroj, abych se pokusil maximalizovat potenciální propustnost příkazů a dat při zachování jednoduchého pochopení a ladění firmwaru. Pokud potřebujete lepší interakci s jinými připojenými zařízeními, můžete místo toho použít pokročilejší systém, jako je Modbus.

Stavový stroj se skládá ze tří stavů:

1) Čekání na příkazy

2) Parametry příjmu

3) Odpovědět

Tyto tři stavy na sebe vzájemně působí takto:

1) Procházíme příchozí bajty ve vyrovnávací paměti, dokud nemáme bajt, který má nastavený nejvýznamnější bit. Jakmile takový bajt přijmeme, zkontrolujeme jej podle seznamu známých příkazů. Pokud najdeme shodu, přiřadíme počet bajtů parametrů a vrátíme bajty tak, aby odpovídaly protokolu. Pokud neexistují žádné bajty parametrů, můžeme zde provést příkaz a buď přeskočit do stavu 3, nebo restartovat stav 1. Pokud existují bajty parametrů, přesuneme se do stavu 2.

2) Procházíme příchozí bajty a ukládáme je, dokud nemáme uložené všechny parametry. Jakmile máme všechny parametry, provedeme příkaz. Pokud existují návratové bajty, přesuneme se do fáze 3. Pokud nejsou k dispozici žádné bajty k odeslání, vrátíme se do fáze 1.

3) Procházíme příchozí bajty a pro každý bajt přepíšeme bajt echa platným návratovým bytem. Jakmile odešleme všechny bajty návratu, vrátíme se do fáze 1.

K návrhu firmwaru jsem použil Flowcode, protože hezky vizuálně ukazuje, co dělám. Totéž lze stejně dobře provést v Arduinu nebo jiných vestavěných programovacích jazycích.

Prvním krokem je navázání komunikace s PC. Aby to bylo možné, musí být mikro nakonfigurován tak, aby běžel správnou rychlostí, a musíme přidat kód pro pohon periferií USB a UART. V Flowcode je to stejně snadné, jako přetáhnout do projektu USB sériovou komponentu a komponentu UART z nabídky komponenty Komunikace.

Přidáme přerušení RX a vyrovnávací paměť pro zachycení příchozích příkazů na UART a pravidelně dotazujeme USB. Potom můžeme ve svém volném čase nárazník.

Projekt Flowcode a vygenerovaný C kód jsou připojeny.

Krok 4: Rozhraní pomocí Flowcode

Rozhraní pomocí Flowcode
Rozhraní pomocí Flowcode
Rozhraní pomocí Flowcode
Rozhraní pomocí Flowcode
Rozhraní pomocí Flowcode
Rozhraní pomocí Flowcode

Simulace Flowcode je velmi účinná a umožňuje nám vytvořit komponentu, se kterou si můžete promluvit. Při vytváření komponenty nyní můžeme komponentu jednoduše přetáhnout do našeho projektu a okamžitě mít k dispozici funkce desky. Jako další bonus lze při simulaci použít jakoukoli existující komponentu s periferním zařízením SPI, I2C nebo UART a data komunikace lze propojit s deskou rozhraní prostřednictvím komponenty Injector. Přiložené obrázky ukazují jednoduchý program pro tisk zprávy na displej. Komunikační data, která jsou odesílána prostřednictvím desky rozhraní do skutečného hardwaru displeje a nastavení komponent s komponentami I2C Display, I2C Injector a Interface Board.

Nový režim SCADA pro Flowcode 8.1 je absolutní přidaný bonus v tom, že pak můžeme vzít program, který něco dělá v simulátoru Flowcode, a exportovat jej tak, aby běžel samostatně na jakémkoli počítači bez jakýchkoli problémů s licencí. To by mohlo být skvělé pro projekty, jako jsou testovací soupravy nebo klastry senzorů.

Tento režim SCADA používám k vytvoření konfiguračního nástroje WIFI, který lze použít ke konfiguraci SSID a hesla a také ke shromažďování IP adresy modulu. To mi umožňuje nastavit vše pomocí připojení USB a poté přenést na připojení k síti WIFI, jakmile jsou věci spuštěny.

Některé příklady projektů jsou připojeny.

Krok 5: Jiné metody propojení

Stejně jako Flowcode můžete do značné míry používat zvolený programovací jazyk ke komunikaci s deskou rozhraní. Použili jsme Flowcode, protože již obsahoval knihovnu součástí, které jsme mohli okamžitě spustit, ale to platí i pro mnoho dalších jazyků.

Zde je seznam jazyků a metod pro komunikaci s deskou rozhraní.

Python - Použití sériové knihovny pro streamování dat na port COM nebo IP adresu

Matlab - Použití příkazů File pro streamování dat na port COM nebo IP adresu

C ++ / C# / VB - Použití buď předem napsané knihovny DLL, přímý přístup k portu COM nebo Windows TCP / IP API

Labview - Použití buď předem napsané knihovny DLL, komponenty VISA Serial nebo komponenty TCP/IP

Pokud by někdo chtěl vidět implementaci výše uvedených jazyků, dejte mi prosím vědět.

Krok 6: Hotový výrobek

Dokončený produkt
Dokončený produkt
Dokončený produkt
Dokončený produkt
Dokončený produkt
Dokončený produkt

Hotový výrobek bude pravděpodobně výraznou součástí mé vestavěné sady nástrojů pro nadcházející roky. Už mi to pomohlo vyvinout komponenty pro různé displeje a senzory Grove. Nyní mohu kód úplně přibít, než se uchýlím k jakékoli kompilaci nebo programování shenanigans.

Dokonce jsem rozdal několik desek pro kolegy, aby také mohli zlepšit svůj pracovní tok, a ty byly velmi dobře přijaty.

Děkuji, že jste si přečetli můj Instructable Doufám, že vám to přišlo užitečné, a doufám, že vás to bude inspirovat k vytváření vlastních nástrojů pro zrychlení vaší produktivity.

Doporučuje: