Суббота, 27.04.2024, 03:05
| RSS
Поиск
Главная |
Защита, контроль, управление
Форма входа
Логин:
Пароль:

Меню

Авторские проекты

Статьи

Raspberry Pi

Полезная информация

Обратная связь

Ссылки

Форум

Чат

Канал YouTube

Группа в Facebook


Календарь
«  Апрель 2014  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
282930

Наш опрос

Ссылки


Яндекс.Метрика





.
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Raspberry Pi для домашней автоматизации. Контроллер RS485

Raspberry Pi для домашней автоматизации. Контроллер RS485

Наш канал в YouTube


Контроллер RS485

Одним из основных элементов системы домашней автоматизации, структуру которой мы рассмотрели в четвертой части, является контроллер с набором цифровых входов и выходов, подключаемый к Raspberry Pi через интерфейс RS485. Таких контроллеров может быть несколько, в зависимости от количества точек контроля и управления и их территориального распределения. Если вам требуется автоматизировать небольшой объект, то может оказаться достаточно и одного контроллера, что и предполагает самая первая версия системы домашней автоматизации с использованием Raspberry Pi.

Рассмотрим принципиальную схему контроллера. Схема состоит из микроконтроллера 16F876A,  драйвера интерфейса RS485 МАХ485, алфавитно-цифрового дисплея WH1602 на 2 строки и 16 символов и стабилизатора напряжения LM7805 (рис.1).

Raspberry Pi Controller

Рис. 1

 

Контроллер имеет четыре выхода (OUT1-OUT4), к которым через транзисторные ключи с исполнительными реле можно подключать различные нагрузки, четыре входа (INP1-INP4) для подключения датчиков с двумя состояниями (замкнут/разомкнут) и два цифровых входа для датчиков температуры и влажности DHT11 и DHT22. Два оставшихся свободных входа (INP5-INP6) в этой версии контроллера не используются.

Состояние входов и выходов контроллера, показания температуры и влажности, выводятся на дисплей (рис.2)

 

SC1602

Рис. 2

 

В верхней строке дисплея отображаются показания температуры и влажности датчика DHT22 и состояние входов контроллера, в нижней - показания температуры и влажности датчика DHT11 и состояние выходов контроллера. Отображаемые символы состояний входов и выходов интуитивно понятны, например, на приведенном рисунке входы 1 и 3 замкнуты, 2 и 4 – разомкнуты, на выходах 1 и 3 низкий уровень (выключено), 2 и 4 – высокий (включено)

Так как в системе домашней автоматизации может быть несколько контроллеров, подключенных к шине RS485, то каждый контроллер должен иметь свой сетевой адрес. Адрес состоит из двухзначного числа в ASCII коде и хранится в последних двух ячейках EEPROM микроконтроллера (ячейка EFдесятки адреса, ячейка FFединицы адреса). Так же в EEPROM (ячейка F8) хранится последнее установленное значение выходов контроллера. Если произойдет сброс микроконтроллера по сторожевому таймеру или каким-либо иным причинам, эта функция позволит вернуть выходы в состояние, в котором они находились до момента сброса.

Расположение ячеек EEPROM показано на рис.3. Здесь адрес контроллера установлен 02 (EF = 30, FF=32), на всех выходах контроллера по умолчанию низкий уровень (F8 = 00).  Значения в EEPROM записываются на этапе прошивки микроконтроллера 16F876A.

 

EEPROM

Рис. 3

 

Для подключения UART Raspberry Pi к шине RS485 используется простой преобразователь, выполненный на двух транзисторах. Применение такого схемного решения позволило отказаться от отдельного выхода для управления приемопередатчиком драйвера МАХ485. Он переключается в режим передачи, только когда UART передает данные, остальное время МАХ485 находится в режиме приема.

Команда управления приемопередатчиком снимается с коллектора транзистора VT1. Транзистор VT2 необходим для «обратного инвертирования» передаваемых сигналов с выхода ТХ UART.

Помимо преобразования интерфейсов, данная схема выполняет функцию согласования уровней 3,3В UART Raspberry Pi с уровнями микросхемы МАХ485. Транзисторы VT1 и VT2 подтягивают уровень на входе DI до 5В, а резистор R5 и стабилитрон VD1 ограничивают уровень с выхода R0 до 3,3В  (рис.4).

 

Переходник UART/RS485

Рис. 4

 

Преобразователь интерфейсов выполнен на небольшой монтажной плате, которая через разъем подключается к соответствующим выводам порта GPIO (TX, RX, +5B, GND) и витой парой соединяется  с контроллером (рис.5).

 

плата переходника UART/RS485

Рис. 5

Внимание! Как альтернативный вариант можно применить готовый адаптер USB/RS485, подключаемый к порту USB Raspberry Pi. Такой вариант будет даже более оптимальный, чем подключение через UART. О использовании адаптера USB/RS485 в качестве преобразователя интерфейсов читайте здесь http://lock.3dn.ru/news/raspberry_pi_dlja_domashnej_avtomatizacii_adapter_usb_rs485/2015-05-07-129

