Modelársky RC vysielač 2,4GHz, 52 ovládacích prvkov pre ovládanie komplikovaných modelov automobilov a pracovných strojov.
K postaveniu multikanálového vysielača som sa chystal už dlhšiu dobu cca 2 roky. Prvým impulzom bolo uvedenie článku „Arduino v modeloch“. A príležitosť sa naskytla, keď syn potreboval nejaký hardvér na programovanie semestrálneho projektu, tak som sa rozhodol, že je čas to skúsiť.
To čo ma viedlo k stavbe vlastného vysielača a prijímačov bolo niekoľko dôvodov, ktoré ma dlhodobo trápili. Nedostatok kanálov na funkcie modelu, ktorý momentálne staviam, nutnosť robiť kompromisy v počte pripojených zariadení a spájať jednotlivé funkcie. Nutnosť použitia dodatočného hardvéru v prípade, že je treba pripojiť neproporcionálny výstup (napr. spínač). Software vysielača, ktorý má buď veľmi obmedzené možnosti alebo je nastavenie viazané k nejakému druhu modelu (lietadlu) a nastavenia sú veľmi špecifické.
Pri navrhovaní som vychádzal z maximalizácie počtu ovládacích prvkov pri zachovaní rozumnej veľkosti. Rozmer pultu som zobral približne z veľkých pultových vysielačov, ktoré sa štandardne predávajú (270x215x40).
Po niekoľkých návrhoch a konsolidácii počtu ovládacích prvkov vzhľadom k možnostiam dosky |Arduina sa návrh ustálil na 52 ovládacích prvkoch (2 krížové pákové ovládače, 10 potenciometrov, 32 + 2 spínačov, 2 rotačné enkódery s tlačidlami). Tlačidlá sú organizované v matici 8x8 (4 spínače x 2 stavy)
Pre potreby trimovania bola vybraná tlačidlový variant ale boli pridané okrem tlačidiel + a – aj tlačidlá pre okrajové polohy a stred vzhľadom k tomu, že niektoré moduly využívajú na ovládanie aj trim a preklikávanie medzi krajnými polohami je veľmi neefektívne. Tlačidlá sú organizované do matice 5x4.
Pre ovládanie menu bol zvolený variant 3 tlačidlá menu, enter/ok, back plus 4 šípky na ovládanie pohybu kurzora na výber z menu alebo nastavovanie hodnôt a 5 tlačidiel na rýchly výber zobrazenia displeja. Snímanie je organizované do matice 3x4.
Obrázok rozmiestnenia ovládacích prvkov na panely vysielača som si požičal zo synovej práce.
Ako hovorím pri výrobe akéhokoľvek elektronického zariadenia treba vyriešiť len dve veci, ostatné je hračka pre programátora. Mechanické usporiadanie a energia.
Krabicu na vysielač som pôvodne chcel zlepiť z plastu. Potom sa mi to ale vymklo z pod kontroly. Nevedel som nájsť plastovú dosku ale našiel som preglejku. Tak zlepím hranatú krabicu z preglejky. Odrezal som preglejku na pôvodný plánovaný rozmer 280x230 ale zdalo sa mi to veľké, tak som ju skrátil z každej strany o 3 cm. Potom sa mi pod ruku dostali zvyšné zaoblene rohové profily a nakoniec ma ešte postihla lenivosť a nechcelo sa mi rezať bočné stany z preglejky, tak som použil dubové lišty, čo som mal doma. Celé som to chcel namoriť orechovým moridlom, tak som to našťastie skúsil len na jednej strane preglejky a nebolo to pekné. Tak som sa rozhodol, že to z vrchu obložím orechovými lištami, čo som urobil, ale zistil som, že hrúbka dosky vzrástla tak, že potenciometre sa nedajú zaskrutkovať a tlačidlá sú zarovno s doskou. Tak som musel zo zadnej strany odfrézovať zahĺbenie aspoň pre tlačidlá. Potenciometre som zalepil sekundovým lepidlom. Krabica je nalakovaná bezfarebným lesklým lakom. Otvory pre reproduktor lemované znakom pripomínajúcim znak Arduina vyrobený z dvoch veľkých mosadzných podložiek. Na vrchu diera pre anténu lemovaná mosadznou podložkou. Napájací konektor 5,5/2,1mm. A konektor USB B vložený v mini rámiku. Vnútri je prepážka pre batériu vystlaná tenkou machovou gumou. Každá diera v tejto krabici má svoj príbeh, ale nebudem to tu rozmazávať. Takže vznikol celkom úctyhodný kus nábytku. Ale aspoň to vyzerá celkom obstojne.
Hardvér
Vysielačka sa skladá z troch celkov. Prvým je ovládací panel, ktorý zabezpečuje komunikáciu vysielačky s používateľom. Druhým je vnútorná časť, ktorá zabezpečuje riadenie, vysielania a zálohovanie dát. Tretím je napájacia časť.
Ovládací panel sa skladá z prednej dosky vysielača, v ktorej sú namontované nasledovné prvky:
• 10 ks otočné potenciometre – slúžia ako proporcionálne ovládacie prvky a pracujú na princípe deliča napätia. Majú hodnotu 100KOhm.
• 32 ks trojpolohové spínače v rôznych variantoch (s aretáciou, bez aretácie,..) slúžia na skokovú zmenu stavu a ovládanie neproporcionálnych funkcii napr. osvetlenia. Sú zapojene do matice 8x8.
• 2ks digitálnych otočných enkóderov na prepínanie viacpolohových neroporcionálnych funkcii
• LCD displej – znakový LCD displej 20x4 znakov k zobrazovaniu používateľských funkcii. Pripojený je pomocou rozhrania I2C.
• 2 ks krížových pákových ovládačov k proporcionálnemu riadeniu. Hodnota odporového deliča je 5KOhm. Použité sú pákové ovládače Graupner s prepínačmi na páčkach.
• 5 x 4 sady tlačidiel na ovládanie trimov pákových ovládačov. Pre každý smer ovládania je 5 tlačidiel s funkciami max, +, stred, - a min. Sú zapojené do matice 5x4.
• 12 tlačidiel slúžiacich na ovládanie menu a používateľských funkcii na displej. Sú rozdelené do troch skupín: riadiace (Enter, Back a Menu), používateľské (5ks) a ovládanie smeru (šípky). Zapojené sú ako matica 4x3
Základom vnútornej časti je modul Arduino Mega 2560 PRO. Tento modul má 8kB RAM a 250kB pamäte programu. K nemu sú pripojené ostatné moduly:
Modul vysielača NRF24L01 PA/LNA 2.4GHz tienený pripojený k Arduinu cez rozhranie SPI. Slúži na vysielanie v režime half duplex, takže je s ním možné riešiť aj telemetriu. Použitá je tienená verzia objednaná cez eBay, ale základný vývoj a testovanie prebehlo s netienenými verziami a nebol s nimi žiadny problém.
Modul flash pamäte 8MB pripojený cez rozhranie SPI. Slúži na uchovanie informácii o modeloch. Má taký svojský spôsob zápisu a zmazávania, ale pre potreby záznamu konfigurácie je to v pohode.
Multifunkčný modul hodín DS3231 a externej pamäte AT24C32 pripojený cez zbernicu I2C. Slúži na počítanie času, hodinový obvod je zálohovaný batériou a má celkom vysokú presnosť. Vnútorný krištáľ má korekciu podľa teploty. Teplota čipu sa dá prečítať. Pamäť (2kB) je použitá na zápis konfigurácie systému a konfigurácie vysielača.
Modul MP3 prehrávača WTV020 pripojený cez sériovú linku slúži na prehrávanie zvukov a hlasových sprav. Má v sebe zasunutú flash kartu na ktorej sú prehrávané súbory a výstupom je reproduktor 1W 8Ohm.
Pripojenie potenciometrov a krížových pákových ovládačov je realizované cez analógové vstupy priamo na Arduino, Arduino ma 16 analógových vstupov. Vstup 0 je pripojený na delič napätia ktorým sa meria vstupné napätie. Na vstup 1 je pripojený prevodník prúd/napätie, ktorý meria prúd z/do batérie. Na ostatné vstupy sú pripojené odporové deliči pákových ovládačov (4 vstupy) a potenciometre (10 vstupov).
Vzhľadom k veľkému počtu vstupov z tlačidiel a prepínačov sú tlačidlá organizované do matíc a multiplexované tak aby sa minimalizoval počet použitých pinov. Na 8 výstupných pinov sú pripojene všetky klavesnice paralelne (8 prepínače a (5 trim + 3 riadenie ) a 2 extra) . Vstupy sú načítavané zvlášť 8 prepínače, 4 trimy, 4 riadenie a 2 extra. Celkový počet použitých pinov je 26 (8 + 1
oproti potrebným 96 snímaným bodom (tlačidlo 1 bod, prepínač 2 body).
Dva rotačné enkódery s tlačidlom sú pripojené každý zvlášť, 2 piny otáčanie a jeden pin tlačidlo. Napájané sú 5V.
8 spínačov pripojených cez tranzistorové pole ULN2804. Momentálne sú cez tieto spínače pripojene dve signalizačné diódy a jeden piezo reproduktor, ktorý slúži na pípnutie pri stlačení klávesy a hlásenie niektorých chybových stavov.
Napájacia časť
Obsahuje napájaciu zbernicu. Do zbernice je pripojená batéria LiPo 2S 7,4V cez ochranu BMS HX-20-JH20, ktorá zabezpečuje ochranu pred vybitím a prebitím a zabezpečuje aj samotné nabíjanie ak je na vstupe vyššie napätie ako má batéria. Pred doskou ochrany batérie je zapojený prevodník prúd/napätie +/- 5A. Výstup z neho je pripojený na analógový vstup 1.
Vzhľadom k malému prúdu, ktorý je odoberaný z batérie (cca 350-400mA) je batéria pripojená cez servisný konektor, čím je zabezpečená kompatibilita zo všetkými druhmi batérii 2S. Ja používam zatiaľ vysielacou batériu 2600mAh 2S a trakčnú batériu 9000mAh.
Do napájacej zbernice je pripojený aj adaptér 9V/1500mA cez externý konektor jack 5,5/2,1mm.
Z napájacej zbernice je napätie privedené na hlavný vypínač, ktorý obsahuje aj žiarovku, ktorá svieti keď je vypínač zapnutý.
Napätie z vypínača je privedené do centrálneho rozvodného bodu, odkiaľ sa rozvádza do zariadení a stabilizátorov. V tomto bode je elektrolytický kondenzátor, ktorý sa stará o prúdové špičky.
Napätie z centrálneho bodu je upravované na 5V (LCD displej) a 3,3V (ostatne periférie) cez stabilizátory s pevným výstupným napätím. Doska Arduina je napájaná priamo a využíva vlastné stabilizátory na doske.
Softvér
Pôvodne bol uvažovaný grafický displej ale nakoniec bol zvolený znakový 20x4 vzhľadom k nižším nárokom na pamäť RAM pri práci s nim. V praxi sa nakoniec ukázalo, že bohate postačuje k požadovanému účelu. Vzhľadom k jeho veľkosti sú jednotlivé obrazovky koncipované tak, že každá stránka má nadpis, v pravom hornom rohu je uvedený počet položiek a číslo na ktorej je práve kurzor, ak je to výberová stránka. Ak je položiek viac, tieto sa rolujú pohybom kurzora, nadpis ostáva na mieste.
Hlavne menu ma 4 časti:
1. Systémové nastavenia, kde sa nastavuje hlasitosť reproduktoru, dĺžka pípania, čas šetriča displeja atď.
2. Nastavenia vysielača, kde sa nastavujú všeobecné parametre vysielača ako sila vysielania, rýchlosť prenosu, použitie zosilňovača, time out a počet opakovaní atď.
3. Vyber modelu. V tejto položke je možné vybrať model z pamäte alebo vytvoriť nový model.
4. Nastavenie modelu ma tri časti:
◦ Nastavenie názvu modelu
◦ Spárovanie vysielača s prijímačom. Každý model bude mat vygenerované unikátne ID plus ďalšie údaje spojenia sa prenesú v procese párovania do prijímača. Tým pádom je možné ovládať jedným vysielačom viac modelov bez toho aby sa model musel vypínať čo sa hodí najmä na modelárskych dňoch pri predvádzačkách kde je občas veľa modelov a málo rúk.
◦ Nastavenie jednotlivých ovládacích prvkov k príslušným kanálom, mixovanie kanálov, zapínanie a vypínanie kanálov iným ovládacím prvkom, uzamykanie kanálov, atď. Toto je časť, ktorá mi u niektorých vysielačov chýbala alebo bola rozbitá do viacerých menu alebo vztiahnutá iba k niektorým ovládacím prvkom. Mnohé položky sú ešte vo vývoji a preto tuto časť doplním až bude hotovo.
Prijímače
V rámci testov boli postavene 4 prijímače rôznych veľkostí a konfigurácie, ktoré si popíšeme a porovnáme ich vlastnosti.
7-kanál (7x servo) – prijímač riadený doskou Arduino Nano s externým prijímacím modulom bol postavený za účelom otestovania základných vlastnosti prijímacieho modulu a možnosti Arduina riadiť serva. Vysielači modul možno vymieňať (s internou/externou anténou). Funguje spoľahlivo ale počet kanálov je nízky vzhľadom k rozmerom.
15-kanál (8xservo, 7x spínač) – prijímač riadený doskou Arduino Nano RF, ktorá na sebe integruje aj vysielací modul. Rozmer 50x42 (dal by sa stlačiť aj na 50x35). Servá sú riadené priamo z Arduina, spínače sú pripojené cez pole tranzistorov ULN 2804. Konštrukcia je jednoduchá, v podstate treba poprepájať napájanie a zem a ostatné potrebné je prepojiť susediace piny pre servá a spínače.
Toto je zaujímavá možnosť pre štandardné modeli aut kde odpadá použitie externých modulov pre spínanie svetiel a pod a je dostatok kanálov na riadenie prevodovky, uzávierok diferenciálov, zvukových modulov atď.
Tento druh prijímača je vhodný k menšiemu volantovému vysielaču, ktorý sa ešte chystám vyrobiť. Fungoval spoľahlivo a presne.
32-kanál (16xservo, 16x spínač) – prijímač riadený Arduinom Nano s exsterným vysielacím modulom.
Servá sú riadené modulom s čipom PCA9685, čo je 16-kanálový 12-bit PWM pripojený cez I2C. Tento čip je pôvodne určený pre riadenie veľkých sieti LED, umožňuje vytváranie impulzov rôznych šírok. Napájanie serv je realizované samostatným vstupom do max 6V.
Spínače sú riadené cez modul s cípom PCF8575, čo je 16 bit I2C expander na ktorého výstupy sú pripojene 2ks ULN 2804. Čo sa týka prácnosti zo všetkých prijímačov bola niekde v strede. Ale ako sa ukázalo presnosť riadenia serv je úplne mimo. Regulátor motoru sa nevedel naštartovať lebo pre stred (1500uS) generoval signál, ktorý bol dosť mimo. A čo je horšie pre viac serv boli pre rovnakú hodnotu generované rôzne hodnoty výstupu. Je možné, že toto by sa dalo zlepšiť nastavením a prepočítaním frekvencie čipu a hodnôt, ktoré sa zadávajú do čipu. Ale ak to je pre rovnaký čip rôzne a frekvencia generátoru driftuje, tak to nie je veľmi použiteľné pre riadenie modelov.
56-kanál (24xservo, 32xspínač) – prijímač riadený doskou Arduino Mega 2560 Pro. Výstupy na serva sú riadene priamo z dosky Arduina, spínače su spínané tiež priamo z dosky cez 4ks tranzistorové polia ULN 2804. Používa externý vysielací modul s pripojením na anténu cez konektor SMA. 12 serv na každej strane ma vlastný konektor napájania, takže je možné kombinovať napájacie napätia pre 5V servá a HiVolt servá 7.4V. Napr. jednu stranu napájať z BECu regulátora a druhú priamo z baterky.
Čo sa týka prácnosti bol to taký pájkovací maratón cca 280 pájkovacích bodov a cca 40 prepojovacích káblikov.
Čo sa týka funkcie tento prijímač pracoval tiež presne a spoľahlivo. Ďalším benefitom je, že Arduino ma ešte dosť pamäti na naprogramovanie ďalších neštandardných funkcii.
Prijímač tejto veľkosti použijem do auta čo momentálne staviam, pretože už teraz mám cca 15 serv a regulátorov a min 8 až 10 spínačov bude zapojených, čo je spolu 25 kanálov a to už je polovica počtu.
Čo dodať na záver. Vysielačka aj prijímače fungujú zatiaľ spoľahlivo a celkovo splnili moje očakávania. Budem to ďalej používať a testovať, ešte ma čaká test dosahu, ale pre použitie v automobiloch je dosah určíte dostatočný. Zaujímavý bude skôr test telemetrie, aký dosah bude mať vysielací modul v modely s krátkou anténou. Ďalej budem ešte dorábať niektoré funkcionality ako automatické párovanie, telemetriu, možno channel-hopping,
Na Arduino chcem prerobiť aj moju starú 35MHz Futabu a nejaký volantový vysielač. Tie budú mat samozrejme menej ovládacích prvkov, ale principiálne by som chcel aby mali rovnaký software.