Форум Вопросы и темы по программированию Arduino, ESP8266, STM32, Digispark и пр.

ESP8266 Wi-Fi термометр на несколько датчиков 18b20. Вывод данных в браузер.

18 июля, 2019 - 08:19
 
#include   <ESP8266WiFi.h>                                // Подключаем библиотеку ESP8266WiFi
#include <OneWire.h> // Подключаем библиотеку Wire
#include <DallasTemperature.h>   // Подключаем библиотеку DallasTemperature
 
const char* ssid = "Keenetic-3909";  // Название Вашей WiFi сети
const char* password = "12345678"; // Пароль от Вашей WiFi сети
 
#define ONE_WIRE_BUS 5 // Указываем, к какому выводу подключены датчики
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);
DeviceAddress sensor1 = {0x28, 0xFF, 0x68, 0xCA, 0x22, 0x17, 0x03, 0xFE}; //Прописываем MAC адреса датчиков
DeviceAddress sensor2 = {0x28, 0xFF, 0x98, 0xCD, 0x22, 0x17, 0x03, 0xDE};
DeviceAddress sensor3 = {0x28, 0xFF, 0x34, 0xC9, 0x22, 0x17, 0x03, 0xC2};
WiFiServer server(80); // Указываем порт Web-сервера
 
void setup() 
{
  Serial.begin(115200); // Скорость передачи 115200 
  delay(10);   // Пауза 10 мкс
  DS18B20.begin();   // Инициализация DS18B20
 
  Serial.println("");  // Печать пустой строки 
  Serial.print("Connecting to ");  // Печать "Подключение к:"
  Serial.println(ssid); // Печать "Название Вашей WiFi сети"
  
  WiFi.begin(ssid, password); // Подключение к WiFi Сети
  
  while (WiFi.status() != WL_CONNECTED)  // Проверка подключения к WiFi сети
  {
delay(500); // Пауза 500 мкс
Serial.print(".");  // Печать "."
  }
Serial.println(""); // Печать пустой строки
Serial.println("WiFi connected");   // Печать "Подключение к WiFi сети осуществлено"
server.begin();   // Запуск Web сервера
Serial.println("Web server running."); // Печать "Веб-сервер запущен"
delay(10000); // Пауза 10 000 мкс
Serial.println(WiFi.localIP()); // Печатаем полученный IP-адрес ESP
}
 
void loop() 
{
 WiFiClient client = server.available(); // Получаем данные, посылаемые клиентом 
  
 if (client){
  Serial.println("New client");  // Отправка "Новый клиент"
  boolean blank_line = true; // Создаем переменную, чтобы определить конец HTTP-запроса 
  while (client.connected()){ // Пока есть соединение с клиентом 
if (client.available()){ // Если клиент активен 
 char c = client.read(); // Считываем посылаемую информацию в переменную "с"
 if (c == '\n' && blank_line){ // Вывод HTML страницы 
 DS18B20.requestTemperatures();  // Запрос на считывание температуры
 client.println("HTTP/1.1 200 OK"); // Стандартный заголовок HTTP 
 client.println("Content-Type: text/html"); 
 client.println("Connection: close");  // Соединение будет закрыто после завершения ответа
 client.println("Refresh: 10");  // Автоматическое обновление каждые 10 сек 
 client.println();
 client.println("<!DOCTYPE HTML>"); // Веб-страница создается с использованием HTML
 client.println("<html>"); // Открытие тега HTML 
 client.println("<head>");
 client.print("<title>ESP8266 TEMP</title>");  // Название страницы
 client.println("</head>");
 client.println("<body>");
 client.println("<h1>DISTILL3</h1>"); 
 client.println("<h1>Temp 1 = <font color=#FF0000>");
 client.println(DS18B20.getTempC(sensor1)); // Отображение температуры датчик1
 client.println("*C</font></h1>");
 client.println("<h1>Temp  2= <font color=#FF0000>");
 client.println(DS18B20.getTempC(sensor2)); // Отображение температуры датчик2
 client.println("*C</font></h1>");
 client.println("<h1>Temp  3= <font color=#FF0000>");
 client.println(DS18B20.getTempC(sensor3)); // Отображение температуры датчик3
 client.println("*C</font></h1>");
 client.println("</body>");
 client.println("</html>");  // Закрытие тега HTML 
 break;  // Выход
 }
  if (c == '\n'){ // Если "с" равен символу новой строки
blank_line = true;  // Тогда начинаем новую строку
  }
else if (c != '\r'){ // Если "с" не равен символу возврата курсора на начало строки  
blank_line = false; // Тогда получаем символ на текущей строке 
}  
}
  }  
client.stop();   // Закрытие соединения
Serial.println("Client disconnected.");  // Печать "Клиент отключен"
}
}

Будущее за микроконтроллерами
сергей сергей Зарегистрирован:
13.07.2019
18 июля, 2019 - 08:38 #1

ZSerg
сергей сергей Зарегистрирован:
13.07.2019
18 июля, 2019 - 09:52 #3
Спасибо за информацию.
Обновление данных происходит каждые 10 сек?
Картинки можно прикрепить по ссылке. Но с яндекс диска это не прокатит. Нужно загрузить на хостин картинок или в соц сеть например в ВК.

Будущее за микроконтроллерами
Admin Admin Зарегистрирован:
3.07.2018
18 июля, 2019 - 10:10 #4
Да,можно назначить время обновления в скетче.
Схема соединения
и пример отображения в браузере
На данные не обращайте внимания ,датчики не подключены, они уже работают на  др плате:)

ZSerg
сергей сергей Зарегистрирован:
13.07.2019
18 июля, 2019 - 11:08 #6

Будущее за микроконтроллерами
Admin Admin Зарегистрирован:
3.07.2018
19 августа, 2019 - 12:50 #7
При замене датчика, MAC адреса нужно прописывать в скетче и перекомпилировать или поиск нового произойдет автоматом?
Gennadiy-P Gennadiy-P Зарегистрирован:
19.08.2019
15 сентября, 2019 - 15:00 #8
ПРИВЕТ КАК ВАШ ПРОЕКТ ... ЗАКОНЧЕН 
uels uels Зарегистрирован:
4.09.2019
15 сентября, 2019 - 15:01 #9
ПОДЕЛИТСЯ ПРОЕКТОМ ПРОШУ
uels uels Зарегистрирован:
4.09.2019
28 сентября, 2019 - 13:49 #10
а возможен вывод с датчиков данных на сервис Народного мониторинга?
Abakan2000 Abakan2000 Зарегистрирован:
25.08.2019

Войдите или Зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Cлучайные товары

Посмотреть товар в Магазине »

Мы в соц сетях

Подпишись на канал Telegram

Portal-PK (Портал ПК) © 2015 - 2024
Разработка проектов
AT Block
DWIN Box