Maple Mini - STM32F103RCBT6 fejlesztői lap

A DIY közösség programozni tudó része az Arduino, a programozni kevésbé tudó része leginkább az ESP8266 és az újabb ESP32 WiFis fejlesztői lapokra alapozza okoskütyüit - legalábbis azok biztosan, akik olcsón és könnyen akarnak valami működőt építeni. Az ESP-használók rengeteg kész projektből meríthetnek ötleteket és rengeteg kész firmware segíthet működőképessé tenni elgondolásukat, mint például az ESPEasy, a Tasmota, ESPurna.

De mi a helyzet azokkal, akik valami okból ódzkodnak az egész vezeték nélküli témától?

Nos ők vehetnek kész megoldásokat, mint például a LAN controller 3.0 vagy a már korábban általam említett ArduinoEasy firmware és egy Arduino Mega segítségével építhetnek maguknak egy eszközt. Azt már itt tisztáznám, hogy ezzel a leírással nem a keményvonalas programozókat célzom meg, akik megírják az összes eszközükre külön a működtető programokat, hanem azoknak, akik hozzám hasonlóan az univerzális dolgokat preferálnák, egyszer feltöltik a programot, majd webes felületen keresztül beállítják, mi hogyan működjön benne.
Ahogy már az ArduinoEasy-ről szóló cikkben kitértem rá, az Arduino-k korlátozott sebessége és minimális erőforrásai (8kB memória) nem igazán teszik alkalmassá egy bonyolultabb sketch (program) stabil futtatására, ezért is kezdtem keresni alternatívát. Első és egyben legolcsóbb használhatónak tűnő jelöltem a "Maple Mini" néven futó STM32F103CBT6 hangzatos nevű központi vezérlővel szerelt fejlesztői lapka. Erről azt érdemes tudni, hogy igazság szerint már pár éve nem gyártja a LeafLabs, ellenben az azonos tervek alapján készült, azonos funkcionalitást biztosító klónjait ontják magukból a kínai gyárak. [Forrás]

maplemini.jpg
Maple Mini

Ez talán az egyik legnépszerűbb STM32 lapka, az F103-as család közepes tagja, 128kB tárhellyel (ekkora program fér rá maximum) és 20kB memóriával. Tesztjeim alapján ez a memóriamennyiség már elégséges az ArduinoEasy stabil futtatásához, a tárhely viszont éppen csak sikítva elegendő, fordítás előtt több lehetőséget ki kell kapcsolnunk a kódban, sajnos többek között az MQTT támogatást is, ami önmagában 50kB körüli kódméretet igényelne, az egész végeredmény pedig 180kB körüli.. látható tehát, hogy a 128kB eléréshez kicsit ügyeskednünk kell. (Aki ennek ellenére mégis a kisebb testvér C8T6-ot vásárolja be magának 64kB tárhellyel, az ArduinoEasy nem fog rámenni, már kezdheti is izzítani a klaviatúrát, hogy megírja magának a működtető programot.)
Azt sem árt tudni, hogy a miniUSB csatlakozón keresztül fel tudjuk tölteni rá a programunkat, viszont ennek kezelését egy, a flash tárhely elején levő, úgynevezett "bootloader" intézi, ami gyárilag vele érkezik és 20kB a mérete, ezzel számunkra 108kB-ot hagyva.. ezt lehetőségünk van lecserélni egy újabb és kisebb bootloader 2.0-ra, ami már csak 8kB méretű, és így 120kB tárhely marad a teljes programunknak. A harmadik lehetőség, hogy az RX-TX lábaira egy külső USB-s programozót kötünk, és a teljes 128kB-ot használjuk a saját programunk tárolására, a bootloadert ezzel törölve, és természetesen az USB csatlakozót ettől kezdve nem tudjuk használni programfeltöltésre.
Megjegyzés: a dedikált USB csatlakozás közvetlenül az STM32-ről van kivezetve, ezért nincs benne külön UART chip, mint az ESP fejlesztői lapokon.


