HTML

Az élet kódjai

Csináld maga. Senki nem csinálja meg helyetted.

Friss topikok

A Szuperkütyü

2023.07.29. 10:30 Travis.CG

- Pszt, van egy tuti kütyüm. Érdekel?
- Mit tud?
- Univerzális TV távirányító!
- Akkor nem érdekel.
- Várj, és egy univerzális TV távirányító USB csatlakozóval?
- Uncsi.
- Univerzális TV távirányító USB-vel és Bluetooh-al?
- Nocsak.
- Univerzális TV távirányító USB-vel, Bluetooh-al, NFC-vel?
- Próbálj lenyűgözni.
- Univerzális TV távirányító, USB-ve, Bluetooth-al, NFC-vel és gigahertz alatti rádióval?
- Lehet, hogy érdekel, lehet, hogy nem.
- Univerzális TV távirányító, USB-vel, Bluetooth-al, NFC-vel, gigahertz alatti rádióvevővel és GPIO portokkal?
- Fogadjunk, nem tudod fokozni.
- Te programozhatod.

Oké, tényleg sok hülyeségre rá tudok kattanni, de ez most más (vagy legalábbis én másnak hiszem). A Flipper Zero egy hozzám hasonló megalomán geekeknek kifejlesztett kütyü. A fenti dolgokból mind tud egy kicsit. Nem egy Proxmark, nem egy Pandwan Pro, de elég funkciót zsúfoltak bele, hogy az embernek beinduljon a nyáltermelődése. Mindezt egy delfines körítésbe csomagolták, ami például szomorkodik, ha ki akarod kapcsolni. Egy kis retro beütése is van a monokróm 128x64-es felbontással és a csipogó hangjával.

Azt azért mindjárt az elején le kell szögezni, hogy ez nem olyan csodakütyü, mint ahogy a TikTok-on látni lehet. Aki azt hiszi, hogy megveszi, és utána titkosügynökként beosonhat minden lezárt létesítménybe, az nagyot fog csalódni. Viszont nekem például segített, hogy jobban megértsem a vezeték nélküli világot. Használat közben jöttem rá, milyen keveset tudok az engem körülvevő rádiókommunkikációról. Például számomra összemosódott az RFID és az NFC, nem tudtam, hogy ekkora különbségek vannak közöttük. Azt sem tudtam, mi az a moduláció és miért van rá szükség. De ahogy utánaolvastam, egyre több dolog vált világossá.

Ha pedig ez nem is érdekelne, akkor is jó, hogy van tartalék távvezérlő az összes otthoni berendezéshez, a belépétető kártyát sem kell cipelnem a melóhelyre, meg a kaput is ki tudom nyitni vele. Sőt, a karácsonyi fények is vezérelhetőek vele. (Akár még a szomszédé is, ha bevilágít a lézere az ablakon, [gonosz kacaj])

Viszont a funkcionalitása kiterjeszthető, hála a GPIO-nak. Sok esetben jobb választás lehet, mint egy Arduino, mert eleve van képernyője, gombok és akkumulátora. Igaz, kevesebb portot tudunk használni és a kódot írni rá bonyolultabb, de ha valaki eleve rak egy kis LCD-t az Arduinora, már azzal elfoglal 7 csatlakozót.

De a lényeg, hogy programozható. Méghozzá nagyon egyszerűen. Nem kell bűvészkedni környezeti változókkal, nem kell inkompatibilis könyvtárakkal jásztani, gyakorlatilag egy GitHub repot leszedünk, és már mehet is a kódolás.

Fontos még megjegyezni, hogy a rendszer aktív fejlesztés alatt áll, ezért nem biztos, hogy minden információ érvényes lesz két hónap múlva is. Éppen az aktív fejlesztés miatt előfordulhat, hogy egy firmware frissítés után a programunk nem fog futni. Ilyenkor frissíteni kell GitHub-ról a kódbázist és újra kell fordítani a programunkat.

A kódolás alapja egy fbt nevű szkript, amit el kell indítani a forráskód letöltése után. Ez fogja leszedni a fordítóprogramot és mindent beállít, amit csak kell. Még Slackware-en is gond nélkül megoldja a problémákat. Új programjainkat az application_user könyvtárba kell elhelyezni, mindegyiket egy külön alkönyvtárba. Ezután létre kell hozni egy application.fam nevű fájlt. Ez határozza meg a programunk paramétereit, például nevét, a program belépési pontját, melyik menüponton érhető el, stb. Egy alap application.fam a következő módon nézhet ki:

App(
appid="myapp",
name="My first app",
apptype=FlipperAppType.EXTERNAL,
entry_point="myapp_main",
requires=["gui"],
stack_size=1 * 1024,
fap_category="Examples",
)

Ezután már létre is hozhatjuk a forráskódot. Ebben a példában C-t fogunk használni, de természetesen lehetséges Rust-ban is feljeszteni. Többféle programot írhatunk. Van, amelyik a firmware része, más csak debug-olásnál indul, de ami engem érdekel, az a felhasználói programok fejlesztése, amelyek az SD kártyán csücsülnek, függetlenek a firmware-től (vagyis ha lefagynak, nem rántják magukkal az egész rendszert), és menüből indíthatóak.

A forráskódnak tartalmaznia kell értelem szerűen a belépési pontot, amit az application.fam-ban definiáltunk az entry_point résznél. A program erőteljesen támaszkodik a callback függvényekre. Ha képernyőt, nyomógombokat akarunk kezelni, különböző callback függvényeket kell definiálnunk.

Lássunk egy nagyon egyszerű alkalmazást. Létrehozunk egy teljes képernyős felületet és ott kiírunk egy szöveget. Az egyszerűség kedvéért megspóroljuk a bemenetet figyelő callback függvényt, és közvetlenül a kilépés gomb állapotát figyeljük.

#include <furi_hal.h>
#include <gui/gui.h>

static void myapp_draw_callback(Canvas *canvas, void *ctx) {
  UNUSED(ctx);
  canvas_set_font(canvas, FontPrimary);
  canvas_draw_str(canvas, 5, 8, "My first Flipper App!");
}

int32_t myapp_main(void *p) {
  ViewPort *wp = NULL;
  Gui *gui = NULL;
  UNUSED(p);
  gui = furi_record_open(RECORD_GUI);
  wp = view_port_alloc();
  view_port_draw_callback_set(wp, myapp_draw_callback, NULL);
  gui_add_view_port(gui, wp, GuiLayerFullscreen);

  do {
  }while(furi_hal_gpio_read(&gpio_button_back));

  gui_remove_view_port(gui, wp);
  return 0;
}

Ha készen van a kód, akkor a következő paranccsal fordíthatjuk: fbt fap_myapp. Programunk azonosítója előtt a fap_-nak kell szerepelnie. Ha pedig a kütyün is ki szeretnénk próbálni, akkor a következő módon tehetjük meg: sudo fbt launch APPSRC=applications/myapp. Igen, annak ellenére, hogy az application_users könyvtárban van a kódunk, itt csak az applications-t kell megadni.

Szólj hozzá!

Címkék: programozás

A bejegyzés trackback címe:

https://cybernetic.blog.hu/api/trackback/id/tr1718011766

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása