projekty@dakohran.cz

Arduino Internet radio s displejem NEXTION

Arduino Internet radio s displejem NEXTION

Tak jsem pozpřemýšlel jak naše Arduino ( ESP ) Internetová rádia ještě trochu vylepšit, ovládání pomocí tlačítek je jednoduché, ale ne moc komfortní, ovládání pomocí DO je už lepší ale pořád to není ono. A zobrazení pomocí textového displeje je takové nic moc.

Tak jsem se na Netu trochu porozhlídl a zaujal mě čínský ( jak jinak ) výrobce NEXTION. Jeho škála výrobků je poměrně široká a vybrat si můžete od nejjednodušího panelu Basic 2,4´´ za zhruba 16 USD až po 10´´ Intelligent za 130 USD.https://nextion.tech/

K vytvoření HMI projektu je zdarma dostupný nástroj Nextion Editor – ke stažení na konci tohoto článku nebo na stránkách výrobce. Na tomto nástroji se mi hrozně moc líbí simulátor, kde si můžete nanečisto vyzkoušet jak funguje Váš projekt. Ale jeho nespornou výhodu vidím v tom, že se „dokáže připojit“ na Vaše Arduino reálně, takže na monitoru počítače vidíte a ovládáte všechny prvky jako na reálném panelu. To je bezpochyby výhodné když jste se ještě nerozhodli pro konkrétní typ panelu nebo ten Váš je zašprajcovaný v Suezkém průplavu ( březen 2021 ) 🙂 Ono počítejte s tím, že na českých e-shopech bude i o 100 % dražší než když si ho objednáte sami z Číny 🙁

Mrkneme se nejdřív, jak funguje s Arduinem UNO …

Připojení panelu k Arduinu ( ESP ) je velmi jednoduché, z panelu jdou 4 vodiče : červený = + 5 V černý = GND žlutý = RX ( připojit na TX Arduina ) modrý = TX ( připojit na RX Arduina )

Na barvy pozor, ať nedáte modrý jako GND !!!

Samotný program v Arduinu je téměř stále stejný jako v předchozích projektech, nicméně obsahuje několik zásadních změn. Knihovny pro tlačítka nebo IR dálkový ovladač a pro LCD displej již nejsou potřeba, ven s nimi 🙂 V Arduinu řešit zobrazování textu ? Plýtvání drahocennou pamětí, ven ! Necháme všechno řešit displej, jenom ať maká.

Jak bylo zmíněno, komunikace mezi panelem NEXTION a ARDUINEM probíhá po sériové lince, tak zde to trochu probereme. Panel od Arduina přijímá pouze jednu proměnnou, a to je číslo aktuálně přehrávané stanice. Na fotce je to pole ID. Do něho posílám číslo stanice po každých 500 cyklech CPU. Do je důležité proto, aby se po zapnutí rádia toto číslo zobrazilo anebo když dojde k přerušení a znovunaběhnutí komunikace mezi panelem a Arduinem. Obráceně Arduino přijímá od panelu sérii znaků při stisknutí nějakého tlačítka. U tlačítka CH+ ( b0 ) jsou to znaky „CHP“, tlačítka HLAS + ( b1 ) je to „VOLP“, CH- ( b2 ) je to „CHM“ a u tlačítka HLAS – je to „VOLM“.

Vysílání dat z Arduina :

Příjem dat do Arduina :

Zpracování přijatých dat

Takže ono to zas není tak kompikované jak to vypadá. Nemusím v Arduinu řešit nějakou knihovnu Nextion.h která by mi řádně ukrojila z paměti Arduina a takhle mazaně si to pořeším několika řádky kódu.Tím jsem dosáhl značné úspory paměti a mohu do Arduino UNO předvolit cestu až ke 30 stanicím ! 🙂

Takže Arduino mi posílá číslo aktuálně přehrávané stanice, to mi bohatě stačí, nic víc od něho nepotřebuju, zbytek si odpracuje displej. Na printscreenu níže je to vysvětleno : když v poli ID ( aktuální předvolba ) je znak „1“ tak : v poli g0.txt ( žluté pole dole ) vypiš text „Hitrádio Osmdesátka“ a v poli p0.pic zobraz obrázek v projektu pod identifikátorem 1. když v poli ID ( aktuální předvolba ) je znak „2“ tak : v poli g0.txt ( žluté pole dole ) vypiš text „Hitrádio Devadesátka“ a v poli p0.pic zobraz obrázek v projektu pod identifikátorem 2. Žluté pole dole je nastaveno aby znaky v něm se posouvaly zprava doleva o maximálním počtu 40 znaků.

Ty obrázky ( loga stanic ) trochu proberu, pro zobrazení jsem vyhradil plochu 280 x 170 pixelů, takže při 32-bitovém rozlišení mi jedno logo „sežere“ cca. 100 kB Flash paměti panelu. Jelikož můj panel ( NX4024T032 ) má „pouze“ 4 MB Flash, tak při 30 obrázcích jsem na nějakých cca 3 MB plus obrazovka nenavázání spojení + samotný projekt a jsme na 3 153 kB. Panel má slot na Micro SD kartu, ale ten slouží pouze k nahrání projektu do panelu. V Nextion Editor náš projekt musíme vyexportovat do .tft souboru, ten nahrajeme na SD kartu, vypneme panel, vsuneme kartu a zapneme panel. Na displeji se zobrazí hlášení o přehrávání projektu do NEXTION. Jakmile se úspěšně dokončí vypneme panel, vysuneme kartu a zapneme panel.

Podíváme se na to, jak funguje simulátor s reálným Arduinem….

Simulace panelu s reálným Arduinem ( ESP ).

Tak to je všechno, v odkazech níže máte soubory ke stažení. Samozřejmě si můžete projekt jak pro Arduino tak i pro HMI upravovat dle vlastního uvážení. Mám jen tyto omezení : v záhlaví projektů Arduino ponechte info o autorovi, v projektu HMI ponechte obrazovku č.30 – Spojení nenavázáno původní. Tyto stránky tvořím pro všechny nadšence a elektrotechnické kroužky zdarma. Již jsem na Internetu viděl mé projekty které si někdo přivlastnil a ještě měl tu drzost žádat o finanční příspěvky na další projekty 🙁 Děkuji za fér přístup.

2 Odpovědi

  1. Roman Z napsal:

    Dobrý deň pán Kohout, postavil som si toto internetové rádio s displayom NEXTION len chcem poprosiť o radu. Nedá sa prepínať kanále nadol lebo políčko CH- tam nie je je tam newtxt, nieje tam nejaká chyba v programe? Ani na simulátore Nextion tam to políčko nieje, dá sa prepínať len nahor stanice. Ďakujem

    • David Kohout napsal:

      Dobrý den, docela zajímavý problém, teďka jsem si ten soubor ze svého webu stáhl,
      spustil jsem Debug, a bez problémů to funguje. Tak mě napadá,
      neposunul jste to tlačítko tak, že je mimo aktivní oblast displeje ? Zkuste si
      ten soubor znovu stáhnout. Jinak nevím, možná problém s verzí Nextion Editor,
      já mám V 1.63.3 Jste první, u koho se vyskytl tenhle problém.

      Opravdu nevím, kde může být problém, v projektu určitě není a v samotném
      displeji asi taky ne, když Vám to nejde ani simulátoru. Nevím, zkusit odinstalovat
      a znovu nainstalovat Nextion. Dejte vědět jak jste dopadl.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.