Автоматизация дома на микроконтроллере PIC с управлением через интернет


Системы автоматизации дома ("умного дома") с каждым годом становятся все более популярными в современном мире. К примеру, "удаленное" включение/выключение света в комнате не вставая с кресла выглядит для многих домохозяйств весьма привлекательным. Но технологии интернета вещей (IoT) предоставляют еще более увлекательные возможности – с их помощью включать/выключать свет в комнате можно находясь в любой точке земного шара где есть подключение к сети интернет.

Внешний вид проекта автоматизации дома на микроконтроллере PIC с управлением через интернет

В данной статье мы рассмотрим удаленное управление домашними устройствами с веб-страницы с помощью сервиса Adafuit IO, модуля ESP8266 и микроконтроллера PIC. В качестве нагрузки в нашем проекте мы будем использовать три лампы переменного тока, каждую из которых можно будет включать/выключать по отдельности с телефона или компьютера. Перед изучением данного проекта рекомендуем ознакомиться с методикой подключения Wi-Fi модуля ESP8266 к микроконтроллеру PIC.

Ранее на нашем сайте мы уже рассматривали более простой проект автоматизации дома на основе микроконтроллера PIC и инфракрасной связи. Также вы можете посмотреть на нашем сайте наиболее популярные проекты автоматизации дома на основе других микроконтроллеров (плат):

Необходимые компоненты

  1. Микроконтроллер PIC16F877A (купить на AliExpress).
  2. Модуль ESP8266 (купить на AliExpress).
  3. Модуль электромагнитных реле на 12V 5A.
  4. Держатель микросхем на 40 контактов (купить на AliExpress).
  5. Программатор PICkit 3 (купить на AliExpress).
  6. ЖК дисплей 16х2 (купить на AliExpress).
  7. Кварцевый генератор 18,432 МГц.
  8. Конденсаторы 22 пФ (2шт.), 10 мкФ (купить на AliExpress).
  9. Конденсатор 1000 мкФ (купить на AliExpress).
  10. Резисторы 1 кОм (3 шт.), 10 кОм (купить на AliExpress).
  11. Потенциометры 1 кОм и 10 кОм (купить на AliExpress).
  12. Регулятор напряжения LM7805 (купить на AliExpress).
  13. Регулятор напряжения LM317 (купить на AliExpress).
  14. Источник напряжения питания 12V/1A или больше.
  15. Светодиод – 2 шт. (купить на AliExpress).
  16. Перфорированная и макетная платы.
  17. Соединительные провода.

Схема проекта

Схема проекта автоматизации дома на микроконтроллере PIC с управлением через сеть интернет представлена на следующем рисунке.

Схема проекта автоматизации дома на микроконтроллере PIC с управлением через сеть интернетОсновным элементом нашего проекта автоматизации дома является микроконтроллер PIC16F877A, который выполняет все основные операции в нашем проекте. Он будет управлять работой модуля ESP8266, с помощью которого будут передаваться и приниматься данные от сервера Adafruit и в зависимости от них будут включаться/выключаться соответствующие реле. Для отображения служебных сообщений проекта мы будем использовать ЖК дисплей 16х2.

В этом проекте нам будет необходимо 3 номинала питающих напряжений:

  1. Для питания модуля реле 12v будет необходим адаптер питания на 12v.
  2. Напряжение 5v будет необходимо для питания микроконтроллера PIC, ЖК дисплея и управляющих цепей модуля реле. Для получения этого питающего напряжения мы будем использовать регулятор напряжения 7805, подключенный к напряжению 12v.
  3. Для питания модуля ESP8266 будет необходимо напряжение 3.3v. Его мы будем получать с помощью регулятора напряжения LM317 и делителя напряжения.

Внешний вид собранной конструкции проекта показан на следующих рисунках.

Внешний вид собранной конструкции проекта

Внешний вид собранной конструкции проекта, расположенной на макетной плате

Настройка сервиса Adafruit IO для нашего проекта

В нашем проекте мы будем управлять потребителями переменного тока с веб-страницы, созданной с помощью сервиса Adafruit IO. Данный сервис позволяет достаточно просто устройствам интернета вещей использовать данные GET и POST. Также с его помощью можно создавать графический интерфейс пользователя (GUI) для просмотра данных, управления устройствами и триггерами различных оповещений.

Для настройки сервиса Adafruit IO для нашего проекта выполните следующую последовательность шагов:

Шаг 1. Создайте себе аккаунт на adafruit.io если у вас его еще нет.

Вход в свой аккаунт на adafruit.io

Главная страница сервиса adafruit.io

Шаг 2. Создайте панель инструментов нажав на ‘Dashboards’ в левой стороне страницы, затем нажмите на ‘Action’ и затем на ‘Create a New Dashboard’ (создать новую панель инструментов).

Создание новой панели инструментов в сервисе adafruit.io

После этого откроется всплывающее окно, введите в нем имя формы, например, "Home Automation", после чего нажмите на "Create". Также в эту форму вы можете добавить описание проекта.

Окно ввода названия и описания панели инструментов в сервисе adafruit.io

Шаг 3. Теперь нажмите на только что созданную панель инструментов.

Внешний вид только что созданной панели инструментов в сервисе adafruit.io

Теперь необходимо нажать на иконку "+" (она в квадрате синего цвета) в правом верхнем углу панели инструментов.

Кнопка для добавления нового блока на панель инструментов в сервисе adafruit.io

Откроется новое всплывающее окно, в котором вы можете выбрать необходимый вам блок, например, выключатель ON/OFF.

Доступные блоки для панели инструментов в сервисе adafruit.io

После выбора блока (кнопка On/Off) откроется новое всплывающее окно. Введите в нем имя нового фида, например, Light1, и нажмите на create.

Создание фидов для панели инструментов в сервисе adafruit.io

Теперь нажмите на только что созданный фид и заполните в нем некоторые детали.

Ввод настроек фида в сервисе adafruit.io

Вы можете создать дополнительные фиды и блоки по своему усмотрению. В нашем проекте мы создали 3 фида для управления с помощью данного веб-интерфейса тремя лампами переменного тока.

Созданные нами фиды в сервисе adafruit.io

Шаг 4. Теперь нажмите на символ ‘KEY’ на то же самой странице и скопируйте с открывшейся страницы имя пользователя (username) и активный ключ (active key).

Получение имени пользователя и пароля в сервисе adafruit.io

Шаг 5. Откройте код программы (приведен в конце статьи) и замените в нем везде имя пользователя (username) на свое, также замените в коде программы MQTTPassword на свой активный ключ (active key).

Шаг 6. Скомпилируйте и загрузите код программы в микроконтроллер PIC. После этого вы можете приступить к тестированию работы проекта. Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Тестирование работы проекта автоматизации дома

Протокол MQTT

Наш проект автоматизации дома использует протокол MQTT для обмена данными между сервером и клиентом. По сравнению с протоколом TCP/IP протокол MQTT работает гораздо быстрее. Данный протокол содержит 3 основных компонента:

  1. Издатель.
  2. Брокер.
  3. Подписчик.

По информации с его официального сайта MQTT.org данный протокол является чрезвычайно простым и "легким" протоколом передачи сообщений, предназначенным для работы в сетях с ненадежными каналами, большими задержками и узкой полосой пропускания. Основными принципами работы протокола является минимизация используемой полосы пропускания и требований к взаимодействующим устройствам чтобы обеспечить высокую надежность работы и некоторую степень качества обслуживания. Эти свойства делают протокол MQTT "идеальным" для проектов межмашинного взаимодействия (“machine-to-machine”, M2M) и проектов интернета вещей (Internet of Things), а также для мобильных устройств с ограниченной полосой пропускания канала связи и ограниченным ресурсом батареи.

Более подробно про принципы работы протокола MQTT вы можете прочитать в этой статье.

Объяснение программы для микроконтроллера PIC

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты. Код программы получился немного сложный из-за использования протокола MQTT и его формата кадра. Но вы его можете просто скопировать в конце данной статьи если не хотите разбираться в нем подробно.

Первым делом в программе подключим используемые библиотеки и настроим биты конфигурации микроконтроллера.

После этого запишем макросы для используемых контактов (дадим им осмысленные имена в программе).

В следующей части кода мы объявим используемые переменные.

Далее инициализируем наш Wi-Fi модуль ESP8266 и подключимся к точке доступа Wi-Fi.

Следующий фрагмент используется для настройки протокола MQTT и сервиса adafrut.io.

Затем запрограммируем функцию для соединения с брокером Adafruit IO и подписки на необходимые нам в этом проекте темы.

Также запрограммируем функцию для соединения с MQTT брокером Adafruit IO.

Следующая функция используется для передачи пакета подписки MQTT брокеру.

Также запрограммируем ряд функций для работы с ЖК дисплеем и последовательным портом связи – их код можно найти в полном коде программы.

Таким образом, используя сервис Adafruit.io, можно достаточно просто управлять домашними устройствами из любой точки Земли, где есть подключение к сети интернет.

Исходный код программы

Видео, демонстрирующее работу проекта

Источник статьи

(Проголосуй первым!)
Загрузка...
221 просмотров

Комментарии

Автоматизация дома на микроконтроллере PIC с управлением через интернет — 2 комментария

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *