Többfunkciós ethernet vezérlő az intelligens otthoni használatra az AVR-en keresztül
Mi az Ön számára intelligens ház?
A cikk „Universal Ethernet-eszköz a menedzsment a ház”, tettem egy kis felmérést egy viszonylag olcsó megoldás, amely kihallgatni a különböző érzékelők és gombok, valamint a kezelése különböző terhelések (lámpák, készülékek, fűtőtestek). Ebben a cikkben szeretnék folytatni a beszélgetést, hogyan kell használni az Ethernet hálózat intelligens ház.
Mindenféle kész IP-menedzser, mint például az IP Power vagy a NetPing, minden előnyével együtt hátrányai vannak. Először is, természetesen ez az ár. Másodszor, a forrás-firmware kódok nyilvánvaló okokból való hiánya és az eszköz logikájának teljesen megváltoztathatatlansága. Ha az ár többé-kevésbé világos, (legalább 5-7-szer olcsóbbat akarok eszközzel csinálni), akkor meg kell magyaráznom a logikát.
Így azt akartam, hogy olyan eszközt készítsünk, amely ügyesen:
Nyilvánvaló, hogy a fent ismertetett alapvető funkcionalitás nem létezik a késztermékek piacán.
Ahhoz, hogy egy ilyen eszköz szoktam Atmega168 mikrokontroller (atmega328 és újabb) a társaság Atmel, amely fedélzeti 16K Flash kódot, és chip ENC28J60 Microchip, amely már támogatja az Ethernet hálózat, és csatlakozik az MC keresztül SPI interfészen keresztül.
A készülék elrendezése Guido Socher (tuxgraphics)
Miért választották ezeket a chipeket? Először is, egy meglehetősen egyszerű kapcsolási rajz a készülékről. Másodszor, az olcsó alkatrészek. Harmadszor, az Atmega168 és az ENC28J60 DIP csomagokban állnak rendelkezésre, és 28 láb. Ez azt jelenti, hogy sajátos készségek és berendezések nélkül saját maga is összeállíthat egy ilyen eszközt. Az eszköz elrendezésének további egyszerűsítése érdekében beépített transzformátorral rendelkező RJ-45 MAG-Jack csatlakozót használnak. Valójában mindössze egy MK, egy interfész chipet, egy csatlakozót, egy kvarc oszcillátort és egy pár ellenállást kell létrehozni.
Az eredmény egy miniatűr eszköz, amelynek mérete 75x40 mm. De valójában ez egy hatékony szerverrel rendelkező webszerver.
Mit gondolsz róla? Ez egy webkiszolgáló.
A készülék programozásához egyszerű programozó, például USBasp lehet.
Bal programozó (csak a firmware letöltéséhez, jobb oldali modulhoz szükséges
Tesztelje a firmware-t. Web alapú kimeneti menedzsment
Az alapötlet az, hogy képes legyen beállítani egyes portra külön mikrokontroller segítségével webes felületen. Így minden rendelkezésre álló port konfigurálható mint input (gombok, érzékelő), mint a kimeneti (lámpák, készülékek), vagy mint egy ADC (különböző érzékelők, ha a port beépített MK ADC). Így, valahogy egyetértek a kész egységet két részre - a mag és a kiegészítő modul a terminálok, amelyek kapcsolódnak end készülékek és érzékelők. Például, napjainkig 10 bemenetre volt szükség a gombok és 3 kimenetek számára a lámpák vezérléséhez. De van egy új feladat, és most 9 bemenetre és 4 kimenetre van szükség. Mindössze arra van szükség, hogy változik a kapcsolat bővítő modul és konfigurálja újra a készülék minden böngésző, de nem változott a kód kernel firmware, nem igényel programozást. Másrészt a házban működhetnek több eszköz különböző konfigurációja be- és kimenetek, de pontosan ugyanazt firmware-t. Ebben az értelemben, hogy egyénileg testreszabható Etnernet a vizuális módban a függvény minden egyes port lényegében helyettesíti a hagyományos programozási és varrás, amely kiegészítő tudást, berendezések és ami a legfontosabb - az időben.
13 szabad port van az általam leírt eszközben. Abban a pillanatban, az összes port nevük van társítva port MK (D0, D1, stb), ez volt kényelmes a fejlődés, de a jövőben akkor választhatja ki, ez a számozási javára még néhány hagyományos.
A vezérlő portok kezelésére és konfigurálására rendelkezésre álló lista
A port nevére kattintva megadjuk a konfigurációs módot. Mint mondtam, minden port IN, OUT és ADC konfigurációjú.
Ne feledje, hogy az összes beállítást az EEPROM (nem felejtő memória) tárolja, azaz a készülék kikapcsolása után a készülék mentésre kerül.
Ha a portot OUT (kimenet )ként konfiguráljuk, akkor a webes felületen láthatjuk az állapot kimenetének aktuális állapotát. amely kikapcsolható vagy bekapcsolható, valamint a csatlakoztatott terhelés be- és kikapcsolásának képessége.
Abban az esetben, ha a portot ADC-ként állítjuk be, 0-tól 255-ig terjedő értéket láthatunk, amely az érzékelő állapotát jellemzi.
A port legérdekesebb beállításai azonban IN (bemeneti) módban vannak.
Az állam értéke nyilvánvaló - az aktuális bemeneti pozíció. A maradék külön magyarázatot igényel.
Számos Smart House eszköz fő problémája az, hogy nem tudják megmondani a master / szerver / vezérlőnek a bemenetek indítását. Általában a varázsló, amelyben a szerver (PC) az én esetemben működik, megkérdezi az eszközöket valamilyen gyakorisággal. Sok esetben a lekérdezési frekvencia nem kritikus, de nem a fénykapcsolók esetében. Képzeljünk el egy olyan helyzetet, ahol a kapcsoló megnyomása után a lámpa késleltetéssel bekapcsol (ha olyan mechanizmust használ, mint az 1-vezetékes retesz), vagy egyáltalán nem kapcsol be (a közvélemény-kutatások között). Így annak érdekében, hogy teljes mértékben a fénykapcsolókkal dolgozhasson, minden egyes kapcsolót többször is meg kell vizsgálnia másodpercenként. Ez tisztességes forgalmat generál bármilyen hálózatban.
Ebben az értelemben egy másik megközelítés logikusnak tűnik. A készülék maga határozza meg a gomb megnyomásának tényét, tájékoztatja a kiszolgálót, és megkéri, mit tegyen. Ez a logika az Ethernet eszköz firmware-jébe ágyazódik.
Tehát a gomb működik, az MC adta a sajtó (by the way, a firmware végrehajtott hatékony szoftveres algoritmus védelmet kapcsolati bounce - lebontási) és a HTTP protokoll kommunikál a szerverrel, így ez a szükséges információkat. A HTTP protokollt nem véletlenül választották meg. Egyrészt, ez bizonyos mértékig garanciát csomag szállítás, mert a HTTP fut TCP, akkor a másik viszont még ennél is fontosabb, sokkal könnyebb, nekem úgy tűnik, a szerver oldali programozás. Végtére is, már van otthoni webszerverünk. dolgozik az Apache-n!
Napló Apache. A készülék megmondja a kiszolgálónak, hogy módosítsa a 0 (D0) bemeneti állapotot,
Csak egy egyszerű PHP szkriptet kell írni, amely válaszol egy eszközkérésre.
Ha a "0" bemenet aktiválva van, tájékoztassa a készüléket a "6: 2" -re. De mit jelent ez a parancs?
Az eszközre vonatkozó parancs két mezőből áll, kettősponttal elválasztva.
Az első mező (6) a 0 és 12 közötti portszám (13 bemenet / kimenet van)
A második mező (2) egy cselekvés. Lehetséges lehetőségek (0 - kikapcsolás, 1 - bekapcsolás, 2 - átkapcsolás on-off-re vagy fordítva)
Fontos megjegyezni, hogy a szerver egyszerre több parancsot is küldhet az eszközre.
Például: "6: 2; 5: 1", pontosvesszővel elválasztva, ami azt jelenti, hogy "Kilépés 6 kapcsoló, kilépés 5 bekapcsolva". Egyetlen szerver válasz akár 13 ilyen parancsot is tartalmazhat. Egyszerű, nem igaz?
De mi van akkor, ha otthoni hálózatunknak egyáltalán nincs szervere, vagy valamilyen okból nem áll rendelkezésre vagy hibás? Nem probléma! Térjünk vissza a bemenet beállításához.
Itt a Cmd mezőben, ugyanabban a formátumban, például "6: 2", az a parancs, amelyet az eszköz végrehajt, ha:
1) A kiszolgáló nincs regisztrálva az eszköz konfigurációjában
2) A kiszolgáló regisztrált, de 3 másodpercen belül nem válaszol
Tehát, ha például a fény ellenőrzéséről beszélünk, ezt az eszközt önmagunkban használhatjuk, szerverek nélkül. és a szerverrel együtt. ahol a Cmd-ben leírt parancsok az alapértelmezett szkriptek. Mindenesetre nem leszünk fény nélkül. Ugyanez mondható el a biztonsági és védelmi rendszerekhez kapcsolódó viszonylag kritikusabb alkalmazásoknál. Van egy szerver - kérdezzük, nincs szerver - megoldja a problémát önállóan.
De mi van akkor, ha két ilyen eszköz van a hálózaton, és a forgatókönyv szerint, amikor az első eszköz bemenete aktiválódik, a másik eszköz kimenetének kapcsolódnia kell? Például egy szivárgásérzékelő egy helyen, és egy érintés egy meghajtó a másikban? Ehhez van egy utolsó mező Eth:
A készüléket nem csak webböngészőn vagy parancsfájlok segítségével vezérelhetjük, hanem bármely olyan programon keresztül is, mint a wget, curl, mert az információkat URL-karakterlánc és GET kérések segítségével küldjük el, például
ami nagyon kényelmesnek tűnik, mivel lehetővé teszi számtalan különböző eszköz, segédprogram használatát, és megkönnyíti az Ethernet-eszköz integrálását az intelligens ház rendszerébe, függetlenül attól, hogy a rendszer épül.
Még nehezebb a kikötő aktuális állapotának megszerzése.
Ehhez a kérelemhez az Ethernet eszköz csak szükségtelen információkat jelenít meg (ON, OFF vagy ADC érték). Kényelmes a "get" parancs használata a szerveren lévő programokban. Így például az ADC eszköz állapotának olvasásához elegendő csupán egy sor PHP-ben!
A Linux firmware összeállításához és betöltéséhez csak három csomag szükséges: maga a gcc-avr fordító, az AVR és a programozóval dolgozó könyvtár, a széles körben ismert "pipe" avrdude
A firmware összeállításához ki kell kicsomagolnia az archívumot (a cikk alján), és futtatnia kell a make parancsot.
Az USBasp firmware-je a parancs segítségével van programozva
Abban a pillanatban, amit a cikk ír, a mikroprocesszor memóriájába csak 15252 bájt van.
Az eszköz másik képe a fejlesztés idején. Álljon a hibakereséshez és a kísérletekhez.
A hibakeresés áll. Ethernet eszköz, programozó
Gombok, változó ellenállás az ADC hibakereséshez
Diódák és triacok (egyébként az 1-vezetékes kulcsból) a kimenetek teszteléséhez
Firmware az Atmega328-hoz
A fúziók programozása nagyon felelősségteljes folyamat, mivel könnyen megzavarhatja a mikrokontroller teljesítményét.
az ENC-ből érkezik az atmega32u4. (mindent le lehet vonni).
Lehet-e a firmware, ahogy az atmega32u4 alatt van újrafordítva?
Vagy dobja ezt az ötletet?
Az összes többi áramkör opció itt szerepel, a poltyk elindítva.
A rendszert többször ellenőrizték, mint minden rendben. Kérdés, hogy mi lehet probléma? Van egy gyanú, hogy nem működik vagy ENC chip. Hogyan diagnosztizálhatom az eszközt?
Külső nézete segíthet-e? Köszönöm!
PS Köszönjük a cikkeket! Mindig örömmel járok a webhelyére.