
Galvenie punkti jeb par ko ir šis raksts
Turpinām rakstu sēriju par ShioTiny - vizuāli programmējams uz mikroshēmu balstīts kontrolieris ESP8266.
Šajā rakstā, izmantojot ventilācijas vadības projekta piemēru vannas istabā vai citā telpā ar augstu mitruma līmeni, ir aprakstīts, kā programma tiek veidota ShioTiny.
Iepriekšējie raksti sērijā.
atsauces
Ievads
Bez pieredzes nav saprašanas. Tā ir laika un paaudžu pārbaudīta patiesība. Tāpēc praktisko iemaņu apguvei nav nekā labāka par mēģinājumu kaut ko izdarīt pašam. Un šeit noderēs piemēri, kas parāda, ko jūs varat darīt un ko jums pat nevajadzētu mēģināt. Citu cilvēku kļūdas, protams, nevar novērst jūsu pašu kļūdu rašanos, taču tās var palīdzēt samazināt pēdējo skaitu.
Iepriekšējo rakstu lasītāju jautājumi un vēstules pamudināja mani izveidot nelielu projektu - ventilācijas kontroles piemēru, lai parādītu, kā darbojas ShioTiny mezgli.
Sākotnējā ideja, no kuras radās kontrolieris ShioTiny - sūknēšanas un apūdeņošanas stacija - nav piemērota visiem un neinteresēs visus. Tāpēc par piemēru ņēmu daudziem saprotamu un noderīgu ventilācijas vadības sistēmu.
Teikšu, ka projekta ideja nav mana, bet gan un pēc tam pielāgots ShioTiny.
Vispirms saproti, ko vēlies
Uzlabošanas process ir bezgalīgs. Un tieši šis īpašums ir izpostījis daudzas labas idejas un projektus. Izstrādātājs tā vietā, lai izlaistu kaut ko, kas nebija ideāls, bet joprojām darbojas, turpināja to uzlabot. Un viņš to uzlaboja, līdz konkurenti to apieta, izlaižot funkcionējošu risinājumu, kaut arī ne ideālu (un bieži vien arī galīgi sliktu), bet strādājošu.
Tāpēc ir ļoti svarīgi zināt, kur pielikt punktu projektam. Vai, citiem vārdiem sakot, mums ir jānosaka, ko mēs vēlamies iegūt projekta beigās no tā, kas mums ir sākumā. Krievu valodā dokumentam, kas sastādīts tieši ar mērķi aprakstīt ceļu uz kaut ko radīt, ir brīnišķīgs īss un kodolīgs vārds "plāns", ko garīgi atpalikušiem tulkiem un defektīviem vadītājiem pēdējā laikā nez kāpēc sāk saukt par "ceļu". karte”. Nu, Dievs svētī viņus.
Mūsu plāns būs šāds. Pieņemsim, ka ir telpa, kurā reizēm var ievērojami paaugstināties mitrums. Piemēram, vannas istaba vai virtuve. Mitrums ir nepatīkama lieta, un veids, kā ar to cīnīties, ir vecs kā pasaule: vēdiniet telpu. Ir diezgan daudz veidu, kā ventilēt. Bet mēs, iespējams, atteiksimies no tādām eksotiskām un vecmodīgām metodēm kā melnie ar faniem un paliksim pie parasta fana. Ventilatori mūsu rajonā ir lētāki un vieglāk atrodami.
Vārdu sakot, mēs vēlamies kontrolēt ventilatoru: ieslēdziet to un attiecīgi izslēdziet to. Precīzāk, mēs vēlamies, lai tas ieslēgtos un izslēgtos, kad tas ir nepieciešams.
Atliek noteikt: kādos apstākļos ventilatoram jāieslēdzas un kādos apstākļos tas jāizslēdz.
Šeit viss ir acīmredzams: ja mitrums pārsniedz noteiktu robežu, ventilators ieslēdzas un izvelk gaisu; Mitrums ir normalizējies - ventilators izslēdzas.
Uzmanīgs lasītājs uzreiz iekritīs acīs uz vārda “dots”. Kura devis? Kā norādīts?
Mitruma slieksni var iestatīt vairākos veidos. Mēs apskatīsim divus no tiem: pirmo - izmantojot mainīgu pretestību un otro - tīklā, izmantojot MQTT protokolu. Katrai no šīm metodēm ir priekšrocības un trūkumi, kas tiks apspriesti vēlāk.
Tiem, kas nesaprot, paskaidrošu, ka “sliekšņa mitrums” ir mitruma līmenis, virs kura ir jāieslēdz ventilators.
Nākamais jautājums ir: vai lietotājam ir jādod tiesības tieši ieslēgt ventilatoru? Tas ir, neatkarīgi no mitruma līmeņa, nospiežot pogu? Mēs nodrošināsim šādu iespēju. Galu galā ventilators var būt vajadzīgs ne tikai tad, ja ir augsts mitrums, bet arī, lai noņemtu no telpas, piemēram, nepatīkamu smaku, ko tautā sauc par “smirdumu”.
Tātad, mēs saprotam, ko vēlamies un pat nedaudz, kā tas darbosies. Īsi uzskaitīsim visas mūsu ventilācijas vadības sistēmas funkcijas:
- mitruma līmeņa sliekšņa iestatīšana (divas iespējas);
- mitruma līmeņa mērīšana;
- automātiska ventilatora ieslēgšana;
- automātiska ventilatora izslēgšana;
- manuāla ventilatora aktivizēšana (nospiežot pogu).
Tātad plāns ir skaidrs. Mūsu programmā ir nepieciešams ieviest visas iepriekš minētās funkcijas. Mēs rīkosimies, pamatojoties uz šo “plānu”. Vispirms uzzīmēsim ierīces blokshēmu.
Ierīces blokshēma
Vispārīgi runājot, mums būs divas šādas shēmas. Pirmais ir opcijai, kurā mitruma sliekšņa līmeni nosaka ar mainīgu pretestību. Otrā shēma ir paredzēta opcijai, kurā sliekšņa mitruma līmenis tiek iestatīts tīklā, izmantojot MQTT protokolu.
Bet, tā kā šīs shēmas atšķirsies tikai ar vienu elementu - mainīgo rezistoru, "iestatot mitruma sliekšņa līmeni", mēs uzzīmēsim tikai vienu blokshēmu. Protams, blokshēma saskaņā ar GOST izskatās savādāk. Bet mēs koncentrējamies nevis uz bizonu inženieriem, bet gan uz jauno paaudzi. Tāpēc redzamība ir svarīgāka.

