ShioTiny: ылғалды бөлмені желдету (мысал жоба)

ShioTiny: ылғалды бөлмені желдету (мысал жоба)

Негізгі ойлар немесе бұл мақала не туралы

туралы мақалалар топтамасын жалғастырамыз ShioTiny - визуалды бағдарламаланатын чип негізіндегі контроллер ESP8266.

Бұл мақала ванна бөлмесіндегі немесе ылғалдылығы жоғары басқа бөлмедегі желдетуді басқару жобасының мысалын пайдалана отырып, бағдарламаның қалай құрастырылғанын сипаттайды. ShioTiny.

Сериядағы алдыңғы мақалалар.

ShioTiny: шағын автоматтандыру, заттардың интернеті немесе «демалысқа алты ай қалғанда»
ShioTiny: түйіндер, сілтемелер және оқиғалар немесе сурет салу бағдарламаларының мүмкіндіктері

сілтемелер

Екілік микробағдарлама, контроллер схемасы және құжаттама
Құрамдастардың нұсқаулары мен сипаттамасы
MQTT брокерін орнату cloudmqtt.com
Android жүйесіне арналған MQTT бақылау тақтасы

Кіріспе

Тәжірибесіз түсінік болмайды. Бұл уақыт пен ұрпақ сынаған ақиқат. Сондықтан практикалық дағдыларды үйрену үшін өзіңіз бірдеңе жасауға тырысқаннан жақсы ештеңе жоқ. Сіз не істей алатыныңызды және не істеуге болмайтынын көрсететін мысалдар осында пайдалы болады. Басқа адамдардың қателері, әрине, сіздің қателіктеріңіздің пайда болуына кедергі бола алмайды, бірақ олар соңғыларының санын азайтуға көмектеседі.

Алдыңғы мақалалардың оқырмандарының сұрақтары мен хаттары мені шағын жобаны жасауға итермеледі - ShioTiny түйіндерінің қалай жұмыс істейтінін көрсету үшін желдетуді басқарудың мысалы.

Контроллер туған бастапқы идея ShioTiny - сорғы және суару станциясы - барлығына жарамайды және барлығына қызығушылық танытпайды. Сондықтан мен мысал ретінде көпшілікке түсінікті және пайдалы желдетуді басқару жүйесін алдым.

Мен айтамын, жобаның идеясы менікі емес, бірақ Мен оны осы жерден алдым содан кейін бейімделеді ShioTiny.

Алдымен не қалайтыныңызды түсініңіз

Жақсарту процесі шексіз. Міне, осы мүлік көптеген жақсы идеялар мен жобаларды құртты. Әзірлеуші ​​мінсіз емес, бірақ әлі де жұмыс істейтін нәрсені шығарудың орнына оны жақсартуды жалғастырды. Және ол оны бәсекелестер оны айналып өтпейінше жетілдірді, бірақ идеалды емес (және көбінесе аянышты), бірақ жұмыс істейтін шешімді шығарды.

Сондықтан жобаның нүктесін қайда қою керектігін білу өте маңызды. Немесе, басқаша айтқанда, біз жобаның соңында нені алғымыз келетінін басында бар нәрседен анықтауымыз керек. Орыс тілінде бірдеңені жасаудың жолын сипаттау мақсатымен дәл құрастырылған құжат үшін ақыл-есі кем аудармашылар мен ақауы бар менеджерлер соңғы кездері белгілі бір себептермен «жол» деп атайтын тамаша қысқа да ықшам «план» сөзі бар. картасы». Жарайды, оларға Алла разы болсын.

Біздің жоспарымыз осылай болады. Ылғалдылық кейде айтарлықтай көтерілуі мүмкін бөлме бар деп есептейік. Мысалы, ванна немесе ас үй сияқты. Ылғалдылық - бұл жағымсыз нәрсе және онымен күресу жолы әлем сияқты ескі: бөлмені желдетіңіз. Желдетудің бірнеше жолы бар. Бірақ біз, мүмкін, жанкүйерлері бар қаралар сияқты экзотикалық және ескірген әдістерден бас тартып, кәдімгі желдеткішті ұстанатын шығармыз. Біздің ауданда желдеткіштер арзанырақ және оңайырақ.

Бір сөзбен айтқанда, біз желдеткішті басқарғымыз келеді: оны қосыңыз және тиісінше өшіріңіз. Дәлірек айтсақ, қажет кезде қосылып, өшірілгенін қалаймыз.

Анықтау қалады: желдеткіш қандай жағдайларда қосылуы керек және қандай жағдайда өшірілуі керек.

Мұнда бәрі анық: егер ылғалдылық белгілі бір шектен жоғары болса, желдеткіш қосылып, ауаны шығарады; Ылғалдылық қалыпты жағдайға оралды - желдеткіш өшеді.

Мұқият оқырман бірден «берілді» деген сөзге көз салады. Кім берген? Белгіленгендей?

Шекті ылғалдылықты бірнеше жолмен орнатуға болады. Біз олардың екеуін қарастырамыз: біріншісі - айнымалы кедергіні пайдалану және екіншісі - MQTT хаттамасы арқылы желі арқылы. Осы әдістердің әрқайсысының артықшылықтары мен кемшіліктері бар, олар кейінірек талқыланады.

Түсінбейтіндерге мен «шекті ылғалдылық» - желдеткішті қосу керек болатын ылғалдылық деңгейін түсіндіремін.

Келесі сұрақ: пайдаланушыға желдеткішті тікелей қосу құқығын беру керек пе? Яғни, ылғалдылық деңгейіне қарамастан, түймені басқанда? Біз мұндай мүмкіндікті қамтамасыз етеміз. Ақыр соңында, желдеткіш жоғары ылғалдылық болған кезде ғана емес, сонымен қатар бөлмеден жағымсыз иісті кетіру үшін қажет болуы мүмкін, мысалы, халық арасында «иіс» деп аталады.

Сонымен, біз не қалайтынымызды және оның қалай жұмыс істейтінін аздап түсінеміз. Желдетуді басқару жүйеміздің барлық функцияларын қысқаша тізіп көрейік:

  • шекті ылғалдылық деңгейін орнату (екі нұсқа);
  • ылғалдылық деңгейін өлшеу;
  • желдеткіштің автоматты қосылуы;
  • желдеткішті автоматты түрде өшіру;
  • желдеткішті қолмен қосу (түймені басу арқылы).

Демек, жоспар анық. Біздің бағдарламада жоғарыда аталған барлық функцияларды жүзеге асыру қажет. Біз осы «жоспардың» негізінде әрекет етеміз. Алдымен құрылғының блок-схемасын саламыз.

Құрылғының блок-схемасы

Жалпы, бізде осындай екі схема болады. Біріншісі, шекті ылғалдылық деңгейі айнымалы қарсылық арқылы орнатылатын опцияға арналған. Екінші схема MQTT хаттамасы арқылы желі бойынша шекті ылғалдылық деңгейі орнатылатын опцияға арналған.

Бірақ бұл тізбектер бір ғана элементпен ерекшеленеді - айнымалы резистор «шекті ылғалдылық деңгейін орнату», біз тек бір блок-схеманы саламыз. Әрине, ГОСТ бойынша блок-схема басқаша көрінеді. Бірақ біз бизон инженерлеріне емес, жас ұрпаққа назар аударамыз. Сондықтан көріну маңыздырақ.

ShioTiny: ылғалды бөлмені желдету (мысал жоба)

Сонымен, суретте не көріп тұрмыз? Желдеткіш релеге қосылған Relay1 контроллер ShioTiny. Желдеткіш жоғары вольтты құрылғы екенін ескеріңіз. Сондықтан, егер біреу мұны өзі жасаса, сақ болыңыз. Яғни, кем дегенде, саусақтарыңызды немесе өлшеу құралдарын тізбекке жабыстырмас бұрын, кем дегенде, желдеткіштің қуатын өшіріңіз. Және екінші жазба. Егер сіздің желдеткішіңіз қуаттырақ болса 250W, содан кейін оны тікелей қосыңыз ShioTiny оған тұрарлық емес - тек стартер арқылы.

Біз желдеткішті сұрыптадық. Енді желдеткішті «қолмен қосу» түймесі. Ол кіріске қосылған Кіріс1. Мұнда түсіндіретін ештеңе жоқ.

Температура мен ылғалдылық сенсоры DHT-11 (немесе DHT-22 немесе олардың аналогтары). Оны қосу үшін контроллерде арнайы кіріс бар. ShioTiny. Суретте көріп отырғаныңыздай, мұндай сенсорды қосу да проблема емес.

Және, ақырында, ылғалдылықтың шекті деңгейін белгілейтін айнымалы қарсылық. Дәлірек айтқанда, айнымалы және тұрақты кедергілерден тұратын бөлгіш. Оның қосылуында ешқандай проблемалар жоқ, бірақ кірістірілген ADC екенін түсіндірейін ESP8266 максимум 1 вольтке арналған. Сондықтан шамамен 5 есе кернеу бөлгіш қажет.

Және тағы бір рет еске сала кетейін, егер шекті ылғалдылық деңгейі MQTT протоколы арқылы желі арқылы орнатылса, бұл бөлгіш қажет емес.

ElDraw ShioTiny редакторында құрылғының алгоритмін құруды бастайық. Бұл редакторға қалай жетуге болатынын алдыңғы мақалалардан немесе мақаланың басында сілтемесі бар нұсқаулардан оқуға болады.

Бірінші нұсқа, ең қарапайым

Қарапайым нәрседен бастайық: релені қосу Relay1 белгіленген уақыт ішінде шекті ылғалдылық деңгейінен асып кеткенде.

ShioTiny: ылғалды бөлмені желдету (мысал жоба)

Көріп отырғаныңыздай, күрделі ештеңе жоқ: тек төрт түйін, түсініктеме түйіндерін есептемегенде. DHT11 - бұл температура мен ылғалдылық сенсорының өзі (мен ауыстыруға болады DHT22).

тұрақты CONST — шекті ылғалдылық деңгейі, пайызбен.

Салыстырушы – екі санды салыстыратын және берілген шарт орындалса 1, ал шарт орындалмаса 0 шығаратын түйін.

Біздің жағдайда бұл жағдай болады A>Bқайда A - сенсор арқылы өлшенетін ылғалдылық деңгейі және B — бірдей ылғалдылықтың шекті деңгейі.

Өлшенген ылғалдылық деңгейі (A) шекті ылғалдылық деңгейінен асады (B), дәл сол жерде, компаратордың шығысында A>B 1 пайда болады және реле қосылады. Керісінше, ылғалдылық деңгейі қалыпты жағдайға оралғаннан кейін (яғни. A<=B), дәл сол жерде, компаратордың шығысында A>B 0 пайда болады және реле өшеді.

Бәрі түсінікті? Өте ыңғайлы емес адамдар үшін оны қайтадан оқып шығыңыз немесе нұсқаулықтағы қондырғылардың жұмысының сипаттамасын қараңыз.

Сенсордан алынған деректерге назар аударыңыз DHT11 шамамен 10 секунд сайын жаңартылады. Сондықтан реле 10 секунд сайын бір реттен жиі қосылып, сөндіре алмайды.

Барлығы жақсы болар еді, бірақ біз айнымалы резистор арқылы шекті ылғалдылық деңгейін орнатқымыз келеді. Ештеңе оңай болуы мүмкін емес!

ShioTiny: ылғалды бөлмені желдету (мысал жоба)

Тұрақты түйінді ADC түйінімен ауыстырайық. Ақыр соңында, біз айнымалы резисторы бар кернеу бөлгішті ADC-ге қостық.

ADC кірісіндегі кернеу 0-ден 1 Вольтқа дейін өзгереді. Бірақ сенсор шығысындағы ылғалдылық 0-ден 100% дейін өзгереді. Оларды қалай салыстырамыз? Бәрі оңай. ADC түйіні ShioTiny кіріс кернеуін өлшеп қана қоймайды, сонымен қатар оны қалай жасау керектігін де біледі масштаб және жылжу.

Яғни, ADC1 түйінінің (ADC) шығысында мән болады X, формула бойынша есептелген

ShioTiny: ылғалды бөлмені желдету (мысал жоба)

қайда ShioTiny: ылғалды бөлмені желдету (мысал жоба) — ADC кірісіндегі кернеу (0-ден 1В-қа дейін); k - диапазон (ADC диапазоны) және b-офсет (ADC офсет). Осылайша, егер сіз орнатсаңыз k = 100 и b = 0, содан кейін өзгерткенде ShioTiny: ылғалды бөлмені желдету (мысал жоба) 0-ден 1-ге дейінгі аралықта, мән X ADC түйінінің шығысында 0-ден 100-ге дейінгі аралықта өзгереді. Яғни, ылғалдылықтың 0-ден 100%-ға дейінгі өзгерістер диапазонына сандық түрде тең.

Немесе жай ғана айнымалы қарсылық сырғытпасын айналдыру арқылы сіз шекті ылғалдылық деңгейін 0-ден 100-ге дейін орнатуға болады. Жалғыз қолайсыздық - дисплей құрылғыларының жоқтығы. Бірақ іс жүзінде, егер сіз айнымалы кедергі қозғалтқышының 6 бөлімін жасасаңыз (0%, 20%, 40%, 60%, 80%, 100%) - бұл шекті ылғалдылық деңгейін орнату үшін жеткілікті.

Біз коэффициенттерді қалай қоямыз? k - диапазон (ADC диапазоны) және b-офсет (ADC офсет)? Иә, буға пісірілген репадан оңай! Тінтуір меңзерін түйінге бағыттаңыз ADC1 және бірден параметрлер терезесін көресіз. Оған қажеттінің бәрін салуға болады. Біздің жағдайымыз үшін бұл суреттегідей терезе болады.

ShioTiny: ылғалды бөлмені желдету (мысал жоба)

Сонымен, бізде ең қарапайым жұмыс шешімі бар. Оны жақсартуды бастайық.
Айтпақшы, қарапайым шешімнің бір артықшылығы бар - ол Интернетті қажет етпейді. Ол толығымен автономды.

Екінші нұсқа, түймені қосыңыз

Барлығы жұмыс істейді және бәрі бақытты. Бірақ бақытсыздық, біз желдетуді мәжбүрлеп қоса алмаймыз. Кіре берісте келісіп қойғанбыз Кіріс1 бізде ылғалдылық сенсорына қарамастан желдеткішті мәжбүрлеп қосатын және өшіретін түйме қосылады.
Бағдарлама диаграммамыздағы осы түймені өңдеу уақыты келді.

ShioTiny: ылғалды бөлмені желдету (мысал жоба)

Түймені басу өңдеу блогы қызғылт сары сызықпен бөлектеледі. Бұл түймелерді басу есептегіші, оның шығысындағы мән бір (жасыл жол, түйін шығысы) асқан кезде нөлге тең болады. CT).

Мұнда бәрі бұрынғыдай қарапайым жұмыс істейді: есептегіш CT кіріске қосылған түймені басуды санайды Кіріс1. Яғни, бұл есептегіштің шығысындағы мән түймені әр басқан сайын 1-ге артады.

Бұл мән екіге тең болған кезде (яғни 1-ден үлкен), компаратордың шығысында бірден A>B 1 пайда болады.Ал бұл 1 есептегішті қалпына келтіреді CT нөлге дейін. Бұл диаграммадағы салыстырмалы, төменгі дегенді білдіреді!

Осылайша, біздің түйменің екі күйі бар - 0 және 1. Егер бізге көбірек күй қажет болса (3 немесе 4 немесе одан да көп) - біз тек тұрақты мәнді өзгертуіміз керек еді. CONST бір мәннен екінші мәнге.

Сонымен, бізде желдеткішті қосудың екі шарты бар: берілген ылғалдылық деңгейінен асып кету және түймені бір рет басу. Шарттардың кез келгені орындалса, желдеткіш қосылады. Және ол түймені қайта басқанша жұмыс істейді И ылғалдылық деңгейі қалыпты жағдайға оралмайды.

Сіз, әрине, алгоритмді одан да қиындата аласыз, бірақ біз мұны жасамаймыз - біз қалағандарға шығармашылық үшін орын қалдырамыз.

Үшінші нұсқа, Интернетке қосылыңыз

Біз сипаттағанның бәрі өте тиімді. Ал шоулар ше? Ақыр соңында, кез келген пимпли хипстер крекер хакер смартфоннан басқару емес, тұтқаны айналдырып, түймені басқан адамға күледі! Тұтқаны бұрау «сәнді емес». Бірақ смартфонда саусағыңызбен жорғалау, саусағыңызды қанды-қанды уқалау – бұл хипстер-хакер-крекердің қалауының шыңы (мен олардың барлығын ешқашан ажырата алмадым - сондықтан қателессем, мені кешіріңіз).

Бірақ мұндай адамдарға жұмсақтық танытайық. Интернет арқылы басқарудың нақты артықшылықтары бар. Біріншіден, бұл көріну. Барлық платформалар үшін бірнеше түзетулер арқылы біздің Carlson контроллері үшін толығымен пайдалануға болатын басқару тақтасын жасауға мүмкіндік беретін көптеген қосымшалар бар. Екіншіден, бұл бөлмедегі ылғалдылық жағдайын қашықтан бақылау мүмкіндігі. Үшіншіден, сіз желдеткіштің не істеп жатқанын ғана емес - айналдыру немесе емес, сонымен қатар қандай шекті ылғалдылық деңгейі орнатылғанын көре аласыз. Содан кейін желдеткіш автоматты түрде немесе қолмен қосылды. Жалпы, сіз қалағанның бәрі.

Әрине, кейбір жанкүйерлердің көп көңіл бөлуі үлкен мәртебе. Бірақ бұл мысал ғана.

Сонымен, Интернетке қосылу үшін біз технологияны қолданамыз MQTT және аттас хаттама.
Бұл технологияны пайдалану үшін бізге қажет MQTT брокері. Бұл қызмет көрсететін арнайы сервер MQTT клиенттері, мысалы ShIoTIny және смартфоныңыз.

Технологияның мәні MQTT кез келген клиенттің MQTT брокеріне (серверіне) белгілі бір атпен (деп аталатын) ерікті деректерді жариялауынан тұрады. тақырып терминологияда MQTT). Басқа клиенттер өз атын пайдаланып ерікті деректерге жазыла алады (тақырып) және жаңадан жарияланған деректерді алыңыз. Яғни, барлық деректер алмасу клиент-брокер-клиент принципі бойынша жүреді.

Я болмаймын бөлшектерге назар аударыңыз. Интернетте оның қалай жұмыс істейтіні туралы көптеген мақалалар мен оқулықтар бар. MQTT және басқару панелін құруға арналған қандай бағдарламалар бар. Мен сізге деректерді қалай қабылдауға және жариялауға болатынын көрсетемін ShioTiny.

Мен брокер ретінде пайдаландым www.cloudmqtt.com, бірақ принцип барлық жерде бірдей.

Сонымен, сіз тіркелдіңіз деп есептейміз MQTT брокері. Жалпы, брокер сізге логин мен парольді (авторизациялау үшін), сондай-ақ қосылу портын береді (немесе ойлап табуды талап етеді). Қосу үшін ShioTiny к MQTT брокері екі жолмен мүмкін - тұрақты қосылу және арқылы TLS (SSL).

Барлық осы параметрлер ішінде ShioTiny қойындысына енгізілді Networking, бөлім MQTT серверге қосылу.

ShioTiny: ылғалды бөлмені желдету (мысал жоба)

Егер сіздің MQTT брокері авторизацияны қажет етпейді - логин мен парольді енгізбеңіз (бұл өрістерді бос қалдырыңыз).

Параметр MQTT тақырып префиксі бөлек түсіндіруді қажет етеді.

MQTT параметрлерінің префиксі - тақырып атына қосылған жол (тақырып) MQTT брокерін жариялау және оған жазылу кезінде. орнату үшін MQTT префиксі контроллеріңіз үшін оны енгізу өрісіне енгізу жеткілікті»MQTT тақырып префиксі»(«MQTT тақырып префиксі«). Префикс әрқашан қиғаш сызықтан басталады ("/")! Енгізу өрісіне қиғаш сызықты енгізбесеңіз, ол автоматты түрде қосылады. Префиксте таңбаларды пайдалана алмайсыз "#" и "+". Басқа шектеулер жоқ.

Мысалы, егер сіз « параметрін жарияласаңызмәртебе" (немесе оған жазылу) және сіздің префиксіңіз "/шиотини/", содан кейін бұл параметр брокерде " атауымен жарияланады./shiotiny/status" Егер сізде бос префикс болса, брокердегі барлық параметрлер қиғаш сызықтан басталады ("/"): "мәртебе"" ретінде жарияланады/күй«.

Сонымен, сіз тіркелдіңіз деп есептейміз MQTT брокері және логин, пароль және порт алды. Содан кейін сіз осы параметрлерді қойындыға енгіздіңіз Networking, бөлім MQTT серверге қосылу контроллер ShioTiny.

Префикс " деп орнатылған деп есептейміз./бөлме/«.

Барлық негізгі параметрлердің күйін жариялаудан бастайық: реле Reallay1, қолмен ауыстыру күйлері, автоматты коммутация күйлері және ақырында шекті және ағымдағы ылғалдылық деңгейлері. Ал, бонус - бөлмедегі температура. Мұны қалай жасауға болады, суретті қараңыз.

ShioTiny: ылғалды бөлмені желдету (мысал жоба)

Көріп отырғаныңыздай, алдыңғы нұсқадан айырмашылығы тек түйіндер »MQTT жариялау" Префиксті ескере отырып, келесі параметрлер жарияланады:
ShioTiny: ылғалды бөлмені желдету (мысал жоба)

Көріп отырғаныңыздай, жүйенің бүкіл күйі біздің алақанымызда!

Бірақ біз тек көріп қана қоймай, басқарғымыз келеді. Не істейін? Өте оңай. Біз ылғалдылықтың шекті деңгейін орнатудан бас тартамыз ADC және айнымалы резистор және біз осы шекті ылғалдылық деңгейін сәйкес орнатамыз MQTT тікелей смартфоннан!

ShioTiny: ылғалды бөлмені желдету (мысал жоба)

Біз ADC түйінін тізбектен алып тастаймыз және оған үш жаңа түйінді қосамыз: FLASH дүкені, FLASH қалпына келтіру и MQTT сипаттайды.

Түйін функциясы MQTT сипаттайды анық: ол параметрді алады /бөлме/trigHset (ылғалдылықтың шекті деңгейі) s MQTT брокері. Бірақ ол келесі деректермен не істейді? Оларды тек түйінге береді FLASH дүкені, ол өз кезегінде бұл деректерді атымен тұрақты емес жадта сақтайды trigH. Осыдан кейін түйін FLASH қалпына келтіру атымен тұрақты жадтан деректерді оқиды trigH және біз бұдан әрі не болатынын білеміз.

Неліктен мұндай қиындықтар? Неліктен алынған мәліметтерді компаратордың кірісіне бірден жіберу мүмкін емес?

С.Холмс жолдас айтқандай - бұл бастауыш! Құрылғыны қосқаннан кейін оның қосылатынына ешкім кепілдік бермейді MQTT брокері. Ал ылғалдылықты өлшеу керек. Және желдеткіш қосулы болуы керек. Бірақ шекті ылғалдылық деңгейі туралы ақпаратсыз бұл мүмкін емес! Сондықтан, қосулы кезде құрылғымыз бұрын сақталған шекті ылғалдылық деңгейін тұрақты жадтан шығарып, оны шешім қабылдау үшін пайдаланады. Ал байланыс орнатылған кезде MQTT брокері және біреу жаңа мәнді жариялайды /бөлме/trigHset, содан кейін бұл жаңа мән пайдаланылады.

Сонда сіз өзіңіз қалаған нәрсені жасай аласыз. Мысалы, ылғалдылықтан басқа, температураны есепке алуды да енгізіңіз. Немесе «ақылды» жарықтандыруды басқаруды қосыңыз (бізде әлі де екі реле және пайдаланылмаған екі кіріс бар). Барлығы өз қолыңызда!

қорытынды

Сондықтан біз ShioTiny негізіндегі қарапайым контроллерді енгізудің бірнеше мысалдарын қарастырдық. Мүмкін бұл біреуге пайдалы болар.

Әдеттегідей, ұсыныстар, тілектер, сұрақтар, қателер және т.б. - электрондық пошта арқылы: [электрондық пошта қорғалған]

Ақпарат көзі: www.habr.com

пікір қалдыру