Dar iki pradedant statyti namą laisvu laiku pradėjau domėtis ką pasirinkti įvesčių/išvesčių valdymui. Paieškas pradėjau dar kokiais 2016 metais. Kadangi tai pakankamai universalūs prietaisai ir juos galima pritaikyti kitur, per ilgą laiką atsisiunčiau ir vienaip ar kitaip išbandžiau juos visus, kuriuos aprašysiu. Šiuo įrašu apžvelgsiu visus svarstytus variantus, ir pagaliau parodysiu ką išsirinkau. Apie visus aprašytus variantus nesiūlau nuomonės priimti už gryną pinigą. Gali būti, kad kai kur pasidomėjau ne iki galo, kai ką gal būtų galima komplektuoti kitaip ir išvengti kai kurių problemų kurios man atrodė didelės.

Arduino/ESP32/STM32

Jei stipriai negalvojant, ir domintis apie laidines sistemas tai pirmas į galvą ateinantis pasirinkimas. Seniai žinomi ir naudojami mikrovaldiklių „dev board’ai”. Pagrindiniai privalumai, kad pigu ir lengvai programuojama. Arduino IDE su laiku tapo labai paprastu įrankiu programuoti šiuos mikrovaldiklius su krūva visokių bibliotekų. Su tuo ateina ir minusai, kad kai kurios bibliotekos parašytos kreivai arba gali greitai suėsi atmintį skirtą programai. Net labai nesigilinant ar tai STM ar ESP ar arduino, mėgstu ir naudoju šituos mikrovaldiklius paprastiems projektams, ir naudosiu juos name. Kažkiek. Tačiau kaip pagrindinį I/O modulį naudoti nepanorau. Ilgą laiką sekiau darauBle blogą, jis darėsi savo modulius paremtus STM32. Taip pat kolegos darbe darėsi valdiklį paremtą ESP32. Abu projektai susidūrė su tokiomis pat problemom: dėl parazitinių indukcinių srovių kartais iš oro pagaudavo įvestis kai jų nebūdavo! DarauBle berods sukeitė loginį 0 su loginiu 1, įžemino ir dar pasidarė paprastą filtravimo grandinę ant įvesčių. Kolega su ESP32 tiesiog įžemino. Abiem atvejais problemos baigėsi. Moduliai veikia labai žemose įtampose (5V arba išvis 3.3V) todėl lengva prisigaudyt parazitinių įtampų. Iš to gaunasi, kad jungiant tiesiai viską prie mikrovaldiklių kojelių, didesnė parazitinė iškrova gali net užlenkti mikrovaldiklį. Finale gaunasi, kad bet kokiu atveju reikia kurit savo „custom” PCB. Ir net jei ir nedarysite filtravimo ir apsaugos grandinių ant input, tai bent dėl gražaus laidų prijungimo verta pasidaryt PCB su terminalais kur laidus galima prisukti varžčiukais, o patį ESP32 ar ką ten lengvai pakeist. Nekenčiu kai ant snarglių viskas sujunginėta. Kuriant savo PCB lieka vietos klaidoms, ir apskritai gali būt amžiaus neužbaigtas projektas, nes dings motyvacija.

Plečiamumas: pritrūkus laisvų kojelių „inputams”, galima analogišką antrą prietaisą statyti gretimai, truputį paprogramavus daugiau, galima padaryti kad vienas su kitu bendrautų ir žinotų vienas apie kito statusą. Tarkim ESP32 ir STM32 nesunkiai prisijaukina CAN Bus, tai viską galima lengvai pajungt į vieną magistralę. Galima jungti ir įvairius išorinius rėlių blokus.

Programavimas: Kadangi tai I/O modulis, didelių sudėtingų logikų toks modulis neturėtų atlikinėti, todėl programavimas yra pakankamai tiesmukas. DarauBle berods viską rašė ant C/C++. Kolega ant ESP32 užkūrė MicroPython. Įmanoma ir NodeJs taip pat pasileist. MicroPython visai sužavėjo, gerokai palengvėja darbas su JSON ir MQTT jei būtų noras, vis gi kartais galima susidūrti su spartos problemom ar bibliotekų trūkumu. Yra ir trečias variantas, kuris gal visai būtų priimtiniausias: VisualDuino. Galima grafiškai sudėlioti programą, bet mokamas. Gerai tai, kad visus šiuos mikrokontrolerius lengvai arba pasikrapščius galima priversti programuotis per LAN arba WiFi. Neturėčiau jokio noro bėgiot su USB kabeliu ir kompu po namą. Norint normaliai „debugginti” teks ir paprograminti daugiau.

Palaikymas: tiek programą tiek hardware reikės palaikyti savo rankytėmis. Nebent žinote kas nors gerą projektą githube, tai komentaruose pasidalinkite.

Kaina: pigiau grybo, nebent WT32-ETH01 (čia ESP32 su LAN jungtim) tada truputį brangesni.

WT32 yra ESP32 su LAN jungtim.

ZigBee, XBee, FreeWave ir panašus belaidis velnias

Pastaruoju metu rinka užsipildė įvairiais „gadžetais” kurie veikia belaidžiu ZigBee ar kitokiu Bee protokolu. Ir manau, kad tai labai puikūs prietaisai ir geras ėjimas… Jei turi iš seniau pastatytą namą ir naujų laidų tampytis nėra noro ar būtų neprotinga. Arba jei kažkur pamiršai laidą atitempt (galvoju kad ir man poroj vietoj prireiks to). Naujos statybos namuose remtis belaidėm technologijom – na kažkaip meh… Bet gal dėl to, kad aš neesu belaidžių technologijų fanas. Nežiūrint į tai, esu atsisiuntęs ir tokio brūdo pabandymui. ZigBee I/O moduliai galėtų išspręsti didelę dalį problemų, kurios kyla su „arduino and co” naudojant ilgus laidus. Tokius modulius būtų galima montuoti vos ne kiekvienam kambary kur reikalingas valdymas. Svarbu pasirūpint maitinimu arba ant baterijų (????). Kažkas panašaus kaip galvoja a-namas daryti. Vis gi custom PCB išvengti greičiausiai nepavyks, ir vistiek reikės kažką lituotis arba siųstis jau pagamintus (mačiau yra). Bet labiausiai kas mane neramina, kad ZigBee kamuoja tos pačios problemos kaip ir visas belaides technologijos. ZigBee kaip protokolas saugus. Šiandien. Gal dar ryt. Bet nebūtinai poryt. Tobulėja technologijos, tobulėja programišiai ir vieną dieną ZigBee gali pasidaryti nesaugus. Kaip WiFi pradiniai saugumo algoritmai kažkada buvo įveikti, kaip mobilių tinklų GSM A5/2 algoritmas šiandien lengvai įveikiamas ir nebenaudojamas pas operatorius, bet dar net šiandien jį galima panaudoti norint perimti pokalbius/žinutes. Net nežiūrint į belaides technologijas, tuose pačiuse procesoriuose (palietė tiek Intel, tiek ARM ir kitus) sugebėjo rast spragų (Spectre ir Metldown) taip ir ZigBee vieną dieną gali pasidaryti nebesaugus. Ir lengvai pasiupdatint greičiausiai neišeis. Kitas dalykas jei vaikas užaugs visas į tėtį (mane) tai gali ant smagumo sugalvot „nujammint” signalą, ir tada nebus smagu kai kažkas nebeveiks dėl neaišku ko. Dar blogiau jei kaimynas ar kažkas iš gatvės sugalvos taip padaryt. Taip pat reiktų atkreipti dėmesį pasirenktant kanalus. Kai kurie ZigBee kanalai sutampa su WiFi kanalais. WiFi pats iš savęs gerai su tuo susidoroja, o vat ZigBee nemoka su tuo dorotis, ir gali būti veikimo sutrikimų.

Plečiamumas: kadangi ten palaiko visokius mesh network ir pan, tai plečiasi ir tarpusavy bendrauja nesunkiai (praktiškai neišbandžiau)

Programavimas: Trumpai apibūdinant – tragiškas. Sudėtinga programavimo aplinka (bent jau to kontrolerio kurį aš buvau paėmęs) lyginant su Arduino, mažoka informacijos, daugiau manualą skaityt reikia. Teko užtrukti kol pavyko įkelt pirmą programą į ZigBee kontrolerį. Pajungimas ir nėra paprastas. Kai dalykai ilgai užtrunka ir nėra aiškūs, aš dažniausiai metu tokius dalykus į šoną ir net nebenoriu naudot. Čia nutiko būtent taip.

Palaikymas: tas pats kaip ir su arduino – savo rankytėm.

Kaina: nebrangus.

CC2530 Zigbee Module UART Wireless Core Board Development ...
CC2530 ZigBee modulis kurį įsigijo P ir prasikeikė bandant suprogramint

Raspberry Pi ir alternatyvos

Įkaliau „clickbaitin’ę” antraštę, nes jei ant raspberio galima microsoft technologijas leisti, tai kodėl antraštė negali būti tokia? Kai reikia ant kelio duobę užlyginti, juk nekviečiat diplomuoto statybos inžinerijos magistranto, kad suorganizuotų greiderį dėl vienos duobės. Mašinos variklio kompas ir yra paprastas mikrovaldiklis, net mašinos multimedijoj radijos kontroleris yra atskirtas nuo bendros multimedijos ir pradeda groti kol multimedia dar neužsikrovė. Net visokius langus ir šviesas ir valdo paprasti mikrokontroleriai. Tai rimtai nesuprantu, kam ant daikto, kuris gali paleist web serverį, kuris gali paleist daug web serverių, kuris gali leisti sudėtingus AI algoritmus, paleidinėti tokį paprastą dalyką kaip I/O valdymą? Nemaišom čia OpenHAB ar HomeAssistant, nes jų paskirtis truputį kitokia. Mano nuomone, įvestys/išvestys turi veikti kaip įmanoma paprasčiau, ir tikrai nereikia papildomų sluoksnių kaip operacinė sistema, laukt kol ji užsikraus/persikraus. Ar tiesiog visą sistemą nugriauti dėl kernelio update, kuriame pasikeitė dalykai, ar biblioteka gavo „major” update. Jau nekalbu apie SD kortos problemas apie kurias buvau rašęs. Arba dar geriau! Pamenat mano senolį pirmos kartos raspberry. Šią (2021m) vasarą kalė žaibas dar kartą, ir šį kartą su savimi pasiėmė routerį ir tos avietės USB/LAN kontrolerį, ir dar kartu anapilin iškeliavo USB<->RS232 kuris buvo tuo metu prijungtas. Tai raspberis vis dar veikia, bet neįgalus (USB ir LAN lizdai nebeveikiantys) Gal kur nors panaudosiu. Prasta „atmaskė” jei ir ant to pačios avietės turit visą UI, microsoft technologijomis parašytą, pasileidę valdymui, ar išorinis rėlių blokas pajungtas prie raspberry. Vistiek manau kad I/O modulis turi būti nepriklausomas nuo jokių OS ir kuo paprastesnis ir patikimas. GPIO kojelės veikia žema įtampa (5V ar tai 3.3V), tad kamuoja tos pačios problemos kaip ir „arduino ir co” lengvai galima užlenkt, ir reikės custom PCB.

Plečiamumas: kadangi yra LAN ir USB jungtys, tai plečiamumas priklauso tik nuo noro programuoti 🙂

Programavimas: Su programavimu viskas gerai, daug programavimo kalbų, net jei turit fetišą microsoftui tai ir su tuo galima. Galima programuoti ir grafiškai su kokiu NodeRED ir t.t. Bet pasikartosiu Raspberi Pi neturėtų būti naudojamas kaip I/O modulis ir viskas.

Palaikymas: programinės įrangos palaikymas neblogas, nes yra bent keletas neblogų opensource projektų kaip NodeRED ar OpenPLC. Su geležim, tai turbūt nepavyks išvengti custom PCB ir savų rankų.

Kaina: baziniai modeliai kainuoja nedaug jei nežiūrėt į galingiausius.

Odroid XU-4 originaliai eina su aušintuvu ir savo laiku buvo galingiausias SBC. Bet aušintuvas toks triukšmingas, kad aš ir uždėjau tokį radiatorių, bet net su juo įmanoma perkaitint.

PLC

PLC – Programmable logic controller. Nėra naujas daiktas rinkoj. Atvirkščiai, senesnis už visokius arduinus ir raspberius. Ilgą laiką buvo brangus industrinis sprendimas, bet per paskutinius dešimt metų galima rasti prieinamų naudotų ir naujų variantų, todėl pamažu ateina ir į paprastų vartotojų rinką. Privalumų turbūt daug: dizainas daugeliu atvejų orientuotas į pakabinimą ant DIN bėgelio, veikia gerokai aukštesne, bet vis dar saugia įtampa: 12V-24V. Turi terminalus laidams prisukti, apsaugines grandines nuo neteisingo sujungimo, filtravimo grandines ir panašiai. Gan dažnai yra LED prie kiekvieno įėjimo ar išėjimo. Iš fizinės pusės niekuo nereikia rūpintis, ir jokių PCB gamint nereikės.

Plečiamumas: priklausomai nuo modelio stackable ar ne, praplėsti galima atskirais moduliais. Pvz rėlių moduliai, ar papildomais, I/O moduliais ir t.t.

