Aktuality

cudo21

57. díl – OctopusLAB
ESP32 – kouzelná krabička „ČUDo“


CUDo je zkratka pro Crypto Universal Device – octopus. Ale když se náš kamarád ze Slovenska zeptal, „čo je to za čudo“, měli jsme jasno, že to bude ČUDo!

Vycházeli jsme z poměrně čerstvého projektu postaveném na modulu s ESP32, ke kterému je připojena NFC čtečka, případně klávesnice nebo i akceptor na mince či bankovky. Ke komunikaci s uživatelem či zobrazování QR kódu slouží TFT displej.

V plánu je tradičně hned několik projektů. Například:
kalkulačka, centrála alarmu nebo chytré domácnosti, přístupový systém (na PIN nebo na kartu), výukové a prototypové moduly a podobně. Ale zaměřili jsme se především na některá speciálnější zařízeni pro práci s kryptoměnami (proto je i v názvu slovo crypto).
Využíváme druhou vrstvu bitcoinové sítě, takzvaný Lightning network. Elegantní řešení (LNURL) nám částečně poskytuje i lnbits.com, který provozujeme na vlastních serverech.
Krypto projekty:
PoS (Point of Sale) – obsluha na klávesnici zadá částku, zákazník platí „na“ QR kód zobrazený na displeji.
ATM (Automated Teller Machine) je anglická zkratka pro bankomat. Jedná se o zařízení, které po vložení hotovosti (do akceptoru mincí či bankovek) nebo bezkontaktním přečtení RFID „karty“ odešle jejímu majiteli požadovaný obnos v kryptoměně (formou „výběrového“ QR kódu nebo RFID v mobilu) a další.

Hardware

ESP32 board ¨- základní modul s ESP32
Displays Expander – deska připojení displeje a I2C 16ti bitový expandér
TFT 160×128 – grafický displej SPI
Keypad 4×4 / 4×5 – maticová klávesnice
NFC-RFID PN532 – čtečka RFID

Na hackathonu Hackatoshis flying circuit konaném v pražské Paralelní Polis https://flyingcircuit.com/ , jedné z posledních akcí loňského roku, jsme za naše ČUDo získali první cenu! Na hackathonu jsme měli hned několik prototypů a představili jsme koncept všech projektů, které porotce po právu zaujaly.

Základní koncept – open-source v Micropythonu:
https://github.com/octopuslab-cz/temporary-crypto-universal-device
Také 3D model krabičky ve formátu STL je zdarma ke stažení na Thingiverse:
https://www.thingiverse.com/thing:5142637





co se už asi nevejde nebo co už bylo:



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



Ohlédnutí

OctopusLAB 55
Ohlédnutí za několika roky tvoření

Blíží se konec roku a tak se pokusíme trochu zvolnit tempo. Na předvánočním setkání radioamatérů v NTM jsme se dozvěděli, že naše články jsou dost náročné. Proto si tentokrát jen nostalgicky zavzpomínáme na několik málo okamžiků z téměř pětileté činnosti naší malé tvůrčí laboratoře.

Jako nadšení elektrokutilové zaměření na číslicovou techniku jsme si v jistou chvíli začali vyrábět vlastní vývojové desky. Už jich máme více než deset druhů. Na obrázku je testovací modul FIRST board s I2C expandérem a binárním výstupem.

Velmi brzy jsme vyhověli žádostem o ROBOT board – desku pro robotická vozítka (lze připojit dva motory nebo tři serva).

Na Robotickém dni v Praze jsme předvedli hned několik našich robotických vozítek. Na robotické soutěži průjezd bludištěm (akce Kavárny naživo) jedno z nich skončilo na druhém místě!

Pražský Maker Fair v roce 2019 pro nás byl velmi úspěšný, obdrželi jsme totiž ocenění Maker of Merit, kterého si stále velmi ceníme.

Na hackathonu Hackatoshis flying circuit konaném v PP, jedné z posledních akcí letošního roku, jsme za naše ČUDO (crypto universal device Octopus ) získali první cenu!



Přejeme všem čtenářům především pevné zdraví, ať je příští rok úžasný a plný příjemných překvapení.

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“.

Maker Faire 2021