Если вы выполнили рекомендации из предыдущих обзоров по настойке и конфигурированию Raspberry Pi, то у вас практически все готово для первого включения. Осталось сделать совсем немного. В директорию диска Raspberry Pi /home/pi/myproject/html с помощью программы WinSCP необходимо распаковать архив, содержащий Web-интерфейс  панели управления. После распаковки в папке html должно появиться два файла – index.html и fon.jpg.

Соединив контролер с Raspberry Pi витой парой, и подав питание, можно приступать к тестированию. Для входа в панель управления требуется набрать сетевой адрес Web-сервера с номером порта (например, 192.168.1.8:8000) и ввести логин и пароль (webiopi/raspberry). После этого должна открыться страница с интерфейсом панели (рис.6).

 

web интерфейс RS485

Рис. 6

 

На панели управления и контроля отображается статус соединения Web сервера с контроллером, текущие дата и время, состояние входов контроллера, кнопки управления и состояние выходов контроллера, кнопки управления 4 выходами GPIO Raspberry Pi, значения температуры и влажности, получаемые от датчиков DHT11 и DHT22. Для более подробного знакомства с интерфейсом панели управления и контроля, смотрите видео в конце этого обзора.

Все надписи и обозначения на панели можно изменить. Для этого даже не требуется знание основ HTML и JavaScript, там все интуитивно понятно. Достаточно открыть файл index.html, например, встроенным редактором (клавиша F4), выполнить необходимые изменения, сохранить файл и перезапустить web-сервер командой:

sudo /etc/init.d/webiopi restart

Я намеренно не описываю используемый протокол обмена между Raspberry Pi и контроллером через RS485. Дело в том, что в последующем планируется немного его изменить в силу определенных причин. Ну а пока можете приступать к тестированию «пилотной» версии системы домашней автоматизации и высказывать на форуме свои вопросы, замечания и пожелания по ее дальнейшей модернизации. 

P.S. В настоящее время схема контроллера несколько изменена. Рекомендуется при изготовлении контроллера пользоваться доработанной схемой.

 

Смотреть видео работы контроллера:

Содержание всех статей сайта по теме Raspberry Pi




Категория: | Просмотров: 27846 | Добавил: Admin | Теги: | Рейтинг: 5.0/4 |
Всего комментариев: 12


11 saho  
Здравствуйте уважаемый друг . А можно всё же по подробней о протоколе обмена между Raspberry Pi и контроллером через RS485? Или будьте добры , дайте ссылку на информацию по этому вопросу .

10 dvz2010  
Рис 4. VT2 передает только нулевое значение GPIO14, поскольку когда с GPIO14 идет 1, передача в MAX485 запрещается выходом VT1, то есть как минимум можно DI (4 нога MAX485) подать на землю и выкинуть R3 R4 VT2 - будет полный логический аналог исходной схемы. Хотя все-равно схема немного не верна. Нулевое состояние в линию передается драйвером (DE=1 и передача разрешена), а вот единичное состояние передается подпорками линий АВ, а не драйвером (DE=0 и передача запрещена - драйвер от линии отключен) - и эти подпорки к тому же должны где-то быть, и ставят их как правило на Мастере. Либо не ставить подпорок, но на момент передачи как 0 так и 1 выставлять DE=1 как и положено.

8 gorrec41  
добрый день подскажите вы на avr контролерах ни чего не делаете все на pic.

9 Admin  
0
Да, только на PIC

7 alex_osa  
А кто может подсказать как это можно сделать?

12 Basel  
Датам все го то ничего,))) Разработать схемы на AVR, а потом написать и отладить программы, работы то... тьфу... на на пару лет)))

5 alex_osa  
Уважаемий автор а возможно реализовать месное управление виходами  (OUT1-OUT4) четирмя кнопками без фиксации

6 Admin  
0
Возможно....если изменить прошивку

3 123ksn  
На рисунке 4 надо бы обозначить Tx, Rx

4 Admin  
0
В Raspberry Pi на портах GPIO UART жестко привязан к определенным пинам (14 и 15), так что подключение в любом случае будет правильным.

Впрочем, исправить не проблема. Только боюсь, что это наоборот запутает ситуацию - например, одни начнут считать TX выход адаптера, а другие - выход Raspberry. Уже сколько говорилось о подобной ситуации на форуме в ветке по сигнализации Microalarm, где обсуждалось подключение телефона к UART микроконтроллера, даже на схеме я стрелками направление сигналов указывал, все равно у многих осталось непонимание - одни считали обозначения RX и ТХ относительно телефона, другие - относительно микроконтроллера.

2 Admin  
0
К сожалению печатку под этот контроллер я не делал, т.к. он предназначался в основном для тестирования системы. Поэтому собирал на монтажной плате (на видео это видно). А печатная плата разрабатывалась под это устройство - http://lock.3dn.ru/news....-09-122

P.S. Знания - дело наживное, главное что бы желание было smile

1 altlogik  
добрый день
Очень понравился ваш проект!
Хочу повторить его для автоматизации дача.
Знаний конечно не совсем хватает, но буду учиться.

Скажите, а разводку печатной платы для контроллера RS485 можно как-то скачать?

СПАСИБО !





T2M © 2024
Сайт управляется системой uCoz