Obsah:
- Krok 1: Návrh desky plošných spojů
- Krok 2: Navrhování protokolu
- Krok 3: Navrhování firmwaru
- Krok 4: Rozhraní pomocí Flowcode
- Krok 5: Jiné metody propojení
- Krok 6: Hotový výrobek
Video: Integrovaná deska univerzálního rozhraní - ovládání USB/Bluetooth/WIFI: 6 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
Č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ů
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
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
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
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
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:
Deska MXY - nízkorozpočtová deska robota pro kreslení plotru XY: 8 kroků (s obrázky)
Deska MXY - nízkorozpočtová deska robota pro kreslení plotrů XY: Mým cílem bylo navrhnout desku mXY tak, aby byl nízkorozpočtový kreslící stroj plotru XY. Navrhl jsem tedy desku, která to usnadní těm, kteří chtějí tento projekt udělat. V předchozím projektu při použití 2 ks krokových motorů Nema17 tato deska
Chytrá basketbalová arkádová hra s obroučkami pro počítání skóre pomocí platformy Evive- integrovaná platforma Arduino: 13 kroků
Inteligentní basketbalová arkádová hra s obroučkami pro počítání skóre využívající integrovanou platformu Evive- Arduino: Ze všech her jsou nejzábavnější arkádové hry. A tak jsme si řekli, proč si jeden nevyrobit sami doma! A jsme tady, nejzábavnější kutilská hra, kterou jste dosud hráli - DIY Arcade Basketball Game! Nejen, že je
Vytvoření univerzálního dálkového ovladače s NodeMCU: 7 kroků
Vytvoření univerzálního dálkového ovladače s NodeMCU: V tomto projektu postavíme univerzální dálkové ovládání schopné klonování a odesílání infračervených signálů. K řízení celého tohoto procesu bude použito webové rozhraní. NodeMCU ve spojení s infračerveným fotoreceptorem bude zodpovědný za klonování
Model univerzálního vypínače: 10 kroků
Model univerzálního vypínače: Nebaví vás kontrolovat, zda jsou všechna světla ve vašem domě zhasnutá, než jdete spát? Přejete si, abyste mohli bez jakýchkoli potíží vypnout každé světlo najednou? Abychom ušetřili energii a čas, rozhodli jsme se vytvořit systém, který by teoreticky mohl
Hackování vašeho univerzálního napájecího adaptéru IGo: 4 kroky
Hackování vašeho univerzálního napájecího adaptéru IGo: iGo je univerzální napájecí adaptér pro napájení věcí, jako jsou notebooky, displeje a mobilní zařízení. Nabízejí širokou škálu zaměnitelných tipů pro připojení konkrétního zařízení. Na místním trhu jsem & našel LCD monitor Apple Studio Display