Pojďme programovat elektroniku | Hodinky

Programujeme chytré hodinky v Arduinu. Oživíme displej, akcelerometr a časový čip

  • Jak složitý je návrh vlastního OS pro chytré hodinky?
  • Dnes si to vyzkoušíme v praxi
  • T-Watch 2020 naprogramujeme v běžném Arduinu

Na chytrých hodinkách si už mnozí výrobci vylámali zuby, u drtivé většiny modelů totiž musíte vzhledem k současnému stavu technologie zkousnout nějaký ten kompromis.

Mohou mít skvělý OLED hýřící živými barvami, špičkový výkon a dokonalé funkce pokročilého operačního systému, nicméně to vše za cenu relativně nízké výdrže baterie v řádu dnů.

Anebo to bude naopak skutečný outdoorový mistr, který s vámi na jedno nabití podnikne expedici na Mendelovu polární stanici, ovšem za cenu vizuálně horšího paměťového LCD a jednoduššího UX jako třeba v případě hodinek řady Garmin Fenix.

Nelze rozsoudit, který přístup je lepší, a co je zdaleka nejhorší, co Čech, to často univerzální expert prakticky na cokoliv, takže by se asi fanoušci obou táborů naživo utloukli silikonovými řemínky. Naštěstí existuje jedno elegantní řešení.

Skutečný srdcař si s trochou nadsázky nepořídí hotové hodinky od Applu, Samsungu nebo třeba Garminu, ale hrubý polotovar, který si poté sám naprogramuje!

Programovatelné hodinky a náramek

Počkat, počkat, to je opravdu možné? Ano, jistě, pokud se tedy smíříte s tím, že tím, polotovarem nebude špičkový hardware od některého z výše jmenovaných producentů, ale laciný čínský krám zhruba za tisícovku a s nepříjemně hladovým TFT/IPS LCD displejem.

Zdrojové kódy dnešního článku najdete na GitHubu

Přesně to před lety udělalo známé asijské studio LilyGO a dalo kutilům řady T-Watch a T-Wristband. Jak už názvy napovídají, jedná se o několik modelů chytrých hodinek a náramků, které v sobě mají vše potřebné k běhu včetně lithiové baterie. Kouzlo ale spočívá v tom, že když takové hodinky skrze USB připojíte k počítači, můžete si pro ně naprogramovat vlastní firmware v prostředí Arduino.

Chovají se úplně stejně jako každá jiná prototypovací destička, takže když do Arduino IDE doinstalujete podporu pro mikrokontrolery ESP32, v seznamu cílových desek najdete i položku TTGO T-Watch. Stačí jen hodinky připojit k PC, zvolit adekvátní sériový port a klidně napsat ten nejjednodušší program, který bude do počítače skrze USB vypisovat třeba jen zprávičku: „Ahoj, to jsme my, tvoje chytré hodinky!“

T-Watch 2020

Hodinky T-Watch dnes existují v hromadě verzí, přičemž ta nejnovější a z hlediska konstrukce i nejpraktičtější je T-Watch 2020barevným 1,54“ LCD displejem s rozlišením 240×240 pixelů a samozřejmě i dotykovou vrstvou.

Klepněte pro větší obrázek
Hodinky T-Watch 2020 naprogramujete v prostředí Arduino

Ano, samozřejmě že by byl mnohem lepší e-ink nebo paměťový LCD od Sharpu, se kterými by T-Watch strčily velkou konkurenci hravě do kapsy, ale jako prototyp pro hrátky, jak se vlastně vyvíjejí chytré hodinky, to je docela zábavná platforma.

T-Watch 2020 pohání je k dispozici ve třech revizích V1, V2 a V3. Základní výbava je stejná, modifikace se ale navzájem liší třeba v tom, že V2 disponuje GNSS přijímačem Quectel L76K a V3 zase digitálním MEMS mikrofonem Knowles SPM1423HM4H-B.

Tím pádem se liší i cena v oficiálním obchodu LilyGO na AliExpressu. Zatímco V1 seženete zhruba za 900 korun, V2 je k mání za 1 100 korun a V3 dle aktuálního kurzu za 1 000 kaček. K ceně je třeba připočíst ještě poštovné okolo 150 korun. Ceny jsou zaokrouhlené, týden od týdne se totiž mění.

Verze V1

Ke mně nakonec doputovala nejlevnější a základní verze T-Watch 2020 V1, kterou jsem odkoupil od jednoho z brněnských makerů. Není to ale žádné ořezávátko a rozdíly jsou v praxi opravdu kosmetické. Chybí jen GNSS čip pro satelitní lokalizaci a mikrofon.

Klepněte pro větší obrázek
O práci se stará Wi-Fi čip ESP32 a nechybí základní výbavička čidel

Vedle již zmíněného dvoujádrového řídícího čipu ESP32, který lze snadno programovat v prostředí Arduino, a dotykového displeje nechybí:

  • 16 MB flashové paměti
  • 8 MB externí RAM
  • 380mAh lithiová baterie LQ-S1

​A​ konečně hromada pomocných čidel a integrovaných obvodů:

  • Nabíjecí čip AXP202
  • Vibrační motorek
  • Obvod zvukového dekodéru PCM a zesilovače MAX98357A
  • Čip reálného času NXP PCF8563
  • Trojosý akcelerometr Bosch BMA423 s vestavěným krokoměrem

Hodinky mají také jedno programovatelné tlačítko, které při delším stisku funguje jako hlavní vypínač.

TTGO TWatch Library

Uf, to je celý zástup čipů, nový majitel hodinek tedy stráví přinejmenším týden na GitHubu hledáním všech možných knihoven pro jejich jednoduché zprovoznění v Arduinu. Ano, to je jistě možné, výrobce na to ale myslel a vytvořil jednu obří knihovnu, která oživí všechny vypsané periferie připojené k hlavnímu řídícímu čipu.

Jmenuje se TTGO TWatch Library, najdete ji na GitHubu a po stažení jako balíček ZIP ji snadno nahrajete do vývojového prostředí Arduina skrze hlavní nabídku a volbu Projekt – Přidat knihovnu – Přidat .ZIP knihovnu.

Součástí knihovny je několik desítek příkladů práce s hodinkami, které zároveň najdete na GitHubu ve složce examples. Mnohé z nich se týkají jen specifických verzí, s modelem T-Watch 2020 ale rozjedete drtivou většinu ukázek v podadresáři BasicUnit. Pojďme si to vyzkoušet na několika primitivních příkladech.

Příklad #1: Displej se zdravící

Tváří každých hodinek je samozřejmě displej, a tak na něj zkusme něco nakreslit. TTGO TWatch Library k tomu používá další vnořenou knihovnu TFT_eSPI. Tu už tedy nemusíte instalovat, na odkazu výše ale najdete zdrojové kódy a dokumentaci.

Nejprve pomocí knihovny nastavíte oranžové pozadí displeje, pak zhruba doprostřed nakreslíme zelený obdélník s černým okrajem a dovnitř pak na dva řádky červeně a modře zdravici „MOJE HODINKY.“

#define LILYGO_WATCH_2020_V1
#include <LilyGoWatch.h>

TTGOClass *hodinky;

void setup() {
  Serial.begin(115200);
  Serial.println("Startuji hodinky...");
  hodinky = TTGOClass::getWatch();
  hodinky->begin();
  hodinky->openBL();
  delay(100);
  hodinky->bl->adjust(255);

  hodinky->tft->fillScreen(TFT_ORANGE);
  hodinky->tft->drawRect(19, 59, 202, 102 , TFT_BLACK);
  hodinky->tft->fillRect(20, 60, 200, 100 , TFT_GREEN);
  hodinky->tft->setTextFont(4);
  hodinky->tft->setTextColor(TFT_RED);
  hodinky->tft->drawString("MOJE", 85, 80);
  hodinky->tft->setTextColor(TFT_BLUE);
  hodinky->tft->drawString("HODINKY", 65, 120);
}

void loop() {
  ;
}

Všimněte si, že kód obsahuje odkaz jen na jeden hlavičkový soubor centrální knihovny a nad ním je makro, pomocí kterého dáváme knihovně vědět, s jakou verzí hodinek vlastně pracujeme. Poté vytvoříme proměnnou odkazu na třídu TTGOClass a pomocí ní pak v hlavní funkci setup, která se zpracuje po spuštění čipu ESP32, konečně vše provedeme.

Klíčová je statická metoda getWatch, kterou získáme ukazatel na novou instanci třídy TTGOClass. Poté pomocí metody begin nastartujeme periferie. Metoda openBL aktivuje podsvícení a my pomocí metody adjust nad vnořeným objektem bl nastavíme 8bitovou intenzitu jasu pomocí PWM na maximum.

Klepněte pro větší obrázek
Hurá, oživili jsme displej hodinek

Dalším vnořeným objektem je tft, který představuje knihovnu TFT_eSPI, takže skrze něj můžeme volat všechny její metody. My nejprve příkazem fillScreen překreslíme displej oranžovou barvou, pak na souřadnice 19;59 nakreslíme pomocí drawRect černý obdélník s rozměry 202×102 pixelů a jeho vnitřek vyplníme pomocí fillRect dalším obdélníkem, tentokrát zeleným.

Nakonec pomocí několika metod pro práci s textem nastavíme jeden z předinstalovaných rastrových fontů, zvolíme barvu textu a opět na konkrétní souřadnice vypíšeme obě slova. To dělají ty dvě metody setTextColor a drawString. Tím náš program končí, v následující smyčce loop totiž už nic nemáme.

A teď už to jen přeložíme a flashneme

Kód je hotový, takže v Arduinu vybereme v nabídce Nástroje – Vývojová deska zařízení TTGO T-Watch, poté ve stejné nabídce správný sériový port, na kterém jsou hodinky připojené k PC a hlavně korektní revizi (Board Revision). V našem případě tedy T-Watch-2020-V1.

Klepněte pro větší obrázek
Volba správného zařízení k nahrání firmwaru v prostředí Arduino

Po spuštění kompilace si ještě chvíli počkáte (zejména na Windows), protože centrální knihovna je obrovská, nicméně nejpozději během několika málo minut se na hodinkách konečně rozsvítí naše uvítací obrazovka.

Příklad #2: Obvod reálného času

Uvítací obrazovka je sice fajn, ale sama o sobě tak trochu k ničemu. Hodinky jsou ale vyzbrojené čipem reálného času (RTC) PCF8563, a tak na nich v druhém příkladu zobrazíme, kolik je právě hodin. Obvod RTC je naštěstí připojený přímo k baterii, takže bude počítat sekundy i tehdy, když hodinky vypnete.

Pokračování článku patří k prémiovému obsahu

Získejte neomezený přístup a Živě bez reklam už za 41 Kč měsíčně

Témata článku: Windows, Apple, Internet, Programování, Pojďme programovat elektroniku, Samsung, AliExpress, Hodinky, Bastlení, Arduino, C++, GitHub, Sharp, MEMS, Void, GNSS, Serial, Akcelerometr, TFT, Garmin Fenix, Čip, T-Watch, Dotyk, RTC, Arduino ID, Hodinky na Heureka.cz



Sex manželských párů? Jen výjimečně. Ložnice ovládnou roboti s umělou inteligencí

Sex manželských párů? Jen výjimečně. Ložnice ovládnou roboti s umělou inteligencí

** Sex manželských párů jen při zvláštních příležitostech. ** Ložnice ovládnou sexuální roboti s umělou inteligencí. ** I to je jeden ze závěrů Mezinárodní robotické konference.

Filip KůželJiří Liebreich
RobotiSexUmělá inteligence
Fantasy adventura Forspoken se opět odkládá. Letos si ji nezahrajeme

Fantasy adventura Forspoken se opět odkládá. Letos si ji nezahrajeme

Další odklad hry, která měla dorazit ještě letos.

Michal Maliarov
ForspokenDatum vydáníByznys
Jak poznat, že máte možná hacknutý telefon? Toto je devět symptomů, které můžete pozorovat

Jak poznat, že máte možná hacknutý telefon? Toto je devět symptomů, které můžete pozorovat

** Jak poznat, že je váš smartphone hacknutý? ** Hledejte známky po nestandardním chování telefonu ** Stačí když telefon vydrží méně nebo topí i v klidovém režimu...

Martin Chroust
Jak...Malware
Doba pokročila. Češi dostali aplikaci, se kterou mohou partnerovi odsouhlasit sexuální styk

Doba pokročila. Češi dostali aplikaci, se kterou mohou partnerovi odsouhlasit sexuální styk

** Mobilní aplikace XPass chce zatočit se sexuálním násilím ** Uživatelům umožní udělit souhlas k pohlavnímu styku QR kódem ** Kromě toho chce také chránit a edukovat

Martin Miksa
SexMobilní aplikace
Sociální síť BeReal jde proti proudu. Žádné filtry a přetvařování, tohle má být čistá realita

Sociální síť BeReal jde proti proudu. Žádné filtry a přetvařování, tohle má být čistá realita

** BeReal je novou hvězdou mezi sociálními sítěmi ** Ukazuje pouze všední realitu běžných dní ** Aplikace vám jednou denně dá dvě minuty na poslání vlastní fotky

Martin Chroust
BeRealMobilní aplikaceSociální sítě