Мазмуну:

WiFi температурасын каттоочу (ESP8266 менен): 11 кадам (сүрөттөр менен)
WiFi температурасын каттоочу (ESP8266 менен): 11 кадам (сүрөттөр менен)

Video: WiFi температурасын каттоочу (ESP8266 менен): 11 кадам (сүрөттөр менен)

Video: WiFi температурасын каттоочу (ESP8266 менен): 11 кадам (сүрөттөр менен)
Video: MAX6675 Температура термопары через WiFi с ESP8266 NodeMCU D1 Mini 2024, Июль
Anonim
Image
Image
Материалдар
Материалдар

Саламатсызбы, сизди бул жерде көргөнүмө кубанычтамын. Мен бул нускамадан сиз пайдалуу маалыматтарды таба аласыз деп үмүттөнөм. Мага сунуштарды, суроолорду жөнөтүүдөн тартынбаңыз … Бул жерде кээ бир негизги маалыматтар жана долбоорго кыскача сереп. Мобилдик колдонуучулар үчүн: Video. Let, сиз комментарий бөлүмүндө долбоор тууралуу кандай ойдо экениңизди билдириңиз, рахмат. Мен жакында эле сынап көрүү үчүн NodeMcu (esp8266 негизделген) тактасын сатып алдым, андыктан бул чындыгында өнүккөн долбоор эмес. Бирок ал иштейт жана бул мага керектүү нерсе, андыктан бул маалымат жазгычтын негизги функциясы - бул температураны чогултуу жана аны серверге сактоо. Бул колдонуучуларга каттоонун бир жеринде болбогондо дагы, онлайн режиминде маалыматтарды текшерүүгө жана график түзүүгө мүмкүнчүлүк берет (мисалы, аба ырайы бекети үчүн). Дагы бир пайдалуу өзгөчөлүк - бул колдонуучуга программаны оңой оңдоп, ыңгайлаштырууга мүмкүндүк берген OTA жаңыртуусу. Мен бардык сенсорлорду жана аларга байланыштуу сатып алуу ыкмасын анализдеп, бардык жакшы жана жаман жактарын тең салмакта кылам.

Спойлер: бир аз тестирлөөдөн кийин DS18B20 сыяктуу санарип сенсор эң жакшы чечим экенин таптым, анткени ал туруктуулукту жана жогорку тактыкты сунуштайт. Бул суу өткөрбөйт жана кабель менен.

1 -кадам: материалдар

Материалдар
Материалдар
Материалдар
Материалдар
Материалдар
Материалдар

Бул аз гана тышкы компоненти бар минималдуу долбоор, анткени бул үчүн БОМдун тизмеси чынында кыска болот. Бирок, келгиле, кандай материал суралганын карап көрөлү:

  • NodeMcu V3 (же кандайдыр бир шайкеш ESP8266 μпроцессор);
  • RGB LED (жалпы анод);
  • LED үчүн резисторлор (1x10Ω, 1x22Ω, 1x100Ω, 1x10kΩ)
  • DS18B20 (Максим интегралдык термометр);
  • LM35 (Texas Instrument термометр);
  • Тышкы батарея (милдеттүү эмес);
  • Кабель;
  • Коннектор (аны дагы "өнүккөн" кылуу үчүн);
  • Кутуча (милдеттүү эмес, дагы "өнүккөн" кылуу үчүн);
  • LED кармагыч (милдеттүү эмес);

Эскертүү: Мен айткандай, сиз эки жолдун бирин тандашыңыз керек. Эгерде сиз LM35 термометрин тандасаңыз, сизге дагы бир нече компонент керек болот:

  • Attiny45/85;
  • AVR программисти (же ISP катары Arduino);
  • Резистор (1x1kΩ, 1x2kΩ, 1x10kΩ, 1x18kΩ)
  • 2.54мм тилке туташтыргычы (милдеттүү эмес)
  • Диод (2x1N914)
  • Perfboard же PCB;

2 -кадам: сенсор тандоо

Сенсорду тандоо
Сенсорду тандоо

