M5Stack

Kategória: Elektronika.

Áttekintés

Az M5Stack család oktatási célra és IoT projektek fejlesztésére egyaránt alkalmas mikrokontroller család. Az írás pillanatában még nincs különösen elterjedve (összehasonlítva mondjuk az Arduino-val vagy a Raspberry Pi-vel), viszont mindenképp figyelemre méltó eszközükről van szó.

m5stack.png

Kicsit távolról, kicsit hunyorítva felfogható olyan Arduino szintű eszközként, ami olyan szabványosnak tekinthető dolgokkal van felokosítva, mint nyomógombok, kijelző, TF kértya olvasó, wifi, elem, és ezeken felül értendőek az általános IO portok.

A családnak nagyon sokféle eleme van; ezen az oldalon az M5Stack Gray fantázianevű eszközről lesz szó.

Néhány fontosabb tulajdonsága:

  • A nevében az M5 arra utal, hogy egy 5 cm x 5 cm méretű eszközről van szó.
  • A Stack a kibővíthetőségére utal: egymásra ill. egymás mellé lehet helyezni komponenseket.
  • ESP32 processzor található benne. 2 magos processzor van benne, az órajele 240 MHz. Összehasonlítva: az Arduino UNO-ban legelterjedtebb ATmega328 egy magos, órajele 20 MHz; a Raspberry Pi-ben 4 magos GHz-es nagyságrendű ARM processzor található.
  • Memória: 16 MB (flash memória). Ez kétségkívül nagyobb az Arduino UNO 32 kB memóriájánál, sőt, az ESP8266 tipikus 0,5-4 MB-jánál is, de messze elmarad a Raspberry Pi GB-os nagyságrendű memóriaméretétől.
  • 14 általános célú portja van, ami megfelel a hasonló eszközök portszámának. Ebben egyébként erős: az Arduino UNO-ban úgy van 14 port, hogy egy LED-en kívül szinte semmi sincs rajta (tehát ez a 14 port elég gyorsan "elfogy" az alapdolgokra), míg a Raspberry Pi esetén ha használunk LCD kijelzőt, akkor az eltakarja az összes GPIO-t.
  • A kijelző átmérője 2 hüvelyk (a Raspberry Pi-é 3,2), felbontása 320x240-es (megegyezik a Raspberry Pi LCD-jének felbontásával).
  • Van rajta 3 nyomógomb, ami pont 3-mal több, mint amennyi az Arduino Uno-n és a RWaspberry Pi-n van együttvéve. (Egyébként sohasem értettem, hogy miért nem tesznek ezekre az IoT-s eszközükre legalább egy nyomógombot.)
  • Van rajta egy hangszóró, bár a hangja inkább idegesítő mint kellemes. Az Arduino UNO-ra külön ehet tenni berregőt, a Raspberry Pi-nek pedig jack dugó kimenete van.
  • Van benne elem így áramforrás nélkül is használható egy ideig, ami az alapkészlettel sem az Arduino UNO-val, sem a Raspberry Pi-vel nem megoldható, csak kiegészítőkkel, trükkösen.
  • Van wifi modul benne. Az Arduino UNO-ban nincs (viszont az ESP8266-os családban már van), ill. a Raspberry Pi-ben is van.

Programozhatósága:

  • C++-ban pl. Aruino IDE-ből,
  • MicroPythont feltelepítve Pythonban (lokálisan vagy webes felületen),
  • Ugyanezzel a rendszerrel, de blokkokat használva.

Van két jelentősebb hátránya:

  • Nem olcsó; az ára egy jól felszerelt Raspberry Pi árának kb. kétharmada.
  • Még nem igazán kiforrott, nem elég érett, vannak vele problémák. Hozzá kell szokni.

Az ember azt mondhatja, hogy akkor már megtoldjuk még egy kicsit, és legyen inkább sokkal nagyobb tudású Raspberry Pi. Ez részben jogos, részben nem. Ha úgy vesszük, hogy másfélszer annyi pénzért nagyságrendekkel több memóriát, gyorsabb processzort kapunk, ráadásul egy kiforrott technológiát, akkor igaz. Ugyanakkor ha csak egyetlen darabot veszünk belőle, akkor valójában nem drága ez sem, az sem, ráadásul ezt egy egész jó kompakt dobozban kapjuk meg, és ami a legfontosabb: ebben minden benne van. Az Arduino UNO-hoz kismillió kiegészítőt kell venni, és egy jól felszerelt egységcsomag ára ott van, mint egy M5Stack-é. Másrészt a Raspberry Pi-vel összehasonlítva: az M5Stack a kijelzővel, nyomógombokkal, elemmel önmagában kerek egész, míg a Raspberry Pi ilyen értelemben nem az.

Ha pusztán a specifikációt nézzük, akkor lehet, hogy kicsit drágának találjuk, viszont ne feledjük az alábbiakat:

  • Ha egy hosszabb, mondjuk fél éves mikroelektronikai tanfolyamban gondolkodunk, akkor az eszköz ára igazából eltörpül a folyamat teljes ára mellett: beleértve itt a tanfolyam árát, de az időt, energiát stb. Lényegében néhány tíz dollárról beszélünk, akár Arduino UNO-ról, akár Raspberry Pi-ről, akár az M5Stack-ről beszélünk.
  • Ha hobbielektronikai projektekről beszélünk, akkor a saját munkaidőnk az igazán drága, amellett eltörpül az anyagköltség. Azzal, hogy itt minden egybe van építve, sok időt megtakaríthatunk. Egy kirándulós hasonlattal: az Arduino UNO olyan, mintha leszállunk a vasúrállomáson, és még akár több kilométert meg kell tenni település belterületén, betonon, mire az erdei túraösvényre kerülünk (így addigra akár el is mehet a kedvünk a kirándulástól), és ebben a példában az M5Stack olyan, mintha egy taxi elvinne minket a vasútállomástól az erdei túraútvonalak kezdetéig, tehát lényegében az első lépéstől kezdve már erdőben kirándulunk, és a taxiköltséget kell kifizetni.

Összefoglalva: szerintem mindenképpen helye van a palettán, még ha esetenként ár/érték arányban nem is feltétlenül optimális a választás.

Fontosabb oldalak:

Arduino IDE

Az M5Stack programozható Arduino C++-ban.

Beállítás

A hivatalos specifikáció itt található: https://docs.m5stack.com/en/quick_start/m5core/m5stack_core_get_started_Arduino_Windows. A szükséges lépések:

  • Töltsük le, telepítsük fel és indítsuk el az Arduino IDE-t a https://www.arduino.cc/en/software oldalról.
  • Be kell állítani az ESP32-es processzor család támogatását: File → Preference → Additional Board manager URLs: ide írjuk be ezt: http://arduino.esp8266.com/stable/package_esp8266com_index.json. Ha már van ott valami akkor vesszővel elválasztva.
  • Tools → Board: … → Boards Manager → a keresőbe írjuk be, hogy esp32, majd telepítsük fel az Expressif System komponensét.
  • Sketch → Include Library → Manager Libraries… → a keresőbe írjuk be ezt: m5stack → telepítsük fel az elsőként megjelenő ESP32Lite Pack Library nevű komponenst.
  • Tools → Board → itt válasszuk ki az M5Stack-Core-ESP32-t
  • Legkésőbb most csatlakoztassuk az M5Stacket az USB kábellel a számítógéphez.
  • Tools → Port: itt válasszuk ki a megjelenőt, pl. COM3.
  • Example → M5Stack (ehhez esetenként nagyon le kell görgetni) → Basics → Display
  • Sketch → Upload

Itt eltart, mire lefordítja és feltölti; az eredmény egy színes demó.

Helló, világ!

Az alábbi kód kiírja a Hello, M5stack world! üzenetet a képernyőre:

#include <M5Stack.h>
 
void setup(){
  M5.begin();
  M5.Power.begin();
  M5.Lcd.print("Hello, M5stack world!");
}
 
void loop() {
}

Ékezeteket nem tud kezelni.

Kiírás

TODO: pozicionálás, betűméret, betűtípus, szín stb.

Rajzolás

TODO: pont, egyenes, téglalap, kör, kitölts stb.

Nyomógombok kezelése

TODO: bal, középső, jobb nyomógomb

TF kártya írása, olvasása

Gyroscope adatainak kiolvasása

Wifi

Szenzor csatlakoztatása

MicroPython

A MicroPython egy olyan Python, ami mikrokontollereken fut. Az alap Python utasítások mellett az adott mikrokontrollerre jellemző parancsokat is ki lehet adni. A C++-szal ellentétben itt egy-egy utasítást is végre lehet hajtani. Valamint biztosít egy blokk programozás felületet, amit Pythonba konvertál, és azt tudjuk futtatni.

A MicroPythonnak a weboldala ez: https://micropython.org/. Itt most azt nézzük meg, hogy hogyan tudjuk a MicroPythont az M5Stack segítségével használni.

Telepítés

Az M5Stack-en alapból nincs rajta a MicroPython (ellentétben egyébként a Raspberry Pi-vel, amelyen rajta van), azt fel kell telepíteni. Nem volt egyszerű egyébként a telepítése, a netes kereséssel talált megoldások sorra csődöt mondtak, és az M5Stack ügyfélszolgálattal is felvettem a kapcsolatot, végül a segítségükkel sikerrel jártam.

A https://docs.m5stack.com/en/quick_start/m5core/m5stack_core_get_started_MicroPython leírás alapján kell végrehajtani a lépéseket, minden más egyéb (még ha M5Stack hivatalos leírásnak tűnik is) nem használható. Az oldal megtekintéséhez 80%-ra le kell csökkenteni az oldalméretet, különben hibásan jelenik meg.

Az alábbiakat kell feltelepíteni:

Mindegyiket csomagoljuk ki és telepítsük fel. Az M5Burner szoftvernél hajtsuk végre az alábbi lépéseket:

  • M5Burner → UIFLOW (CORE) → Download → Burn
  • Meg kell adni a wifi SSID-ját és jelszavát

Netes kapcsolat

Válasszuk le a számítógépről az eszközt, és indítsuk újra. Boot-oláskor nyomjuk meg a jobb gombot → Switch mode → Internet Mode, majd Reboot. (A bal és a jobb gombokkal tudunk felfelé ill. lefelé lépkedni, a középsővel pedig kiválasztani.) Újraindulás után kiír egy API KEY-t. Nyissuk meg ezt az oldalt: https://flow.m5stack.com/ → itt kell megadni a kiírt API kulcsot, és már használhatjuk is.

USB mód

A másik lehetőség: ahol kiválasztottuk az Internet Mode-ot, ott az USB Mode-ot válasszuk ki, csatlakoztassuk az eszközt a számítógépre, indítsuk el a UIFlow Desktop IDE-t, válasszuk ki a fenti legördülő menüből a COM portot.

Blokk programozás

Helló, világ!

Komponensek elhelyezése

UI elemek

Események

Változók

Feltételkezelés

Ciklus

Hardver elérés

Python programozás

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License