Tātad, ko mēs redzam attēlā? Ventilators ir pievienots relejam Relay1 kontrolieris ShioTiny. Lūdzu, ņemiet vērā, ka ventilators ir augstsprieguma ierīce. Tāpēc, ja kāds to dara pats, esiet uzmanīgi. Tas ir, vismaz pirms pirkstu vai mērinstrumentu ievietošanas ķēdē, vismaz izslēdziet ventilatora strāvu. Un otrā piezīme. Ja jūsu ventilators ir jaudīgāks par 250Vt, pēc tam pievienojiet to tieši ShioTiny nav tā vērts - tikai caur starteri.
Mēs sakārtojām ventilatoru. Tagad poga “manuāli ieslēgt” ventilatoru. Tas ir savienots ar ieeju Ievade1. Te vairs nav ko skaidrot.
Temperatūras un mitruma sensors DHT-11 (Vai DHT-22 vai to analogi). Tā pieslēgšanai kontrolierī ir īpaša ieeja. ShioTiny. Kā redzat attēlā, šāda sensora pievienošana arī nav problēma.
Visbeidzot, mainīga pretestība, kas nosaka mitruma sliekšņa līmeni. Precīzāk, dalītājs, kas sastāv no mainīgām un nemainīgām pretestībām. Ar tā savienojumu nav problēmu, taču ļaujiet man paskaidrot, ka iebūvētais ADC ir ESP8266 paredzēts maksimālajam 1 voltam. Tāpēc ir nepieciešams apmēram 5 reizes sprieguma dalītājs.
Un vēlreiz atgādināšu, ka šis dalītājs nav vajadzīgs, ja sliekšņa mitruma līmenis tiek iestatīts tīklā, izmantojot MQTT protokolu.
Sāksim izveidot ierīces algoritmu ElDraw ShIoTiny redaktorā. Kā tur nokļūt šajā redaktorā, var izlasīt iepriekšējos rakstos vai instrukcijās, uz kurām saite ir raksta sākumā.
Pirmais variants, vienkāršākais
Sāksim ar kaut ko vienkāršu: releja ieslēgšana Relay1 kad uz noteiktu laiku tiek pārsniegts sliekšņa mitruma līmenis.

Kā redzat, nekas sarežģīts: tikai četri mezgli, neskaitot komentāru mezglus. DHT11 - tas ir pats temperatūras un mitruma sensors (var aizstāt ar DHT22).
Pastāvīgi CONST — mitruma līmeņa slieksnis, procentos.
Comparator - mezgls, kas salīdzina divus skaitļus un izvada 1, ja ir izpildīts noteiktais nosacījums, un 0, ja nosacījums nav izpildīts.
Mūsu gadījumā šis nosacījums būs A>BKur A ir mitruma līmenis, ko mēra sensors, un B — tāda paša mitruma sliekšņa līmenis.
Tiklīdz izmērīts mitruma līmenis (A) pārsniegs mitruma līmeņa slieksni (B), turpat pie salīdzinājuma izejas A>B Parādīsies 1, un relejs ieslēgsies. Un otrādi, tiklīdz mitruma līmenis atgriežas normālā līmenī (t. A<=B), turpat pie salīdzinājuma izejas A>B Parādīsies 0 un relejs izslēgsies.
Viss skaidrs? Tiem, kam nav ļoti ērti, izlasiet vēlreiz vai skatiet instrukcijā esošo vienību darbības aprakstu.
Ņemiet vērā, ka dati no sensora DHT11 tiek atjaunināts aptuveni reizi 10 sekundēs. Tāpēc relejs nevarēs ieslēgties un izslēgties biežāk kā reizi 10 sekundēs.
Viss būtu kārtībā, bet mēs vēlētos iestatīt mitruma sliekšņa līmeni, izmantojot mainīgo rezistoru. Nekas nevar būt vieglāk!

Vienkārši aizstāsim konstanto mezglu ar ADC mezglu. Galu galā tieši ADC mēs pievienojām sprieguma dalītāju ar mainīgu rezistoru.
Spriegums ADC ieejā svārstās no 0 līdz 1 voltam. Bet mitrums pie sensora izejas svārstās no 0 līdz 100%. Kā mēs tos salīdzinām? Tas ir vienkārši. ADC mezgls iekšā ShioTiny ne tikai mēra ieejas spriegumu, bet arī zina, kā to izdarīt mērogs un maiņa.
Tas nozīmē, ka ADC1 mezgla (ADC) izvadei būs vērtība X, aprēķina pēc formulas

Kur
— spriegums ADC ieejā (no 0 līdz 1 V); k - diapazons (ADC diapazons) un b-nobīde (ADC nobīde). Tādējādi, ja iestatāt k = 100 и b=0, tad mainot
diapazonā no 0 līdz 1, vērtība X pie ADC mezgla izejas mainīsies diapazonā no 0 līdz 100. Tas ir, skaitliski vienāds ar mitruma izmaiņu diapazonu no 0 līdz 100%.
Vai arī vienkārši, pagriežot mainīgās pretestības slīdni, var iestatīt mitruma sliekšņa līmeni no 0 līdz 100. Vienīgā neērtība ir tāda, ka nav displeja ierīču. Bet praksē, ja jūs veicat 6 mainīgas pretestības motora iedalījumus (0%, 20%, 40%, 60%, 80%, 100%) - tad ar to pietiek, lai iestatītu sliekšņa mitruma līmeni.
Kā mēs nosakām izredzes? k - diapazons (ADC diapazons) un b-nobīde (ADC nobīde)? Jā, vieglāk nekā tvaicēti rāceņi! Novietojiet peles rādītāju uz mezglu ADC1 un uzreiz jūs redzēsit iestatījumu logu. Tajā var ievietot visu nepieciešamo. Mūsu gadījumā tas būs tāds logs kā attēlā.

Tātad, mums ir vienkāršākais darba risinājums. Sāksim to uzlabot.
Starp citu, vienkāršākajam risinājumam ir viena priekšrocība – tam nav nepieciešams internets. Tas ir pilnīgi autonoms.
Otrais variants, pievienojiet pogu
Viss darbojas un visi ir apmierināti. Bet nepaveicās, mēs nevaram piespiedu kārtā ieslēgt ventilāciju. To jau pie ieejas esam vienojušies Ievade1 mums būs pievienota poga, kas piespiedu kārtā ieslēgs un izslēgs ventilatoru neatkarīgi no mitruma sensora.
Ir pienācis laiks apstrādāt šo pogu mūsu programmas diagrammā.

Pogas klikšķa apstrādes bloks ir iezīmēts ar oranžu līniju. Tas ir pogu nospiešanas skaitītājs, kas tiek atiestatīts uz nulli, kad vērtība izejā pārsniedz vienu (zaļa līnija, mezgla izvade CT).
Šeit viss darbojas tikpat vienkārši kā iepriekš: skaitītājs CT uzskaita ieejai pievienotās pogas nospiešanas reizes Ievade1. Tas nozīmē, ka vērtība pie šī skaitītāja izejas palielinās par 1 ar katru pogas nospiešanu.
Tiklīdz šī vērtība kļūst vienāda ar divi (tas ir, lielāka par 1), tūlīt pēc salīdzinājuma izejas A>B Parādīsies 1. Un šis 1 atiestatīs skaitītāju CT uz nulli. Tas nozīmē salīdzinātāju, diagrammas apakšējo!
Tādējādi mūsu pogai ir divi stāvokļi - 0 un 1. Ja mums būtu nepieciešams vairāk stāvokļu (3 vai 4 vai pat vairāk), mums būtu tikai jāmaina konstante CONST no vienas vērtības uz otru.
Tātad mums ir divi nosacījumi ventilatora ieslēgšanai: noteiktā mitruma līmeņa pārsniegšana un pogas nospiešana vienu reizi. Ja ir izpildīts kāds no nosacījumiem, ventilators ieslēgsies. Un tas darbosies, līdz atkal tiks nospiesta poga И mitruma līmenis neatgriezīsies normālā stāvoklī.
Jūs, protams, varat vēl vairāk sarežģīt algoritmu, taču mēs to nedarīsim - mēs atstāsim vietu radošumam tiem, kas vēlas.
Trešā iespēja, izveidojiet savienojumu ar internetu
Viss, ko mēs aprakstījām, ir diezgan funkcionāls. Kā ar izrādēm? Galu galā jebkurš pūtīgs hipsteru krekeru hakeris smiesies par kādu, kurš pagriež pogu un nospiež pogu, nevis kontrolē to no viedtālruņa! Roktura pagriešana “nav modē”. Bet rāpot ar pirkstu pa viedtālruni, berzēt pirkstu asiņainu - tā ir hipsteru-hakeru-krekeru vēlmju virsotne (visas nekad nevarēju atšķirt - tāpēc, ja kļūdījos, piedodiet).
Bet būsim iecietīgi pret šīm personām. Pārvaldīšanai, izmantojot internetu, ir reālas priekšrocības. Pirmkārt, tā ir redzamība. Visām platformām ir ļoti daudz lietojumprogrammu, kas ļauj izveidot pilnībā lietojamu vadības paneli mūsu Carlson kontrollerim, veicot pāris pielāgojumus. Otrkārt, tā ir iespēja attālināti uzraudzīt mitruma stāvokli telpā. Un treškārt, var redzēt ne tikai to, ko dara ventilators - griežas vai nē, bet arī kāds ir iestatīts mitruma līmeņa slieksnis. Un tad ventilators ieslēdzās automātiski vai manuāli. Kopumā viss, ko vēlaties.
Protams, kādam līdzjutējam ir liels gods saņemt tik lielu uzmanību. Bet tas ir tikai piemērs.
Tātad, lai izveidotu savienojumu ar internetu, mēs izmantosim tehnoloģiju MQTT un tāda paša nosaukuma protokolu.
Lai izmantotu šīs tehnoloģijas priekšrocības, mums ir nepieciešams MQTT brokeris. Šis ir īpašs serveris, kas apkalpo MQTT klienti, Piem ShioTIny un viedtālruni.
Tehnoloģijas būtība MQTT sastāv no tā, ka jebkurš no klientiem publicē patvaļīgus datus MQTT brokerim (serverim) ar noteiktu nosaukumu (sauktu temats terminoloģijā MQTT). Citi klienti var parakstīties uz patvaļīgiem datiem, izmantojot savu vārdu (temats) un saņemt tikko publicētus datus. Tas ir, visa datu apmaiņa notiek pēc principa klients-brokeris-klients.
Я Es nedarīšu koncentrēties uz detaļām. Internetā ir daudz rakstu un pamācību par to, kā tas darbojas. MQTT un kādas programmas ir vadības paneļu izveidei. Es tikai parādīšu, kā mēs varam saņemt un publicēt datus, izmantojot ShioTiny.
Es izmantoju kā brokeri , bet princips visur ir vienāds.
Tātad, mēs pieņemsim, ka esat reģistrējies MQTT brokeris. Parasti brokeris jums piešķirs (vai prasīs jums izdomāt) lietotājvārdu un paroli (autorizācijai), kā arī savienojuma portu. Lai pieslēgtu ShioTiny к MQTT brokeris iespējams divos veidos - regulārs savienojums un caur TLS (SSL).
Visi šie parametri iekšā ShioTiny ievadīts cilnē Tīklošana, nodaļa MQTT Savienojums ar serveri.

Ja tavs MQTT brokeris nav nepieciešama autorizācija - neievadiet savu pieteikumvārdu un paroli (atstājiet šos laukus tukšus).
Parametrs MQTT tēmas prefikss nepieciešams atsevišķs skaidrojums.
MQTT parametru prefikss ir virkne, kas pievienota tēmas nosaukumam (temats), publicējot un abonējot MQTT brokeri. lai instalētu MQTT prefikss jūsu kontrolierim tas vienkārši jāievada ievades laukā "MQTT tēmas prefikss"("MQTT tēmas prefikss"). Prefikss vienmēr sākas ar slīpsvītru ("/")! Ja ievades laukā neievadīsiet slīpsvītru, tā tiks pievienota automātiski. Prefiksā nevar izmantot simbolus "#" и "+". Citu ierobežojumu nav.
Piemēram, ja publicējat parametru "stāvoklis" (vai abonējiet to), un jūsu prefikss ir iestatīts uz "/shiotiny/", tad šis parametrs tiks publicēts brokerī ar nosaukumu "/shiotiny/statuss" Ja jums ir tukšs prefikss, visi brokera parametri sāksies ar slīpsvītru ("/"):"stāvoklis" tiks publicēts kā "/statuss'.
Tātad, mēs uzskatām, ka esat reģistrējies MQTT brokeris un saņēma pieteikumvārdu, paroli un portu. Pēc tam cilnē ievadījāt šos parametrus Tīklošana, nodaļa MQTT Savienojums ar serveri kontrolieris ShioTiny.
Mēs pieņemam, ka prefikss ir iestatīts uz "/istaba/'.
Sāksim ar visu galveno parametru statusa publicēšanu: relejs Reāls1, manuālās pārslēgšanas stāvokļi, automātiskās pārslēgšanas stāvokļi un visbeidzot sliekšņa un pašreizējā mitruma līmeņi. Nu, bonuss ir temperatūra telpā. Kā to izdarīt, skatiet attēlu.

Kā redzat, atšķirība no iepriekšējās versijas ir tikai mezgli "MQTT publicēt" Ņemot vērā prefiksu, tiek publicēti šādi parametri:

Kā redzat, viss sistēmas stāvoklis mums ir plaukstā!
Taču mēs gribam ne tikai redzēt, bet arī kontrolēt. Ko man darīt? Ļoti vienkārši. Mēs atteiksimies iestatīt mitruma līmeņa slieksni, izmantojot ADC un mainīgo rezistoru, un mēs iestatīsim tieši šo mitruma līmeņa slieksni atbilstoši MQTT tieši no viedtālruņa!

Mēs noņemam ADC mezglu no ķēdes un iekļaujam tajā trīs jaunus mezglus: FLASH veikals, FLASH atjaunošana и MQTT aprakstiet.
Mezgla funkcija MQTT aprakstiet skaidrs: tas saņem parametru /room/trigHset (mitruma slieksnis) s MQTT brokeris. Bet ko tas tālāk dara ar datiem? Vienkārši dod tos mezglam FLASH veikals, kas savukārt saglabā šos datus nemainīgā atmiņā ar nosaukumu trigH. Pēc tam mezgls FLASH atjaunošana nolasa datus no nemainīgās atmiņas ar nosaukumu trigH un mēs jau zinām, kas notiks tālāk.
Kāpēc tādas grūtības? Kāpēc saņemtos datus nevar nekavējoties nosūtīt uz salīdzinājuma ievadi?
Kā mēdza teikt biedrs S. Holmss - tas ir elementāri! Neviens negarantē, ka pēc ierīces ieslēgšanas tā pievienosies MQTT brokeris. Un mitrums ir jāmēra. Un ventilators ir jāieslēdz. Bet bez informācijas par sliekšņa mitruma līmeni tas nav iespējams! Tāpēc, kad tā ir ieslēgta, mūsu ierīce izgūst iepriekš saglabāto sliekšņa mitruma līmeni no nemainīgās atmiņas un izmanto to lēmumu pieņemšanai. Un, kad savienojums ir izveidots ar MQTT brokeris un kāds publicēs jaunu vērtību /room/trigHset, tad tiks izmantota šī jaunā vērtība.
Tad jūs varat nākt klajā ar visu, ko vēlaties. Piemēram, papildus mitrumam ieviesiet arī temperatūras uzskaiti. Vai arī pievienojiet "viedo" apgaismojuma vadību (mums joprojām ir divi releji un divas neizmantotas ieejas). Viss jūsu rokās!
Secinājums
Tāpēc mēs apskatījām vairākus piemērus būtībā vienkārša kontroliera ieviešanai, pamatojoties uz ShioTiny. Varbūt kādam šis noderēs.
Kā vienmēr ieteikumi, vēlmes, jautājumi, drukas kļūdas utt. - pa e-pastu: shiotiny@yandex.ru
Avots: www.habr.com