A Maple Mini-hez 1000 Ft / 3 dollár körüli áron lehet hozzájutni, ami nem áll messze az ESP8266 árkategóriájától, viszont külön kell megvásárolni hozzá a LAN csatlakozást biztosító W5500-at, amiért még egyszer ennyit (1000 Ft / 3 dollár) le kell szurkolnunk.

w5500_module.jpg
W5500 lap

Tehát cirka 2000 Ft-ból tudunk hasonló célt ellátó vezetékes eszközt gyártani, mint amire a 800Ft-os vezeték nélküli ESP8266 D1 Mini önmagában alapból alkalmas.

A lábkiosztás az alábbi:

maple.jpg

Ha visszapillantunk az előző képre, a lapra szitázva a lábak sorszámai láthatóak, ezen pedig a lábak valódi megnevezései. Pl a MOSI1/PA7 az első képen a 4-es számú láb, az SPISEL1/PA4 pedig a 7-es számú stb..
A chip alapvetően 3.3V-os logikával dolgozik, ám bizonyos lábai boldogulnak az 5V-os bemeneti jelszintekkel is - a rajzon tömör fekete pöttyökkel jelzik, melyek ezek. A PWM kimeneti (16bites) funkcióra és az Analóg bemeneteket (12bites) fogadni képes lábakat is megjelölték - ezekből jóval több van, mint az ESP8266 esetében volt. Tápellátása történhet normál miniUSB kábelen (5V DC) keresztül, vagy a VIN lábat használva, ez utóbbi esetben 3-12V DC tápellátás szükséges.

A program lefordítása és feltöltése

A fordításhoz és feltöltéshez az Arduino IDE-re lesz szükség, egyúttal az STM32-höz szükséges könyvtárakat is fel kell telepítenünk. Több, egymástól eltérő Arduino hardvertámogató-réteg (Core) is létezik STM32-höz:

  • az eredeti "régi", ami kiforrottabb, viszont nem nagyon frissül mostanában az a Roger Clark féle:
    https://github.com/rogerclarkmelbourne/arduino_stm32
  • az új "hivatalos", ami gyakran frissül, viszont az F103 családon belül a nagyobb tárhellyel szerelt változatokat nem támogatja alapból:
    https://github.com/stm32duino/Arduino_Core_STM32

Mivel szereztem be RCT6 és RET6 modulokat is, amelyeket a hivatalos Core még nem támogat, ezért egyelőre a Roger Clark féle használatára írtam át az ArduinoEasy szükséges részeit a beüzemeléshez. Előre bocsájtom, hogy nem használok Windowst, és bár az alábbiakhoz hasonlóan meg lehet oldani azon is, minden alábbi lépés Ubuntu Linux alatt tesztelve.

  1. Töltsük le innen az Arduino IDE-t a gépünkre, csomagoljuk ki:
    https://www.arduino.cc/en/Main/Software
  2. Indítsuk el az Arduino IDE-t
  3. Az Eszközök->Alaplap->Alaplap-kezelőben válasszuk ki és telepítsük az "Arduino SAM boards (Cortex-M3)" nevű alaplapot
  4. Töltsük le a https://github.com/rogerclarkmelbourne/Arduino_STM32/archive/master.zip címről az STM32 alaplapot
  5. Tömörítsük ki a letöltött ZIP állományt a ~/Arduino/hardware/Arduino_STM32 mappába (hozzuk létre, ha nincs hardware mappa itt)
  6. Futtassuk root joggal vagy sudo-val az ebben található tools/linux64/install.sh parancsfájlt, ami beállítja az udev szabályokat (ha esetleg nem futtatható az állomány, akkor a chmod a+x install.sh segít ezen, sőt ha már itt vagyunk a tools/linux és a tools/linux64 mappában levő fájlok többségének érdemes futtatható jogot beállítani)
  7. Az Arduino IDE újraindítását követően már látni fogja ezt az új alaplapot is, az Eszközök->Alaplap alatt:arduino_board.jpg

Miután sikerült az Arduino IDE-t és az STM32 Core fájlokat letöltenünk, lépjünk be egy szimpatikus könyvtárba,  és töltsük le a patchelt ArduinoEasy forrását git-el:

git clone https://github.com/enesbcs/ArduinoEasy.git

vagy szimplán töltsük le ZIP-ként:

wget https://github.com/enesbcs/ArduinoEasy/archive/master.zip

és tömörítsük ki.

A parancs nyomán létrejött ArduinoEasy mappán belül található lib mappából a Base64-et másoljuk át kompletten a ~/Arduino/libraries/ alá, hogy az Arduino IDE megtalálja fordításkor, kivéve ha nem akarjuk használni a Domoticz HTTP protokoll jelszóval hitelesítő részét, mert akkor nemes egyszerűséggel inkább módosítsuk az "ArduinoEasy-Globals.h" állomány tartalmát, és az ott levő #define FEATURE_BASE64 után levő true feltételt írjuk át false -ra, és ekkor nem fogja keresni a Base64 könyvtárat. (de erről még lesz pár szó egy bekezdés múlva)

Az Arduino IDE-nek van egy - számomra - érdekes tulajdonsága, miszerint olyan nevű mappában kell lennie a () .INO fájlnak, mint maga a fájlnév. Mi a teendő? Az ArduinoEasy-n belül található src mappa tartalmát átmásoljuk pl az ~/Arduino/projects alá, hogy kéznél legyen, és ilyen formában a ~/Arduino/projects/ArduinoEasy mappa alá kerül közvetlenül minden .ino állomány, az ArduinoEasy.ino is, amit most már meg tudunk nyitni az Arduino IDE-n belül, és elvileg nem fog sopánkodni...
(Nyilván mindenki rájött eddigre, aki nem tudta volna, hogy az INO kiterjesztésű fájlok tartalmazzák az Arduino számára lefordítható C forráskódot, mellette a .h fájlokban láthatóak pedig a definíciók)

FORDÍTÁS ÉS KÖZVETLEN ELŐKÉSZÜLETEI

Ha sikerült megnyitnunk a fentiek után az ArduinoEasy.ino -t, akkor keressük ki a fülek közül az Arduino-Globals.h-t:

maple_arduino_compile.jpg

Ezen a ponton komolyan el kell gondolkoznunk, hogy mire akarjuk majd használni a kütyünket, hány eszközt akarunk implementálni benne és milyen típusúakat, mivel ki kell választanunk és csak azokat és annyit belefordítani, amire szükség lesz - mivel nem vagyunk bővében a helynek.

Első és legfontosabb döntésünk, hogy mennyi tárhellyel tudunk gazdálkodni. A gyárilag érkező bootloader-t használva igazából nem hiszem, hogy le lehet csontozni az ArduinoEasy-t hogy 108k-ba minden beleférjen.. ha nem használunk bootloader-t, akkor az egész 128k-val (131072 byte) gazdálkodhatunk, de most tételezzük fel, hogy hozzám hasonlóan a bootloader 2.0 használata mellett döntünk, ami lehetővé teszi a későbbi USB kábelen keresztüli könnyű feltöltést és 120kB tárhely használatát teszi lehetővé. (128220 byte)

A következő eldöntendő dolog, hogy megelégszünk 4 TASK használatával, vagy 8 TASK-ra is szükségünk lehet? TASK minden felvett eszköz az ESPEasy terminológiában, ami egyébként a webes felületen egy kattintással felvehető eszközt jelent. (ESPEasy ismerete előny...) 4 TASK esetén 4kB méretű lesz a szükséges adatpartíció, 8 TASK esetén 6kB, vagyis a programkód számára felhasználható hely 118784 byte vagy 116736 byte ezekben az esetekben, tőlünk függően. Ezt a döntésünket a #define TASKS_MAX segítségével állíthatjuk be.