O víkendu (10-12/09) se v Praze konal další ročník Maker Faire. Po téměř dvouleté odmlce máme možnost potkat naživo celou řadu zajímavých tvůrců a jejich projektů. Aktivně jsme se minulých ročníků účastnili (i některých mimopražských) a letos se chystáme také. Vřele doporučujeme, přijeďte se podívat, stojí to za to.

Maker Faire je festival plný workshopů, interaktivních aktivit a především nadšených a zvídavých lidí. Své projekty a prototypy zde prezentují tzv. makeři. Maker je inovátor, vynálezce, kutil, designér i nadšenec. Každý, kdo se nespokojí s dostupnými věcmi a službami, vytváří si nové, ale zároveň si je nenechává pro sebe – sdílí je s ostatními. Je to zkrátka kutil 21. století.

Octopus LAB zde bude také. Děkujeme za hezký „medailonek“, který je k dispozici na Facebooku:
facebook.com/MFPrague/photos/a.399775593775823/1239372973149410/

Minulé ročníky:
Plzeň: octopuslab.cz/pilsen-mini-maker-faire-2019/
Mladá Boleslav: octopuslab.cz/2019/09/
Bratislava: octopuslab.cz/2019/11/
Praha: octopuslab.cz/maker-faire-2019/
OtopusLAB obdržel na Maker Faire Prague 2019 ocenění Maker of Merit

Některé projekty které bereme s sebou

  • Turingův stoj
  • Emulátor Intel 4004
  • MQTT teploměr
  • MQTT klávesnice a displej
  • E-ink displej
  • Robotická vozítka
  • Zdroje a měřící moduly
  • a řada dalších

Převažující většina projektů je realizována s ESP32 na vývojových deskách OctopusLAB.

Pokud se chcete i vy stát součástí úžasné komunity makerů v pražském Maker Faire, neváhejte a určitě doražte! Maker Faire Prague je největším kutilským festivalem v Česku. Akce pro celou rodinu, která spojuje kreativitu, umění, řemesla a technologie.


Maker Faire 2021 – jaké to bylo?

Jako vždy skvělé. Kutilové, tvůrci – prostě makeři – bývají zárukou skvělé atmosféry a pozitivní energie. Pro nás je zásadní, že máme možnost se ve dvou dnech potkat s velkým množstvím podobně smýšlejících nadšenců. A jak vystavovatelé tak i většina návštěvníků jistě ocenili skvělou přípravu organizátorů. Alespoň z našeho pohledu vzhledem k situaci proběhlo vše nadstandardně a i touto cestou všem dodatečně děkujeme.

Na našem stánku jste mohli vidět v provozu ESP32 s několika druhy displejů (segmentové LED, RGB maticové LED, e-ink a TFT dotykový). Zájem byl i o robotická vozítka, turingův stroj či emulátor i4004. Stihli jsme zprovoznit i Lightning Network automat s mincovníkem, kde si někteří pokročilejší uživatelé (Agama Point, General Bytes) mohli vyzkoušet druhou vrstvu bitcoinu nákupem za pár desítek korun.

Na naší plně osazenou desku RobotBoard s ESP32 jsme narazili u našich známých z pražského robodoupe.cz! Potěšil nás záměr použít jí v některém kroužku DDM (Domů dětí mládeže).

Na dalších expozicích nás zaujaly některé výborné nápady. Na obrázku vidíte modulární systém brickrknowledge.de/en, který vypadá opravdu zajímavě. Oceňuji možnost stavění i do prostoru a kreativní přístup k propojování, značení i celému konceptu.

Na stánku hwkitchen.cz nás zaujala kolekce několika stavebnic: MAKER BLOCK a Micro:bit TinkerKit od TINKERCADEMY. Vypadají velmi zajímavě a je dobře, že jsou většinou cíleny na úplné začátečníky od nejmenších dětí. Protože komplikované začátky mohou zájemce o moderní technologie poměrně rychle odradit.
Dále se nám líbila stavebnice Boffin magnetic (na stánku 3dsimo – Multilab), která skvělým způsobem vylepšuje původní myšlenku snadného spojování jednoduchých modulů. Domlouvali jsme se i o spolupráci na implementaci některých našich modulů. Bylo by to skvělé.
Samozřejmě jsme se zastavili i na stánku hamíka, kde byla k vidění plně „open-source“ stavebnice Hamík Baby (s pomocí dospělého už pro tříleté děti).

