Съдържание:

WiFi температурен регистратор (с ESP8266): 11 стъпки (със снимки)
WiFi температурен регистратор (с ESP8266): 11 стъпки (със снимки)

Видео: WiFi температурен регистратор (с ESP8266): 11 стъпки (със снимки)

Видео: WiFi температурен регистратор (с ESP8266): 11 стъпки (със снимки)
Видео: ESP8266 ESP01 WIFI Mobile Phone Control | LDmicro-Roboremo Programming 2024, Юли
Anonim
Image
Image
Материали
Материали

Здравейте, радвам се да ви видя тук. Надявам се, че в тази инструкция ще намерите полезна информация. Не се колебайте да ми изпращате предложения, въпроси, … Ето някои основни данни и бърз преглед на проекта. За мобилни потребители: Видео. Кажете ми какво мислите за проекта в секцията за коментари, благодаря. Наскоро купих платка NodeMcu (базирана на esp8266), само за да я пробвам, така че това не е наистина напреднал проект. Но той работи и е това, от което се нуждая, така че е добре. Основната функция на този регистратор на данни е да събира температура и да я записва на сървър. Това позволява на потребителите да проверяват данни и графики онлайн, дори когато не са на едно и също място на регистратора (например за метеорологична станция). Друга полезна функция е OTA актуализацията, включена в кода, която позволява на потребителя да актуализира и персонализира софтуера лесно. Ще анализирам два сензора и свързания с тях метод на придобиване, за да направя баланс между всички плюсове и минуси.

Спойлер: след малко тестване установих, че цифров сензор като DS18B20 е най -доброто решение, защото предлага стабилност и по -висока точност. Вече е водоустойчив и с кабел.

Стъпка 1: Материали

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

Това е минимален проект само с няколко външни компонента, за това списъкът със спецификации ще бъде наистина кратък. Нека обаче да видим какъв материал се иска:

  • NodeMcu V3 (или друг съвместим ESP8266 μ процесор);
  • RGB светодиод (общ анод);
  • Резистори за светодиоди (1x10Ω, 1x22Ω, 1x100Ω, 1x10kΩ)
  • DS18B20 (максимален вграден термометър);
  • LM35 (термометър Texas Instrument);
  • Външна батерия (по избор);
  • Кабел;
  • Connector (за да стане по -"напреднал");
  • Box (по избор, отново, за да стане по -"напреднал");
  • Led държач (по избор);

Забележка: Както казах, трябва да изберете един от двата метода. Ако изберете термометър LM35, ще ви трябват още няколко компонента:

  • Attiny45/85;
  • AVR програмист (или Arduino като ISP);
  • Резистор (1x1kΩ, 1x2kΩ, 1x10kΩ, 1x18kΩ)
  • 2,54 мм конектор за лента (по избор)
  • Диод (2x1N914)
  • Perfboard или PCB;

Стъпка 2: Избор на сензор

Избор на сензор
Избор на сензор

Изборът на сензор може да бъде трудна стъпка: днес има много преобразуватели (TI предлага 144 различни елемента), както аналогови, така и цифрови с различен температурен диапазон, точност и случай. Аналогови сензори (46 части се предлагат от TI): Плюсове:

  • Регистраторът на данни може лесно да бъде променен от температура на друго количество (напрежение, ток, …);
  • Може да е малко по -евтино;
  • Лесен за използване, тъй като не изисква специална библиотека;

Минуси:

  • Изискват ADC (който може да повлияе на точността на измерването) и други външни компоненти. Тъй като esp8266 има само един ADC (и не е много точен), бих предложил да се използва външен.
  • Нуждае се от специален кабел с отхвърляне на шума, тъй като всяко индуцирано напрежение може да промени резултата.

След малко мислене реших да използвам LM35, линеен сензор с коефициент на скала +10mV/° C с точност 0.5 ° C и много нисък ток (около 60uA) с работно напрежение от 4V до 30V. За повече подробности предлагам да видите листа с данни: LM35.

Цифрови сензори (силно препоръчително) Плюсове:

Почти всички необходими външни компоненти;

Вграден ADC

Минуси:

Библиотека на заявки или софтуер декодирайте цифровия сигнал (I2C, SPI, Serial, One Wire, …);

По-скъпо;

Избрах DS18B20, защото намерих набор от 5 водоустойчиви сензора в Amazon и защото е широко документиран в интернет. Основната характеристика е 9-12-битово измерване, 1-жична шина, захранващо напрежение от 3,0 до 5,5, точност 0,5 ° C. Отново, за повече подробности тук е листа с данни: DS18B20.

Стъпка 3: LM35

LM35
LM35
LM35
LM35
LM35
LM35

Нека анализираме как съм внедрил външния ADC и друга функция за термометъра LM35. Намерих кабел с три проводника, един с екраниране и два без. Реших да добавя отделящ кондензатор за стабилизиране на захранващото напрежение близо до сензора. За да преобразувам аналоговата температура в цифрова, използвах микропроцесор Attiny85 в пакет dip8 (отново за повече информация вижте листа с данни: attiny85). Най -важното нещо за нас е 10 -битовият ADC (всъщност не е най -добрият, но е достатъчно прецизен за мен). За да комуникирам с Esp8266 реших да използвам серийна комуникация, като се има предвид, че esp8266 работи с 3.3V и attiny85 при 5V (тъй като трябва да захранва сензора). За да постигна това, използвах прост делител на напрежение (вижте схемата). За да прочетете отрицателната температура, трябва да добавим някои външни компоненти (2x1N914 и 1x18k резистор), тъй като не искам да използвам отрицателно захранване. Ето кода: хранилище TinyADC. Забележка: за да компилирате този код, ще трябва да инсталирате attiny to ide (поставете това в опция: https://drazzy.com/package_drazzy.com_index.json), ако не знаете как да го направите, просто потърсете в Google. Или директно качете.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 светодиодът показва известна полезна информация);

Моля да ме извините, защото софтуерът ми не е най-добрият и всъщност не е добре подреден. Преди да качите на устройството, трябва да промените някои параметри, за да отговарят на кода във вашата настройка. Тук можете да изтеглите софтуера. Обща конфигурация 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 Код: Потребител LM35

Трябва да свържете платката attiny към esp8266, за да захранвате ADC модула, използвайте VU и G щифт. Трябва да изберете кой щифт искате да използвате за серийна комуникация (за да поддържате хардуера сериен безплатен за отстраняване на грешки). Tx пинът трябва да бъде избран, но всъщност не се използва. (Ред 27). SoftwareSerial mySerial (RXPIN, TXPIN); Най -отгоре трябва да добавите: #define LM35USER

Стъпка 7: ESP8266 Код: Потребител на DS18B20

Като първа операция трябва да идентифицирате адреса на устройството за всеки сензор. Компилирайте и програмирайте този код на esp и потърсете в сериал за резултатите. Кодът може да бъде намерен тук (потърсете това заглавие на страницата: «Прочетете отделни вътрешни адреси на DS18B20»). Свържете само един сензор, за да получите адреса, резултатите трябва да са нещо подобно (случаен номер тук! Точно като пример): 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12 След това трябва да промените кода ми в секцията " Конфигурация за DS18B20 "(редове 31 до 36)":

#define ONE_WIRE_BUS ONEWIREPINHERE #define TEMPERATURE_PRECISION TEMPBITPRECISION // (от 9 до 12) #define delayDallas READINTERVAL // (В милисекунди, минимум е 15s или 15000mS) Адрес на устройството blueSensorx, 0xx, 0x9, 0x, 0x9, 0x12}; // ПРОМЯНА С ВАШИЯ АДРЕС 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 Малък трик
ESP8266 Малък трик

След малко тестване установих, че ако включите esp8266 без програмиране, той няма да стартира кода, докато не натиснете веднъж нулиране. За да разреша този проблем, след малко проучване открих, че трябва да добавите издърпващ резистор от 3.3V към D3. Това ще каже на процесора да зареди кода от флаш паметта. С този метод D3 може директно да се използва за въвеждане на данни за сензори DS18B20.

Стъпка 9: Първа операция

Операция за първи път
Операция за първи път
Операция за първи път
Операция за първи път

Ако сте качили кода правилно, но никога не използвате библиотеката на Wifi мениджър, време е да конфигурирате вашата wifi връзка. Изчакайте, докато видите, че светодиодът RGB мига по -бързо от преди, след това потърсете с вашия мобилен телефон или компютър wifi мрежата, наречена „AutoConnectAp“и се свържете. След свързване отворете уеб браузър и въведете 192.168.4.1, ще намерите GUI интерфейса на wifi мениджъра (вижте снимките) и натиснете „Конфигуриране на Wifi“. Изчакайте esp8266 да търси wifi мрежи и изберете желаната. Въведете парола и натиснете „запазване“. Esp8266 ще се рестартира (този път не се интересува от RGB, защото ще изведе произволна информация) и ще се свърже с мрежата.

Стъпка 10: Заключение

Заключение
Заключение
Заключение
Заключение
Заключение
Заключение
Заключение
Заключение

В крайна сметка ето графика, взета от регистратора на данни в действие, докато регистрирам температурата на фризера си. В оранжево е DS18B20, а в синьо LM35 и неговата верига. Можете да видите най-голямата разлика в точността от цифров към аналогов сензор (с лошата ми "ADC верига"), които дават някои нефизически данни. по -лесен за четене и почти "plug and play", той е по -стабилен и точен, работи на 3.3V и изисква само един щифт за много сензори. Благодаря за вниманието, надявам се, че този проект е добър за вас и вие намерих полезна информация. И за този, който иска да го осъзнае, бих искал да дам цялата необходима информация. Ако не сте свободни да попитате всичко, ще се радвам да отговоря на всички въпроси. Тъй като не говоря английски, ако нещо не е наред или не е разбираемо, моля, уведомете ме. Ако този проект ви е харесал, моля, гласувайте го за конкурсите и/или оставете коментар ☺. Това ще ме насърчи да продължавам да актуализирам и публикувам ново съдържание. Благодаря ти.

Препоръчано: