HC SR501 Отправка на сервер и на почту. База данных и HC SR501

HC SR501 Отправка на сервер и на почту. База данных и HC SR501

Сегодня поговорим как подключить модуль HC SR501 к ESP 8266
Как отправлять на сервер событие срабатывания датчика для сохранения в базе данных и вывода на экран даты и времени когда сработал датчик.
Подключим пищалку и это будет совсем не так как было в прошлом видео когда пришлось собирать целую схему. Теперь мы просто соединим проводами 3 вывода, а всё остальное за нас сделает модуль ESP8266
Оставим подключенный с прошлого урока датчик температуры и создадим на сервере несколько страниц.
А ещё я покажу как буквально 1 строчкой кода отправлять на почту письмо с сообщением о погоде или о времени срабатывания датчика движения HC SR501
Так что урок будет интересный.
Сначала рассмотрим пример подключения пищалки и послушаем какие звуки она может выводить. 

Рассмотрим пример работы с пищалкой.

  • В первой строчке задаём переменную для работы с частотой. И присвоим ей значение 0.
  • Подключим пищалку к пину D1 модуля ESP.  
  • Дальше установим таймауты. Я задам их двумя переменными. Одна для времени звучания, а вторая для паузы.
  • Задержка в полминуты – это осталось от другого скетча и её можно не применять.
  • В бесконечном цикле loop мы создадим свой цикл for. Где будем перебирать все частоты от 0 до 3000 Герц с шагом в 50. Это конечно не музыкальный инструмент, поэтому ждать от него чистого звука не приходится. 
  • Выведем всё это в монитор порта.
  • В функции tone мы указываем номер пина и частоту.
  • Notone – это значит отключить звук. 

Теперь давайте послушаем как это работает. Я увеличу скорость  что бы долго не ждать. Надеюсь, что это не сильно скажется на звуке.
Надеюсь, что вы выбрали ту частоту с которой вы будете работать дальше. 
Я себе сделал 1000 Герц.

Теперь рассмотрим скетч работы пищалки м модуля движения HC SR501.

  • Его мы подключим к пину D3.
  • Частоту сразу указываем. Я указал 1000 Герц.
  • Паузу установим в полсекунды. Так как полсекунды звучания и полсекунды тишины – это как раз будет секунда.
  • Про переменные  I и alarm  я скажу ниже.

Так как после включения датчика движения необходимо дать ему минуту на размышления, то так и сделаем.
После этого выведется надпись, что датчик готов.

Теперь рассмотри loop
Считываем значение с  выхода датчика движения. И присваиваем его переменной state. Значение может быть 1 или 0, то есть HIGH  или LOW.
Теперь если значение 1, то  печатаем слово тревога и выводим счётчик. Его я добавил для того, что когда будет много значений в мониторе порта, то не будет видно движутся они или нет. А так сразу видно. За счётчик отвечает переменная i  которую я установил в начале скетча.
Сначала я не делал ограничения для пищалки,но за то время что я тестировал скетч у меня даже голова заболела от этого пищания, поэтому  я ограничил их 10 писками.
Этот код я объяснять не буду, так как уже рассказал чуть раньше. Переменная alarm увеличивается до 10 с каждым проходом.

Теперь давайте посмотрим как это работает.
Видите появилась надпись что датчик готов, - это значит прошла минута с подключения питания.
А так выглядит схема что я собрал. Ничего интересного, NodeMCU,  датчик движения и модуль пищалки.
Вот ещё что забыл рассказать.
Почему я использовал именно модуль, а не просто пищалку. Сначала я попробовал пищалку не модуль, но она не захотела работать. Я поискал в интернете и прочитал, что для работы с ESP нужен именно модуль. Или вы можете сделать из обычной пищалки модуль. Добавив к ней транзистор. Короче или модуль или паяйте транзистор.
При обнаружении движения раздастся писк и на экране появится надпись Тревога и число. При достижении 10 раз Пищание прекратится, а вот счётчик будет продолжать считать, пока не отключится датчик.  И появится надпись Отбой тревоги.
На его выходе станет 0 и это не будет равняться нашему условию.
Чтобы не затягивать видео мне приходится много резать и ускорять видео, так что если какие нестыковки, то извиняйте.
В конце я покажу, что если долго махать перед датчиком, то он пропищит 10 раз, а вот счётчик будет считать гораздо дольше.
Но как говорится всему приходит конец.

Только не моему каналу и не этому видео. До конца ещё далеко. Я вообще-то не люблю длинные видео. Делать их долго, а смотрите вы их только самое начало. Так что вот.
Потом меня этот писк совсем достал и в последних видео я уменьшил их длительность и количество сделал 3 вместо 10.
Теперь разберёмся как это всё передавать на сервер и хранить в базе, а так же выводить на экран.
Мы уже делали подобное в видео про вывод температуры, так что это ничем не будет отличаться.
Я в PHPMyAdmin  очистил таблицу с температурой и создал таблицу для датчика движения. Файл для создания таблицы будет в архиве.
В таблице всего 3 поля. 

  • ID 
  • Дата и время
  • И статус. Куда мы будем сохранять тревожные значения. То есть единички. Я и поле для него сделал самым маленьким .

Теперь по поводу интерфейса. Я немного его переделал.
На главной теперь только 3 ссылки, а для температуры и датчика есть свои страницы. Когда-нибудь, возможно, я покажу как делать различные графики и диаграммы. Если конечно не завяжу с этой темой. Локального сервера. Так как тема не профильная.
Клацая по ссылкам можно переходить по страницам. Пока поля таблицы пустые. Но сейчас они быстро наполнятся.
Для температуры я сделал вывод каждые 10 секунд, а датчик движения будет создавать записи только при обнаружении движения.
Теперь про скетч. 
Он не полностью закомментирован. Но я думаю кто смотрит постоянно мои виде сможет без труда в нем разобраться.
Вот ещё что я вспомнил. У меня в скетче для датчика движения установлена такая фича, что данные могут добавляться не чаще раз в минуту. Вы можете изменить на свои значения.
Это значит, что если датчик сработал и записал в базу значения, то он сможет записать новые не раньше чем через 1 минуту.
В этом видео я не стал показывать как сортировать данные по увеличению или уменьшению, - это я показывал в прошлом видео.
При тестировании датчик работал хорошо, без сбоев.

Схема подключения.
Здесь всё просто и я ничего говорить не буду. Просто помним, что для датчика температуры нужен резистор на 10 кОм. 

Ну и настал момент отправки на почту письма счастья.
Но сначала надо настроить сервер.
В АРХИВЕ ЛЕЖАТ 6 PHP файлов.
Первый INDEX это главный файл который загружается при запуске. 
Далее идут 
Send это я сделал файл для тестирования почты и к проекту он не имеет никакого значения.
А вот файл connect_db имеет значения ко всем файлам. Он отвечает за подключение к базе данных. Чтобы не писать одно и тоже в каждом файле, я вынес подключение в отдельный файл и подключаю его по мере необходимости.
Файл INSERT отвечает за сохранение значений в базу данных.
Ну а DHT22 и HC SR501 за вывод таблиц с данными.

А теперь приступаем к настройке сервера.
Для этого нажимаем на одноимённую кнопку и переходим на вкладку Почта.
Для отправки писем надо подключить внешний SMTP сервер.
Здесь везде надо указать реальные. Действующие почты.
Я сначала пробовал с почтой на Яндексе, но Яндексовый сервис сразу определил меня за спамера и отказался отправлять письма.
Пришлось сделать почту на MAIL.RU
Smtp сервер пишется вот так. Практически так же он пишется и для Яндекса и для Гугла. Но с Гуглом гораздо сложнее. Так что советую использовать MAIL.
Порт для Яндекса и MAIL одинаковый 587, для Гугла не помню. Шифрование пишем такое или можно поставить Авто.
Email отправителя, желательно указывать таким же как адрес почты, а то система посчитает, что вы её обманываете и используете ящик для спама.
Способов отправки два.
Отправлять почту через удалённый сервер, что мы и будем делать. И второй это оставлять почту на сервере. Тоже нужная вещь, но не для сегодняшнего видео.
Нажимаем Сохранить и сервер перезапускается. Теперь можно закрыть настройки. Мы всё сделали.

Теперь запускаем наш проект.
На главной странице я для теста вывел ссылку Отправить письмо. Эта страница просто переходит на страницу SEND где я разместил код отправки письма. Затем срабатывает переход на главную страницу.
Давайте рассмотрим лог сервера. Посмотрим ушло письмо или нет. Заходим в mail debug и видим, что состоялось соединение с SMTP сервером на порту 587. Аутентификация прошла на OK. Сообщение отправлено. И затем рассоединилось.
Значит письмо ушло и его можно смотреть в почтовом ящике.

Рассмотрим функцию mail.
Она состоит из трёх частей. Это в моём примере, а так можно отправлять html письма и письма с вложением и картинками. Различными кодировками и много ещё чего можно сделать.
Первая часть – это адрес получателя. Куда придёт письмо.
Вторая часть – это Заголовок письма.
А третья часть – это тело самого письма. Сюда можно вставлять любой текст.

Эта строчка отвечает за переход на главную страницу через 1 секунду. Этого вполне хватит на отправку письма.
Теперь заходим в почтовый ящик. Я его тоже создал для примеров из этого видео. Здесь я использовал Яндекс. Видим, что письмо пришло. Правда оно отправилось в спам, но с этим ничего не поделаешь, они будут приходить в эту папку.
Текст пришёл без искажений и практически моментально, не прошло и нескольких секунд.
Для теста отправим ещё одно письмо. Письмо пришло, так что всё работает.
Теперь берём код из файла SEND и размещаем его в файл INSERT, в то место которое отвечает за сохранение в базу статуса датчика движения. 

Теперь у нас всё готово для тестирования отправки. Снова подключаем датчик.
Я на одном экране постарался разместить три вида.
Почту, страницу с таблицей и сам датчик.
Датчик срабатывает и в таблице появляется новая запись , а в почту приходит уведомление с текстом которое мы туда записала.  В письмо можно было бы вставить время, или информацию какой датчик сработал или ещё что-нибудь. Всё зависит только от вашей фантазии.
Я проделал это несколько раз и письма приходили практически без задержек. Так что если у вас сработает датчик, то вы можете быть уверены, что к вам придёт письмо.
Потом можно попробовать сделать отправку смс сообщений или PUSH уведомлений, или отправку в соцсети.
В общем нет ограничений в выборе.  Это только начало и если вы хотите продолжения то жду от вас поддержки. Лайков, комментариев. Делитесь этим видео в соцсетях – это мне очень поможет набрать аудиторию. Чем нас больше, тем интереснее.

На этом я заканчиваю ещё одно видео. Надеюсь, что оно вам было полезно и вы узнали что-нибудь новенькое.
Если так, то с вас лайк и если вы не подписаны, то подписка.
До встречи в новых видео.