BOFFIN


Moduly octopus a stavebnice BOFFIN

Někteří naši známí používají v kroužcích elektroniky elektronickou stavebnici Boffin. Když nás oslovili s dotazem, jak by se dala tato stavebnice propojit s nějakým pokročilejším modulem připojeným k internetu, jednu jsme si vypůjčili a zkusili nějaké varianty zapojení. Během druhé poloviny prázdnin jsme se rozhodli trochu zvolnit v náročnosti a seznámit vás s i našimi jednoduchými pokusy.

Výrobce stavebnice uvádí:
Elektronické stavebnice Boffin přináší zcela novou úroveň zábavy pro všechny děti od 8 let. Pomůže pochopit základní principy fyziky i elektroniky, a to hravou formou.
Základem všech projektů je deska, na kterou se jednotlivé součástky jednoduše nacvakávají. V manuálu je popsáno, co by projekt měl dělat a co od něj očekávat. Po sestavení si můžete zkontrolovat, jestli všechno funguje.
Se stávajícími součástkami můžete vymyslet stovky dalších projektů, které nejsou popsány v manuálu nebo můžete kombinovat se součástkami a projekty v jiných stavebnicích.

https://www.agatinsvet.cz/recenze-elektronicka-stavebnice-boffin/

Připravili jsme si pár jednoduchých 3D modelů pro kompaktní mechanické propojení našich modulů se stavebnicí. (Postupně doplňujeme na github/octopusengine/hamik_cz…).
Větší oříšek bylo rychlé elegantní a hlavně spolehlivé připojení vodičů. Jelikož Boffin používá speciální patentky, zkusili jsme, zda neuspějeme v klasické galanterii. Měli jsme představu, že pomocí speciálního pájecího roztoku se nám podaří připájet vodiče, kterými bychom pak mohli připojovat naše moduly. Bohužel jsme zatím neuspěli. Ani přímo v podnikové prodejně Kooh-i-nooru se nám nepodařilo sehnat stejný rozměr, nejpodobnější je vyobrazený „knoflík stiskací nýtovací“ s vnějším průměrem 13,5 mm. Ale vyžadoval by trochu úpravy aby se dal použít. Napište nám, jakou máte zkušenost s rozšiřováním stavebice vy.
My jsme zatím využili mosazná očka a také šrouby M4. Lepší variantou by zřejmě bylo dokoupit si samostatně modré „vodičové“ moduly (například dvojici) a ty si podle potřeby upravit. Ale pro číslicovou techniku (například po komunikaci na sběrnici) patentky nemají úplně ideální spojení. V obvodu tlačítko – Ledka to asi nevadí, nějak s tím „zalomcujeme“ aby to šlo, ale pro připojení integrovaného obvodu s mnoha vývody by to určitě nefungovalo spolehlivě. Od toho jsou ale jiné stavebnice.

Jednoduchá zapojení stavebnice Boffin bývají hezky přehledná a pro úplné základy zřejmě postačí. Jednotlivé řady (100, 300, 500, …) na sebe navazují, dají se kombinovat a součástky se dají dokupovat i samostatně. Další výhodou jsou některé již hotové moduly (zvukové efekty, zesilovač a podobně). Sice údajně umožňuje vytvořit velké množství projektů, ale stále jen na poměrně jednoduché úrovni. Trochu mi také chybělo detailnější (nebo občas alespoň nějaké) vysvětlení, proč je něco zapojeno zrovna tak. I kdyby to bylo nepovinné drobným písmem. Domnívám se, že hlubší pochopení umožní nespoutanější samostatné tvoření.


Přímo jsme samozřejmě mohli využít svítivé diody, spínače či tlačítko, ale stejně jsme měli připojeno i nepájivé pole. Někdy totiž potřebujeme tranzistor nebo kondenzátor navíc a koncept úplně nemíří na číslicovou techniku (hradla, displeje a podobně). Propojení s ESP32, především pak možnost komunikace přes Bluetooth či po internetové síti bylo jistě přínosným rozšířením. Ale pro pokročilejší bastlíře mohou mít význam jen některé vybrané moduly. Stavebnice Boffin je tedy spíš pro mladší (kolem deklarovaných osmi let) nebo pro úplné začátečníky. Pokročilejší si potřebných šest součástek zapojí do nepájivého pole.