A #define sorokról annyit kell tudni első körben, hogy két főbb fajtája van, az egyik esetben az a lényeg, hogy egy adott változó definiálva van-e vagy nincs, ebben az esetben úgy állíthatjuk a beállítást, hogy két darab per jelet írva elé kikommenteljük // ez esetben ez a feltétel megszűnik létezni, vagy töröljük a komment jeleket, és a fordító figyelembe veszi, hogy ezt a definíciót szeretnénk használni.
A másik fajtája, ami után van egy logikai/szám/szöveges érték, amit a fordító kiértékel fordítás soron, és attól függően illeszt be bizonyos kódrészeket.

Amennyiben a DEFAULT_USE_STATIC_IP értéke true, akkor az alatta levő DEFAULT_IP-t fogja használni az eszköz a hálózaton, ha false az értéke vagy 0-val írjuk tele az IP cím helyét, akkor DHCP-n fog magának IP címet kérni.

Az alábbi beállításokkal sikerült 115960 byte méretű kódot fordítanom a Maple Mini alaplapra, boatloader 2.0 beállítással, 8 TASK-ra. (de több jó megoldás lehet, mindenki olyat legóz magának össze, amire szüksége van)

//#define EthernetShield // uncomment if using a complete shield with W5100 !! - IF commented than single W5500 is the default on SPI1
#define NETSPD_FUNC // comment this line if you do not want to set W5500 LAN speed 10/100 manually
#define FEATURE_SD false // enable if no STM32 flash storage available ~10-17kB
#define FEATURE_UDP true // needed for DHCP,NTP,P2P ~5kB
#define FEATURE_BASE64 true // needed for C001 password encoding -640bytes
#define FEATURE_I2C false // ~1.8kB needed for I2C plugins, STM32 SDA=PB7,SCL=PB6

#define FEATURE_MQTT false // NEEDED for MQTT protocols ~3kB
#define FEATURE_NODELIST_NAMES true // 80bytes
#define FEATURE_NODELIST_NAMESSIZE 10
#define FEATURE_NOISE true // add tone and rtttl commands to p001 ~2kB
#define FEATURE_SERIAL false // provide serial data to plugins - 256bytes
#define FEATURE_WEBLOG true // 184bytes
#define FEATURE_DASHBOARD false

#define USES_C001 // Domoticz HTTP ~2kB
//#define USES_C002 // Domoticz MQTT ~48kB
//#define USES_C005 // OpenHAB MQTT ~4kB

#define USES_P001 // Switch ~4-6kB
#define USES_P002 // ADC 344bytes
//#define USES_P003 // Pulse ~1.8kB
//#define USES_P004 // Dallas ~2kB
#define USES_P005 // DHT ~1.3kB
//#define USES_P010 // BH1750 848bytes
//#define USES_P014 // SI7021 ~1.4kB
//#define USES_P023 // OLED (experimental, font size halved) ~3.8kB
#define USES_P026 // SysInfo 640bytes
//#define USES_P028 // BMx280 ~9kB
//#define USES_P029 // Output 184bytes
#define USES_P033 // Dummy 928bytes
//#define USES_P034 // DHT12 528bytes
//#define USES_P051 // AM2320 720bytes

#define TASKS_MAX 8

A pluginek egyébként szinte azonosak, mint az ESPEasy-ben használtak, így ott szerzett gyakorlatunkat kamatoztathatjuk ennél a fordításnál. :)
A fenti konfig egy W5500 használatát feltételezi, engedélyezi az UDP-t használó részek - DHCP, NTP, ESPEasy P2P - használatát, a Domoticz HTTP kontrollert a gpio, pwm, tone, rtttl parancsokat, az analóg plugint, a DHT22-t a SysInfo és Dummy pluginokat fordítja még bele a kész binárisba.

Hogy mekkora méretet sikerült elérnünk azt a Vázlat menü-> Ellenőriz/Fordít pontjával deríthető ki, amit mindenféle kockázat nélkül bármikor elvégezhetünk, ekkor még nem kell az eszközt csatlakoztatnunk, nem történik feltöltés, csak lefordítja a kódot és kiírja a méretét.

FIGYELEM!
Amennyiben a kódméret nagyobb, mint az általam fentebb írtak és mégis feltöltjük az eszközre, akkor a program vége felül lesz írva a beállításokkal, ami nem kívánt mellékhatásokkal, lefagyással, stb fog járni, amiért semmilyen formában felelősséget vállalni nem tudok! Ha szűk a rendelkezésre álló kapacitás, nagyobb flash tárhellyel rendelkező chipbe kell beruházni.. (erről is készül majd cikk a későbbiekben)

FELTÖLTÉS

Amennyiben sikerült megfelelő méretű kódot generálnunk, lépjünk is tovább, a feltöltés témakörére.

Ha frissen érkezett MapleMini lapunkat miniUSB kábellel a Linuxos PC-nkre csatlakoztatjuk a dmesg | tail parancs az alábbihoz hasonlót fog mutatni jó esetben:

usb 2-1.5: USB disconnect, device number 6
usb 2-1.5: new full-speed USB device number 7 using ehci-pci
usb 2-1.5: New USB device found, idVendor=1eaf, idProduct=0004
usb 2-1.5: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 2-1.5: Product: Maple
usb 2-1.5: Manufacturer: LeafLabs

Ez azt mutatja, hogy a gyári 20kB méretű bootloader a helyén van, válaszol és már akár tölthetnénk is fel az Arduino IDE Upload gombjára kattintva bármi olyan kódot, ami 108k vagy kisebb... de mivel ez nekem pl kevéske, és szerintem másnak is annak bizonyul, térjünk át arra a kérdésre, hogyan fogunk ezen javítani. Megjegyzés: ha erre a sima bootloader-rel rendelkező chipre próbáljuk feltölteni a bootloader2.0 módban a programunkat, a nélkül, hogy feltöltenénk magát a bootloader2.0-t előbb, csúnya meglepetésben lesz részünk!

A megoldás, egy külső soros-USB csatoló, például a már ESP8266-oknál sikerrel használt CP2102 is lehet, amit az alábbi módon kell a Maple Mini-re kötni:

maple_uart.jpg

Mit is látunk?

Az RX-TX lábak keresztbekötésén túl a tápellátást kell bekötnünk, valamint a BOOT0 lábat HIGH, a BOOT1-et pedig LOW szintre kell húzni, ezzel jelezve, hogy most soros programfeltöltő módba léptünk.

CP2102 MapleMini
RXD D26/TX1
TXD D25/RX1
GND GND
3V3 VCC
3V3 BOOT0
GND BOOT1

 

Ha az STM32 Core-t a fentebb írt helyre csomagoltuk ki, akkor az alábbi mappában megtalálhatjuk az st32flash alkalmazást, aminek segítségével a soros feltöltés elvégezhető:

~/Arduino/hardware/Arduino_STM32/tools/linux64/stm32flash$

A fenti bekötés után a Linuxos PC USB-jére történő csatlakoztatását követően az alábbihoz hasonlót kell látnunk a dmesg | tail parancsra:

usbserial: USB Serial support registered for cp210x
cp210x 2-1.5:1.0: cp210x converter detected
usb 2-1.5: cp210x converter now attached to ttyUSB0

Ami azt jelenti, hogy a /dev/ttyUSB0 címen tudunk kommunikálni az eszközzel, az alábbi paranccsal lekérhetjük a Maple paramétereit:

./stm32flash /dev/ttyUSB0

Ha a bekötés helyes volt, a válasznak ilyesminek kell lennie:


stm32flash Arduino_STM32_0.9

http://github.com/rogerclarkmelbourne/arduino_stm32

Interface serial_posix: 57600 8E1
Version : 0x22
Option 1 : 0x00
Option 2 : 0x00
Device ID : 0x0410 (Medium-density)
- RAM : 20KiB (512b reserved by bootloader)
- Flash : 128KiB (sector size: 4x1024)
- Option RAM : 16b
- System RAM : 2KiB

Ebből két fontos dolgot tudtunk meg: 1-helyesen végeztük el a bekötést, 2-az eszközön 128KiB flash tárhely áll rendelkezésre, ahogy vártuk. Ha nem kaptunk választ, nyomozhatjuk az okát, ha igen, akkor folytassuk, töltsük le a bootloader2.0-át:

wget -c https://github.com/rogerclarkmelbourne/STM32duino-bootloader/blob/master/bootloader_only_binaries/maple_mini_boot20.bin?raw=true -O maple_mini_boot20.bin

Ha letöltöttük és meggyőződtünk róla, hogy nem egy HTML oldalt vagy hibaüzenetet sikerült letöltenünk, hanem egy 7124 bájt méretű bináris állományt, akkor azt az alábbi paranccsal tölthetjük fel:

./stm32flash /dev/ttyUSB0 -w maple_mini_boot20.bin 

És ezzel sikerült bootloader2.0-val ellátnunk MapleMini-nket. Ezt az eljárást pontosan egyszer kell elvégeznünk, a továbbiakban az alábbiak szerint USB kábelen direktben tudunk majd programkódot feltölteni! (a továbbiakban az USB-soros átalakítóra nincs szükség, leköthetjük és eltehetjük)
Ez után 120KB helyet használhatunk USB csatlakozáson keresztül történő feltöltéssel DFU-UTIL vagy az Arduino IDE-vel, kiválasztjuk a megfelelő Bootloader version-t, majd a Port-nál a Maple Mini-t:

maple_arduino2.jpg

Majd a Feltöltés gombra kattintva (jobbra mutató nyíl) az Arduino IDE megkísérli a kiválasztott portra a lefordított binárist átküldeni:

maple_arduino_upload.jpg

Ilyenkor általában újrafordít mindent, és ha közben a MapleMini nem válaszolna sokáig, nyomjuk meg a rajta levő RESET gombot, ekkor elkezd villogni, és a fentihez hasonló üzenetek mellett az Arduino feltölti rá a kódot. Ha elsőre nem megy, ne legyünk restek újrapróbálni, nem mindig sikerül nekem sem elsőre, jól kell időzíteni a Reset gomb megnyomását..

A soros csatlakozásra ugyebár már nem lesz szükség, ezért azt már régen lekötöttük, hiszen ezentúl USB-n keresztül tudjuk frissíteni a programot, a W5500 LAN modult pedig az alábbi bekötés szerint tudjuk illeszteni:

maple_lan.jpg

MapleMini W5500
VCC 3.3V
GND GND
reset RST
7 /PA4 SCS
6 /PA5 SCLK
5 /PA6 MISO
4 /PA7 MOSI

 

Ha mindent jól csináltunk, akkor a fenti kódfeltöltés és a LAN csatlakozás bekötése után az eszközünket elérhetjük a DEFAULT_IP részben megadott, alapértelmezetten 192.168.0.50 IP címen egy böngészőből.

ae_maple_info.jpg

Elsőre talán nehéznek tűnik a folyamat, de ha belegondolunk közel sem annyira, mintha az egész programot nekünk kellene megírnunk, és még ezeket a lépéseket is megcsinálni... Másodjára könnyebb lesz.

 

A bejegyzés trackback címe:

https://bitekmindenhol.blog.hu/api/trackback/id/tr2914922376

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.

Támogatók:
okosotthon.jpg
allterco.jpg

Utolsó kommentek

  • szenorb: Hello. Bekötöttem 12V-ra , a bemetére egy mozgás érzékelőt kötöttem. Szépen kapcsol a relé a késle... (2023.06.14. 06:48) Shelly okosrelé (Shelly1)
  • Melanoheliophobia: Üdv! Kb. 2 éve vásároltam két ugyanilyen okos izzót. Sajnos az egyik még garancia idő alatt eltávo... (2023.05.03. 16:50) Shelly Vintage okosizzó
  • eNeS: Lehetséges, bár az ESP8266-ot lassan ideje elfelejteni, ha nem helyi hálózatra akarsz vele forgalm... (2023.04.02. 08:43) Tasmota szkriptek
  • eNeS: @tomih: Thonnyban rebootot nyomva nekem se megy az NTP. De mikor lekapcsoltam a Thonnyt és rebooto... (2023.04.02. 08:40) Raspberry Pico és a LAN (W5100S-EVB-Pico)
  • krump_lee: Kedves eNeS! ESP8266 tasmota-val szenvedek, hiemq kapcsolat sehogy nem jön össze, sehol nem talál... (2023.04.02. 08:31) Tasmota szkriptek
  • Utolsó 20

Címkék

433mhz (12) alkatrész (22) alternatív kapcsoló (2) amg8833 (1) analóg (2) android (1) arduinoeasy (5) audio (1) automatizálás (3) bemenet (3) bk7231n (1) ble (1) blitzwolf (4) bluetooth (9) bridge (2) camhi (2) csináld magad (22) dimmer (1) diy (28) do-it-yourself (27) domoticz (11) ds18b20 (1) ebay (3) érintő (2) érintőkapcsoló (7) érzékelő (11) esp-01 (2) esp32 (11) esp8266 (21) espeasy (2) espurna (1) esp projekt (18) Eview7 (1) ewelink (1) feldolgozó (1) felhő (1) fényérzékelő (1) firmware (7) flame detector (1) fogyasztásmérő (5) ftdi (1) füstérzékelő (1) gázérzékelő (1) gpio (1) hang (4) hangjelző (1) hőmérséklet (22) https (1) ikea (1) impulzus relé (1) izzó (2) javascript (1) jelenlétérzékelő (3) kamera (18) keresztkapcsoló (1) kézmozdulat (1) kijelző (3) kimenet (21) konnektor (8) lan (9) lángérzékelő (2) led (3) linux (4) logic level converter (1) lua (1) lux (1) maple mini (2) mcu (3) micropython (1) mikrovezérlő (2) milkv (1) mobil (1) mosfet (1) mozgás (5) mpyeasy (4) mq-2 (2) mqtt (3) működtető rendszer (5) multiroom (1) nedvesség (1) neo (1) neopixel (1) Node-RED (1) nvr (4) nyitás (7) okosház (4) okosizzó (3) okosotthon (8) oled (1) onvif (8) openbeken (1) opencv (1) openwrt (4) orange pi (4) páratartalom (6) php (1) pico (1) pi pico (2) poe (1) programozás (9) projekt (25) proximity olvasó (1) python (2) raspberry (14) raspberry projekt (6) raspbian (1) reed (1) relé (27) rf (2) rgb (6) rock pi (1) rögzítő (2) rp2 (1) rpieasy (1) rtc (1) shelly (24) smartwise (1) solid state relay (1) sonoff (20) SonOTA (1) soros (1) ssl (1) ssr (1) stm32 (4) szenzor (11) szilárdtest relé (1) szintillesztő (2) sziréna (1) szkript (3) szünetmentesítés (4) t1 (1) tasmota (8) távirányító (3) Telegram (1) termékteszt (85) termosztát (2) touch (2) ups (5) usb (7) usb hub (1) valós idejű óra (1) vezérlések (20) vezérlő (5) világítás (5) villanykapcsoló (12) webkamera (1) wiegand (1) wifi (32) ws2812 (1) xiaomi (5) xm (4) xmeye (4) yoosee (1) zigbee (16) zwave (3) Címkefelhő
süti beállítások módosítása