- Необходимые компоненты:
- Датчик температуры LM35:
- Подключение LM35 к NodeMCU:
- Пояснение к коду:
- HTML-код для отображения температуры на веб-странице:
- За работой:
В предыдущем руководстве «Начало работы с NodeMCU» мы увидели, что такое NodeMCU и как его можно программировать с помощью Arduino IDE . Как вы знаете, в NodeMCU есть чип Wi-Fi, поэтому он также может подключаться к Интернету. Очень полезно создавать проекты Интернета вещей. Ранее мы использовали ThingSpeak с Arduino для создания термометра IoT, но здесь мы создадим нашу собственную веб-страницу для отображения температуры.
В этом руководстве мы подробнее рассмотрим этот интересный MCU и постепенно погрузимся в мир Интернета вещей, подключив NodeMCU к Интернету. Здесь мы будем использовать этот модуль для получения комнатной температуры в веб-браузере, т.е. мы создадим веб-сервер для отображения температуры, используя LM35 в качестве датчика температуры.
Необходимые компоненты:
- NodeMCU - ESP12
- Датчик температуры LM35
- Макетная плата
- Разъемы папа-мама
Датчик температуры LM35:
LM35 - аналоговый линейный датчик температуры. Его мощность пропорциональна температуре (в градусах Цельсия). Диапазон рабочих температур от -55 ° C до 150 ° C. Выходное напряжение изменяется на 10 мВ в ответ на повышение или понижение температуры на o C. Он может работать как от 5 В, так и от 3,3 В, а ток в режиме ожидания составляет менее 60 мкА.
Обратите внимание, что LM35 доступен в трех вариантах серии, а именно серии LM35A, LM35C и LM35D. Основное отличие заключается в диапазоне измерения температуры. Серия LM35D предназначена для измерения от 0 до 100 градусов Цельсия, тогда как серия LM35A предназначена для измерения в более широком диапазоне от -55 до 155 градусов Цельсия. Серия LM35C предназначена для измерения от -40 до 110 градусов Цельсия.
Мы уже использовали LM35 со многими другими микроконтроллерами для измерения температуры:
- Цифровой термометр с использованием микроконтроллера LM35 и 8051
- Измерение температуры с помощью микроконтроллера LM35 и AVR
- Цифровой термометр с использованием Arduino и датчика температуры LM35
- Измерение комнатной температуры с помощью Raspberry Pi
Подключение LM35 к NodeMCU:
Принципиальная схема подключения LM35 к NodeMCU приведена ниже:
LM35 - аналоговый датчик, поэтому мы должны преобразовать этот аналоговый выход в цифровой. Для этого мы используем вывод ADC NodeMCU, который определяется как A0. Мы подключим выход LM35 к A0.
У нас есть выходное напряжение 3,3 В на выводах NodeMCU. Итак, мы будем использовать 3,3 В в качестве Vcc для LM35.
Пояснение к коду:
Полный код с демонстрационным видео приведен в конце статьи. Здесь мы объясняем несколько частей кода. Мы уже объясняли, как загружать код в MCU с помощью Arduino IDE.
Во-первых, мы должны включить библиотеку ESP8266wifi для доступа к функциям Wi-Fi.
#включают
Затем введите свое имя Wi-Fi и пароль в поле ssid и пароль . Также инициализируйте переменные и запустите сервер на 80-м порту со скоростью 115200 бод.
const char * ssid = "*********"; // Ваш ssid const char * password = "***********"; // Ваш пароль float temp_celsius = 0; float temp_fahrenheit = 0; Сервер WiFiServer (80); void setup () { Serial.begin (115200);
Подключение Wi-Fi устанавливается путем вызова этих функций.
Serial.println (); Serial.println (); Serial.print («Подключение к»); Serial.println (ssid); WiFi.begin (ssid, пароль);
Для установления соединения может потребоваться несколько секунд, поэтому продолжайте показывать «…», пока соединение не будет установлено. Затем система будет продолжать ждать и проверять подключение клиента…
в то время как (WiFi.status ()! = WL_CONNECTED) { задержка (500); Serial.print ("."); } Serial.println (""); Serial.println («WiFi подключен»); server.begin (); Serial.println («Сервер запущен»); Serial.println (WiFi.localIP ()); }
В разделе цикла считайте значения датчиков, преобразуйте их в градусы Цельсия и Фаренгейта и отобразите эти значения на последовательном мониторе.
void loop () { temp_celsius = (analogRead (A0) * 330.0) / 1023.0; // Преобразование аналоговых значений в градусы Цельсия. У нас на плате 3,3 В, и мы знаем, что выходное напряжение LM35 изменяется на 10 мВ на каждый градус повышения / понижения Цельсия. Итак, (A0 * 3300/10 ) / 1023 = температура Цельсия_fahrenheit = Цельсия * 1,8 + 32,0; Serial.print ("Температура ="); Serial.print (temp_celsius); Serial.print («Цельсия»);
HTML-код для отображения температуры на веб-странице:
Мы отображаем температуру на веб-странице, чтобы она была доступна из любой точки мира через Интернет. HTML-код очень прост; нам просто нужно использовать функцию client.println для вывода каждой строки HTML-кода, чтобы браузер мог ее выполнить.
В этой части показан HTML-код для создания веб-страницы, на которой отображается значение температуры.
WiFiClient client = server.available (); client.println («HTTP / 1.1 200 ОК»); client.println ("Content-Type: text / html"); client.println ("Соединение: закрыть"); // соединение будет закрыто после завершения ответа client.println ("Refresh: 10"); // обновляем страницу через 10 секунд client.println (); client.println (""); client.println (""); client.print ("
Цифровой термометр
"); client.print ("Температура (* C) = "); client.println (temp_celsius); client.print ("
Температура (F) = "); client.println (temp_fahrenheit); client.print ("
"); client.println (" "); delay (5000); }За работой:
После загрузки кода с помощью Arduino IDE откройте последовательный монитор и нажмите кнопку сброса на NodeMCU.
Теперь вы можете видеть, что плата подключена к сети Wi-Fi, которую вы определили в своем коде, а также у вас есть IP. Скопируйте этот IP-адрес и вставьте его в любой веб-браузер. Убедитесь, что ваша система, в которой вы запускаете веб-браузер, должна подключаться к той же сети.
Ваш цифровой термометр готов, и температура будет автоматически обновляться в веб-браузере каждые 10 секунд.
Чтобы сделать эту веб-страницу доступной из Интернета, вам просто нужно настроить перенаправление портов в маршрутизаторе / модеме. Проверьте полный код и видео ниже.
Также проверьте:
- Метеостанция Raspberry Pi: мониторинг влажности, температуры и давления через Интернет
- Мониторинг температуры и влажности в реальном времени через Интернет с помощью Arduino и ThingSpeak