Zajímá to i úplně nejmenší 😉

Speciální řídící moduly

Speciální řídící moduly 1

V systému „chytrých“ projektů máme velmi často nějakou centrální řídící část. Někdy se ale využívají do jisté míry samostatné (autonomní) prvky. Může to být z důvodu spolehlivosti, bezpečnosti, rychlosti nebo z nějakého specifického jinými metodami velmi těžko realizovatelného zadání. Už jsme psali o obyčejném termostatu (například pro triviální regulaci pokojové teploty). Zde není přínosné, aby se nastavování teploty muselo trvale spoléhat na centrální prvek nebo internetové připojení.

V tomto a ještě v příštím díle si povíme o některých speciálních řídících modulech.

  • PLC (programmable logic controller)
  • PID regulátor
  • MLP – mutilayer percetron

PLC – programovatelný logický automat

PLC je relativně malý průmyslový počítač používaný pro automatizaci procesů v reálném čase – řízení strojů nebo výrobních linek v továrně.

OctopusLAB má ve svém portfoliu unikátní kompaktní model, jehož jádro tvoří námi oblíbený mikrokontrolér ESP32 a open-source firmware máme i ve verzi napsané v MicroPythonu. Zatímco hardwarová část je po roce vývoje už ve třetí verzi, software máme zatím na začátku. Naše základní PLC se vejde do klasické šestimodulové DIN krabičky, disponuje možností připojení k internetu pomocí LAN modulu (kvůli silněji rušeným průmyslovým provozům se nechceme spoléhat na WiFi).

Na desce máme čtveřici galvanicky oddělených vstupů a výstupů. Dále samostatnou zdrojovou část, modul reálného času, externí paměť EEPROM, komunikační 485 modul a možnost rozšíření pomocí sběrnice OCTOBUS.
Na samostatném LAN shieldu je možnost osazení POE modulu (Power over Ethernet – pro napájení po LAN síti).


PID regulátor v chytrém grilu

PID patří mezi spojité regulátory, složený z proporcionální, integrační a derivační části. Oproti jednoduchému zpětnovazebnímu regulátoru (který má jen složku P) při správném nastavení konstant P, I a D nedochází k nežádoucím překmitům, čehož jsme využili při regulaci elektrického grilu. Původní zapojení našeho grilu spínalo klasickým termostatem ale s nežádoucí hysterezí. Nastavovalo se „nějaké číslo“ 1-6 a například pro 3 se to nahřálo na 100, topení vypnulo, stejně se to ale setrvačností dotopilo na 120 a pak to chladlo na 80, než se to zase zapnulo.

Ovládací potenciometr, kterým nastavujeme přímo teplotu, je připojen ke kontrolnímu displeji. Pro vstup jsme použili dva teploměry (testujeme, jak se chovají): Termočlánek typ K a odporový PT1000 (v provedení pro použití na měření vyšších teplot). PLC shield s PID regulátorem řídí topnou spirálu grilu pomocí PWM (pulsně šířkové modulace) přes SSR (elektronické „relé“ – solid state relay).


Knihovna, kterou jsme používali: github.com/octopusengine…/lib/PID.py
Na vedle položením notebooku jsme si nechali vykreslovat jednotlivé PID složky, abychom viděli, jak regulátor pracuje. Vše se podařilo nastavit za poměrně krátkou dobu a gril pracoval už ve zkušebním provozu mnohem lépe, než v původní obyčejné verzi.




Speciální řídící moduly 2

Na obrázku je osazená a oživená „sendvičová“ sestava PLC. Úplně dole je PLC shield (zelená deska), následuje ESP32 board a LAN shield navrchu.
Na LAN shieldu je osazen i POE modul (Power over Ethernet – pro napájení po LAN síti).

Na tomto obrázku je vývojová sestava se dvěma PLC moduly pro kaskádové spínání až osmi stykačů (3 x 25 A, ovládací napětí cívky: 24 V). Počítač Raspberry Pi slouží pro dálkové nahrávání nového firmware (pouze ve vývojové fázi). Sériovou linku 485 využíváme pro odečítání dat z elektroměru.