Programinė įranga: Tradiciniai PLC naudoja savo OS (jei taip galima pavadint), persikrauna/užsikrauna labai greitai, turi bateriją kad neprarast laiko ar programos statuso. Dažniausiai viskas paprasta ir labai patikima, nes stipriai ir nuo seniai naudojami gamybos industrijoj, dideliuose pastatuose ir pan. Gan lengva „debugginti” nes galima matyti kaip vaikšto duomenys per registrus viduj PLC.

Jungiamumas: nėra įspūdingas – priklausomas nuo komplektacijos. Kai kur integruota į pagrindinį modulį, kai kur kaip papildomi. Galima pajungt prie LAN, RS485, RS232 naujesni jau siūlo ir WiFi ar bluetooth, neretas naujesnis jau turi ir MQTT palaikymą. Beveik visi palaiko ModBus RTU, Modbus TCPIP, Siemens mėgsta Artnet.

Programavimas: šita vieta turbūt ir pliusas ir minusas viename. Tradiciniai PLC programuojami „Ladder logics” grafiniu būdu, arba „flowchartais”, dar kai kurie palaiko paprastą programavimo kalbą kuri nelabai panaši į man žinomas. Basic dalykus programuoti labai paprasta, jei reikia kažko mandresnio ar prasidėti su bendravimu su kitais pritaisais, gali tekti pasukti galvą ir atrodo, kad su kodu būtų lengviau. Taip pat daugelis tokios programinės įrangos programuoti PLC veikia tik ant Windows.

Palaikymas: įmanoma išsikviesti automatikos specialistą kuris sutvarkys reikalus, jei kažkas nutiks.

Kaina: nuo pusė bėdos iki labai brangiai.

Gamintojai: Aliexpresse galima rasti kinų nukopijuotų senesnių Mitsubishi PLC. Tai pat daug pradedančiųjų naudoja Siemens logo, Wago brangesnis sprendimas bet ir po truputį pinga ir atsiranda naudotų, taip pat Schneider, Omron ir t.t.

Dabar jau įsigudrino gamintojai kurti ir siūlyti arduino ar raspberry pagrindu sukurtus PLC,. Fizinė dalis kaip tradicinių PLC, bet po apačia arduino arba raspberry, tokiu atveju galima programuoti tradicinėmis programavimo kalbomis. Kolkas kiek mačiau tokie sprendimai nepigūs – vien pagrindinis modulis prasideda nuo 200-400Eur. Pavyzdžiai UniPI, Kunbus.

Egzistuoja projektas OpenPLC kurio tikslas užkurti platformą kuri ant raspberrio leidžia naudoti Ladder Logics programavimo būdą. Ten dar ir ESP32/Modbusinius įrenginius galima naudot kaip „slave node”

WAGO PLC kontroleris su krūva visokių įvesčių/išvesčių, matosi ir KNX modulis ir kažkoks belaidis ir t.t.

P pasirinkimas

Daug netuščiažodžiaujant, P pasirinko PLC. Priežastys turbūt labai asmeninės ir paprastos. P ir taip turi daug veiklos įvairios, tai nesinorėjo dar elektroniko ir programuotojo etato namie. Nors vistiek teks. Konkrečiai pasirinkau Click PLC, pigiausias „stackable” PLC rinkoje. To pačio Siemens logo man neužtektų „Input/Output” kiekio. Pirkau šustriausią tuo metu modelį su LAN senokai – 2019 metais iš automationdirect.com. Kolega iš JAV vykdamas į komandiruotę pas mus atvežė man, tad pavyko gauti pigiau nei Europoj ir sutaupiau ant siuntimo ir muitų. Galima įsigyti ir europoj. Maitinimo bloką ir input modulį pirkau iš Ebay naudotus. Pradžiai užteks. Dabar mačiau jau yra dar šustresnis modelis, kuris jau palaiko ir WiFi ir Bluetooth, ir MQTT ir suderinamas ir su senesniai praplėtimo moduliais. Bet dar pagalvosiu ar verta atsinaujint.

ClickPLC procesoriaus blokas Su Ethernet/RS485/RS232, 8 įvestim, 6 išvestim.

Detaliau aprašysiu greitai, nes jau bus paleistas name.

Dabartinis statusas

Trumpai, nes jau ilgai ir taip prie šito įrašo sėdėjau.

Turim virtuvę! Apie interjerą ir visus sprendimus kalbinsiu D, kad parašytų daugiau.

Paskutinę vasaros dieną (t.y. rytoj) kraustomės! Baigiasi nuomos sutartis, todėl kraustomės, tad greitai pradėsiu rašinių ciklą apie kelią išmanaus namo link, nes iš skydinės šviesą junginėti nelabai kieta.