Obsah

Vřes

je platformou pro nelineární interaktivní příběhy v lese a nejen v něm. Umožňuje vytvářet hry pro děti ve volné přírodě a motivovat je k aktivitám i mimo virtuální svět počítačových her.

Každá hra je souborem stanovišť mezi kterými se hráč pohybuje. Počítá se s tím, že jednotlivá stanoviště jsou fyzicky vzdálená tak, že neexistuje přímá nepřetržitá komunikace mezi nimi. Přesto je možná výměna informací mezi stanovišti např. prostřednictvím mobilního telefonu hráče, v němž je uložen stav hry z předchozích stanovišť, které navštívil.

Pořadí návštěv jednotlivých stanovišť může být zavislé na rozhodování hráče a hra je tedy obecně nelineární a pro různé hráče může být jiná. A to např. i v závislosti na vybrané obtížnosti, věku apod.

Role a postavy

Nápady na úkoly / stanoviště

Ukázková hra

Implementace hry

Každé stanoviště hry sestává z několika druhů fyzicky nepropojených zařízení, provozovaných na baterie, které mezi sebou komunikují bezdrátově:

Komunikace prvků hry

Počítá se s implementací dvou komunikačních vrstev. V pásmu na RF 433 MHz a v pásmu 2,4 GHz (ESPNow, WIFI). Komunikace na RF 433 MHz je velmi jednoduchá, nenáročná na energii, ale nespolehlivá. Je vhodná pro zařízení napájená bateriemi, ale vyžaduje zajištění spolehlivosti přenosu dat.

Komunikační vrstva v pásmu 2,4 GHz je spolehlivá, ale energeticky náročná. Počítá se s implementací protokolů ESPNow od firmy Espressif a WIFI.

Komunikační protokol ESPNow se používá pro potvrzování řídících zpráv směrem od aktuátorů do centrály, k přeposílání zpráv ze senzorů do centrály (gateway z 433 MHz), případně na přímé posílání zpráv od senzorů, pokud implementují ESPNow. Výhodou tohoto protokolu je nižší spotřeba energie oproti WIFI. Na sestavení komunikace stačí cca 200 ms a tedy vysílač (ESP-01) není potřeba mít aktivní dlouho.

WIFI komunikace je rezervována pouze pro centrálu, případně ve fázi vývoje hry i u jednotlivých aktuátorů.

čidlo - ATTINY + vysilac 433 MHz + alkalicka baterka - neni OTA, neni potvrzovani prijeti zpravy. Alternativne misto vysilace 433 MHz lze osadit ESP-01 a zpravu posilat do centraly pres ESPNow.

Akční člen (aktuator) / 433 MHz gateway - ATTINY + prijimac 433 MHz + alkalicka baterka (burty) + ESP-01. Program v ATTINY obsahuje lokalni ridici logiku, ktera reaguje na prichozi komunikaci po 433 MHz nebo ESP-01. Pokud neni aktivni hra, prijimac je odpojen a ESP-01 spi a probouzi se v pravidelnych intervalech (cca jednou za 10 minut), aby zjistil, jestli v okoli neni definovana WIFI sit (specifickeho jmena) nebo neni aktivni centrala. V prubehu hry je ATTINY stale na prijmu na 433 MHz a ESP-01 vetsinou spi. Pokud prijme zpravu na 433 MHz, ktera je od jednoho z cidel, probudi si ESP-01 (pokud zprava neni kriticka, muze vyckat par sekund, jestli zprav neprijde vice) a po ESPNow tuto zpravu preposle ridici jednotce, pripadne synchronizuje stav, je-li to potreba a ESP-01 se zase uspi.

Pokud prijme zpravu na 433 MHz od centraly, ktera je urcena tomuto ridicimu prvku, potom probouzi ESP-01 a take volitelne potvrzuje prijeti zpravy na ESPNow. Cizi zpravy na 433 MHz od ridici jednotky jsou ignorovany a ESP-01 se neprobouzi.

Pozn. POZOR NA komunikacnim pinu mezi ESP-01 a ATTINY musi byt pullup na 3.,3 V, jinak deep sleep zasekne na komunikaci poke ATTINY

Poznamky k ESPNow

ESP32 ma dve rozhrani AP a STA s ruznymi mac adresami. Pro prijem zprav na ESP32 je potreba pouzit Mac adresu rozhrani AP - WiFi.softAPmacAddress() - posledni byte MAC adresy byva lichy.

Vse musi komunikovat na kanalu 1 (kvuli ESP8266, ktery ma kanal 1 pro ESPNow).

Inicializace na ESP8266:

  WiFi.mode(WIFI_AP_STA);
  WiFi.begin(STASSID, STAPSK, 1);
  while (WiFi.waitForConnectResult() != WL_CONNECTED)
  {
    delay(5000);
    ESP.restart();
  }
  esp_now_init();
  esp_now_set_self_role(ESP_NOW_ROLE_CONTROLLER);
  esp_now_register_send_cb(OnDataSent);

Inicializace na ESP32:

    void ICACHE_FLASH_ATTR handle_esp_message(const uint8_t *mac, const uint8_t *buf, int count) {}
    
    esp_now_init();
    esp_now_register_recv_cb(handle_esp_message);

Varianty

TODO:

Senzory

Reakční prvky

Mobilní telefon hráče

Každý účastník hry se musí registrovat v mobilní aplikaci, ideálně si i rezervovat termín, aby nebyl rušen jiným týmem. Mobilní telefon se potom stane dalším senzorem a reakčním prvkem hry.

Funkce mobilního telefonu hráče:

Jak si postavit vlastní stanoviště

Minimalistický návod, jak si vše postavit sám jen ze základních komponent. Budeme potřebovat:

Bez baterie, krabičky a nákladů na zapojení přijde tedy základ čidla nebo reakčního prvku stanoviště na cca 66 Kč.

S výše uvedeným můžeme postavit základ univerzálního čidla, jehož řídící logika poběží na mikrokontroleru ATTINY a příležitostně si bude probouzet ESP-01 pro komunikaci s řídicí jednotkou stanoviště.

Postup naprogramování:

Nyní máme hotový základ čidla, kde jak ESP-01, tak i mikrokontrolér můžeme už bez dalšího přepojování pohodlně programovat vzdáleně.

Realizace

Použitý hardware

Software

Zdrojové kódy: https://bitbucket.org/goedelsro/site

Vyroba DPS

Zdroje a literatura

Robotika pro střední školy: programujeme Arduino

Kontakt

Martin.Halama [zavinac] goedel.cz