PLC používáme i v domácí sestavě monitoringu malé solární elektrárny. Aktuálně máme na střeše dva panely o celkovém výkonu 500 Wp (Wattpeak, což udává nominální výkon za ideálních podmínek). Původní 12V olověné akumulátory (trakční 2 x 120 Ah) jsme letos nahradili technologií LiFePo (také 2 x 12V / 110 Ah). Dnes PLC modul slouží pouze k měření napětí a teploty na bateriích a tyto hodnoty následně přes WiFi posílá do naší databáze na cloudu. V plánu je doplnit systém i o řízení solárního regulátoru a distribuci akumulované enegrie.


Pokud vás zajímá beta verze programové část PLC:
github.com/octopusengine/octopuslab/…/components/plc

MLP – neuronová síť

Vycházíme z knihovny MicroMLP a micro artificial neural network multilayer perceptron – kde je trochu nadneseně zmíněn termín artificial (z AI – umělá inteligence) a neural network – což je neuronová síť.

Na jednoduchém příkladu s digitálními vstupy se neuronová síť „naučí“ požadované chování. V našem případě bylo vzorem logické hradlo (logical gate), jako jakási černá skříňka (black box), která má tři vstupy a jeden výstup. Dva vstupy vedou do klasického hradla a jeden slouží k přepínání (OR nebo AND). Toto jednoduché zadání se síť naučí za necelých 30 vteřin. Máme v plánu tento sw modul integrovat spolu s PID i do našeho PLC. Systém by se mohl sám učit a optimalizovat požadované hodnoty řízených procesů. Jsme na úplném začátku, ale doufáme, že dospějeme k nějakým v praxi použitelným výsledkům.

Pro zajímavost můžete prostudovat knihovnu, jak je to naprogramováno: github.com/octopusengine…/lib/microMLP.py
a vyzkoušet si popsaný příklad:
github.com/octopusengine/…/examples/neuronal_netw/and-or-ram.py
Naše MLP si velmi často odkládá data na persistentní paměť. Protože v embedded běžně používaná Flash paměť se při opakovaných zápisech poškozuje, není pro tento účel vhodná. Proto jsme v uvedeném případě testovali pro tento účel RAMdisk.





iot-mqtt-panel

IoT MQTT panel | MQTT explorer

MQTT nám umožňuje poměrně jednoduše nastavit a spolehlivě provozovat velký počet IoT zařízení. Jednou z dalších výhod protokolu MQTT je celá řada dostupných programů a aplikací pro konfiguraci i vlastní ovládání. Stačí si do „chytrého mobilu“ nebo tabletu nainstalovat některou z nich a během chvilky je můžete využívat pro své projekty.

Tentokrát vám představíme aplikaci (pro Android) s názvem IoT MQTT panel (obrázek představuje ikonu, pod kterou jí poznáte). Tato aplikace vám umožní snadno spravovat a vizualizovat jednoduché projekty IoT.
V mobilních aplikacích pro MQTT (a tato není výjimkou) se typicky nastaví přihlášení k brokeru a pak se vytváří množství kontrolních prvků (widgetů) – tyto využívají publish a/nebo subscribe na jednotlivé zprávy, pomocí nichž ovládáte nebo monitorujete jednotlivá zařízení.

Vybrané vlastnosti a funkce:

  • Aplikace běží na pozadí a znovu se připojuje automaticky. Může proto fungovat „24/7“.
  • Podporuje protokol MQTT (TCP) i Websocket.
  • SSL pro bezpečnou komunikaci (zabezpečený protokol).
  • Podpora JSON pro odběr i publikování strukturovaných zpráv.
  • Panely se k odběru přihlašují automaticky a proto se aktualizují v reálném čase.
  • Navrženo pro efektivní práci s veřejným brokerem (pomocí předpony zařízení).
  • Odeslané a přijaté časové razítko (timestamp) od brokera.

