V minulém článku jsem psal, z jakého důvodu si stavím vlastní chytré hodinky a co to obnáší. Nyní vytvoříme prototyp na nepájivém kontaktním poli a propojíme ho s mobilním telefonem. Cílem článku bude ukázat si základní funkcionalitu, kterou budeme moct v budoucnu rozšiřovat.
Potřebné součástky:
- Blend Micro (http://redbearlab.com/blendmicro)
- 0.96 OLED SPI displej
- vibrační motůrek
- nepájivé kontaktní pole
- spojovací dráty
- microUSB <-> USB kabel
- baterii 3.3V
Zprovoznění Blend Micro
Můžeme použít návod na oficiálních stránkách redbearlab.com. Rychlý postup uvedu zde.
- Stáhnout potřebné knihovny
- Z knihovny RedBearLab Blend Add-On přesunout adresář hardware do Arduino sketchbook adresáře (standardně v /home/user/sketchbook, ale lze změnit v nastavení Arduino IDE).
- Nahradit main.cpp v Arduino IDE tím z RedBearLab Blend Add-On. Pokud máte Arduino IDE instalované v systému, bude se soubor main.cpp nacházet v /usr/share/arduino/hardware/arduino/cores/arduino/main.cpp. Jinak se nachází v adresáři, kde máte Arduino IDE nainstalované.
- Přesunout adresáře BLE a RBL_nRF8001 z SDK a nRF8001 knihovny do adresáře libraries v Arduino sketchbook.
- Spustit Arduino IDE a zvolit správnou desku: Tools -> Board -> Blend Micro 3.3V/8MHZ
- Uploadovat testovací projekt, raději nějaký jedoducý. Můžeme vybrat File -> Examples -> 01.Basics -> Blink.
- Uploadovat projekt využívající BLE, File -> Examples -> RBL_nRF8001 -> SimpleChat.
Na Ubuntu se mi stalo, že při uploadování deska reagovala (ledky blikaly), ale nepodařilo se do ní software úspěšně nahrát. Arduino IDE hlásilo:
processing.app.debug.RunnerException: Couldn’t find a Leonardo on the selected port. Check that you have the correct port selected. If it is correct, try pressing the board's reset button after initiating the upload.
Může za to program modemmanager, který se snaží do desky posílat nějaká data a tím celý proces zkazí. Pomůže jeho odinstalace.
Zapojení
K Blend Micro připájíme hřebínky. Nemusíme obsadit všechny piny, nyní stačí jen 9, 10, 11, 12, 3.3V, VIN, GND, GND. K displeji připájíme hřebínek na všechny piny. Protože používáme SPI displej, budeme potřebovat VCC, GND, D0 (clock), D1 (MOSI), DC, CS.
Působí tak, že inhibuje syntézu proteinů patogenů. Je účinný proti Mají léky vedlejší účinky a kontraindikace? aerobním gramnegativním a grampozitivním bakteriím. Kontraindikován v těhotenství a během kojení. Nepředepisuje se dětem mladším 8 let.
Nyní na nepájivé kontaktní pole umístíme Blend Micro i displej. Spojíme je tak, jako na obrázku:
D0 <-> 10 D1 <-> 9 DC <-> 11 CS <-> 12
Pokud chceme, aby byl displej vypnutý a zapnul se pouze při příchozí notifikaci, připojíme jeho GND na pin 5. Ve zdrojovém kódu hodinek se tento pin zapíná na 5 vteřin po příchozí notifikaci.
Na pin 8 a ke GND Arduina zapojíme vibrační motůrek, který zavibruje při každé notifikaci, nebo pokud se k hodinkám připojí nebo odpojí mobil.
Zdrojový kód
Zdrojový kód pro hodinky i pro androidí aplikaci je na GitHubu. Nejedná se o nic světoborného. Aplikace se na pozadí připojí ke konkrétnímu zařízení (podle MAC adresy uvedené ve zdrojovém kódu). Umí odeslat testovací příkaz zobrazení notifikace pro volání a pro SMS zprávu. Zároveň přijímá zprávy od hodinek (nyní lze poslat přes sériový port). Arduino čeká na příchozí zprávu a tu vypisuje na displej po dobu 5 vteřin.
V hodinkách používám knihovny Adafruit_SSD1306 a Adafruit-GFX-Library na ovládání displeje. Android vychází z projektu Chat od RedBearLab (vývojáři Blend Micro).
Chyby a vylepšení
Jedná se o první verzi hodinek, která obsahuje spoustu nedokonalostí. Ty budu postupně odstraňovat. Zde je seznam věcí, které je třeba vylepšit:
- Zapnutí displeje na 5 vteřin. Při příchozím hovoru by mohl být zapnutý po dobu vyzvánění.
- Zobrazení telefonního čísla. Aplikace by mohla použít svůj vnitřní adresář kontaktů a místo čísla posílat jméno volajícího.
- Automatické připojování. Nyní je třeba se v aplikaci připojit k hodinkám. Tento proces by měl být automatický (respektive pokud není připojena, měla by se snažit připojit).
- Pokud se text notifikace nevejde na obrazovku, uživatel si ji nebude moct přečíst celou.
- Speciální znaky. Používá se ~ pro vyvolání notifikace a & pro nastavení času. Pokud tyto znaky bude obsahovat notifikace, dojde zřejmě k chybě.
V příštím dílu bych se rád zaměřil na testování výdrže, opravu chyb v software a přidání nějakého zajímavého senzoru (možná měřák srdečního tepu nebo barometr).
Diky za inspiraci, doporučil bych jedině nastuduj si jarduino je to dobré prodloužení výdrže a „zvyseni výkonu hodinek“