Термо-датчик на DS18B20 и WIFI модуле ESP8266 с передачей данных на сервер


• О проекте
• Обратная связь
• Полезные ссылки
• Полезные программы
• Друзья сайта


Последние комментарии

Сергей: Работа с часами реального времени DS3231
Добрый день.Заинт...

Алексей: Работа с часами реального времени DS3231
Причем здесь акку...




           

Библиотека для AVR





AXLIB Генератор





Помощь сайту


   
				

Термо-датчик на DS18B20 и WIFI модуле ESP8266 с передачей данных на сервер

	
	
	

Дата: 19 Июня 2017. Автор: Алексей

	
	
Коле да не коле, да решился я пнуть свою лень и изучить таки, купленный 100 лет назад, WIFI модуль ESP8266)))
А если честно, то попросили меня расковырять его. Ну чтож, меньше слов больше дела. Поехали.


ESP8266

С чего начать? Разрабатываем план.

1. Надыбать прошивку для модуля.
2. Написать прогу для модуля.
3. Написать скрипты для web-сервера.
4. Заценить работу девайса)))

Пункт 1.

Для того чтобы все заработало нам понадобится загрузить в модуль прошивку NodeMCU. Где ее взять?

А вот ссылочка на онлайн ресурс для получения прошивки. Топаем по ссылочке и попадаем на сайт-генератор.

Генератор прошивки

Ну и как не трудно догадаться, вписываем в оба поля свою электронную почту. Почтовый ящик должен быть настоящим, так как туда в дальнейшем скинут прошивку. После заполнения полей с почтой, опускаемся вниз и ставим галочки на против полей HTTP для работы с GET запросами и 1-Wire, для общения с датчиком DS18B20.

Генератор прошивки

Далее опускаемся ниже и жмакаем на кнопку Start your build

Генератор прошивки

Там же можно кинуть денюшку авторам. Я думаю они будут не против. Поверьте оно того стоит, так как работа проделана колоссальная.
Спустя некоторое время, на почту свалится письмо следующего содержания.

Генератор прошивки

В нем говориться что все зашибиЗ и первые две ссылки как раз указывают на нужные нам прошивки. Какую скачать? Да сами решайте. Первая с поддержкой значений с плавающей точкой, а вторая с целочисленными. Я скачал первую, так как датчик температуры возвращает дробное значение. Далее после того как скачали прошивку идём вот по этой ссылке и качаем нужный нам патч. Далее выковыриваем из него файл с названием esp_init_data_default.bin. Все, вот теперь мы вооружились прошивками и самое время перейти к следующему пункту.

Пункт 2.

Для того чтобы залить прошивку в модуль, нам понадобится программа под названием флеш-лоадер))) Загрузчик флеш памяти))). Для того чтобы им обзавестись, топаем по этой ссылке и качаем его.

Загрузчик

Скачав, выковыриваем его из архива в какую-нибудь папочку. Далее топаем по адресу nodemcu-flasher-master\Resources\Binaries и кладем туда наши два файла что скачали в пункте один. Предварительно рекомендую удалить аналогичные в текущей директории дабы не было путаницы.

Загрузчик

Готово! Теперь самое время залить их в модуль. Для этого возвращаемся в корень флеш-лоадера и заходим в папку nodemcu-flasher-master\Win64\Release. У меня 64-х битная, поэтому Win64. У кого 32-х битная ось, соответственно топаем в Win32. Зайдя в нужную папку стартуем загрузчик.

Загрузчик

Если модуль подключен к USB и проблем с драйверами нет, то прога сама найдет нужный порт. У меня как раз это третий.
Для того чтобы залить прошивку, переходим во вкладку Config и видим прошивку по умолчанию.

Загрузчик

Нажимаем справа на шестеренку и выбираем нашу новую прошивку.

Загрузчик

Теперь переходим обратно во вкладку Operation и жмакаем на кнопку Flash(F).

Загрузчик

Долго ли, коротко ли, но в конце концов прошивка зальется, о чем нам скажет зеленый кружочек в левом нижнем углу.

Загрузчик

Теперь вертаемся во вкладку Config и выбираем файл esp_init_data_default.bin. А так же меняем адрес загрузки на 0x3FC000.

Загрузчик

Снова вкладка Operationn и кнопка Flash(F).

Загрузчик

Ура! Мы победили. Теперь для того чтобы выполнить пункт три, нам понадобится IDE. То есть программа для написания кода и загрузки его в модуль. Для этого идем по этой ссылке и качаем программу под названием ESPlorer. От небольшой денюшки ребята тоже не откажутся. Прога того стоит.

Пункт 3.

Запускаем программу. Не забудьте обновить Java. Без нее никак.
По программе распинаться не буду, сами на досуге рассмотрите. Сейчас самое главное чтоб она нашла наш порт, а у меня это COM3, и на скорости 115200 соединяемся с модулем.

ESPlorer

Вот что мы видим. Соединение произошло, а модуля не видать. Для того чтобы модуль объявился, нужно нажать кнопку RESET на плате. Передергиванием провода просто убъете соединение, только кнопка RESET.

ESPlorer

О. Ответил. С учетом того что я курочил модуль очень много раз, после рестарта модуль застыл))) Если вы это делаете впервые, то должно запуститься форматирования памяти.

ESPlorer

Если все таки по какой-то причинам этого не произошло, то жмакаем по кнопке справа с надписью Format. Соглашаемся с действием в выповшей вкладке и ждем окончания форматирования памяти.

ESPlorer

Вот что мы увидим после форматирования.

ESPlorer

Теперь самое время написать код. В левом окне пишем следующее.

-- Функция получения температуры
function ds18b20()

-- Температура
t = 0
-- Пин для подключения датчика
pin = 1
-- Настройка пина для работы шины 1W
ow.setup(pin)
-- Очистка состояния поиска датчика
addr = ow.reset_search(pin)
-- Поиск датчика и получение РОМ кода
addr = ow.search(pin)
-- Рестарт шины
ow.reset(pin)
-- Запрос датчика
ow.select(pin, addr)
-- Запись команды на преобразование температуры
ow.write(pin, 0x44, 1)
-- Ждем окончания преобразования 800мс, так как для преобразования нужно 750мс
tmr.delay(800000)
-- Рестарт шины для чтения данных из датчика
ow.reset(pin)
-- Запрос датчика
ow.select(pin, addr)
-- Команда чтения данных из датчика
ow.write(pin, 0xBE, 1)
-- Читаем данные из датчика
data = nil
data = string.char(ow.read(pin))
for i = 1, 8 do
    data = data .. string.char(ow.read(pin))
end
t = ((data:byte(1) + data:byte(2) * 256) * 625) / 10000

return t

end

-- Инициализация и подключение к роутору

-- Задаем имя сети и пароль для доступа к сети
ssid, pass = "My_SSID","My_password";

-- Выбор режима работы. Подключаемся к роутеру
wifi.setmode(wifi.STATION)
-- Передаем параметры имя сети и пароль
wifi.sta.config(ssid, pass)
-- Подключаемся к роутеру
wifi.sta.autoconnect(1)

-- Если подключились то выводим IP
print('IP: ', wifi.sta.getip())

-- Передача данных на сервер

-- Задаем тайминг. Передача температуры раз в 5 секунд
tmr.alarm(0, 5000, 1, function ()

-- Читаем температуру
data = ds18b20()

http.get("http://www.mysite.ru/esp8266/esp8266.php?temperatura="..data.."", nil, function(code, data)
    if (code < 0) then
      print("Запрос не прошел")
    else
      print("Запрос прошел")
    end
  end)
end)
Описывать код не вижу смысла, так как я каждую строку прокомментировал. Незабываем поменять имя сети и пароль на свои, а так же доменное имя своего хоста.

Для получения данных нам потребуются три скрипта написанные на PHP и таблица в базе данных. На хосте создайте таблицу при помощи phpmyadmin (любой хостер предоставляет данную услугу) с 4-мя столбцами. Обзовите их id, data, time и temperatura. Далее скачайте три скрипта. В корне вашего хоста создайте папку esp8266 и положите туда эти три скрипта. Предварительно укажите в каждом файле путь до конфигурационного файла базы данных.

Ссылка на три скрипта.

После того как все сделали, зайдя по адресу www.myhost.ru/esp8266/index.php через каждые 5 секунд должны появлятся новые данные по температуре. У меня это выглядит так.

Параметры температуры

Ну и для полного понимания происходящего можно посмотреть видео как все это делалось и как это все работает. А именно это...

Пункт 4.




RBuraev    30.06.17 11:38

опишите пож-та подробно вот эту часть статьи-как это сделать непонятно:
Для получения данных нам потребуются три скрипта написанные на PHP и таблица в базе данных. На хосте создайте таблицу при помощи phpmyadmin (любой хостер предоставляет данную услугу) с 4-мя столбцами. Обзовите их id, data, time и temperatura. Далее скачайте три скрипта. В корне вашего хоста создайте папку esp8266 и положите туда эти три скрипта. Предварительно укажите в каждом файле путь до конфигурационного файла базы данных.

Алексей    30.06.17 12:43

Ок. Но чуток по позже. По сути это отдельная статья. Я думаю оформлю в виде кино про веб сервер на расбери. Если конечно это интересно.




Чтобы вставить ссылку используйте форму вида[url]http://www.адрес.ru[/url][text]текст ссылки[/text]
Чтобы вставить код используйте форму вида[code]код[/code]

Имя:   





  








Вверх


Рейтинг@Mail.ru Яндекс.Метрика