Připravili jsme dvě samostatná zařízení EDU_KIT1. Zatímco na jednom využíváme jen vestavěnou LED a displej (na obrázku vlevo), na druhém jsme připojili navíc RGB panel (4×4) a servo. Obě zařízení používají stejný kód:
github.com/octopusengine/…/examples/mqtt/mqtt-edu-kit.py
a ovládací prvky v aplikaci IoT MQTT panel jsme umístili do společného panelu:

Na obrázku vidíte použití některých vybraných komponent (ovládacích a zobrazovacích prvků). Aplikaci připojte ke stejnému MQTT brokeru, jako jednotlivá zařízení. Na základní experimentování můžete opět zkusit veřejně dostupného brokera, kde nastavíte: „mqtt_broker“: „broker.hivemq.com„, „mqtt_ssl“: 0. Připojení je pak signalizováno mráčkem v oranžovém poli nahoře.
Pro každý prvek si definujte takzvaný Topic, což je jednoznačná identifikace jednoho zařízení nebo skupiny zařízení a jejich komponent. Například pro EDU_KIT používáme komponety Led (vestavěná LED dioda), RGB (barevná WS dioda nebo panel 4×4), Button (tlačítko boot na modulu Do-It). Případně se dají přímo použít i Displ7 (pro připojený displej) nebo Servo (jako ve druhém modulu).


Pro lepší porozumění MQTT i snadnější práci a ladění doporučujeme vyzkoušet i desktopovou aplikaci http://mqtt-explorer.com/. Program je ke stažení pro všechny platformy (Linux, Mac i Windows) a práce s ním je poměrně intuitivní, (koukněte se na video z předchozího odkazu). Nejdříve si opět nastavíte MQTT brokera (třeba nějakého veřejného nebo ve vlastním počítači přes Node Red) a pak uvidíte veškeré probíhající „komunikace“. V ukázce jsme se připojili k zařízení (device) „…abb35“ (dáno svým jedinečným identifikačním číslem UID) a pomocí „příkazu“ (klíčového slova) rgb jsme poslali hodnotu #000032, čímž jsme na konkrétním zařízení rozsvítili RGB Led diodu modře. Celý topic je pak:
octopus/device/…abb35/rgb, kde „…abb35“ je celé UID, zde zkracujeme, aby se vešlo.

Máte už nějakou zkušenost s MQTT? Napište nám na info@octopuslab.cz, jaké projekty realizujete a jaké aplikace k tomu používáte. Ozvěte se i pokud vám něco nebylo jasné nebo vám něco nefungovalo.












co se už nevešlo:

Jednoduchá ukázka a uživatelská příručka: snrlab.in/iot/iot-mqtt-panel-user-guide/


Předchozí díly:
https://www.octopuslab.cz/mqtt/
https://www.octopuslab.cz/smart_home/

Intel 4004 slaví padesátiny!


46. díl – OctopusLAB
Intel 4004 slaví padesátiny!

Čtyřbitový mikroprocesor Intel4004 byl prvním komerčně dostupným procesorem a předchůdcem osmibitové řady 8080. A jelikož spatřil světlo světa v roce 1971, slaví letos kulaté výročí. Rozhodli jsme se proto vytvořit speciální emulátor na EDU_KIT1 (ESP32 + Micropython), který můžete naživo vidět na letošním Maker Faire Prague 21.

Tento velmi „primitivní“ procesor se používal v jednoduchých kalkulačkách, pro řízení tiskáren a v dalších (dnes již mnohdy zapomenutých) projektech. Princip mikroprocesoru však v základu zůstává stejný. Proto by si vážní zájemci o číslicovou techniku měli alespoň na chvíli pohrát s tímto úžasným kouskem z historie. Sehnat a zprovoznit originál nemusíte, protože základ emulátoru už máme skoro rok v provozu:
https://github.com/octopusengine/micropython_4004-emul

První verze měla čtyřbitový vstup (páčkové přepínače) a čtyřbitový výstup (Ledky, na kterých jsme zobrazovali obsah střadače).

Není snadné popsat fungování celého procesoru v krátkém odstavci. Ale zjednodušeně: Program tvoří posloupnost instrukcí. Prováděná instrukce se načte do Instrukčního registru a je dekódována na sled dílčích kroků, které se mají vykonat.

Základem bývá práce aritmeticko-logické jednotky (ALU), ve které provádíme operace se střadačem (A – Accumulator) a vybraným registrem (R0-R15). Registry jsou čtyřbitové a složení osmibitového „Byte“ se provádí jejich sdružováním do dvojic (register pair). Práce s externí pamětí je složitější, musíme vždy nastavit adresu a až pak číst nebo zapisovat data.

Strojový kód

V následujícím odstavci můžete vidět fragment přesného souboru instrukcí přímo určený pro procesor i4004. Na prvních mikropočítačích jsme takovéto bloky natvrdo přepisovali do stroje (například PMI80). Je to hexadecimální zápis (šestnáctková soustava 0-F), kde 0 = 00 a 255 = FF).

[000] 20 00 22 00 DC B2 21 E0 
[008] F2 71 06 60 72 06 20 00 
[010] 22 00 DC B2 21 E4 F2 E5 
... 

I pro zkušeného programátora je strojový kód obtížně čitelný a ani bezchybně ho přepsat nemusí být úplně snadné. Proto se používá takzvaný Assembler, kterému je rozumět podstatně lépe. Jedná se o nízkoúrovňový programovací jazyk symbolických instrukcí. Jeho základ tvoří symbolické reprezentace jednotlivých strojových instrukcí a konstant potřebných pro vytvoření strojového kódu programu pro určitý procesor.
První řádek výše uvedeného strojového kódu přepsaný do assembleru pak může vypadat takto:

20 00 22 00 DC B2 21 E0 
-------------------------
[000] 20 00   FIM P0, $00 ; (Fetch Immediate reg, data) P0:=0
[002] 22 00   FIM P1, $00 ;  P1:=0
[004] DC 12   LDM 12   ;    (Load Immediate data) A:=12 
[005] B2      XCH R2   ;    (Exchange reg) R2:=A
[006] 21      SRC P0   ;    (Send Register Control)
[007] E0      WRM      ;    (Write Main Memory)
...  

Celý článek (odkazy i instrukční sada) je na stránkách OctopusLAB: octopuslab.cz/intel-4004-slavi-padesatiny. Pokud si chcete vyzkoušet jednoduché základy, existuje i on-line simulátor: http://e4004.szyc.org/emu/. Principy, které si osvojíte, se jen v malých obměnách používají i v dnešních procesorech.


Co se asi už do papírové verze nevejde >


Instrukční sada

Mnemonic   Instruction              MODIFIERS
   NOP     No Operation             none
   JCN     Jump Conditional         condition, address   
   FIM     Fetch Immediate          register pair, data        
   SRC     Send Register Control    register pair
   FIN     Fetch Indirect           register pair         
   JIN     Jump Indirect            register pair        
   JUN     Jump Uncoditional        address    
   JMS     Jump to Subroutine       address    
   INC     Increment                register     
   ISZ     Increment and Skip       register, address
   ADD     Add                      register
   SUB     Subtract                 register
   LD      Load                     register
   XCH     Exchange                 register
   BBL     Branch Back and Load     data
   LDM     Load Immediate           data
   WRM     Write Main Memory  
   WMP     Write RAM Port     
   WRR     Write ROM Port     
   WR0     Write Status Char 0    
   WR1     Write Status Char 1    
   WR2     Write Status Char 2    
   WR3     Write Status Char 3    
   SBM     Subtract Main Memory   
   RDM     Read Main Memory   
   RDR     Read ROM Port      
   ADM     Add Main Memory        
   RD0     Read Status Char 0 
   RD1     Read Status Char 1 
   RD2     Read Status Char 2 
   RD3     Read Status Char 3 
   CLB     Clear Both     
   CLC     Clear Carry        
   IAC     Increment Accumulator  
   CMC     Complement Carry   
   CMA     Complement     
   RAL     Rotate Left        
   RAR     Rotate Right       
   TCC     Transfer Carry and Clear   
   DAC     Decrement Accumulator  
   TCS     Transfer Carry Subtract    
   STC     Set Carry    
   DAA     Decimal Adjust Accumulator 
   KBP     Keybord Process    
   DCL     Designate Command Line

[000] 20 00 22 00 DC B2 21 E0 
[008] F2 71 06 60 72 06 20 00 
[010] 22 00 DC B2 21 E4 F2 E5 
...  

Celý výše uvedený kód:

000 20 00 FIM P0,$00
002 22 00 FIM P1,$00
004 DC    LDM 12
005 B2    XCH R2
006 21    SRC P0
007 E0    WRM
008 F2    IAC
009 71 06 ISZ R1,$06
00B 60    INC R0
00C 72 06 ISZ R2,$06
00E 20 00 FIM P0,$00
010 22 00 FIM P1,$00
012 DC    LDM 12
013 B2    XCH R2
014 21    SRC P0
015 E4    WR0
016 F2    IAC
017 E5    WR1
018 F2    IAC
019 E6    WR2
01A F2    IAC
01B E7    WR3
01C F2    IAC
01D 60    INC R0
01E 72 14 ISZ R2,$14
020 40 20 JUN $020

Další odkazy

https://dbpedia.org/page/Intel_4004 (HW replika)
https://thehistoryofhowweplay.wordpress.com/2018/09/11/microprocessors/
https://www.4004.com/mcs4-masks-schematics-sim.html (kompletní souhrn)
http://www.vintagecalculators.com/html/busicom_141-pf_and_intel_4004.html (historické kalkulátory)
https://cs.wikipedia.org/wiki/Von_Neumannova_architektura


Další stavebnice jsou trochu pokročilejší:
EK1 roboti
EDU_KIT2
EDU_KIT3



Průběžně doplňujeme on-line dokumentaci pro projekty s ESP32. S popisem knihoven, ukázkami kódu a tutoriály.
Můžeme se domluvit na individuálním workshopu nebo konzultaci. V našem labu máme i většinu modulů, co používáme v ukázkách. Ozvěte se nám na info@octopuslab.cz.


3d-koncept

10. EDU_KIT1

Hlavní „stavebnice“ – pro výuku i rapid prototyping…
podrobnější popis: https://www.octopuslab.cz/edu-kit1/
Základem je Robot board: https://www.octopuslab.cz/vyvojove-desky/robot-board/

11

EDU_KIT basic – stavebnice – základní součástky (bez modulu ESP32 doit)

12

EDU_KIT1 v klasické elektroinstalatérské krabičce

13

15


20. EDU_KIT2

ESP32board + EDUshield1 + OLED displej:
Popis: https://www.octopuslab.cz/edu_kit2/

21

postanice do „racku“

22

Projekty: E-rouška,
Inteligentní pokojový Termostat
nebo Parallel garden – automatické hyroponie

23

zjednodušená varianta na ESP32boardu

30 – EDU_KIT3

zatím připravovaný koncept
ESP32board + externí RAM + barevný TFT displej

40 – CUBE

EDU_KIT1 + EDU_KIT2 + mechatronika
propojovací platforma

41

42

50 – BOXES – parts

51


60. Robotické vozítko


70. Mechatronika – kreslítka









90. Mertkur – Totem (metrické dírky)


(1) obecné maličké dílky

  • spojovací, pro Arduino, Raspberry, Merkur i Totem
  • distance (M3 výška 5/10/15..?)
  • spojka dist 10 + l20 + dist 10
  • rohová spojka na výrobu krabiček
  • propojovací dílky a redukce
  • rastrový prvek – záda, modul..
viz detailní spojení displej + deska (uprostřed obrázku)

2) krabičky – stavebnice Octopus BOX

  • dominantně octopus
  • modul 82×82, 1/3, 2/3

3) doplňková krabička

  • k transpaentní
  • nositelný náramek / ledvinka?

(4) sedmisegmentovky

samostané na nějaké podložce?
nebo celek 7 segmentů

(5) ovládání jeřábu

(možno 2/3) -> autíčko (6) a další (7)

  • obecná „příhradovina“? a dílčí prvky k motorům či servu

6) robotický podvozek – uchycení motorů / kol

  • modul uchycení DC motoru
  • modul celého podvozku – 2 motory
  • malý podvozek (MS)

7) mechatronika – servo dílky

  • pro kráčejícího robota nebo kreslítko
  • lineární posun

8) robotické ruka / rameno / klepeto

rozšíření bodu 7

9) co by se ještě mohlo hodit?

¨pomocná „ruka“ – držák


jak opracování?
vrtání?
samořezný vrut?
lepení?