K sestavení zařízení bude potřebovat plošný spoj, procesor, wireless modul a pár součástek. Pro vyzkoušení a pokud nebude chtít zařízení provozovat dlouho na baterii, lze použít i běžné Arduino pro mini 8 MHz 3,3V. Seznam součástek:
Součástky
C1,C2,C3 | 100n |
C4 | 10u |
D1 | LED |
IC2 | ATMEGA328P-AU |
OP1 | MCP6042 (MCP6002,MCP6L02) |
R1 | 330R |
R3 | 4k7 |
R2,R4 | 10k |
R5,R6 | 2.2M -+0.5% |
U1 | MCP1700T-3302E/TT |
WIRELESS1 | DRF4432F20 – SI4432 |
Cílem je vytvořit zapojení, které je znázorněno na následujícím schématu, které je dostupné i v PDF warduxere-schema:
Deska plošných spojů
DPS (PCB) je navržena tak, aby se bez problému dala osadit i v domácích podmínkách. Proto jsou použity součástky SMD ve velkých v pouzdrech 1206, které jsou rozmístěny tak, aby se daly lehce pájet. Jedná se o dvoustranný plošný spoj s pokovenými otvory. Na kvalitně vyrobené desce s nepájivou maskou se bez problémů dobře pájí i procesor v pouzdře TQFP. Wireless modul je potřeba pájet jako poslední, jinak na pořadí pájení součástek příliš nezáleží.
Sestavení a oživení
Oživení zařízení se dá rozdělit na tyto kroky:
- Připájení procesoru a dalších součástek kromě wireless modulu
- Vypálení zavaděče
- Vyzkoušení programem na blikání
- Připájení wireless modulu
- Vyzkoušení wireless modulu
Při osazování součástkami začněte připájením procesoru (IC2), který přesně a se správnou orientací usadíte pinzetou a připájíte nejprve dva vývody v protilehlých rozích. Po kontrole přesného usazení připájíte zbylé vývody procesoru. Následuje připájení stabilizátoru U1. Pak už lehce připájíte zbylé součástky na dané straně plošného spoje. Jen nezapomeňte správně orientovat LED.
Na druhé straně začnete připájením operačního zesilovače (OP1). Nezapomeňte na správnou orientaci a postupujte obdobně jako u procesoru. Pak zbylé součástky na této straně desky.
Zavaděč
Nejjednodušší je připájet procesor už s naprogramovaným zavaděčem, ale je možné procesor programovat i po připájení na desku a k tomu jsou i na desce připravené vývody.
K nahrání zavaděče je potřeba hardwarový a softwarový programátor. Například se dá použít paralelní port počítače a pony-stk200 a program Avrdude. Každý asi použije programovací prostředky, na které je zvyklý. Jako programátor je možno použít i přímo Arduino. Do Arduina se nahraje program ArduinoISP a po propojení obou zařízení se vypálení zavaděče spustí přímo z Arduino IDE.
Vývody programátoru je potřeba připojit na plošky vývodu K1. Piny CPU jsou v pořadí zleva: 15 MOSI, 16 MISO, 17 SCK. Tyto piny je potřeba připojit k programátoru v případě Arduino ISP to jsou D11 (MOSI), D12 (MISO), D13 (SCK). Dále je potřeba připojit napájení (dokud není připájen stabilizátor, dá se použít ploška u odporu R4) a GND. Poslední je reset procesoru, ten lze vyvést například z plošky kondenzátoru C3. Jako reset u Arduina ISP slouží pin D10 .
Nyní je možno provést vypálení zavaděče. Jako zavaděč je použit standardní zavaděč pro Arduina. Procesor je nastaven na 8 Mhz s vnitřní oscilací.
Před vypálením zavaděče je potřeba v Arduino IDE vybrat správný typ zařízení, které definuje jeho parametry. Stačí do souboru arduino/hardware/arduino/boards.txt
přidat následující obsah:
atmega328Wb.name=Warduxere by www.xeres.cz atmega328Wb.upload.protocol=stk500 atmega328Wb.upload.maximum_size=30720 atmega328Wb.upload.speed=57600 atmega328Wb.bootloader.low_fuses=0xE2 atmega328Wb.bootloader.high_fuses=0xDA atmega328Wb.bootloader.extended_fuses=0x05 atmega328Wb.bootloader.path=atmega atmega328Wb.bootloader.file=warduxere.hex atmega328Wb.bootloader.unlock_bits=0x3F atmega328Wb.bootloader.lock_bits=0x0F atmega328Wb.build.mcu=atmega328p atmega328Wb.build.f_cpu=8000000L atmega328Wb.build.core=arduino atmega328Wb.build.variant=standard
Tyto hodnoty definují veškerou konfiguraci zařízení jak pro nahrání zavaděče, nastavení procesoru – lock bity, tak pro kompilaci programu a i rychlost nahrávaní programu.
Soubor
warduxere.hex
se zavaděčem včetně programu s blikáním LED je dostupný na GitHubu.
Po připojení USB-UART převodníku na vývody konektoru P1 můžete do procesoru nahrávat programy a vyzkoušet základní funkčnost blikáním LED. Vývody jsou v pořadí: GND,NONE,VCC,TX,RX,DTR. Nezapomeňte, že je třeba RX procesoru připojit na TX převodníku a naopak.
Na závěr připájejte wireless modul. Pro jistotu wireless modul podlepte izolační páskou. Připájejte ho tak, aby dosedal na procesor, tím se značně omezí případné mechanické namáhání spoje. Funkčnost následně ověříte nahráním vzorového programu pro bezdrátovou komunikaci. Pokud by byl modul například špatně připájen, vzorový program pošle po sériové lince informaci o problému s jeho inicializací.
Spotřeba
Orientačně jsem proměřil wireless modul, který při napětí na 3,3 V odebíral při vysílání 9 mA, v idle 1,4 mA , dle dokumentace ve spánku odebírá 1 µA. Procesor Atmega 328P při 5 V ve spánku odebírá 0,16 mA, po vypnutí ADC v jednotkách µA . Po optimalizaci pro minimalizaci odběru a při zapojení pouze procesoru a wireless modulu, jsem naměřil spotřebu 3,4 mA v idle a při uspání procesoru a wireless modulu 5µA.
Orientačně při zanedbání dalších vlivů by Warduxere mohlo vydržet pracovat i několik roků při napájení z jednoho článku Li-Pol/Ion baterie, jaké jsou například v telefonech. (V běžném použití se spíše použije knoflíková baterie.) V reálném použití však nejvíce záleží na konkrétní aplikaci a od toho se odvíjí i reálná výdrž běhu na baterii. Další věcí jsou pak připojené periferie, které je potřeba uspávat nebo musí být úsporné.
U kompletně osazeného Warduina jsem při uspání naměřil spotřebu necelých 10 µA.
Technické parametry
Vlastnosti zkompletovaného zařízení:
- napájení: DC 3,4–6V
- frekvence bezdrátové komunikace: 433MHz
- dosah: až 900m
- Spotřeba: run mód 5 mA; vysílání 10 mA; sleep 10µA
- rozměry 25×25mm
- komunikační rozhraní: sériová linka, 3,3V
- vývoj je možný na libovolném OS i non-x86 PC
První realizace zařízení
Zhodnocení zařízení
Všech vytyčených bodů, včetně malých rozměrů a dlouhé doby provozu při napájení z baterie, jsem dosáhl. Díky tomu, že jsem vycházel z open-source řešení, byl vývoj ještě hladší a rychlejší než moje optimistické představy. I přes dosažení vytyčeného cíle jsou další možnosti, jak zařízení vylepšit. Dalo by se různě optimalizovat. Například zařízení ještě zmenšit a ideálně vyrobit v jednom kuse, kde by na jednom PCB byl procesor s wireless čipem. A samozřejmě vyvést piny procesoru na lištu.
Toto zapojení již více než rok bez problému slouží.
Další aktuální informace budou na webu autora na stránce o Warduxere. Podklady jsou k dispozici na GitHubu Wireless Arduino
Závěr
Nyní už máte zařízení hotové a můžete začít tvořit jednoduché ale i rozsáhlé bezdrátové senzorové sítě. Základní použití zařízení si popíšeme příště.