Pääkohdat tai mistä tässä artikkelissa on kyse
ТKoska ihmisten kiinnostuksen kohteet ovat erilaisia ja ihmisillä on vähän aikaa, niin lyhyesti artikkelin sisällöstä.
СTämä artikkeli on yleiskatsaus ohjainprojektiin vähimmäishinnalla ja -ominaisuuksilla visuaalinen ohjelmointi WEB-selaimen kautta.
ПKoska tämä on katsausartikkeli, jonka tarkoituksena on näyttää "mitä penniohjaimesta voidaan puristaa", sinun ei pitäisi etsiä siitä syviä totuuksia ja yksityiskohtaisia algoritmeja.
РWifi-siruun perustuvan ohjaimen rakentamisen motivaatiota, ideoita ja tuloksia tarkastellaan ESP8266.
Varovaisuus
En halunnut kirjoittaa tätä artikkelia. En ole artikkeleiden kirjoittamisen ystävä ollenkaan. Tätä pitää miettiä ja paljon. Mieti, kuinka kirjoittaa niin, että väärinymmärtävien ihmisten määrä vähenee minimiin. Mieti, kuinka et mene äärimmäisyyksiin. Ja paljon muutakin mietittävää.
Mutta ystäväni sanoivat, että koska työni IoT:n ja muun pienen automaation alalla kiinnostaa heitä, niin ne voivat olla kiinnostavia myös muille ja suurelle yleisölle. No, mihin yleisö kerääntyy, joka on kiinnostunut tästä? Tietenkin keskipisteessä. Ja tässä minä olen. Vanha lukija ja uusi kirjoittaja.
En ota vastuuta virheistä, epätarkkuuksista, kirjoitusvirheistä, vanhentuneesta esitystyylistä jne., joista lukija ei ehkä pidä. Lue omalla vastuullasi.
Varoitan myös heti, että en selitä mitä ovat MQTT, WiFi ja UDP multicast ja muut asiat, jotka eivät liity suoraan aiheeseen. Artikkelin lopussa on joitain linkkejä.
Idean tai lyriikoiden synty
ЖElämä ei ole helppoa ja Hänen Majesteettinsa Chancella on tärkeä rooli siinä. Joten haluan kertoa, kuinka satunnaiset tapahtumat yhdistettynä luonnolliseen laiskuuteen johtivat melko mielenkiintoiseen ESP8266:een perustuvan ohjaimen kehitykseen.
НKaikki alkoi melko rutiininomaisesti: halusin rakentaa järjestelmän puutarhapenkkien ja pensaiden vesihuollon ja kastelun hallintaan.
Нoi, koska voin täysin työskennellä putkien, säiliöiden ja hanojen parissa vain lomalla, johon oli vielä yli kuusi kuukautta - kaikki rajoittui keskusteluihin työssä kollegoiden ja ystävien ja tovereiden kanssa epävirallisessa ympäristössä.
ТAihe "pieni automaatio" tai, kuten yleensä sanotaan "näiden koulupoikien-hakkereiden-hipsterien joukossa" - IoT -aihe - esineiden internet - on kiinnostanut minua pitkään. Kauan ennen kuin itse Internetiä käytettiin laajalti.
ЕJo lapsena halusin asioiden tekevän jotain "itsekseen". Ja olisi toivottavaa, että voisin hallita niitä jotenkin etäältä. Mutta tuohon aikaan (80-luku, viime vuosituhannen 90-luvun alku) tämä oli melko vaikeaa. Internet ei ollut laajalti saatavilla missään päin maailmaa, samoin kuin matkapuhelimia, tabletteja tai edes LCD-näyttöjä tai USB-muistitikkuja ei ollut missään. Joten meidän piti rajoittua "taputteleviin valokytkimiin" ja yksinkertaisiin radiokaukosäätimiin. Mutta siihen aikaan ja tuohon ikään se ei ollut huonoa ja mielenkiintoista.
НOi, nämä ovat menneisyyttä. Nyt on 15-luku. Ja jokaisella on älypuhelin taskussa, Internet on saatavilla melkein kaikkialla missä sitä tarvitaan ja ei tarvita, ja saatavilla olevien elektronisten komponenttien kanta on nyt sellainen, että vielä XNUMX vuotta sitten Maaplaneetan keskivertoasukas ei olisi koskaan uneksinut siitä. .
ПSiksi, kun olen päättänyt rakentaa ohjaimen vesiasioita varten Dachaan, käänsin huomioni ESP8266-siruun.
Ensinnäkin tämä siru on halpa. Ja jos yksi ohjain ei riitä, voit asentaa kaksi, kolme tai viisi. Toiseksi siinä on WiFi. Eli voit katsella mitä tapahtuu Internetin kautta ja jopa hallita prosessia mistä tahansa älypuhelimesta. Tietenkin tarvitset tukiaseman, jossa on Internet-yhteys, mutta tämä ei ole ongelma. Joka tapauksessa sitä on melkein kaikkialla tai tulee olemaan, myös omassa mökissäni.
ПUppouduttuani ESP8266:n projektien ihmeelliseen maailmaan, olin yllättynyt huomatessani, että tämän sirun hämmästyttävistä ominaisuuksista huolimatta siinä olevat projektit jaetaan harvoja poikkeuksia lukuun ottamatta kahteen tyyppiin: nämä ovat joko erittäin alkeellisia ohjelmia, kuten "click". älypuhelimesi kytkimet ja anturin lämpötilojen tilan katsominen Internetin kautta"; tai hyvät ja kiinteät JavaScript- tai Lua-tulkit, mutta valitettavasti ne kuluttavat melkein kaiken muistin eivätkä anna sinun tehdä mitään vakavaa.
ПEnsimmäinen ajatukseni oli yhtä yksinkertainen kuin pannukakkuja - kirjoittaa yksinkertainen ohjelma pumppujen ohjaamiseen anturien tilan perusteella ja siinä se. Mutta kuin kokenut rulla eri järjestelmien toteuttamisen haravalla hyppäämisessä, ymmärsin, että en todellakaan pystyisi ennakoimaan etukäteen kaikkia algoritmin mutkia, joita haluaisin tai tarvitsen suoristaa järjestelmän rakentamisen aikana. vesi- ja kastelujärjestelmä.
ДEi ole kovin kätevää käsitellä ohjelmaa dachassa, pimeässä navetassa. Mutta sinun täytyy.
Mikä on ulospääsy? Tietenkin ensimmäisenä mieleeni tullut asia oli tehdä algoritmista muokattavissa. Eräs kollegani antoi paljon neuvoja - mitä perustaa ja miten. Tällä hän tappoi ensimmäisen ideani alkuunsa. Kiitos hänelle. Jos hän ei olisi paljastanut silmieni edessä, kuinka monta parametria minun olisi määritettävä, en luultavasti olisi kieltäytynyt tästä vaihtoehdosta: algoritmin asetussivun tekemisestä.
НPelottava kuva asetusparametrien määrästä ja jopa toisiinsa vaikuttavista parametreista sai minut raittiin. Tajusin jälleen kerran, että kaikkea ei voi ennakoida...
СTeen varauksen kerran: olen laiska. Hyvin laiska! Olen suoraan sanottuna liian laiska kirjoittamaan ohjelmaa joka kerta uudelleen. Siksi syntyi tehtävä - kuinka nopeasti ja helposti asettaa algoritmi, mieluiten ilman ohjelmointia? Lisäksi tämä algoritmi on melko monimutkainen; siinä on paljon parametreja; on oma tapauskohtaista eikä sovellu muille. Ja haluan todella tehdä laitteesta enemmän tai vähemmän universaalia...
ПKoska lomaa ja kaikenlaisia putkien pumppaushommia oli vielä reilu puoli vuotta, päätin ottaa aikani ja miettiä miten siitä saisi kätevän ja kauniin? Kuinka ohjelmoida ilman ohjelmointia? Kuinka tulla toimeen ilman biljoonaa parametria, joita voidaan muuttaa konfiguroinnin yhteydessä?
КKuten tavallista, kaikki oli keksitty jo ennen meitä: tajusin, että halusin piirtää algoritmin toimintaneliöiden muotoon ja yhdistää ne viestintälinjoihin, jotka osoittavat, mistä data lentää ja mihin. No, osoittamalla neliötä haluan pystyä konfiguroimaan joitain sen yksittäisiä parametreja.
ИAjatus algoritmin määrittämisestä piirtämällä se neliöiksi ei ole uusi. Tällaisia järjestelmiä oli olemassa 80-luvulla; Nyt on olemassa supersuosittu NodeRed-järjestelmä, jonka tietävät hyvin ne, jotka ovat jo liittyneet pienen mittakaavan automaation/IoT:n maailmaan.
НOh, tässä on ongelma: tällaiset järjestelmät on suunniteltu "suurille tietokoneille". Pahimmillaan Raspberry PI:llä. Mutta ei ESP8266:ssa, jossa on vain muutama kymmenen kilotavua RAM-muistia eikä käyttöjärjestelmää!
Кmitä tehdä? Ja on vain kaksi ulospääsyä: kirjoita ja piirrä ohjelma "isolle PC:lle" tai kannettavalle tietokoneelle ja siirrä se sitten jossain muodossa ESP8266:een tai yritä "työntää mahdotonta" itse ESP8266-ohjaimeen.
ПSiksi maksimiohjelma, joka minulla oli, oli tämä: ohjaimesi ohjelmointiin sinun ei pitäisi tarvita mitään muuta kuin kannettavaa tietokonetta, jossa on WWW-selain! Eli kannettava tietokone, jossa on WEB-selain ja ohjain - tämän pitäisi riittää ohjaavien ohjelmien täydelliseen määrittämiseen ja kirjoittamiseen ja piirtämiseen.
И, kuten kävi ilmi, tämä oli täysin mahdollista toteuttaa!
En kyllästy teitä kaikilla projektin kehittämisen yksityiskohdilla. Sanon vain, että kehitysprosessin aikana mieleeni ja kielelleni tulleiden sanojen perusteella olisi mahdollista säveltää erillinen "Elektroniikkateollisuuden työntekijöiden käyttämän säädyttömän kielen sanakirja" Mutta kaikki on ohi. Tarkemmin sanottuna ei kaikkea, vaan ensimmäinen, vaikein vaihe, jolloin ei ole selvää, tuleeko elämääsi idea vai onko se vain harmaan ruunan delirium kuutamoisena yönä.
ПJaan tuloksen siitä, mitä ilmestyi ja sain nimen "ShIoTiny Controller".
Mitä tapahtui?
Laitteiston osa ShIoTiny-ohjain on vakio ja yksinkertainen: kolme tuloa, jotka on suunniteltu "kuivakontakti"-tyyppisille antureille (painikkeet, reed-kytkimet, ne ovat myös vesitason antureita säiliössä), yksi ADC-tulo, yksi tulo lämpötila- ja kosteusanturin kytkemiseen. DHT22 tyyppiä tai vastaavaa. Ja lopuksi kolme lähtöä kytkentäreleinä 220 voltille, 1 ampeerille. Rele sanoo 10A, mutta olen realisti, enkä salli 10 ampeeria levyn läpi. Ja pumpun käynnistimien ohjaamiseen riittää 1 ampeeri. Kaikki tämä saa virtaa virtalähteestä, jonka jännite on 5-9 volttia.
ЧRehellisesti sanottuna lisäsin lämpötila-anturin juuri niin, mutta ADC:llä minulla oli toiveita mitata syöttöverkon jännite. Kuka tietää?
РTietenkin kaikki tulot, paitsi tulo DHT22-liitäntään, on suojattu vastuksilla ja diodeilla: minulla ei ollut halua polttaa ESP8266:ta, ja diodit ja vastukset maksavat vain muutaman kopeikka.
Photo Shoot Valmis tuote on nähtävissä artikkelin alussa. Tilasin useita näitä lautoja - entä jos poltan ne tai joudun leikkaamaan telan jalat?
Mutta onneksi minun ei tarvinnut.
ФTämä tuote on tietysti kauneutta ja loistoa. Mutta mukavuuden vuoksi alla on piirustuskaavio anturien ja toimilaitteiden simulaattoreiden liittämisestä levyyn.
ВTasoanturien sijasta Input1..3 painikkeet, käynnistimien sijasta rele1..3 releeseen kytketyt LEDit. No, muuttuva vastus ADC:ssä simuloimaan syöttöjännitettä.
КKun rele on kytketty pois päältä, punainen LED-valo syttyy. Ja kun se on päällä, se on vihreä. Joten tein virheenkorjauksen pöydällä.
КKaiken tämän lisäksi levyn vasemmalla puolella on virtaliitin ja oikealla kaksi huoltopainiketta: Reset ja AP. No, siellä on DIP-kytkin, joka kytkee laitteen ohjelmointitilaan. Saatavilla on myös ESP8266-ohjelmointiliitin USB-UART-sovittimen kautta.
Muutama selitys painikkeista. Mikä on asettaa uudelleen - ja niin se on selvää. Ja tässä on painike AP tarvitaan kääntämään ShioTiny avataksesi tukiasematilan (määritystila tai konfigurointitila). Miksi tämä on välttämätöntä? No, esimerkiksi olet sotkenut verkkoasetuksesi ja haluat muuttaa niitä. Paina AP-painiketta muutaman sekunnin ajan (kunnes kaunis sininen LED syttyy). Ota sitten älypuhelimesi tai kannettava tietokoneesi, kytke WiFi päälle ja katso siellä avoin tukiasema nimeltä esp_8266_xxxx ja muodosta yhteys siihen. Siirry sitten älypuhelimen tai kannettavan tietokoneen selaimeen ja kirjoita osoitepalkkiin: 192.168.4.1. Jos kaikki on kunnossa, siirryt ShioTiny-ohjainsivulle ja voit määrittää sen uudelleen.
КKuten näemme, laitteistossa ei ole mitään monimutkaista. Siksi o ohjelmisto osa.
ВKuvaan kaikki toteutuksen omituisuudet, mutta myöhemmin. Jonain päivänä. Ja tänään harkitsen ohjelmistoa vain "ulkopuolelta", eli käyttäjän näkökulmasta - itseni tai jonkun muun, joka otti riskin käyttää käsitöitäni (on myös sellaisia stuntmeneja).
С Käyttäjän näkökulmasta laite on HTTP-palvelin, johon pääsee WiFin kautta. Kaikki asetukset, ohjelmointi ja niin edelleen tehdään WEB-selaimella.
ИJoten menimme ohjainsivulle. Mitä me näemme? Ja näemme "Ohjaus ja tila" -välilehden, joka näyttää käytettyjen laitteiden nykyisen tilan: tulot, lähdöt, ADC, DHT22. Lisäksi näytetään yhteysparametrit tukiasemaan (jos työskentelemme WiFi-asematilassa); tukiaseman parametrit (jos työskentelemme WiFi-tukiasematilassa) tai molemmat. No, lisäksi MQTT-välittäjän yhteysparametrit näytetään, jos MQTT-protokollaa käytetään.
КKuten näemme, ei mitään erikoista tai mielenkiintoista. Ei ole mitään edes klikattavaa! Vaikka... On kaksi muuta välilehteä! Verkkoasetusten määrittäminen Networking ja ohjelmapiirieditori ElDraw.
Кjoten arvasit sen, Networking - Tämä on verkon asetus, mutta ei vain. Siinä on pari mielenkiintoista parametria. Klikkaa välilehteä Networking ja näemme siellä suunnilleen mitä kuvassa näkyy.
НTukiaseman nimen ja salasanan määrittäminen kullekin tilalle - WiFi-asemalle ja WiFi-tukiasemalle. Kaikki näyttää olevan selvää. Samoin painikkeen tarkoitus "Skannaa WiFi" aika läpinäkyvää.
А tässä on pudotusvalikko "ShIoTiny-tila" vaatii selvennystä. Tosiasia on, että en voinut päättää millään tavalla, mikä tila olisi minulle mukavampi työskennellä. Ja siksi hän tarjosi 5 laitteen toimintatapaa.
ПListataanpa lyhyesti nämä käyttötavat.
Konfigurointitila — konfigurointitila. Tämä on avoin tukiasematila, jonka kiinteä osoite on 192.168.4.1 ja nimi esp_8266_xxxx.
Asematila — tukiasemaasi yhdistetyn WiFi-aseman tila.
AP-tila — suljettu tukiasematila. Asetat nimen ja salasanan itse.
AP+Asematila - Tämä on AP-tilan + Station-tilan samanaikainen aktivointi.
Single mode — toimii ilman verkkoyhteyttä. Yksinäinen ohjaaja kantaa raskaan osuutensa...
В mikä tahansa tila paitsi "Asetustila", voit estää WEB-sivun valitsemalla valintaruudun "Lukitse verkko asematilassa". Tämä on tavallaan turvallisuussyistä.
НMQTT-asetukset ovat ilmeisiä: palvelin, portti, salasana, avoin yhteys tai kautta SSL. En mene tässä yksityiskohtiin.
КShIoTiny-ohjain voi muun muassa lähettää ja vastaanottaa erityismuotoisia paketteja monilähetyksen kautta. Sen asetukset ovat myös ilmeiset: ryhmäosoite ja portti.
Tietenkin, jos kuvaat kaikki asetusten vivahteet, saat erillisen artikkelin, mutta tämä ei ole osa suunnitelmiani.
Иkyllä, välilehdellä Networking kaikki on enemmän tai vähemmän selvää. Siirrytään ohjaimen pääominaisuuteen - ohjelmapiirieditoriin ElDraw.
Тnapauttamalla välilehteä ElDraw, näemme jotain seuraavanlaista. Tietenkin, jos laitteessa ei ole kuormitettua piiriä, piirikenttä on tyhjä.
Сvasen - elementtien tai solmujen (solmujen) paletti.
Сoikeudet - skeemakenttä tai yksinkertaisesti "skeema".
СYläosassa on painikkeet levylle ja laitteeseen lataamista ja purkamista varten sekä muokkauspainikkeet.
ДNiille, jotka ovat työskennelleet toimittajien kanssa, hallinta on yleensä ilmeistä. Sinun on lisättävä kaavioon elementti - ota se hiirellä ja vedä se paletista kaavioon. Jos haluat poistaa elementin tai yhteyden kaaviosta, napsauta sitä tai sitä hiirellä ja paina näppäintä DEL. Meidän on yhdistettävä elementit - otamme yhden elementin tulon ja yhdistämme sen toisen lähtöön.
ЕOn myös skaalaus (SHIFT + hiiren rulla). Valitettavasti elementtejä ja elementtiryhmiä ei voi kopioida. Mutta tämä ei minua paljon haittaa.
КLisäksi loogisista syistä solmun tulo voidaan kytkeä vain toisen solmun yhteen lähtöön. Mutta solmun lähtö on useilla muiden solmujen tuloilla. Sisäänkäynnit ovat aina solmujen vasemmalla puolella. Uloskäynnit ovat aina oikealla.
КMitä kykyjä meillä on algoritmien toteuttamiseen?
ВMahdollisuudet ovat varsin laajat. Paletti sisältää solmut, jotka edustavat kaikkia ohjainlaitteita ShioTiny: tulot, releet, ADC, DHT11/22.
ДTiedonkäsittelyyn on olemassa loogisia ja aritmeettisia solmuja.
ЧJotta voisimme työskennellä laitteen kanssa Internetin kautta, MQTT-välittäjällä on solmut parametrien tilaamista ja julkaisemista varten.
ЕJos haluamme useiden ShioTiny-ohjainten vaihtavan tietoja keskenään, voimme käyttää solmuja parametrien lähettämiseen ja vastaanottamiseen UDP-monilähetysprotokollan avulla.
КLisäksi on ajastinsolmuja; tapahtumakäsittelyn ohjaussolmut.
ПAnnan sinulle muutaman esimerkin. Haluatko esimerkiksi, että lämpötila- ja kosteustiedot julkaistaan MQTT-palvelimelle 30 minuutin välein? Mikään ei voisi olla yksinkertaisempaa. Piirretään näin.
Жmeemipainike "Lataa". Kaikki!
ЕJos olet määrittänyt oikein yhteyden MQTT-välittäjään Verkko-välilehdellä, siinä kaikki!
Кpuolen tunnin välein, lämpötila julkaistaan välittäjällä /T-aiheessa ja kosteus - /H-aiheessa. Tai jos asetat omat aiheiden nimet, niin niiden alle.
ЗIlmeinen kysymys kuuluu: miksi 18000 on 30 minuuttia? Koska kaikki ajat mitataan sekunnin kymmenesosissa.
ТNyt haluat lisätä tähän järjestelmään mahdollisuuden kytkeä Relay1-rele päälle Internetin kautta ja jopa tietyksi ajaksi? Ei ongelmaa. Täydennetään piirustus näin.
ОViisi napsauta "Lataa" -painiketta. Kaikki! Nyt sen lisäksi, että lämpötila ja kosteus julkaistaan puolen tunnin välein MQTT-välittäjällä, on mahdollista kytkeä Relay1-rele päälle. Kyllä, älä vain käynnistä sitä, vaan tarkalleen 10 minuutiksi. Voit ottaa välityksen käyttöön julkaisemalla aiheen /r1cmd, arvoksi 1. Ja releen todellinen tila julkaistaan aiheessa /r1status.
ВHaluatko paitsi kytkeä päälle, myös sammuttaa releen etuajassa? Kyllä, sanotpa mitä tahansa. Alla oleva kuva näyttää kuinka tämä tehdään!
ПOnko periaate selvä? Piirrät vain algoritmin hiirellä! Ja kirjoita muutama asetus: aika, aiheen nimi ja siinä kaikki. Tämä on paljon selkeämpää kuin koodijoukon kirjoittaminen.
КMuuten, yhteyksien korostaminen eri väreillä ei ole "Photoshop" - se on yksi editorin toiminnoista. Voit värittää liitännät haluamallasi tavalla, jotta et menetä sekaannusta.
Нoi eikä siinä vielä kaikki! Algoritmin virheenkorjausta varten on "Monitor start" -painike. Kummallista kyllä, se kytkee "monitori"-tilan päälle. Tässä tilassa kaikkien solmujen kaikkien lähtöjen tila luetaan ajoittain ohjaimesta ShioTiny ja näkyy kaaviossa. Suunnilleen kuten alla olevassa kuvassa.
ТToisin sanoen voimme nähdä "melkein reaaliajassa", mitä meillä on kunkin solmun tulossa ja lähdössä. Se auttaa paljon, kun jokin on epäselvää.
ЕHaluaisin kuvata monia muita "temppuja ja ominaisuuksia", mutta omatuntoni ei salli sinun tuhlata aikaasi niihin yhdessä artikkelissa. Toteutettu pääidea on jo selvä: minimi muokattavissa olevia parametreja - maksimaalinen selkeys.
Liota voiteessa
КTietenkin haluan, että ei ole kärpäsiä, mutta maailma ei ole ihanteellinen. Sekä editori että ohjain eivät ole täydellisiä. Löysin kaksi pääominaisuutta, joita en ole vielä pystynyt poistamaan.
ВEnsinnäkin virheitä ilmenee joskus siirrettäessä elementtejä ryhmissä. Mutta tämä ei paljon häiritse työtä. Enemmän "ominaisuus" kuin "vika".
И, toiseksi, tietyissä olosuhteissa, kun piiri on ladattu laitteeseen "Lähetä"-painikkeella, se käynnistyy uudelleen. Tämä ei häiritse elämää, mutta editorisivu on päivitettävä.
Johtopäätös
НToivottavasti pidit ajatuksesta piirtää algoritmeja ohjelmien kirjoittamisen sijaan. Näin satunnaiset ajatukset, ideat ja kiistat synnyttävät joskus täysin elinkelpoisia kehityskulkuja.
НVoi, mielestäni artikkelin määrä on ylittänyt kaikki kohtuulliset rajat. Joten lopetan tänään.
ПSanonpa vain, että lomaa on enää muutama viikko jäljellä ja olen melko valmis siirtymään ohjaimen viankorjauksesta pöydän ääressä vianetsintään "kentällä".
ЕJos joku on kiinnostunut ideoistani tai kehitystiedoistani, kirjoita minulle: [sähköposti suojattu]
ВOtan aina mielelläni vastaan kommentteja ja kritiikkiä, jos se tietysti on aiheellista.
Жtervetuloa palautetta, kommentteja ja ehdotuksia.
Linkkejä, referenssejä ja paketteja
Työntekijöiden pyynnöstä
ВLähetän raakadokumentaation ja laiteohjelmiston (binaari).
Laiteohjelmisto:
ajo:
Komponenttien kuvaus ja lyhyet selitykset:
Siellä on ohjeet "ommella".
Lähde: will.com