Hackathon-pp21

Žijeme ve velmi zajímavé době. Moderní technologie přináší dříve nevídané možnosti a my se snažíme soustředit ne jejich klady.

Vycházíme z úvahy, že téměř vše je víceméně lineárně provázáno (energie, čas, informace, peníze, …) a pokud je to možné, chceme mít možnost tyto entity přesouvat v prostoru (či čase – na delší povídání).


Obraz první:
Je jedno jestli v reálném světě nebo ve virtuální realitě máme možnost převádět hodnotu zboží nebo služeb pomocí LN druhé vrstvy nad BTC.
Jednotlivé „entity“ (nody), které mohu být souborem jedinců, společenství či umělých inteligencí. Chceme zařízení, které nám propojí viruální svět s tím reálným (potenciometr, relé…)

Obraz druhý :
U vodopádu nebo sopky je nově zbudována elektrárna, kde se těží bitcoiny. Místo abychom tahali dráty, posíláme do jiných oblastí vytěžené bitcoiny…

Obraz třetí:
Existují nějaké již poměrně zažité technologie (elektřina, letadla, mobily, internet…) které už umíme běžně používat. Pro další fázi vznikají zařízení, nástroje a služby, které umožní úplně nové pohledy na řešení situací. Kdy stroj umí zaplatit druhému stroji za servis…


V týmu:
Petr Kracík – hlavní vývoj hw+sw
Tomáš Starý – sw
Honza Čopák
Trochu nám pomáhal a nepřekážel Mário Havel.


Universal crypto device Octopus (ČUDO)

Vycházeli jsme poměrně čerstvého projektu. Zařízení s ESP32 ke kterému je připojena NFC čtečka, případně klávesnice nebo i akceptor na mince či bankovky.
Výstupem je displej, pro komunikaci s uživatelem či zobrazování QR kódu.
to nám posloužilo pro základní koncept.
ESP32 s Micropythonem:
https://github.com/octopuslab-cz/temporary-crypto-universal-device

Hardware

ESP32 board
Displays Expander
TFT 160×128
Keypad 4×4 / 4×5
NFC-RFID PN532
Case – 3Dprinted

Case – 3D printed box

Thingiverse STL:
https://www.thingiverse.com/thing:5142637

Simple test and example

https://github.com/octopusengine/octopuslab/tree/master/esp32-micropython/examples/displays_expander
Keypad (LED 7segment display) “calculator”
NFC-RFID reader – UART2

Hackathon devices:


-> https://github.com/agama-point/lnucd | atm | pos | lnswitch
-> https://github.com/agama-point/lnpos

Pro potřeby komunikace pomocí nfc tagů vymýšlíme optimální protokol, jelikož zatím použitelný standard chybí, „vykopli“ jsme vlastní návrh.
CDF-RFC: https://github.com/agama-point/cdf-rfc
Request For Comments – We are trying to design a data format – primary for LN – machine2machine communication.

1. LN lampička

První verze velmi jednoduché dotazování serveru, na kterém se aktualizuje stavový json pomocí lnbits hook přes statický QR Kód.
Provedením LN mikroplatby se rozsvítí lampička, otevře zámek, sepne topení…

Prvotní koncept z roku 2014+ byl ryze na BTC: (Bitcoin Machine)
https://www.agamapoint.com/projekty/

2. LN ATM

Inspirace Bleskomatem,
už máme odladěn akceptor na mince
a testovali jsme připojení akceptoru bankovek

3. LN PoS

point of sale – jednoduchý platební terminál, po zadání částky na klávesnici vytvoří platební QR požadavek

Shrnutí

Poznámky

Pinout

-----
ESP32 board:     [Disp.Exp.]
L-D0             []
L-D1 IO17 (PWM1) [TX2]
L-D2 IO02 (LED2) [TFT1-SC]x - ver.1
L-D3 IO16 (PWM2) [RX2]
R-D0 IO27 (DEV3) []
R-D1 IO25 (PWM3) [TFT1-SC] ver.2
R-D2 IO26 (IO26) [TFT1-DC]
R-D3
TX   IO04
RX   I36

-----
main TFT:
BL - 3V
SC - L-D2
DC - R-D2
RS - 3V 
SDA - MOSI
SCL - SCLK
3V
GND

cs  = 26 # Pin(26, Pin.OUT) #R_D2
dc  = 25 # Pin(2, Pin.OUT)  #L_D2 (ver.1 02 - ver.2 PWM3 25)
rst = 27 # xx > DEv3(27)

spi = SPI(2, baudrate=20000000, polarity=0, phase=0, sck=Pin(pinout.SPI_CLK_PIN), mosi=Pin(pinout.SPI_MOSI_PIN),  miso=Pin(pinout.SPI_MISO_PIN))
tft=TFT(spi, dc, 16, cs)   # tft(dc,rst,cs)

-----
I2C expander
010 = 0x25 
000 = 0x20 (default)

IRQ PIN 39
ver.1: 
| |-|
x x |
 
ver.2:
| | |
~ ~ |

----- 
PN532 - UART (TODO > I2C)

#UART1:

#uart.init(baudrate=115200, tx=pinout.TXD1, rx=pinout.RXD1, timeout=100)
#UART2:
uart.init(baudrate=115200, tx=pinout.PWM1_PIN, rx=pinout.PWM2_PIN, timeout=100)


---







.:.
https://www.octopuslab.cz/esp-pinouts/

esp32-pripojeni

52. díl – OctopusLAB
ESP32 – připojení a instalace systému

O instalaci Micropythonu do ESP32 jsme už psali ve 27. díle (Hamík 184). Tentokrát se zaměříme na některá doplnění či upřesnění a především na zásadní novinky a změny. Na následujícím obrázku jsou varianty modulů s ESP, se kterými běžně pracujeme. Zvýrazněn je název modulu a také jak se hlásí „ovladač“ převodníku UART/USB.

  1. ESP32-WROVER (ESPRESSIF) – „známka“, která dnes existuje už v několika provedeních (verze C2/C3, s rozšířenou pamětí 4/8M).
    My používáme například ESP32-S s přidaným konektorem na externí anténu nebo základní verzi označenou ESP-WROOM-32.
  2. ESP32 – speciální programovací modul s „drátěnými“ konektory, který umožňuje naprogramovat „známku“ ještě před osazením. Na obrázku je verze pro větší modul, klasický má piny rozmístěny po části obvodu ve tvaru „U“.
  3. ESP32 – DoIt (15×2 pinů). Základní a velmi rozšířená verze modulu s USB konektorem, programátorem a vestavěnou LED (a jednou signalizační LED). Plete se s dalšími variantami, které mají pinů více (například 2×19), ty ale nepoužíváme. Hlásí se jako Silicon Labs CP210x to UART Bridge (COMx).
  4. ESP32-WROOM (2×10 pinů). Kompaktní verze, kterou jsme nahradili vlastními deskami.
  5. ESP32board1 – neosazená verze 2 s externím programátorem (6).
  6. Samostatný převodník UART/USB, který používáme k programování.
    Hlásí se také jako Silicon Labs CP210x to UART Bridge (COMx).
  7. ESP32board – částečně osazená verze 6 s FTDI. Hlásí se jako USB Serial Port (COMx), námi předkonfigurováno i jako Octopus Lab.

Správce zařízení vyvoláte výběrem v menu po stisknutí symbolu Windows spolu s X (Win+X). V sekci Porty (COM a LPT) uvidíte jaký ovladač má vaše ESP a jaký COM port byl přidělen. My si ho většinou i dodatečně změníme na COM6, protože pak snadněji kopírujeme připravené skripty. Pokud se ESP nepřipojí nebo se s ním následně nedá komunikovat, bývá velmi častou závadou špatný USB kabel.


Pro stručné shrnutí si připomeňme první dva kroky, co je potřeba stáhnout do počítače (pomocí kterého budeme s ESP pracovat).
1. Nástroj pro inicializaci (mazání) ESP a přesouvání souborů do ESP se jmenuje esptool (dl.espressif.com/dl/esptool-2.6.1-windows.zip
– stáhnout a rozzipovat ve svém pracovním adresáři).
2. Aktuální binární soubor Micropythonu lze použít ve dvou variantách. Pro speciální projekty (s externí pamětí RAM nebo WiFi komunikací pomocí ESP now) můžete vycházet z původního návodu a nainstalovat si náš upravený Micropython: octopusengine.org/download/micropython/micropython-octopus.bin, ale pokud výše uvedená rozšíření pro své projekty nepotřebujete, stáhněte si raději poslední verzi vanilla: micropython.org/download/esp32/.
Celý postup je rozepsán v naší dokumentaci: docs.octopuslab.cz/install_win/.



Pak v příkazovém řádku Windows zadáme postupně:

esptool.exe --chip esp32 -p COM6 erase_flash 
esptool.exe --chip esp32 -p COM6 write_flash -z 0x1000 ./micropython-octopus.bin

Během první části instalace Micropythonu erase_flash, kdy se po spuštění esptool vypisuje sekvence  Connecting........_____....._____.....____,
je někdy nutné na chvíli na ESP zmáčknout tlačítko BOOT.


O možnosti rozšíření Micropythonu o vlastní moduly jsme si již zmínili v původním popisu u metody octopus_initial.setup(). Máme více možností, připomeneme tři základní varianty.

  1. Rozšíření je implementováno do samotného Micropythonu (což využíváme ve forku micropython-octopus).
  2. Máme možnost si přihrát vlastní modul (například do adresáře /lib), což je například celý Octopus FrameWork.
  3. Varianta, na kterou se zaměříme je využití pip (package installer for Python), v případě Micropythonu upip.

53. díl – OctopusLAB
instalujeme octopus framework

Pokud jste postupovali podle návodu v minulém díle, měl by se vám po restartu ESP zobrazit prompt interaktivního Pythonu >>>.
Když je tomu tak, gratulujeme! Máte funkční MicroPython.
Pokud se na obrazovce nic nezobrazuje zmáčkněte ENTER nebo CTRL+D (sw reset) případně CTRL+C (přerušení běhu programu). Některé možnosti terminálového výpisu, který informuje i o aktuální instalované verzi MicroPythonu, jsou zde:

# Verze našeho uPy
MicroPython v1.14-6-gab6d856ac-build-octopusLAB-espnowmod on 2021-02-16; ESP32 module (spiram) with ESP32

# Vanila 1.17
MicroPython v1.17 on 2021-11-22; ESP32 module with ESP32
Type "help()" for more information.
>>>

Ve druhém případě vidíme, že je instalována verze 1.17 z 22. 11. 2021. Nové „nestabilní“ verze jsou vydávány i několikrát týdně. Všechny změny zahrnuté v nové verzi jsou přehledně zaznamenány v příslušném příspěvku (commitu) v MicroPython repozitáři (https://github.com/micropython/micropython/commits/master).

Zkoušíme i různé verze ESP32 a před zapájením do našich modulů se nám osvědčilo je otestovat. Což spočívá v instalci MicroPythonu a provedení několika základních kontrol (paměť, WiFi, BLE…)



Ve starších návodech jsme popisovali jak nainstalovat náš upravený MicroPython. Pokud máme však čistý (vanilla) MicroPython, musíme instalovat dodatečně nejen celý balíček knihoven, ale i základní „instalátor“ (deploy). Pro nahrání Frameworku Octopus do MicroPythonu využijeme balíčkovací metody upip.
Níže uvádíme kompletní kód. Můžete použít copy&paste celého bloku (nezapomeňte si správně vyplnit svoje ssid a heslo). Bez komentářů se jedná pouze o osm řádků kódu!

import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect('ssid', 'password')  # aktualizujte pro vaši WiFi

Po připojení k WiFi můžeme přejít ke stažení metody deploy() z octopuslab_installer a následně k samotné instalaci:

import upip
upip.install('micropython-octopuslab-installer')
# počkejte chvíli na dokončení instalace

from lib import octopuslab_installer
octopuslab_installer.deploy()
# sledujte průběh stahování

V tuto chvíli máte připraveno ESP s nejnovější verzí MicroPythonu a aktuálním souborem knihoven pro snadnější vývoj vašich projektů.

Jelikož původní nastavení WiFi bylo jen dočasně uloženo v RAM, je vhodné si WiFi nastavit a do zařízení uložit natrvalo.
Příkazem setup() (je to Python metoda, proto ty závorky) vyvoláme nastavení. Zde zvolením w přejdeme k nastavení (přidání) naší WiFi.
V submenu se po volbě a (add – přidání) nastaví SSID (název sítě) a PASSWORD (heslo do ní). Po cw (connect wifi) by mělo dojít k připojení.











Toto se už nevejde – soukromé poznámky!

pracovní listy – Micropython hamík – pdf – videa + soc insta a twitt.
prompt
setup – device, io, wifi
free ram
ftp
základy s holým esp: teplota, hall, …
shell()

představení EDUKIT1,2 a nová 3! (plán klalkulačka, domovní alarm,
emul MK 14 Science of Cambridge, 1977




4. Instalace Micropythonu – asi i nové video,
celá strana se všemi úskalími a možnostmi

Metodické listy pro kroužky – sada jednoduchých projektů, tutoriály, návody, co a jak. Soutěž? Nabídka desek zdarma za příslib projektu a foto + „dokumentace“.