Vlastní chytré hodinky II

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.

  1. Stáhnout potřebné knihovny
    1. Nordic Bluetooth low energy SDK for Arduino
    2. RedBearLab nRF8001 Library
    3. RedBearLab Blend Add-On
  2. 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).
  3. 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é.
  4. Přesunout adresáře BLE a RBL_nRF8001 z SDK a nRF8001 knihovny do adresáře libraries v Arduino sketchbook.
  5. Spustit Arduino IDE a zvolit správnou desku: Tools -> Board -> Blend Micro 3.3V/8MHZ
  6. Uploadovat testovací projekt, raději nějaký jedoducý. Můžeme vybrat File -> Examples -> 01.Basics -> Blink.
  7. 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.

Nyní na nepájivé kontaktní pole umístíme Blend Micro i displej. Spojíme je tak, jako na obrázku:blend-micro_display

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.

blend-micro_first

První verze s vypínatelným displejem a vibračním motůrkem. Pin 8 vede pod Arduinem až tam, kde je zapojený GND vibračního motůrku.

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).

1 komentář u „Vlastní chytré hodinky II

  1. Diky za inspiraci, doporučil bych jedině nastuduj si jarduino je to dobré prodloužení výdrže a „zvyseni výkonu hodinek“

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *