Uživatelské nástroje

Nástroje pro tento web


centrala

Toto je starší verze dokumentu!


ESP32 + vysilac 433 MHz + powerbanka (jako zalozni nebo pro pripady, kdy neni zadny reakcni prvek - napr. bezpecnostni system). Pokud neni aktivni hra a ESP32 spi. Stejne jako reakcni prvky se probouzi kazdych cca 10 minut a overuje, jestli neni dostupna WIFI specifickeho jmena. Pokud ji najde, prepina se do rezimu aktivni hry, kdy je po celou dobu zapnute radio WIFI a ESPNow. V pripade, ze ridici system rozhodne o zmene reakcnich prvku, posle se tato informace na 433 MHz do reakcnich prvku a pocka se na overujici zpravu po ESPNow.

Centrala muze snadno kontrolovat dosah zprav od senzoru na 433 MHz - vzdy musi prijit kopie zprav od vsech reaknich prvku.

Centrální řídící jednotka stanoviště

Na každém stanovišti je potřeba k jednotlivým čidlům a akčním prvkům přidat řídicí logiku, t.j. co se má stát za jaké situace. Může jít o nějaký jednoduchý stavový automat nebo o nějaké mnohem složitější řízení.

Konkrétní implemetace řídící jednotky je zcela v rukou tvůrce hry a není nijak omezena, tzn. kompletní software řídící jednotky je možné vytvořit s použitím připravených podpůrných knihoven pro komunikaci. Software je možné i vzdáleně přehrát z notebooku, případně i přes mobilní aplikaci a datové připojení hráče, pokud k tomu poskytne souhlas.

Navíc je také k dispozici referenční a otevřená implementace s řízením implementovaným nad SQLite databází. Čidla a akční prvky mají předdefinované stavové tabulky a změna hodnot v těchto tabulkách znamená změnu stavu čidla, resp. spuštění nějaké akce. Databázi je možné také libovolně rozšiřit a implementovat tak vnitřní stavy logiky řízení.

Hardware pro řídící jednotku stanoviště je také otevřeně k dispozici. Je postaven na čipu ESP32 s připojenou větší baterii a solárním panelem, protože tento čip na rozdíl od čidel a reakčních prvků musí pracovat po celou dobu hry (přesněji po většinu doby hry, jak bude popsáno dále prediktivní modely strojového učení umožní z historie průběhů hry automaticky určovat očekávanou dobu příští komunikace pro aktuální stav hry a tedy i tento čip bude možné uspávat a šetřit tak energii i v průbehu hry).

Centrala s micropythonem

Pro implementaci ridiciho systemu v pripade, ze akceptujeme fakt, ze centrala pobezi behem cele hry, muzeme vyuzit MicroPython.

Port MicroPythonu pro ESP32 je implementovany primo nad ESP-IDF od Espressifu.

Nez je mozne MicroPython prelozit, je potreba nejprve nainstalovat ESP-IDF toolkit. Na Linuxu je to snadne, staci stahnout cely projekt z GITu a spustit instalacni skript. Vsechny potrebne nastroje se nainstaluji do domovskeho adresare .espressif aktualne prihlaseneho uzivatele.

ESP-IDF je postavene nad Pythonem a v adresari stazeneho gitu staci spustit virtualni prostredi skriptem . ./export.sh.

https://github.com/micropython/micropython

Postup instalace:

# Stahneme vyvojove prostredi pro ESP32
git clone -b v4.2 --recursive https://github.com/espressif/esp-idf.git

# spustime instalacni skript, ktery stahne nastroje na kompilaci do ~/.esspresif
# Pozor: pred instalaci muze byt potreba, aby "python" a "pip" spousteli aktualni python3
cd esp-idf
./install.sh

# Stahneme Micropython s rozsirenim espnow, ktere zatim neni soucasti master vetve
git clone https://github.com/glenn20/micropython.git

# Checkout do vetve s cerstvym kodem espnow
git checkout espnow-g20

# Provedeme rebase na aktualni master puvodniho projektu https://github.com/micropython/micropython
git remote add origo https://github.com/micropython/micropython
git fetch origo
BASEHASH=`git merge-base master origo/master`
git rebase -i ${BASEHASH}


S takto nastavenym shellem uz je mozne snadno prelozit port MicroPythonu podle README a vygenerovany firmware nahrat pres seriovy port do ESP32.

Nasledne nastrojem ampy staci poprve nahrat soubory boot.py a dalsi, ktere se automaticky spousti po restartu. Nasledne uz je jsou tyto python soubory aktualizovany automaticky pri kazdem restartu z definovaneho serveru.

Pridani noveho modulu do firmwaru

pridat soubor implementace modulu do adresare ports/esp32/modiles.c:

#include <stdio.h>
#include <string.h>

#include "py/runtime.h"

STATIC mp_obj_t iles_info(void)
{
    mp_printf(&mp_plat_print, "informace o projektu iles\n");
    return mp_const_none;
}
STATIC MP_DEFINE_CONST_FUN_OBJ_0(iles_info_obj, iles_info);

STATIC const mp_rom_map_elem_t iles_module_globals_table[] = {
    {MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_iles)},
    {MP_ROM_QSTR(MP_QSTR_info), MP_ROM_PTR(&iles_info_obj)},
};
STATIC MP_DEFINE_CONST_DICT(iles_module_globals, iles_module_globals_table);

const mp_obj_module_t iles_module = {
    .base = {&mp_type_module},
    .globals = (mp_obj_dict_t *)&iles_module_globals,
};

MP_REGISTER_MODULE(MP_QSTR_iles, iles_module, 1);

Pridat modul do konfiguracniho souboru mpconfigport.h:

#define MICROPY_PORT_BUILTIN_MODULES                                       \
    {MP_OBJ_NEW_QSTR(MP_QSTR_esp), (mp_obj_t)&esp_module},                 \
        {MP_OBJ_NEW_QSTR(MP_QSTR_esp32), (mp_obj_t)&esp32_module},         \
        {MP_OBJ_NEW_QSTR(MP_QSTR_utime), (mp_obj_t)&utime_module},         \
        {MP_OBJ_NEW_QSTR(MP_QSTR_uos), (mp_obj_t)&uos_module},             \
        {MP_OBJ_NEW_QSTR(MP_QSTR_usocket), (mp_obj_t)&mp_module_usocket},  \
        {MP_OBJ_NEW_QSTR(MP_QSTR_machine), (mp_obj_t)&mp_module_machine},  \
        {MP_OBJ_NEW_QSTR(MP_QSTR_network), (mp_obj_t)&mp_module_network},  \
        {MP_OBJ_NEW_QSTR(MP_QSTR__onewire), (mp_obj_t)&mp_module_onewire}, \
        {MP_OBJ_NEW_QSTR(MP_QSTR_iles), (mp_obj_t)&iles_module},

Pridat module do zdrojaku ke kompilaci v ports/esp32/main/CMakeLists.txt:

set(MICROPY_SOURCE_PORT
....
    ${PROJECT_DIR}/modiles.c
)

Nasledne v adresari portu: make a make flash. Potom uz lze modul vyuzivat v Pythonu:

import iles
iles.info()

Adresy zarizeni:

  • bity 0-3 - adresa senzoru (odesilatel)
  • bity 4-7 - adresy aktoru (prijemce)

V ESPNow komunikaci bude vyplnena adresa senzoru i aktoru, ktery zpravu preposila.

Řešení napájení

Akumulátor 6V

Nejjednoduší je napájení centrály olověným akumulátorem, např. Bezúdržbový olověný akumulátor 6 V/7 Ah Emos s přidaným lineárním regulátorem na 3.3 V, např. 7333.

Powerbanka

Kdyz pracuje ESP32 „na plny vykon“ vcetne WIFI a prijimace RF 433, tak udrzi powerbanku pustenou - je to dostatecny odber. Jakmile se ale vypne radio, dlouho neprobiha prijem zprav na RF 433 MHz nebo se dokonce aktivuje deepsleep, tak po 20s vypne.

Kdyz ale v dobe, kdy je napajeni z powerbanky vypnute na chvili rozpojime cerveny kablik v USB a zase ho spojime, tak se ta udalost rozpozna jako nove pripojeni zarizeni a powerbanka sama zase sepne.

Pokud se stiskne behem aktivniho napajeni tlacitko na boku powerbanky, odlozi se odpocitavani uspani o dalsich 20 s bez ohledu na odber.

Pro zajisteni odberu alespon 50 mA pri napeti 5 V staci pridat LEDku s vhodnym odporem - je treba jen par mA navic s ledkou by slo navic blikat, aby se jeste snizil odber.

Auto power off jde vyuzit na odpojeni centraly mimo hru a pravidlene probouzeni cca jednou za 10 minut. Staci k tomu navic pridat 2 AA baterky, ATTINY13 a male relatko, se kterym ATTINY13 kazdy deset minut cvakne, pokud nebude ESP32 nazivu, coz se dovi treba pres nejake GPIO, ktery mu ESP32 nahodi do 1.

Mozna by to slo pouzivat i pro nizko odberova zarizeni, kde bude nejaky vetsi kondenzator, ktery bude zivit to zarizeni v dobe, kdy se powerbanka rozhodne to vzdat a soucasne v te dobe z poslednich sil muze zkusit pres nejaky mosfet rozepnout to napajeni, aby se powerbanka zase probudila?

TODO:

  • ESP32, ESP8266: seznam WIFI siti - jako dlouho to trva / kolik to sezere energie
  • Vysilani na 433 MHz na centrale

Univerzální deska prvků hry:

  • ATTINY84
  • přijímač 433 MHz
  • vysílač 433 MHz
  • ESP01 - může být přímo připojen i k přijímači - běží jen krátkou dobu při programování nebo potvrzování přijetí zprávy - spouští se (reset) na základě komunikace na RF433 nebo připojeného čidla

Centrála:

  • přijímač 433 MHz
  • vysílač 433 MHz
  • ESP32 - může běžet po celou dobu hry - aktivuje se přítomností mobilní sítě nebo po příjetí zprávy na 433 jako odpovědi na dotaz po 433. Radio WIFI je ale většinu času vypnuté, aktivuje se jen při odeslání zprávy a čekání na potvrzení přijetí anebo při příjetí zprávy a její potvrzení. Případně v době, kdy se komunikuje s mobilním telefonem.
centrala.1632674782.txt.gz · Poslední úprava: autor: martin

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki