Skip to content

Умный дом с заменой arduino-компонент

License

Notifications You must be signed in to change notification settings

v-pereskokov/iot-arduino-analog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Arduino breakout

Умный дом с заменой arduino-компонент.

Оглавление

  1. Оглавление
  2. Описание
  3. Структура проекта
    1. Главное устройство
    2. Контролируемые устройства
    3. Сервера
    4. Бот
    5. Фронт
    6. Взаимодействие
  4. Технологии
  5. Софт
  6. Пример использования

Описание

Основное назначение –– автоматизация различных процессов с помощью контроллеров и одноплатных контроллеров. В рамках данного проекта решение применяется для:

  • Взаимодействия удаленного между различными участниками системы;
  • Управления различных устройств (в данном проекте приведены упрощенные примеры, но несложно подключить и полноценные бытовые приборы).

Использование данной системы может установлено в абсолютно любом помещении:

  • офисные помещения;
  • дома;
  • магазины и склады;
  • банки и другие объекты кредитно-финансовой сферы;
  • частный сектор (дома, дачи, квартиры).

Структура проекта

Структурная схема реализации данного проекта представлена ниже: Функциональная схема

Главное устройство

В данном проекте едиснтвенное устройство, которое контролирует все остальные –– LinkIt Smart 7688 Duo. Внутри данного контроллера располагается web-server на nodejs с сервером express, а также python сервер для обращения к устройствам по виртуальным COM-портам.

Контролируемые устройства

В первоначальной реализации использовались физические платы Arduino Uno как конечные устройства с интерфейсом взаимодействия Bluetooth. Во время дальнейшей реализации проекта пришли к результату, что данные платы требуют слишком много ресурсов: как настроек, количество кода, так и банально цены.

Было принято решение использовать эмулятор Proteus. В качестве замены Arduino выступил контроллер PIC16F877.

Список устройств, подключенных к трем таким контроллерам через виртуальные COM-порты:

  1. датчик температуры;
  2. LCD-экран;
  3. шлагбаум (на основе шагового двигателя).

В случае перегрева или переохлаждения датчика температуры автоматически отправляется сообщение через telegram-бота пользователю системы, на LCD-экране показывается специальное уведомление, а также открывается шлагбаум. Ниже представлен скрин конечных виртуальных устройств.

Виртуальные устройства

Сервера

# Название Описание ЯП
1 API взаимодействия с устройствами Взаимодействие с конечными устройствами Python 3
2 Слушатель устройств Проверяет устройства на возможные неопладки Python 3
3 Статика клиентского приложения Раздача статики Nodejs
4 Бот Функции бота Nodejs

REST API

Ручка Тип запроса Запрос Ответ Описание
/set_lcd_text GET ?text= 'Ok' Задать текст на LCD
/clear_lcd GET 'Ok' Очистить текст
/get_lcd_text GET Получить текущий текст на LCD
/is_ok_lcd GET 200/404 Узнать текущее состояние LCD
/turn_motor GET <Opened/Closed> Закрыть/открыть шлагбаум
/status_motor GET <Open/Close> Узнать текущий статус шлагбаума
/is_ok_motor GET 200/404 Узнать текущее состояние шлагбаума
/get_temperature GET /-?\d\d\d?.\d\d\d\d C/ Получить текущую температуру помещения
/change_temperature GET ?type=<up/low> 'Ok' Уменьшить или увеличить температуру программно
/is_ok_temp GET 200/404 Узнать текущее состояние датчика

Бот

Для увеломлений пользователя используется Telegram-бот.

Фронт

Клиентская часть написана на TypeScript + React. Ниже скрин пользовательской части.

Клиентская часть

Запуск и сборка

Здесь написано более подробно.

Взаимодействие

Клиентская часть отправляет запрос (через прокси сервер на nodejs) на API для управления устройствами. API через COM-порты виртуальные управляет устройствами (или получает данные с них).

Также есть watcher, который наблюдает постоянно за устройствами (включены ли устройства, какая температура). Если произошла какая-то аномалия, то вотчер отправляет через Telegram-бота уведомление пользователю, открывает шлагбаум, уведомляет также через LCD-экран.

Технологии

  • Си
  • Python 3
  • Nodejs
  • TypeScript

Софт

  • Proteus
  • mikroC (использовали дополнительный пакет)
  • Parallels

Пример использования

Видео примера использования представлено ниже (кликните на картинку для перехода в YouTube):

Example video