Identifikácia vstupu z viacerých tlačidiel na zbernici

Všetko čo sa týka mikropočítačov + Sekcia Arduino

Moderátori: psichac, Moderátori

esp32
Okoloidúci
Okoloidúci
Príspevky: 22
Dátum registrácie: 05 Aug 2017, 13:23

Identifikácia vstupu z viacerých tlačidiel na zbernici

Príspevok od používateľa esp32 » 05 Aug 2017, 13:45

Zdravím, potreboval by som zistiť ako zapojiť viaceré tlačidlá alebo senzory na jednu zbernicu a následne napríklad cez Arduino a jeden digitálny vstup identifikovať ktoré tlačidlo bolo aktivované alebo prijímať dáta zo senzorov, napríklad teplotu, či vlhkosť vzduchu.

Ako už iste tušíte, ide o automatizáciu domácnosti a cieľom je vziať bežné tlačidlo umiestňované na stenu, registrovať jeho stlačenia a na základe toho kontrolovať napríklad žiarovku pripojenú cez relé, t.j. stlačenie vo vypnutom stave ju zapne, stlačenie v zapnutom stave ju vypne, dvojité stlačenie vypne všetky žiarovky a tak podobne.

Za posledné tri dni som prešiel kvantá informácií o rôznych zberniciach (RS485, 1-Wire, CAN), protokoloch (Modbus, KNX, 1-Wire) a integrovaných obvodoch typu MCP2551 alebo DS2413, no stále neviem pochopiť ako presne to mám spraviť. Predstavujem si to tak, že za každým bežným tlačidlovým spínačom bude nejaký mikroprocesor na ktorého vstup bude pripojený spínač a výstup pôjde cez jeden dátový kábel na zbernicu, pričom keď dostane vstupný signál a zbernica bude voľná, vyšle digitálny signál obsahujúci jedinečný identifikátor, informáciu o stlačení a koniec správy. Tento signál zaregistruje napríklad Arduino a bude ďalej konať.

Hľadané riešenie by malo byť čo najviac otvorené s dostupnými knižnicami pre Arduino, odolné voči šumu na 50 m vzdialenosti, s možnosťou vetvenej topológie a s čo najvyššou prenosovou rýchlosťou.

Ďakujem!
0

Používateľov profilový obrázok
juraj77
Ultimate člen
Ultimate člen
Príspevky: 1538
Dátum registrácie: 23 Sep 2012, 22:39
Bydlisko: Nitra
Vek: 44

Re: Identifikácia vstupu z viacerých tlačidiel na zbernici

Príspevok od používateľa juraj77 » 05 Aug 2017, 15:18

na akú vzdialenosť by to malo posielať dáta ?
Pozri si v Googli UART komunikáciu ....
0
" Bez vody si viem predstaviť život, ale bez internetu a počítača nie.."

Používateľov profilový obrázok
djwiktor
Ultimate člen
Ultimate člen
Príspevky: 1624
Dátum registrácie: 01 Júl 2010, 00:00
Bydlisko: Šaľa
Vek: 36
Kontaktovať používateľa:

Re: Identifikácia vstupu z viacerých tlačidiel na zbernici

Príspevok od používateľa djwiktor » 05 Aug 2017, 15:56

na tie vzdialenost a poziadavky co mas , jedine RS485. a bohato postaci ak vsetky tlacitka budu slave, a arduino bude master ktory to raz za 100ms vsetko oslovi.
0
Tlacim na 3D tlaciarni Felix 3.0 dual
Stormchasers.sk

esp32
Okoloidúci
Okoloidúci
Príspevky: 22
Dátum registrácie: 05 Aug 2017, 13:23

Re: Identifikácia vstupu z viacerých tlačidiel na zbernici

Príspevok od používateľa esp32 » 05 Aug 2017, 16:12

juraj77 napísal:na akú vzdialenosť by to malo posielať dáta ?
Pozri si v Googli UART komunikáciu ....
Desiatky metrov, no ak tomu správne rozumiem, UART nepodporuje viac zariadení na jednej zbernici (čo sa, myslím, označuje ako multidrop).
djwiktor napísal:na tie vzdialenost a poziadavky co mas , jedine RS485. a bohato postaci ak vsetky tlacitka budu slave, a arduino bude master ktory to raz za 100ms vsetko oslovi.
Rovnako som na základe rôznych informácií inklinoval k RS-485, avšak stále si neviem predstaviť konkrétnu implementáciu. Mohol by si mi k tomu, prosím ťa, napísať viac? Ideálna by bola aj schéma, prípadne zoznam a popis potrebných súčiastok a spôsob ich zapojenia.

Dá sa namiesto oslovovania každého zariadenia na zbernici každých 100 ms naprogramovať jednotlivé zariadenia tak, aby posielali dáta iba v prípade, že je splnená nejaká podmienka (aktivuje sa tlačidlo), alebo každých n sekúnd (napríklad teplotu stačí monitorovať raz za minútu, povedzme)?
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: Identifikácia vstupu z viacerých tlačidiel na zbernici

Príspevok od používateľa peterple » 05 Aug 2017, 16:31

UART znamená že data sa prenášajú určitý čas bez synchronizácie. Vôbec to nesúvisí s tým či sú tam iba dva alebo viac komunikačných uzlov.
Je to teda spôsob prenosu. Aké to bude mať vlastnosti určuje fyzická vrstva:
RS232 - komunikácia iba bod bod. vzdialenosť prenosu do 25m. (podľa normy)
RS422 - komunikácia bod bod. vzdialenosť prenosu 1,2km
RS485 - komunikácia 32 bodov na jenom dvojdráte ale bez rozbočiek. vzdialenosť prenosu 1,2km

To čo ti navrhli sa volá zbernica typu Master Slaves.
To čo chceš ty je multiMaster zbernica. Dá sa aj také ale budeš musieť riešiť kolízie ktoré môžu nastať ak dva uzly začnú vysielať v tom istom čase. Vzhľadom na tvoje nulové skúsenosti ti dobre radia prvý spôsob.

Môj záver čo je pre teba najvýhodnejšie: RS485, Master slave zbernica a zabudni na rozvetvovanie iba paralelným spájaním vodičov.

-- Spojený príspevok 05 Aug 2017, 15:44 --

Inak nič nebráni masterovi aby sa na niektoré veci pýtal 10x za sekundu a na niektoré raz za minútu. Ak to bude mať pod palcom jeden master vyhneš sa veľa problémom.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

esp32
Okoloidúci
Okoloidúci
Príspevky: 22
Dátum registrácie: 05 Aug 2017, 13:23

Re: Identifikácia vstupu z viacerých tlačidiel na zbernici

Príspevok od používateľa esp32 » 05 Aug 2017, 17:07

peterple napísal:UART znamená že data sa prenášajú určitý čas bez synchronizácie. Vôbec to nesúvisí s tým či sú tam iba dva alebo viac komunikačných uzlov.
Je to teda spôsob prenosu. Aké to bude mať vlastnosti určuje fyzická vrstva:
RS232 - komunikácia iba bod bod. vzdialenosť prenosu do 25m. (podľa normy)
RS422 - komunikácia bod bod. vzdialenosť prenosu 1,2km
RS485 - komunikácia 32 bodov na jenom dvojdráte ale bez rozbočiek. vzdialenosť prenosu 1,2km

To čo ti navrhli sa volá zbernica typu Master Slaves.
To čo chceš ty je multiMaster zbernica. Dá sa aj také ale budeš musieť riešiť kolízie ktoré môžu nastať ak dva uzly začnú vysielať v tom istom čase. Vzhľadom na tvoje nulové skúsenosti ti dobre radia prvý spôsob.

Môj záver čo je pre teba najvýhodnejšie: RS485, Master slave zbernica a zabudni na rozvetvovanie iba paralelným spájaním vodičov.

-- Spojený príspevok 05 Aug 2017, 15:44 --

Inak nič nebráni masterovi aby sa na niektoré veci pýtal 10x za sekundu a na niektoré raz za minútu. Ak to bude mať pod palcom jeden master vyhneš sa veľa problémom.
Začínam tomu lepšie rozumieť, ďakujem. Moje nepochopenie UART bolo spôsobené zlým vysvetlením v iných zdrojoch – vedel by si mi k tomu, čo sa snažím dosiahnuť, poradiť nejakú kvalitnú úvodnú literatúru?

Pokiaľ ide o multi-master, myslel som si, že o kolízie sa stará komunikačný protokol. V súvislosti s CAN som napríklad čítal, že v prípade kolízie je odoslaná správa s vyššou prioritou, pričom tá druhá je dočasne uložená a odoslaná neskôr. Chcel som tiež distribuované riadenie, aby porucha centrálneho riadenia úplne neznefunkčnila celý systém.

Určite si ale nechám poradiť, takže master-slave. Rozumiem teda správne, že master by bolo v tomto prípade napríklad Arduino, na digitálne vstupy by boli pripojené jednotlivé zbernice a na každej z nich maximálne 32 bodov (t.j. tlačidlo/senzor), pričom každý bod by mal vlastnú adresu, podľa ktorej by sa master v nastavenom časovom intervale pre každý bod pýtal na stav daného senzoru, správne?

Mohol by si mi k tomu uviesť príklad zapojenia a potrebných súčiastok, prosím ťa?
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: Identifikácia vstupu z viacerých tlačidiel na zbernici

Príspevok od používateľa peterple » 05 Aug 2017, 17:38

Hej o kolízie sa stará komunikačný protokol. Lenže ten musí niekto naprogramovať. CAN protokol arduino zabudovaný nemá. môžeš pripojiť budič CANu ale protokol musíš naprogramovať. To potom zaleží na tom aký dobrý kód nájdeš, urobíš.
Tvoja predstava mi naznačuje že o hw toho veľa nevieš. Klasické Arduino má jeden UART kanál takže tú zbernicu tam môžeš pripojiť jednu. Dá sa určite urobiť aj sw UART ktorým môžeš komunikovať aj na iných IO linkách ale to je zase nie celkom jednoduché. Takže na začiatok by si mal vystačiť s jednou zbernicou. Tých 32 uzlov môže byť aj prekročených ak použiješ vhodné obvody (až 128).

Čo sa týka RS485 to je len fyzická vrstva. Zase potrebuješ protokol ktorý bude data prenášať. Teda linkovú vrstvu. Tu zaleží zase čo nájdeš použiješ, alebo si urobíš vlastné. Pozri si Modbus ASCII a RTU. či ti bude vyhovovať alebo nie.

príklad na úvod
http://www.arduino8.cz/lekce-35-arduino ... ost-1200m/
ale to je len bod bod.

Chápem prečo chceš distribuované riadenie, len to nie je také jednoduché ako to vyzerá.

-- Spojený príspevok 05 Aug 2017, 16:51 --

Ešte jedno upozornenie: Ako to už pri arduinistoch býva tak tvrdia často rôzne hlúposti. V článku na ktorý som dal odkaz sa píše že netreba prepájať uzlom GND, že stačí iba A a B. Nie je to pravda a GND je potrebné prepojiť, aj keď mnohí budú tvrdiť že im to bez GND funguje. Áno funguje to v 99% prípadoch.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

alois

Re: Identifikácia vstupu z viacerých tlačidiel na zbernici

Príspevok od používateľa alois » 05 Aug 2017, 18:46

Iba otázka veci neznalého:

Nie je lepšie rozdeliť dom do viacerých sekcií a tie riadiť samostatným mastrom? Viem o človeku, ktorý to má vo svojom RD urobené a funkčné, len ak mu klakol / zakúsol sa soft, celý dom sa zbláznil. Potom rozdelil dve poschodia, garáž, pivnicu a exteriér na samostatné riadiace jednotky a bolo po probléme. Ale je fakt, že každé tlačidlo riešil ako samostatný stavový vstup, nie zbernicovou komunikáciou.

esp32
Okoloidúci
Okoloidúci
Príspevky: 22
Dátum registrácie: 05 Aug 2017, 13:23

Re: Identifikácia vstupu z viacerých tlačidiel na zbernici

Príspevok od používateľa esp32 » 05 Aug 2017, 19:41

peterple napísal:Hej o kolízie sa stará komunikačný protokol. Lenže ten musí niekto naprogramovať. CAN protokol arduino zabudovaný nemá. môžeš pripojiť budič CANu ale protokol musíš naprogramovať. To potom zaleží na tom aký dobrý kód nájdeš, urobíš.
Tvoja predstava mi naznačuje že o hw toho veľa nevieš. Klasické Arduino má jeden UART kanál takže tú zbernicu tam môžeš pripojiť jednu. Dá sa určite urobiť aj sw UART ktorým môžeš komunikovať aj na iných IO linkách ale to je zase nie celkom jednoduché. Takže na začiatok by si mal vystačiť s jednou zbernicou. Tých 32 uzlov môže byť aj prekročených ak použiješ vhodné obvody (až 128).

Čo sa týka RS485 to je len fyzická vrstva. Zase potrebuješ protokol ktorý bude data prenášať. Teda linkovú vrstvu. Tu zaleží zase čo nájdeš použiješ, alebo si urobíš vlastné. Pozri si Modbus ASCII a RTU. či ti bude vyhovovať alebo nie.

príklad na úvod
http://www.arduino8.cz/lekce-35-arduino ... ost-1200m/
ale to je len bod bod.

Chápem prečo chceš distribuované riadenie, len to nie je také jednoduché ako to vyzerá.

-- Spojený príspevok 05 Aug 2017, 16:51 --

Ešte jedno upozornenie: Ako to už pri arduinistoch býva tak tvrdia často rôzne hlúposti. V článku na ktorý som dal odkaz sa píše že netreba prepájať uzlom GND, že stačí iba A a B. Nie je to pravda a GND je potrebné prepojiť, aj keď mnohí budú tvrdiť že im to bez GND funguje. Áno funguje to v 99% prípadoch.
Rozumiem, ja som počítal s tým, že pre Arduino aj iné platformy existujú otvorené knižnice implementujúce aspoň populárne protokoly, ktoré s vhodným hardvérom (či už celý shield, alebo len nejaký integrovaný obvod) pôjdu bez problémov aj učenlivému amatérovi. Napríklad toto: https://github.com/Seeed-Studio/CAN_BUS_Shield

Áno, skutočne toho o hardvéri veľa neviem a vyštudoval som pomerne nesúvisiaci odbor – doteraz som sa maximálne hral s nejakými analógovými obvodmi a Arduinom typu čítanie a grafovanie výstupu z fotorezistora – ale mám dosť času a rád by som sa naučil, preto som vďačný, že ste tu ochotní mi poradiť. Už viackrát som si síce povedal, že by som si radšej kúpil hotový systém typu Loxone alebo Domotron, ale z princípu nechcem zaplatiť takú obrovskú maržu, navyše za uzavreté riešenie, plus toto je zaujímavejšie a naučím sa zároveň niečo nové.

Pokiaľ ide o počet kanálov, myslel som si, že je to jednoduché cez knižnicu SoftwareSerial.h ako v tom návode, na ktorý si mi poslal odkaz. Jedna zbernica bez vetvenia mi nepostačuje, pretože to by musel ísť jeden kábel okolo celého domu. Pre edukačné účely a prototyp by to ale kľudne stačilo aj takto, čiže nenamietam.

Chápem to teda správne, že každá zbernica (bus) je len fyzická vrstva, ktorá definuje určité technické parametre ako logické stavy, impedancia, maximálny počet uzlov, maximálna dĺžka a tak podobne, pričom každý protokol v tomto zmysle (t.j. ako spomínaný Modbus RTU) je len linková/spojová vrstva, ktorá definuje parametre typu dĺžka adresy, dĺžka a zloženie správy, korekcia chýb a tak ďalej? Ako a cez čo sa potom dostanem na aplikačnú vrstvu?

Povedzme ale teda, že by som zvolil Modbus RTU, o ktorom som už čítal a mal by byť najbežnejší a najkompaktnejší. Ako ďalej?

Tu som našiel návod na komunikáciu cez Modbus RTU s nejakým teplotným čidlom, čo vyzerá presne tak, ako si to predstavujem, avšak nikde tam nie je popis hardvéru, prípadne táto knižnica vyzerá ešte lepšie a uvádza, že bola testovaná s Arduinom a MAX488EPA (čo mi konečne dáva zmysel, pretože ide o skupinu integrovaných obvodov s názvom RS-485 transceiver a už som na ne narazil, avšak nevedel som, čo s nimi).

Stále si však neviem predstaviť vhodné zapojenie.


Inak, ja mám pocit, že veľa ľudí, ktorí tieto veci na internete vysvetľujú, celkom nevie, o čom hovorí, pretože som našiel viaceré protichodné a nesprávne informácie (napríklad o tom UART). Preto som aj taký zmätený a za tri dni vlastného bádania som z dostupných zdrojov spravil malý progres. Som preto tiež rád, že som našiel toto fórum, ktoré pôsobí značne odbornejšie.
alois napísal:Iba otázka veci neznalého:

Nie je lepšie rozdeliť dom do viacerých sekcií a tie riadiť samostatným mastrom? Viem o človeku, ktorý to má vo svojom RD urobené a funkčné, len ak mu klakol / zakúsol sa soft, celý dom sa zbláznil. Potom rozdelil dve poschodia, garáž, pivnicu a exteriér na samostatné riadiace jednotky a bolo po probléme. Ale je fakt, že každé tlačidlo riešil ako samostatný stavový vstup, nie zbernicovou komunikáciou.
Ja by som ideálne išiel do distribuovaného riadenia, len ako zisťujem, nebude to také jednoduché. :) Dúfam, že pri tomto modeli bude možné urobiť minimálne nejaký záložný systém.
0

Používateľov profilový obrázok
djwiktor
Ultimate člen
Ultimate člen
Príspevky: 1624
Dátum registrácie: 01 Júl 2010, 00:00
Bydlisko: Šaľa
Vek: 36
Kontaktovať používateľa:

Re: Identifikácia vstupu z viacerých tlačidiel na zbernici

Príspevok od používateľa djwiktor » 05 Aug 2017, 19:56

Spravit HW a vlastne asi aj SW ako vidim, by som sa na to podujal, samozrejme v zavislosti od toho, co ocakavas, aky mas rozpocet a ako ti to ponahla. 485ka a modbus RTU uz nie je len take haluskovanie s ledkou. Ja mam MOdbus RTU mastra spraveneho, ale kedze to nejaku dobu trval vyvoj, tak to tu nebudem supat zadarmo len tak. Aj HW strana je hotova a oskusana. Ono pokojne mozes byt napriklad na mega2560 - ta ma 4x HW uart, teda ak nepotrebujes debug (HW) tak mozes mat 4 nezavisle zbernice. Debug port moze byt softverovy, to postaci. Urcite vsak treba mysliet na Nodes - teda slave . pises tlacitka ktore sa davaju na stenu - mam otazku - uz tam tie tlacitka a vypinace mas ? lebo ak ano, tak treba mysliet na to, ze jak su zapojene - ak k nim idu len dva droty, teda faza a spinana faza na svetlo... tak to nie je mozne urobit. Ak to ale este nemas, a planujes tahat vsade nejaky FTP kablik, tak tpoom v pohode. Lebo treba mysliet aj na to, ze kazdy slave treba zivit z niecoho.
0
Tlacim na 3D tlaciarni Felix 3.0 dual
Stormchasers.sk

esp32
Okoloidúci
Okoloidúci
Príspevky: 22
Dátum registrácie: 05 Aug 2017, 13:23

Re: Identifikácia vstupu z viacerých tlačidiel na zbernici

Príspevok od používateľa esp32 » 05 Aug 2017, 20:17

djwiktor napísal:Spravit HW a vlastne asi aj SW ako vidim, by som sa na to podujal, samozrejme v zavislosti od toho, co ocakavas, aky mas rozpocet a ako ti to ponahla. 485ka a modbus RTU uz nie je len take haluskovanie s ledkou. Ja mam MOdbus RTU mastra spraveneho, ale kedze to nejaku dobu trval vyvoj, tak to tu nebudem supat zadarmo len tak. Aj HW strana je hotova a oskusana. Ono pokojne mozes byt napriklad na mega2560 - ta ma 4x HW uart, teda ak nepotrebujes debug (HW) tak mozes mat 4 nezavisle zbernice. Debug port moze byt softverovy, to postaci. Urcite vsak treba mysliet na Nodes - teda slave . pises tlacitka ktore sa davaju na stenu - mam otazku - uz tam tie tlacitka a vypinace mas ? lebo ak ano, tak treba mysliet na to, ze jak su zapojene - ak k nim idu len dva droty, teda faza a spinana faza na svetlo... tak to nie je mozne urobit. Ak to ale este nemas, a planujes tahat vsade nejaky FTP kablik, tak tpoom v pohode. Lebo treba mysliet aj na to, ze kazdy slave treba zivit z niecoho.
Chápem, že je to veľký a pri mojich vedomostiach veľmi ambiciózny projekt, ale som celkom schopný človek a baví ma to, tak prečo neskúsiť? :) Chcem spraviť niečo vlastné, na čom sa aj naučím. Peňazí mám na to koľko treba pokiaľ budem platiť maloobchodnú cenu komponentov a nie navyše 800% maržu, pretože IoT a automatizácia domácnosti je zrazu v móde a na trhu sú samé uzavreté riešenia, alebo za veci, ktoré vôbec nepotrebujem (ako spomínaný Cat7 kábel).

Tlačidlá/spínače ani iné senzory zatiaľ nemám a rovnako nemám ani natiahnuté káble. Nemám vlastne ešte ani byt, do ktorého chcem nasadiť prototyp, takže som veľmi flexibilný a začínam v predstihu aby som našiel to najlepšie riešenie (rozšíriteľné aj na dom, či iný väčší objekt).

Že mi nedáš presný návod, samozrejme, rešpektujem. Ak si však ochotný podeliť sa takto bezodplatne aspoň o nejaké tipy, budem rád. Ide mi len o to vedenie signálu cez zbernicu a jeho doručenie serveru, ktorý ho ďalej spracuje. To Mega 2560 znie dobre, vďaka!
0

Používateľov profilový obrázok
djwiktor
Ultimate člen
Ultimate člen
Príspevky: 1624
Dátum registrácie: 01 Júl 2010, 00:00
Bydlisko: Šaľa
Vek: 36
Kontaktovať používateľa:

Re: Identifikácia vstupu z viacerých tlačidiel na zbernici

Príspevok od používateľa djwiktor » 05 Aug 2017, 20:33

tak na RS485 ti postaci napriklad max3471 alebo max3485 alebo sn75176.
Rychlost - ako si pisal na zaciatku ze ti treba co najrychlejsie - vzhladom na to co potrebujes, ti postacia bezne rychlosti, napriklad 19200.

Treba ti UART (RX/TX) a este jeden digitalny pin na riadenie smeru ( to sa bavime o mastri aj slave)
Kniznica MODBUS RTU Master aj MODBUS RTU Slave najdes na webe. Principalne to nie je nic tazke .

Slave bude pocas svojho zivota ukladat do nejakeho registra hodnotu, ci uz napriklad teplotu, alebo stav..
Slave musi mat jednoznacne urcene ID ( ak to chces modularne - urob si jednu dosku , a na digitalne piny nejakej atmega328 si urob v BCD par vstupov, aby si si vedel napriklad malym switchom na DPS nastavit IDcko. Nemozu byt na jednej zbernici dva Slave s rovnakym ID, inak si zhodis komunikaciu, alebo ti pridu chujoviny.

Master moze pokojne zbernicu oslovovat aj 100x za sekundu ( ale samozrejme to zavisi od baudrate, od timeoutov a pod.. ) - 10x za sekundu je este okej.

aj ked to bude v dome/byte, nezabudaj na nejake aspon primitivne ochrany RS485 ( nespoliehaj sa na tie cipy osamote ), daj tam aspon jedno diodove pole. Najdes na googli

Na kazdy slave si n napajanie daj nejaku poistku, alebo daco... aby ked sa daco stane, tak aby ti nezdochol cely dom len koli tomu, ze jeden slave vyskratoval napajanie, ktore si mal spolocne pre vsetky slave.

Neviem co by som k tomu dal,, narychlo ma nic nenapada take jednoduche na zaciatok.
A k tym vzdialenostiam - tahat urcite FTP ( teda tieneny kruteny) - lebo urcite pojdu kable vedla silovych..
0
Tlacim na 3D tlaciarni Felix 3.0 dual
Stormchasers.sk

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: Identifikácia vstupu z viacerých tlačidiel na zbernici

Príspevok od používateľa peterple » 05 Aug 2017, 21:46

esp32 napísal: Rozumiem, ja som počítal s tým, že pre Arduino aj iné platformy existujú otvorené knižnice implementujúce aspoň populárne protokoly, ktoré s vhodným hardvérom (či už celý shield, alebo len nejaký integrovaný obvod) pôjdu bez problémov aj učenlivému amatérovi. Napríklad toto: https://github.com/Seeed-Studio/CAN_BUS_Shield

Áno, skutočne toho o hardvéri veľa neviem a vyštudoval som pomerne nesúvisiaci odbor – doteraz som sa maximálne hral s nejakými analógovými obvodmi a Arduinom typu čítanie a grafovanie výstupu z fotorezistora – ale mám dosť času a rád by som sa naučil, preto som vďačný, že ste tu ochotní mi poradiť. Už viackrát som si síce povedal, že by som si radšej kúpil hotový systém typu Loxone alebo Domotron, ale z princípu nechcem zaplatiť takú obrovskú maržu, navyše za uzavreté riešenie, plus toto je zaujímavejšie a naučím sa zároveň niečo nové.

Pokiaľ ide o počet kanálov, myslel som si, že je to jednoduché cez knižnicu SoftwareSerial.h ako v tom návode, na ktorý si mi poslal odkaz. Jedna zbernica bez vetvenia mi nepostačuje, pretože to by musel ísť jeden kábel okolo celého domu. Pre edukačné účely a prototyp by to ale kľudne stačilo aj takto, čiže nenamietam.

Chápem to teda správne, že každá zbernica (bus) je len fyzická vrstva, ktorá definuje určité technické parametre ako logické stavy, impedancia, maximálny počet uzlov, maximálna dĺžka a tak podobne, pričom každý protokol v tomto zmysle (t.j. ako spomínaný Modbus RTU) je len linková/spojová vrstva, ktorá definuje parametre typu dĺžka adresy, dĺžka a zloženie správy, korekcia chýb a tak ďalej? Ako a cez čo sa potom dostanem na aplikačnú vrstvu?

Povedzme ale teda, že by som zvolil Modbus RTU, o ktorom som už čítal a mal by byť najbežnejší a najkompaktnejší. Ako ďalej?

Tu som našiel návod na komunikáciu cez Modbus RTU s nejakým teplotným čidlom, čo vyzerá presne tak, ako si to predstavujem, avšak nikde tam nie je popis hardvéru, prípadne táto knižnica vyzerá ešte lepšie a uvádza, že bola testovaná s Arduinom a MAX488EPA (čo mi konečne dáva zmysel, pretože ide o skupinu integrovaných obvodov s názvom RS-485 transceiver a už som na ne narazil, avšak nevedel som, čo s nimi).

Stále si však neviem predstaviť vhodné zapojenie.

Inak, ja mám pocit, že veľa ľudí, ktorí tieto veci na internete vysvetľujú, celkom nevie, o čom hovorí, pretože som našiel viaceré protichodné a nesprávne informácie (napríklad o tom UART). Preto som aj taký zmätený a za tri dni vlastného bádania som z dostupných zdrojov spravil malý progres. Som preto tiež rád, že som našiel toto fórum, ktoré pôsobí značne odbornejšie.

Ja by som ideálne išiel do distribuovaného riadenia, len ako zisťujem, nebude to také jednoduché. :) Dúfam, že pri tomto modeli bude možné urobiť minimálne nejaký záložný systém.
Možno je tvoj predpoklad správny. Neviem, Nepatrím medzi arduinistov. Nepoznám ich "knižnice"(pre mňa divné volať includnutý súbor knižnicou). Zvyčajne čo som videl tak to boli len také polozlátaniny na nejakú jednoduchú vec založené na HardwareSerial triede. Poriadnu vec si každý vývojár cení a nepustí to len tak do sveta.
Zdá sa že sme odtialto arduinistov vyštvali alebo prázdninujú keď sa neozývajú. Problém je že tak či tak musíš tomu kódu porozumieť. inak nedáš dohromady HardwareSerial, SoftwareSerial.

Ďalší problém je že treba poznať aj hw toho arduina, teda AVR architektúru. A samozrejme hw obecne aby si vedel také detaily ako písal djwiktor.
Napríklad použiť SoftwareSerial na jeden kanál by asi nebol problém ale na viacero to už asi by problém bol. Len ak do toho bude behať aj niečo od hw kanála, a časovača tak už to nie je nič jednoduchého a ľahko sa dostaneš do takých problémov že musiš detailne poznať ako funguje prerušovací systém na AVR, alebo napr. riešiť atomickosť prístupu.
Takže radšej použiť lepší hw čo má viac hw UARTov než si to programovať cez sw. Alebo použiť viac mastrov a navzájom ich prepojiť napr I2C, SPI alebo ich pripojiť k niečomu nadriadenému.

Zbernica je podľa OSI modelu fyzická vrstva - chápeš to správne. Na ňou je linková ktorá robí presne to čo si napísal. No za tou to pri MCU dosť často končí nad tým je už aplikačná vrstva. Napr ten ModBus RTU/ASCI nieje spojovaný. To už si rieši aplikácia.
Niekde nájdeš aj TCP/IP alebo dokonca aj HTTP. ale na riadenie mi to príde dosť luxus. Hlavne ak tam ešte strčia wifi modul. Takémuto masterovi by som neveril že pobeží nonstop a že ho nezhodí hocijaký blbý paket, alebo web request

Schéma pre predstavu:
Obrázok
Nie je to síce arduino, ale sú tam dva hw UART kanály. jeden je pripojený na RS485 budič, druhý na RS232. Ten RS232 nahradíš nejakým USB <-> Serial prevodníkom a máš vývojový kit. Cez USB si to debuguješ/ovládaš z PC a cez RS485 si riadiš tú zbernicu. Máš to vlastne ako router medzi PC a tou tvojou zbernicou.

Spoľahlivosť môžeš riešiť až budeš trocha vedieť čo a ako tam funguje.

Inak ja by som na začiatok začal s ModBus ASCII. Dáš si další USB<->serial<->RS485 a máš v termináli komplet prevádzku na zbernici.

Inak ten Master Slave ModBus RTU sa dá pomerne ľahko upraviť na Multi master zbernicu. Stačí len trochu počúvať zbernicu či je volná pred vysielaním a prípadné kolízie ti odhalí CRC. A ešte pritiahnúť A B linky na stabilný rozdiel potenciálov keď sa všetky uzly odpoja. Aby logická úroveň na zbernici neplávala. To je dobré urobiť v každom prípade.
Obrázok
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

Používateľov profilový obrázok
otep69
Stály člen
Stály člen
Príspevky: 208
Dátum registrácie: 31 Okt 2008, 00:00
Bydlisko: Jarok
Vek: 35
Kontaktovať používateľa:

Re: Identifikácia vstupu z viacerých tlačidiel na zbernici

Príspevok od používateľa otep69 » 06 Aug 2017, 05:09

Osobne by som takýto projekt už neriešil pomocou arduina. Je to síce finančne nenáročné, len neviem či to stojí za tie útrapy pri návrhu a programovaní.
Skôr by som sa pustil do realizácie pomocou PLC. Nejaké malé PLC už v tejto dobe nie je nejako extra drahé plus zopár couplerov, zopár I/O kariet (v závislosti čo všetko chce ovládať, alebo snímať - digitál či analóg), trošku programovania a funkčný a stabilný systém je na svete. Nemusí vymýšľať žiadnu zbernicu všetko je už v rámci PLC.

A ako pridanú hodnotu, zoznámi sa aj s inými systémami než arduino. :wink:
0
Teší ma Peter.
F*ck me I am Famous ...
Čo nejde silou, pôjde silou ešte väčšou.

Pega
Stály člen
Stály člen
Príspevky: 192
Dátum registrácie: 28 Mar 2012, 08:52

Re: Identifikácia vstupu z viacerých tlačidiel na zbernici

Príspevok od používateľa Pega » 06 Aug 2017, 06:28

Pokud by šlo jenom o tlačítka, tak bych to řešil tak, že ke každému tlačítku bych dal nejlevnější Attiny s krystalem.
Ten by při stisknutí poslal do vedení obdélníkový signál řádu kHz. Každé tlačítko by mělo jinou frekvenci.
Hlavní procesor by pak změřil kmitočet a podle toho určil stisknuté tlačítko.
0
Naposledy upravil/-a Pega v 06 Aug 2017, 07:16, upravené celkom 1 krát.

Používateľov profilový obrázok
otep69
Stály člen
Stály člen
Príspevky: 208
Dátum registrácie: 31 Okt 2008, 00:00
Bydlisko: Jarok
Vek: 35
Kontaktovať používateľa:

Re: Identifikácia vstupu z viacerých tlačidiel na zbernici

Príspevok od používateľa otep69 » 06 Aug 2017, 07:06

Jednoduché a lacné riešenie, ale len zdanlivo.
Má to zopár háčikov.

1) Ako ošetríš rušenie na takomto type zbernice? Hlavne ak sa bude jednať o dlhšie vzdialenosti.
2) Šírka pásma sa bude neustále zväčšovať s každým pridaným zariadením. Keď ich bude 5 nič nepoviem,
ale niečo mi hovorí, že ich plánuje viac.
3) Ako ošetríš kolízie keď začne viacero slave-ov naraz vysielať
4) Ak si zmyslí, že chce merať analógové hodnoty ako teplotu, osvetlenie, atď. (čo je podľa mňa úplne normálne), ako zabezpečí komunikáciu v tomto prípade?

Netvrdím, že za každú cenu by to mal riešiť s PLC. Ale pravdou je, že PLC na podobné účely (myslím automatizovanie všeobecne) bolo navrhnuté.

A ešte som skoro zabudol. Postupom času ak sa mu bude chcieť nič mu nebráni aby si k tomu "jednoducho" pridal HMI, SCADA, alebo ovládanie vzdialenou správou cez internet.
0
Teší ma Peter.
F*ck me I am Famous ...
Čo nejde silou, pôjde silou ešte väčšou.

esp32
Okoloidúci
Okoloidúci
Príspevky: 22
Dátum registrácie: 05 Aug 2017, 13:23

Re: Identifikácia vstupu z viacerých tlačidiel na zbernici

Príspevok od používateľa esp32 » 06 Aug 2017, 23:35

djwiktor napísal:
peterple napísal:
Ďakujem vám obom za ochotu a informácie, cením si to. Idem sa ešte pokúsiť individuálne doštudovať čo mi nie je jasné a potom snáď postaviť nejaký prototyp.
otep69 napísal:Osobne by som takýto projekt už neriešil pomocou arduina. Je to síce finančne nenáročné, len neviem či to stojí za tie útrapy pri návrhu a programovaní.
Skôr by som sa pustil do realizácie pomocou PLC. Nejaké malé PLC už v tejto dobe nie je nejako extra drahé plus zopár couplerov, zopár I/O kariet (v závislosti čo všetko chce ovládať, alebo snímať - digitál či analóg), trošku programovania a funkčný a stabilný systém je na svete. Nemusí vymýšľať žiadnu zbernicu všetko je už v rámci PLC.

A ako pridanú hodnotu, zoznámi sa aj s inými systémami než arduino. :wink:
To je zaujímavý podnet, ale priznám sa, že mi nie je celkom jasný rozdiel medzi mikrokontrolérom a PLC – našiel som napríklad aj PLC založené na Arduine. Mohol by si mi k tomu napísať viac? Aké to má výhody oproti Arduinu alebo Raspberry Pi? Vieš prípadne uviesť konkrétny model vhodný na takúto automatizáciu domácnosti a vysvetliť mi, ako by tam taká zbernicová komunikácia prebiehala?

Ja som plánoval logiku riešiť cez Node server s konfiguráciou a ovládaním cez webové rozhranie a MQTT protokol a to Arduino malo byť vlastne len na I/O. Je možné také niečo s PLC? Ide mi aj o to, aby som si sám mohol napísať GUI, pretože predpotopný dizajn GUI je jedným z dôvodov prečo nechcem komerčné komplexné riešenie. Chcem tiež napríklad dáta ukladať do databázy typu RethinkDB a kresliť grafy v reálnom čase cez JavaScriptové knižnice (D3).
Pega napísal:Pokud by šlo jenom o tlačítka, tak bych to řešil tak, že ke každému tlačítku bych dal nejlevnější Attiny s krystalem.
Ten by při stisknutí poslal do vedení obdélníkový signál řádu kHz. Každé tlačítko by mělo jinou frekvenci.
Hlavní procesor by pak změřil kmitočet a podle toho určil stisknuté tlačítko.
Ako povedal otep69, pre moje účely to stačiť nebude, ale ďakujem za tip.
0

Používateľov profilový obrázok
rudko
Power user
Power user
Príspevky: 2340
Dátum registrácie: 28 Dec 2012, 08:33
Vek: 37

Re: Identifikácia vstupu z viacerých tlačidiel na zbernici

Príspevok od používateľa rudko » 07 Aug 2017, 00:52

Vieš prípadne uviesť konkrétny model vhodný na takúto automatizáciu domácnosti
Tu najdes uplne konkretne typy aj s periferiami na toto urcenymi. Domotron je postaveny na nich napriklad ;-)
foxtroty si rozumeju aj s inelsackymi prvkami. komunikacia po zbernici CIB
http://www.tecomat.com/index.php?a=cat.308
0
Drink coffee. Do stupid things faster with more energy...

Používateľov profilový obrázok
otep69
Stály člen
Stály člen
Príspevky: 208
Dátum registrácie: 31 Okt 2008, 00:00
Bydlisko: Jarok
Vek: 35
Kontaktovať používateľa:

Re: Identifikácia vstupu z viacerých tlačidiel na zbernici

Príspevok od používateľa otep69 » 07 Aug 2017, 11:32

Rudko Ti sem dal veľmi pekné príklady celého systému.
Ja osobne v práci používam systémy Beckhoff, ale to ti vôbec nedoporučujem.
Nieže by boli zlé práve naopak, ale na tvoje účely sú až moc nákladné.
Každý výrobca má svoje pre a proti čo sa týka nielen komunikácie, ale aj ceny, výkonu, použitia.
Je len na tebe preskúmať si čo najviac a zistiť čo sa ti najviac pozdáva.
0
Teší ma Peter.
F*ck me I am Famous ...
Čo nejde silou, pôjde silou ešte väčšou.

esp32
Okoloidúci
Okoloidúci
Príspevky: 22
Dátum registrácie: 05 Aug 2017, 13:23

Re: Identifikácia vstupu z viacerých tlačidiel na zbernici

Príspevok od používateľa esp32 » 07 Aug 2017, 18:59

rudko napísal:Tu najdes uplne konkretne typy aj s periferiami na toto urcenymi. Domotron je postaveny na nich napriklad ;-)
foxtroty si rozumeju aj s inelsackymi prvkami. komunikacia po zbernici CIB
http://www.tecomat.com/index.php?a=cat.308
Vďaka, tieto som už pozeral počas študovania toho Domotronu ale jednak mi nie je jasné, ako sa to programuje, jednak je to celé uzavreté (nikde som, napríklad, nenašiel špecifikáciu tej zbernice CIB) a jednak tam nikde nemajú ceny, čo pôsobí netransparentne a ak majú cenovú politku typu iNELS, že jedna smiešna RFID karta stojí 10 eur, alebo jeden dotykový ovládač v cene tak 20 eur stojí 120 eur, tak to nie je to, čo hľadám.
otep69 napísal:Rudko Ti sem dal veľmi pekné príklady celého systému.
Ja osobne v práci používam systémy Beckhoff, ale to ti vôbec nedoporučujem.
Nieže by boli zlé práve naopak, ale na tvoje účely sú až moc nákladné.
Každý výrobca má svoje pre a proti čo sa týka nielen komunikácie, ale aj ceny, výkonu, použitia.
Je len na tebe preskúmať si čo najviac a zistiť čo sa ti najviac pozdáva.
Nepovedal si mi ale, aké to má výhody oproti Arduinu alebo tomu údajnému PLC založenom na Arduine, ani či na tom pôjdu tie veci, ktoré som popísal. Ak tomu správne rozumiem, každý výrobca má svoje vývojové prostredie. Ak áno, ako sa to programuje?
0

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok