Elektronika: USB porton szeretnék "kapcsolókat" érzékelni

Fórumok

Sziasztok!

Különböző kütyük állapotát szeretném lekérdezni Linux alól, amihez szükségem volna egy olyan USB-s eszközre, amivel meg tudom állapítani, hogy két vezeték rövidre van zárva, vagy szakadt. Fogalmazhatunk úgy is, hogy kapcsolót szeretnék a két vezetékre kötni, és a kapcsoló ki-be állapotát szeretném tudni lekérdezni Linux alatt.
Ilyen "kapcsoló" lenne kb. 25-30 db, és mindezt 1 USB porton kellene megcsinálnom.

Azt sem tudom hirtelen, hogy hogyan keressek rá ilyen cuccra, tudnátok segíteni?

Hozzászólások

Közvetlenül biztos nem fog menni. Az usb csak adattovábbításra jó. Valamilyen "adatgyűjtő" kell mögé.
Itt már sokkal nagyobb a választék. AVR/PIC-től elkezdve a sok GPIO-s miniszámítógépekig.

---------------------------------------------------------------
Ritkán szólok hozzá dolgokhoz. Így ne várj tőlem interakciót.

DAQ - "data aquisition" a neve.

Fentebb linkelt cuccok jók lesznek :)

Két vezetékkel arra figyelj, hogy pullup legyen bekapcsolva az adott digitális input lábon, különben beolvasod a zajt is.

"két vezeték rövidre van zárva, vagy szakadt"

Ez önmagában kicsit kevés. A két vezeték az csak "lóg a levegőben", vagy valamilyen feszültségen van, stb.?

Ha csak "lóg a levegőben" akkor könnyű dolgod van. Veszel egy arduino megát (klónt is akár), annak van 54 digit ki/bemenete, ezzel 27 "kapcsolóig" jó vagy: egy ilyen érpár megy 1-1 pin-re, az egyiket bemenetre állítod, a másikat kimenetre, aztán ahogy változtatod a kimenetet (high/low) úgy kell a bemenetnek is változnia. A megán van egy usbserial adapter, szóval soros porton kommunikálsz vele. A programot megírni is könnyű rá, C-ben szerintem max. 100 sor. Bár jobbam meggondolva van 16 ADC pin is, azokat is használhatod szerintem digitként, vagyis ezzel 35 érpárig jó vagy, _HA_ a vezetékek tényleg csak lógnak a levegőben.

Ha kimenet módban vannak és úgy összekötik őket, akkor tönkre is mehetnek. Ellenben a pullup bekapcsolása jó megoldás lehet, akkor a kimenet magasba megy, de nagy ellenálláson keresztül, így ha 0-ra kötődik, akkor nem lesz zárlat, hanem kis áram fog folyni és amellett 0-ba megy az a láb - ezt lehet érzékelni.

A bemenet nagy impedanciás, szóval egy kimenet és egy bemenet összekötése nem okozhat problémát. Persze oda kell rá figyelni, de igazad van, legyen hülyebiztos: minden egyes használt pint kössünk 100k ellenálláson keresztül a vizsgált vezetékekre. Így egy félrekötés esetén is csak 25 uA áram fog folyni, az meg meg se kottyan a uC-nek. Azt a párszáz Ft-ot megéri erre költeni.

"annak van 54 digit ki/bemenete, ezzel 27 "kapcsolóig" jó vagy: egy ilyen érpár megy 1-1 pin-re, az egyiket bemenetre állítod, a másikat kimenetre, aztán ahogy változtatod a kimenetet (high/low) úgy kell a bemenetnek is változnia"

Tényleg kérdés szintjén: Miért jó az egyébként hogy összekötöd a pinjeidet lefelezve a számát ahelyett hogy direktben kötnéd valahova? De ha már mindenképpen pin-re akarod kötni, akkor köthetnéd mátrix-ba és akkor nem csak 27 lenne, hanem 27*27

// Happy debugging, suckers
#define true (rand() > 10)

Lehet nem voltam egyértelmű. Szóval a kérdés ez: "meg tudom állapítani, hogy két vezeték rövidre van zárva, vagy szakadt"

Az egyik vezeték megy az egyik pinre (mondjuk D1, ez kimenet), a másik vezezék egy másik pinre (D2, bemenet), aztán ha D1-et véltoztatod (high/low) azzal együtt változik D2 is ha össze vannak kötve a vezetékek. Nyilván lehetne mátrixba is kötni, vagy földdel és pullup-pal, stb., de ez egy triviális megoldása a problémának - még ha nem is hatékony.

És ezt miért nem tudjuk úgy megállapítani, hogy van egy bemenetünk felhúzva tápra, amelyet vagy GND-re húzunk, vagy nem?

A te általad vázolt megoldásnál a bemeneten a kimenet változását leköveti rövidzár esetén, szakadásnál viszont magas szintben lesz a bemenet statikusan, feltételezve, hogy a bemenetet felfelé húzzuk.

Amit többen mondunk, mint triviális megoldás, ott pedig szakadásnál magas szint van a bemeneten - épp, mint a te esetedben -, rövidzárnál pedig alacsony szint.

Ehhez minek egy kimenet is?

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

en mar ertem: gyakorlatilag csak bebiztositotta a dolgot, rovidzar alatt o fault case-ekre is gondolt amikor vcc/gnd iranyaba van "zarlat". Az output pin rangatasaval ugyan annak kell kijonnie az input pin-en, ha nem, akkor valoban rovidzar/szakadas van

// Happy debugging, suckers
#define true (rand() > 10)

Nem véletlen írtam gondolatjelek közé, hogy a szakadás ugyanaz az ő esetében, mint a triviális megoldás esetében. Ha a kábelen a kapcsoló szakadás, azt továbbra sem tudja megállapítani, hogy tápzárlat van, eltépték a kábelt, vagy csak nem nyomják a gombot. Ezért aztán továbbra sem értem, mi az a hozzáadott érték, amit a kimenetről hurkon keresztül hajtott bemenet ad nekünk. Azt értem, hogy elpazaroltunk egy lábat, de másra nem jó. Gondolj bele, ha ez egy olyan berendezés, hogy 5 évente egyszer nyomnak gombot 3 másodpercig, akkor ez szerintem nem sok mindenre lesz jó.

A másik pedig, hogy ha ezt akarja, akkor is elég lenne a 27 bemenethez egyetlen kimenet, tehát 28 lábon meg lehet ezt csinálni, csak minek.

Akkor már több értelmét látom annak, hogy a hurokban van két soros ellenállás, az egyiket zárjuk legálisan rövidre. Az egészet felhúzzuk egy ellenállással, A/D konverterrel mérjük a feszültséget. Túl kis feszültség rövidzár, túl nagy szakadás, a közbenső kettő pedig az, amikor nyomják, illetve nem nyomják a gombot.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

"A másik pedig, hogy ha ezt akarja, akkor is elég lenne a 27 bemenethez egyetlen kimenet, tehát 28 lábon meg lehet ezt csinálni, csak minek.
Akkor már több értelmét látom annak, hogy a hurokban van két soros ellenállás, az egyiket zárjuk legálisan rövidre. Az egészet felhúzzuk egy ellenállással, A/D konverterrel mérjük a feszültséget. Túl kis feszültség rövidzár, túl nagy szakadás, a közbenső kettő pedig az, amikor nyomják, illetve nem nyomják a gombot."

Nah igen, ez nekem is eszembe jutott de ennyire mélyen nem akartam belemenni mert az eredeti request-hez képest ez már végképp overkill ;)

// Happy debugging, suckers
#define true (rand() > 10)

"Ezért aztán továbbra sem értem, mi az a hozzáadott érték, amit a kimenetről hurkon keresztül hajtott bemenet ad nekünk. Azt értem, hogy elpazaroltunk egy lábat, de másra nem jó."

Arra jó, hogy az érpárak egymástól függetlenek legyenek, azaz amikor az egyiket vizsgálom, akkor azzal ne bolygassam a többit. Persze a feladat ismeretében (ablak reed érzékelő) erre itt nyilvánvalóan nincs szükség, de épp lehetett volna olyan is a feladat, aminél igen.

https://dicks.home.xs4all.nl/avr/usbtiny/

https://learn.adafruit.com/usbtinyisp
Easily interfaced with libusb
Existing firmware allows for fast SPI interfacing using USB
Bit-bang commands provide 8 bits of I/O control (including LED) for open-ended project ideas

https://www.obdev.at/products/vusb/index.html

http://wiki.mlab.cz/doku.php?id=en:i2c_avr_usb

https://github.com/harbaum/I2C-Tiny-USB

Kell még a fenti megoldások bármelyikéhez két ilyen (I2C vagy SPI):
http://ww1.microchip.com/downloads/en/devicedoc/21952a.pdf

Tkp. az is szóba jöhet, hogy egy nagyon olcsó USB/soros port illesztőn (lehet TTL is, akkor nem kellenek a szintillesztők, és azt 500Ft alatt megúszod) keresztül kapod az információkat egy mikrovezérlőtől, aminek vagy van elég lába a 25-30 bemenet kezeléséhez, vagy valamilyen portbővítővel (pl. a már korábban linkelt Microchip extenderek valamelyikével) van kiegészítve.

A bemenetek tényleges megvalósítása a feladattól függ (távolságok, zavarok elleni védekezés, mit kapcsol a kapcsoló stb.)

Mar egy csomot irtak, ez lesz talan a legkoltseghatekonyabb:
Arduino nano (kb. $2) ad neked USB kommunikaciot, SPI-t, par vezerlojelet, meg a maradekot GPIO-kent fel tudod hasznalni (ha jol szamolom, 14-et).
Aztan fogsz par SN74166-ot (lehetoleg LS, de lehet HC, HCT, meg hasonlo is, ajanlom az olyanokat, ami ha nem huzod le, logikai 1-est kap, igy nem kell kulon felhuzoellenallas - regi TTL igy mukodott). Lehet mas shift-regiszter is, itt pl. CD4021-et hasznalnak. Ezek jellemzoen filleres cuccok. IC-nkent 8-8 bemenetet kapsz pluszban.
Az Arduinoval ciklikusan olvasod a sajat bemeneteket es a shift-regiszterekre kotott bemeneteket, ha valtozik, szolsz soros vonalon (ami USB-ve alakul). A kapcsoloid a 1-1 input, es a GND kozt vannak. PC-n valami egyszeru programmal ezeket nezed, es reagalsz ra, ahogy kell.

Kb. ennyi, nem nagy dolog, par ora alatt osszerakhato a hardware+firmware+software.

--
When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin

Jok ezek az extenderek, de ilyen aron akar ujabb uC-t is tehetnel be (mondjuk atmega8-ast/128-at). A shift-reg meg ehhez kepest jellemzoen gombokert van.
Persze ha nem sorozatgyartasra megy, akkor mindegy, amelyikkel hamarabb osszehozhato, az a megfelelo.

--
When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin

itt
Vagy siman a lomexes keresoben: SN74LS166AN
Csomagolasi egyseg 25 darab, brutto 330 ft-ert megkapod. Ha a Lehel ter utba esik, akkor szallitasi koltseg sincs (nekem pl. igen, de ez nyilvan nem altalanos).
Ha ragaszkodsz a netes rendeleshez, Alin is van ilyesmi: $2.77 10 darab
Egyebkent ilyesmit az ember amugy sem egyesevel vesz, neha konnyu kinyirni, es ha kintrol rendeled, varhatsz ujabb 3-4 hetet mig megjon. Egy ilyen "lancolhato" IC eseten meg tobb ertelme van a tobb darabos rendelesnek.

Ettol fuggetlenul az IC ajanloert koszi!

Nezegettem korabban az I/O extendereket, akkor az jott ki, hogy ha beteszek egy rendszerbe meg egy uC-t (mondjuk atmega8-ast), azzal jobban jarok (pinben meg feldolgozasi lehetosegben, es arban is). Ugy latom, az extenderek arai kezdenek esni. Meg mindig a mega8-as felett van, de a trend tetszik (akkoriban 10-es tetelben $2 korul volt, ha jol emlekszem, most van <$1 - igaz, az atmega8-bol a DIP tokos $0.8, SMD-bol meg $0.44 korul is vettem mar).

--
When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin

74LS166AN: Kifutott termék :)
Ki tudja, meddig lesz kapható ilyen áron, új terméket már nem terveznék ilyennel, a fogyasztásuk sem illeszkedik a mai trendekhez. A HC és HCT még nem számít náluk kifutottnak, igaz, jóval drágábbak is (a fogyasztásuk viszont nyilván kedvezőbb).
Ettől függetlenül nyilvánvalóan használhatóak még ezek, a 80-as és 90-es években én is sokat használtam ilyeneket, de szép lassan kikoptak nálam, ahogy a 8255, 8155 is (ez utóbbiak ára amúgy is elszállt, pár éve kellett vennem 8255-öt, mert eldurrantottak egy panelt, amiben ilyen is volt, jóval 1000Ft felett kértek érte) :)
A mikrovezérlők egy kicsit "átrendezik" az ember gondolkodását, aminek lehet persze hátránya is, viszont egy jól megválasztott uC mellé sokszor már alig kell valami.

Valoban kifutott termek, azert ajanlottam azt, mert - ha jol emlekszem - az is logikai 1-nek veszi a lebego bemenetet, igy a felhuzoellenallasok forrasztasa meguszhato (ez meg unalmas). 74HC166-os eseten meg kell (asszem, nem raktam ossze).
A 8255 sokkal specifikusabb alkatresz, az SN74 sorozat viszont nem hiszem, hogy kihalna a kozeljovoben. Meg tovabb is fejlesztettek, ott a vicces nevu Potato Chips, ugyan nincs meg a teljes sorozat, de amit gyartanak, az joreszt GHz feletti sebesseget tud: http://www.potatosemi.com/potatosemi2010/products_74.html
Szoval nem tartok annyira a kihalasatol.

De egyebkent ez is jogos, egyik korabbi munkaadomnal en is csodalkoztam, amikor termeket epitettek egy olyan ARM IC-re, aminek leallt addigra a gyartasa. Volt eleg a szekrenyben, bevallaltak. Hobbi celra - es ehhez tartozo mennyisegre - viszont nem latok benne problemat.

--
When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin

Meg egy eszembe jutott: egy tetszoleges Arduino (mondjuk a fenti nano), egy marek dioda (mondjuk 1N4147), es Charlieplexinggel kiolvashatod. Extrem esetben a szukseges 25-30db tobbszoroset is tudja.

--
When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin

No offense, de ...
Szóval van itt egy konkrét feladat, arra kell valami olcsó, egyszerűen összerakható, nem pilótavizsgás megoldást csinálni. Ezért javasoltuk többen az arduino-t, ami kezdőknek van kitalálva, alkalmas a feladatra, OOTB megy egy az USB, nem kell hozzá programozó, stb. A sw pedig buta mint a föld, de ez itt inkább előny mint hátrány, és tele van a net példakóddal, valamint olyan emberrel aki tud segíteni ha megakad.
És ebből a szempontból tök mindegy, hogy tud-e c99-et, vagy hogy megvette-e a Microchip az Atmelt...

Soha nem tudhatod, hogy a kapcsolók olvasgatásán kívül mikor kell java appot futtatni, vagy 4k-s videót is lejátszani. A programnak is hordozhatónak kell lennie raspály és vindóz platformokra, hiszen bármikor felmerülhet még egy relé kapcsolgatásának műszaki igénye. Azt meg egy assembler utasítás helyett sokkal jobb így megoldani!

Én erre az eszközre szavazok. Az alap kapcsoláshoz kell 3db kondenzátor, 33 bemenetet védő ellenállás és 24db pullup, meg egy usb csatlakozó.
Van hozzá bootloader és usb stack.

100 dollárért saját kezűleg húzom fel az összes bemenetet. ;)
Egyébként ez nem board, csak egy mcu. A board nélkül, de a csatlakozókkal együtt, úgy 2500Ft az anyagköltsége. Még kvarc se kell neki. ;)
Viszont van hozzá usb driver, amely 1000 termékben hibátlanul működik.
Valamint az én bátyám sokkal erősebb! :-D

A kit-ek is kezdőknek készültek. A hozzá adott mintákkal elindítani a lapot olyan nehéz, mint egy villanykapcsolót felkapcsolni.Saját igényekre változtatni a mintákat, debuggal megállítani a futást, hogy lássa mikor mi történik a kártyán = semmivel nem pótolható, élvezetes tanulás. Arduino erre nincs lehetőség. Szerintem felesleges mézesmadzag.
PIC18 is többen javasolják. Én meglepődtem hogy egyedi assemblit kell tanulni, mert a c99 nem tudja. Ettől nagyon el száll az ember lelkesedése.

Ha debuggerrel megállítod az USB kommunikációt, az abban a pillanatban szét is esik.

Az assembly-től miért száll el az ember lelkesedése? Szerintem attól jön meg igazán. Ha valami borzalmas, az regisztereket, biteket masszírozni C szintaxissal, meg az, hogy leírsz valamit, s fogalmad sincs, mennyi memóriát, futásidőt emészt majd fel. Ez nagy gépen nem gond, de egy picike mikrokontrolleren az lehet.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Ha ez probléma, akkor lehet külön konv IC SPI-USB-re, v log tartományt figyelni, v lemondani USB-ről amíg a többit teszteli.
Egyre kevésbé számít az ASM előnye, mert MEM és sebesség szempontból folyamatos a fejlődés a kicsiknél is. 20kB->1MB 20Mhz->120MHz
Csodállom a MenuetOS, Purebasic alkotóinak a munkáit, de az ASM készítésre nem lessz szükség.

A MenuetOS, Purebasic és ASM. Ez jó! Csak nem tudni miről beszélsz. :-D

Ajánlok egy régebbi vitát tanulmányozásra. Az ne zavarjon, hogy én is írtam oda valamit. ;) Azért gondolkodj el egy kicsit. Ha a program 100 utasításból és 3 bájt memória felhasználásával megírható és néhány száz kHz-es órajel elegendő hozzá, akkor mi előnye van az 1MB memóriának, vagy a 120MHz órajelnek?

Szerintem egy mcu elsősorban hardvert valósít meg, amit egy kicsit programozni is lehet. Ha nem erről van szó, akkor lehet pc vagy rpi az alap. Ilyenkor viszont lehet szoftvert írni tetszőleges nyelven.

Az ASM meg roppant bonyolult! Mind a 35 utasítás. Mondják ezt azok, akik több 10000 class-t használnak. ;) Inkább arról van szó, hogy aki szerint ez felesleges, az nem tud ASM-ben programozni és leginkább nem ismeri a hardvert.

Az USB... főként azért divatos, mert egy laptopon nincsen más lyuk...

Biztos van valahol egy másik bucko, aki azért morog, hogy miért kell ehhez MCU, meg lehet építeni diszkrét alkatrészekből is, amit ráadásul nem kell programozni sem.

És biztos van valahol még egy bucko, aki meg azért morog, hogy miért kell ehhez tranzisztor, amikor ott vannak az elektroncsövek is, amelyek sokkal szebbek.

És persze van valahol még egy bucko, aki meg minderre azért morog, mert az elektroncső helyett elég lenne erre néhány relé is, felesleges elektroncsöveket fűteni.

És persze volt valahol még egy bucko is, aki szerint az egész elektromosság hülyeség, úgy, ahogy van, mert tisztán mechanikusan kell megoldani a problémákat, de szerencsére ez a generáció már teljesen kihalt, ahogy a többi is ki fog... akik érdekes módon soha nem a múltat sírják vissza, hanem a saját aranykorukat, amikor még tudták követni a fejlődést és nem ment el mellettük a világ.

Ez egyébként mindig is így volt, csak ez az első olyan korszak, amikor annyira gyors lett a fejlődés, hogy egy új technológia hetek-hónapok-évek alatt elterjed, nem lehet már egy élet munkáját alapozni arra, amit az inas a mestertől megtanult.

--
https://iotguru.live

Ugyan már! Itt mindösszesen 1db naív bucko létezik.
Hiába öreg, meg tapasztalt, mégis megvezeti az a sok aljas gyártó.
Még a 80-as években - amikor már volt 64 bites processzor - a legnagyobb példányszámban eladott termék a 4 bites, 30..50 cent árú processzor volt.
Azóta meg rengeteget fejlődtünk! A Microchip (akiket nyilvánvalóan hajbi pénzel!) rendre hozza ki az újabbnál-újabb 8 bites pic16-os (14 bites utasításszó) termékeit. Ócska kis vacakok ezek, mert se windows, se linux, se java nem fut rajtuk. Azt már meg se kellene említenem, hogy ez a gyártó megvette a magasszintű nyelvet támogató Atmel platformot.
Szóval nem eredendően vagyok maradi, csak megvezettek. ;)

Ez egyébként mindig is így volt, csak ez az első olyan korszak, amikor annyira gyors lett a fejlődés, hogy egy új technológia hetek-hónapok-évek alatt elterjed, nem lehet már egy élet munkáját alapozni arra, amit az inas a mestertől megtanult.
Így is van. Persze a roppant elavult tudásom azért elegendő ahhoz, hogy nálam jóval fiatalabb programozókat tanítsak programot írni. Méghozzá C#-ban is - amihez abszolút nem értek, csak a feladat megoldásához. Az új technológia tán az, amikor az interrupt neve mától thread? (Ok, ez egy kissé csúsztatás.) Hidd el, ha a fiatal versenyzőnek nem áll föl, akkor el tudom mesélni milyen volt, amikor nekem még fölállt. ;) Azzal az apró különbséggel, hogy a hardver oldalt én programozom és nekem semmi problémám sem szokott lenni.

Az ASM PIC esetén speciális dolog. Egyelőre, ebben a fejlett világban, nem sikerült annyira side-effect mentes fordítót és libet találni, amivel megérné szívni. Bizonyára új technológiával készült. :-D Talán Atmel platformon én is C-t használnék.

Aztán a sokszor hetek-hónapok alatt elterjedő új technológiák általában drágábbak. Ez a tulajdonság már évi 100db-os gyártásnál előtérbe kerül. Pl. egy termékben a 700Ft-os alkatrészár nem rossz. Ha egy számmal nagyobb mcu-t választok, akkor minimum +500Ft és a megnövekedett panelméret duplázza a költségeket. Persze a hobbiprojekt az más...

Van abban igazság, amit írsz. Ugyanakkor itt jegyzem meg, az MCU célorientált. Tehát jellemzően egyszerű, mint a faék, keveset fogyaszt, különösképp, ha pusztán azért nem hajtod feleslegesen gyorsan, mert magas szinten programozod. Továbbra is gyártanak 8 bites picike MCU-kat, amelyeket lehet ugyan C-ben programozni, csak nem érdemes. És van egy rakás hétköznapi és kevésbé hétköznapi feladat, amelyre sokkal alkalmasabbak, mint egy összetett architektúra, mint pl. a Raspberry Pi.

Ha a feladat egy kerékpár hátsó lámpa LED-jeinek három féle séma szerinti villogtatása, nyomógombbal ezek között választás, akkor nem fogok 4 magos CPU-val, 1 GiB RAM-mal, meg operációs rendszerrel nekifeszülni ennek csak azért, mert milyen jó, hogy magas szinten programozható.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

A 8 bites picike MCU és a Raspberry között nem egy diszkrét lépcső van, hanem ott is van több ezer más MCU és board, amelyek mondjuk programozhatóak magasabb szintű nyelven. És magasabb szintű nyelven nem azért programozunk, mert balfaszok vagyunk, hanem azért, mert az assembly programozás nem egy erény, hanem egy szűk hardver adta szükség volt... és kezdünk ott tartani, hogy már igen nagy szériák esetén se éri meg az assembly szintjén maradni.

--
https://iotguru.live

A legegyszerűbb egy natív USB-vel rendelkező arduino alapú cucc, pl. aliról valami atmega32u4-es board.

Egyébként mi a feladat? Mert lehet, hogy már elmentél olyan irányba, amerre nem kellett volna és van egyszerűbb megoldás, ha visszalépünk ahhoz a ponthoz, hogy mi a problémád.

--
https://iotguru.live

Ehhez nem kell USB.
Az RPi ismeri az I2C-t, az SPI-t stb. Van rajta GPIO bőven, nem nagyon vagy bekorlátozva, az eddig ajánlott dolgok közül egy csomó simán illeszthető hozzá.
Veszel 2db MCP23017-et, egy marék optocsatolót, még egy marék ellenállást, és már írhatod is a programot hozzá.

Megjegyzés: célszerű legalább 12V-os jelszintekkel dolgozni az érintkezőknél, mert sokszor 10m-es távolságokról is lehet szó egy nagyobb lakásban. Akár használhatod a PLC-knél bevált bemeneti illesztőket is, azok általában 24V-ról mennek, ipari környezetben is stabilan működnek. Texas Instruments, Silicon Laboratories stb. gyártanak ilyen IC-ket:
http://www.ti.com/product/ISO1211
https://www.silabs.com/products/isolation/digital-isolators/si838x-digi…
https://www.silabs.com/documents/public/application-notes/AN970.pdf

Ebben az esetben talan jobban jarsz egy ablakonkent/ablakcsoportonkent telepitett mikrokontrolleres board-dal. A uC-nek lehet eleg laba ahhoz, hogy a kozeli ablakokat trukkozes nelkul lekezelje, a kozpont fele meg kommunikalhat relative keves vezeteken (mondjuk RS485-on, +tap+GND, 4 vezetekkel megoldod telefonkabelen, extrem esetben akar lemehetsz 1+GND-re is 1wire protokollal).

Ha nem akarsz magad forrasztgatni, akkor meg a lent mar emlitett riasztokozpontot ajanlom en is. Foleg, ha biztonsagkritikus, es nem csak hazautomatizalasos jatek a cel.

--
When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin

Hát, igen, ezt a feladatot már ott elrontottad, hogy RasPi-t választottál és megterveztél egy elektronikai hálózatot elektronikai tudás hiányában. :/

Nem fog menni. Nekifuthatsz, szophatsz vele heteket, hónapokat, aztán majd kidobod és veszel egy riasztót. A riasztóban nem az okosságot kell megfizetni, hanem az üzembiztonságot, amit egy RasPi nem fog megadni, illetve egy nem PLC-szerűen védett bemenetekkel rendelkező board sem... különben úgy jársz, hogy bekapcsolod a turmixgépet és a RasPi ablaknyitást jelez és/vagy elhalálozik a GPIO és többet nem jelez ablaknyitást...

ha játszani akarsz, akkor elég lehet a RasPi saját PIN készlete, van rajta legalább 26 GPIO, ha GND-re kötöd a kapcsolóid közös pontját és felhúzó ellenállással a GPIO-ra, akkor így tudsz kezelni 26 kapcsolót. Ha több kell, veszel expansion board-ot hozzá.

--
https://iotguru.live

Jó, nyilván A/D konverterrel olvasnék be egy-egy bemenetet, hogy a szakadást és rövidzárat is detektálni tudjam. Védelem is kell a bemenetre. A multiplexelés az EMC követelményeknek sem felelne meg, szórná a zajt rendesen. Az a mátrixos gondolat csak teljesen elméleti felvetés volt.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Valamint 26-1 az 25, es 26*25 az 650, ennyivel le tudsz kezelni egy eleg nagy epuletet. Persze a kabelezes miatt en sem igy csinalnam, de ha mar szamolgatunk.. (jo, kell hozza egy par dioda pluszban, de a tiedhez is)

--
When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin

Szervusz Gábor!

Amennyiben van minden ablakhoz vezetéked, úgy én egy riasztó központot javasolnék.(ahova nincs, oda rádiós kiegészítővel) Ügyesen telepített nyitás érzékelővel még bukóra is lehet nyitva éjszaka, úgy hogy ha közben benyúlnak és kiakasztják, jelezni tud GSM, Internet, mobil app, etc ;) irányába.
Érvek mellette:
- erre van tervezve
- szabotázs, bolond biztos
- van kezelője, kijelzője
- normális tápja van
- rádiós kiegészítő normalis kommunikációval
- normálisan megy akkuról
- üzembiztos SW tákolás nélkül
- készen megvehető, biztos forrás
- sorosan lekérdezhető állapotok
- ipari RS485 bővíthetőség galvanikus izolátorral akar
- VDS minősítés GRADE II
- nem horror az ára
- én is ezt használom és tudok segíteni
Szerintem. :D
Páka, vfero

még egy javaslat: hosszú vezetékeknél arra is kell vigyázni, hogy ezek már antennaként viselkednek, elég nagy lehet rajtuk a zaj... ami extrém esetben tönkre is vághatja a digitális/analóg bemenetedet.

megoldás pl. https://i.stack.imgur.com/grkqV.png

Impulzusok reflexióival lehetne akár vezeték szakaszt is mérni! Utána nyúlj a kábelhez.:D