Сенсорду тандоо татаал кадам болушу мүмкүн: бүгүнкү күндө аналогдук жана санариптик температурасы ар кандай, тактык жана корпусу бар көптөгөн которгучтар бар (TI 144 түрдүү элементти сунуштайт).

  • Маалыматтарды каттоочу температурадан башка санга оңой эле өзгөрүшү мүмкүн (чыңалуу, ток,…);
  • Бир аз арзаныраак болушу мүмкүн;
  • Колдонууга оңой, анткени ал атайын китепкананы талап кылбайт;

Кемчиликтери:

  • ADC (бул өлчөөнүн тактыгына таасир этиши мүмкүн) жана башка тышкы компоненттерди талап кылат. Esp8266да бир гана ADC (жана так эмес) болгондуктан, мен тышкы бирин колдонууну сунуштайт элем.
  • Ар кандай индуктивдүү чыңалуу натыйжаны өзгөртө алгандыктан, ызы -чуудан баш тартуучу атайын кабель керек.

Бир аз ойлонгондон кийин, LM35ти колдонууну чечтим, линиялык сенсор +10мВ/° С масштабдуу фактор менен 0,5 ° С тактыкта жана өтө төмөн токто (болжол менен 60уА) 4Втан 30Вга чейин чыңалууда. Көбүрөөк маалымат үчүн мен маалымат барагын көрүүнү сунуштайм: LM35.

Санарип сенсорлор (сунушталат)

Дээрлик бардык тышкы компоненттер керек;

Интегралдык ADC

Кемчиликтери:

Санариптик сигналдын кодун чечүү үчүн китепкананы же программалык камсыздоону сураңыз (I2C, SPI, Serial, One Wire,…);

Кымбатыраак;

Мен DS18B20 тандадым, анткени мен Amazonдан 5 суу өткөргүч сенсордун топтомун таптым жана ал интернетте кеңири документтештирилген. Негизги өзгөчөлүк 9-12bit өлчөө, 1-Wire автобус, 3.0 5.5 камсыздоо чыңалуусу, 0.5 ° C тактык. Дагы, бул жерде маалымат барагы: DS18B20.

3 -кадам: LM35

LM35
LM35
LM35
LM35
LM35
LM35

Келгиле, LM35 термометринин тышкы ADC жана башка өзгөчөлүктөрүн кантип ишке ашырганымды талдап көрөлү. Мен үч зымы бар кабелди таптым, бири экраны бар, экөө жок. Мен аналогдук температураны санарипке айландыруу үчүн сенсордун жанындагы камсыздоо чыңалуусун турукташтыруу үчүн ажыратуучу конденсаторду кошууну чечтим, мен Attiny85 микропроцессорун dip8 пакетинде колдондум (дагы маалымат алуу үчүн дагы маалымат барагын караңыз: attiny85). Биз үчүн эң маанилүү нерсе - бул 10 бит ADC (чындыгында эң жакшы эмес, бирок мен үчүн жетиштүү так). Esp8266 менен байланышуу үчүн, esp8266 3.3V жана 5V менен attiny85 менен иштээрин эске алып, сериялык байланышты колдонууну чечтим (сенсорду иштетүү үчүн). Буга жетүү үчүн мен жөнөкөй чыңалуу бөлүштүргүчүн колдондум (схеманы караңыз). Терс температураны окуу үчүн биз кээ бир тышкы компоненттерди (2x1N914 жана 1x18k каршылыгын) кошушубуз керек, анткени терс энергия менен камсыз кылууну каалабайм. Мына код: TinyADC репозиторийи. attiny to ide (муну вариантка киргизиңиз: https://drazzy.com/package_drazzy.com_index.json), эгер муну кантип жасоону билбесеңиз, Google. Orдон издеңиз.hex файлын түз жүктөңүз.

4 -кадам: DS18B20

DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20

Мен ал сенсорлорду Amazonдан сатып алдым (5 баасы болжол менен 10 €). Бул дат баспас болоттон жасалган капкак жана 1м узундуктагы кабель менен келген. Бул сенсор температуранын 9-12 бит маалыматтарын кайтара алат. Көптөгөн сенсорлор бир эле пинге туташтырылышы мүмкүн, анткени алардын бардыгынын уникалдуу идентификатору бар DS18B20ду esp8266га туташтыруу үчүн жөн эле схеманы (экинчи сүрөт) ээрчип алсаңыз болот. Мен логеримде үч иликтөө болот деп чечкенден кийин, кайсынысы экенин айырмалашым керек болчу. Ошентип, мен алардын дарегине программалык камсыздоо аркылуу байланышкан түс берүүнү ойлодум. Мен термо-кысылуучу түтүктү колдондум (үчүнчү сүрөт).

5 -кадам: ESP8266 коду

ESP8266 коду
ESP8266 коду
ESP8266 коду
ESP8266 коду

Мен бул дүйнөгө жаңы келгендиктен, көп китепканаларды колдонууну чечтим. Киришүүдө айтылгандай, негизги өзгөчөлүктөрү төмөнкүлөр:

  • OTA жаңыртуусу: кодду жүктөө керек болгондо esp8266ды компьютериңизге туташтыруунун кажети жок (муну биринчи жолу жасашыңыз керек);
  • Зымсыз менеджер, эгер зымсыз тармак өзгөрсө, эскизди кайра жүктөөнүн кереги жок. Сиз жөн гана esp8266 кирүү чекитине туташкан тармактын параметрлерин кайра конфигурациялай аласыз;
  • Thingspeak маалымат трассмиссиясы;
  • LM35 жана DS18B20 экөө тең колдоого алынат;
  • Жөнөкөй колдонуучу интерфейси (RGB LED кээ бир пайдалуу маалыматты көрсөтөт);

Сураныч, кечирим сураңыз, анткени менин программам эң жакшы эмес жана ал чындыгында жакшы заказ кылынган эмес. Түзмөккө жүктөөдөн мурун, кодду орнотууңузга ылайыкташтыруу үчүн кээ бир параметрлерди өзгөртүү керек. Бул жерде сиз программалык камсыздоону жүктөп алсаңыз болот. Жалпы LM35 жана DS18B20 конфигурациясы Сиз OTA жаңыртуу үчүн пиндин аныктамасын, энбелгисин, каналдын номерин, колдонуучуну жана сырсөздү өзгөртүшүңүз керек. 15тен 23кө чейин линия.

#кызыл YOURPINHERE #жашыл YOURPINHERE дегенди аныктаңыз

#define blue YOURPINHERE const char* host = "хосттун дарегин тандоо"; // чындап эле кереги жок, esp8266-webupdate const char* update_path = "/firmware" калтырсаңыз болот; // жаңыртуу үчүн даректи өзгөртүү үчүн: 192.168.1.5/firmware const char* update_username = "YOURUSERHERE"; const char * update_password = "YOURPASSWORDHERE; unsigned long myChannelNumber = CHANNELNUMBERHERE; const char * myWriteAPIKey =" WRITEAPIHERE ";

6 -кадам: ESP8266 Code: LM35 Колдонуучу

Аттин тактасын esp8266 менен туташтырышыңыз керек, ADC бирдигин VU пин менен G пинди колдонуңуз. Сиз сериялык байланыш үчүн колдонууну каалаган пинти тандап алышыңыз керек (мүчүлүштүктөрдү оңдоо үчүн аппараттык серияны бекер кылуу үчүн). Tx пин тандалышы керек, бирок чынында колдонулбайт. (Line 27). SoftwareSerial mySerial (RXPIN, TXPIN); Үстүнө сиз төмөнкүлөрдү кошушуңуз керек: #define LM35USER

7 -кадам: ESP8266 Коду: DS18B20 Колдонуучу

Биринчи операция катары ар бир сенсор үчүн түзмөктүн дарегин аныктоо керек. Бул кодду espке программалап, программалап, жыйынтыгын сериалдан издеңиз. Кодду бул жерден тапса болот (бул аталышты беттен издеңиз: "Жеке DS18B20 ички даректерин окуу"). Даректи алуу үчүн бир гана сенсорду туташтырыңыз, натыйжалар ушундай болушу керек (бул жерде кокустук сан! Мисал катары): 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12 Андан кийин бөлүмүмдөгү менин кодумду өзгөртүү керек " DS18B20 "конфигурациясы (31ден 36га чейин)":

#аныктоо ONE_WIRE_BUS ONEWIREPINHERE #аныктоо TEMPERATURE_PRECISION TEMPBITPRECISION // (9дан 12ге чейин) #define delayDallas READINTERVAL // (Милисекунддарда, эң азы 15с же 15000мС) DeviceAddress blueSxx, 0x1, 0x1, 0x11, 0x12}; // ADRESS МЕНЕН ӨЗГӨРҮҮ DeviceAddress redSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // АДРЕСИҢИЗ МЕНЕН ӨЗГӨРҮҮ DeviceAddress greenSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // АДРЕСИҢИЗДИ ӨЗГӨРТҮҮ Үстүнө сиз төмөнкүлөрдү кошушуңуз керек: #define DSUSER

8 -кадам: ESP8266 Кичи айла

ESP8266 Little Trick
ESP8266 Little Trick

Бир аз тестирлөөдөн кийин, эгер сиз esp8266ны программалабастан туташтырсаңыз, ал кодду бир жолу кайра орнотууну басмайынча иштебей турганын байкадым. Бул маселени чечүү үчүн, бир аз изилдөөлөрдөн кийин, мен 3.3Vдан D3кө чейин тартылуучу каршылыкты кошуу керек экенин билдим. Бул процессорго кодду флеш -жадыдан жүктөөнү айтат. Бул ыкма менен D3 түздөн -түз DS18B20 сенсорлору үчүн маалыматтарды киргизүү үчүн колдонулушу мүмкүн.

9 -кадам: Биринчи жолу операция

Биринчи жолу операция
Биринчи жолу операция
Биринчи жолу операция
Биринчи жолу операция

Эгерде сиз кодду туура жүктөсөңүз, бирок Wifi менеджер китепканасын эч качан колдонбосоңуз, анда Wi -Fi туташууңузду конфигурациялоого убакыт келди. Мурункуга караганда RGB LED тезирээк жарк эткенин күтө туруңуз, андан кийин мобилдик же компьютериңиз менен "AutoConnectAp" деп аталган Wi -Fi тармагын издеп, туташыңыз. Туташкандан кийин, веб -браузерди ачып, 192.168.4.1 киргизиңиз, сиз wifi менеджеринин GUI интерфейсин таба аласыз (сүрөттөрдү караңыз) жана "Wifi конфигурациялоо" баскычын басыңыз. Esp8266дан wifi тармактарын издөөнү күтө туруңуз жана каалаганын тандаңыз. Сырсөздү киргизиңиз жана "Сактоо" баскычын басыңыз. Esp8266 кайра башталат (бул жолу RGB жетектебейт, анткени ал туш келди маалыматты чыгарат) жана тармакка туташат.

10 -кадам: Жыйынтык

Жыйынтык
Жыйынтык
Жыйынтык
Жыйынтык
Жыйынтык
Жыйынтык
Жыйынтык
Жыйынтык

Акыр -аягы, бул жерде тоңдургучумдун температурасын каттоо учурунда маалымат жазгычтан алынган график. Апельсин түстө DS18B20 жана көк түстө LM35 жана анын схемасы. Санариптен аналогдук сенсорго чейинки тактыктын эң чоң айырмасын көрө аласыз (менин начар "ADC чынжырым" менен), бирок кээ бир физикалык эмес маалыматтарды берет. Жыйынтыктап, эгер сиз бул журналды түзгүңүз келсе, DS18B20 санарип температура сенсорун колдонууну сунуштайм. окуу оңой жана дээрлик "плагин жана ойнотуу", ал туруктуу жана так, ал 3.3Вда иштейт жана көптөгөн сенсорлор үчүн бир пинди талап кылат. Көңүл бурганыңыз үчүн рахмат, бул долбоор сиз үчүн жакшы деп үмүттөнөм кээ бир пайдалуу маалыматтарды таптым. Жана ким муну ишке ашыргысы келсе, мен бардык керектүү маалыматты бергим келет. Баарын сурап бекер айтпасам, мен бардык суроолорго жооп берүүгө кубанычтамын. Мен англисче сүйлөбөгөндүктөн, эгер бир нерсе туура эмес же түшүнүксүз болсо, мага кабарлаңыз. Эгер сизге бул долбоор жаккан болсо, анда конкурстарга добуш бериңиз жана/же комментарий калтырыңыз ☺. Бул жаңы мазмунду жаңыртууга жана жарыялоого түрткү берет. Рахмат.

Сунушталууда: