Шлюз RS232, CAN, RS485 to Ethernet MQTT на Atmega328

Для управления телевизором и проектором через RS232 у меня используется связка Arduino UNO + Ethernet Shield W5100 + переходник RS232 — UART. Решил собрать эту солянку на одной плате. То что из этого вышло можно посмотреть ниже.

Мозгом является микроконтроллер Atmega328P с зашитым Arduino’вским бутлоадером. Для связи по Ethernet я выбрал новую микросхему W5500 от производителя WIZnet Co., Ltd.

Микросхема W5500 от производителя WIZnet Co., Ltd.
Микросхема W5500 от производителя WIZnet Co., Ltd.

Микросхема W5500 — дополнение к линейке популярных Ethernet-чипов от компании WIZNet — представляет собой функционально законченный чип встраиваемого Ethernet-контроллера для обеспечения проводного соединения TCP/IP, позволяющий упростить подключение к интернету устройств и систем, использующих SPI (высокоскоростной последовательный периферийный интерфейс). W5500 позволяет удовлетворить потребности пользователей в стабильном подключении к Internet, с помощью единого чипа для реализации стека TCP/IP, 10/100, Ethernet MAC и PHY. Аппаратный стек TCP/IP поддерживает TCP, UDP, IPv4, ICMP, ARP, IGMP, PPPoE…

Принципиальная схема устройства
Принципиальная схема устройства

В роли преобразователя RS232UART используется микросхема MAX3232. Дополнительно я сделал плату более универсально в плане протоколов. Есть возможность установить микросхему TJA1040 и получить вместо RS232, CAN шину. Можно установить микросхему MAX485 и тем самым получить RS485. Однако одновременного использования не предусмотрено и выбор протокола зависит от установленной микросхемы преобразователя.

Питание платы организовано на DC-DC конвертере, выполненного  на микросхеме MC34063, которая имеет широкий диапазон входных напряжений от 5.5 до 40 Вольт.

Распиновка разъема RJ12 6P6P
Распиновка разъема RJ12 6P6P

Для управления я как обычно использую протокол MQTT.

Код для управления телевизором выложен на GitHub.

Так же можно залить вот этот скетч и мы получим полноценный конфигурируемый шлюз.

Подключившись телнетом к шлюзу по порту 24:

telnet <ip-address> 24

мы можем изменить следующие настройки:

?get <label>, <baudrate>, <parity>, <wordlength>, <stopbits>
Label [string] — получить или установить пользовательскую метку (до 32 символов)
Baudrate [value] — получить или установить скорость передачи (300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200)
Parity [value] — получить или установить четность (N, E, O)
Wordlength [value] — получить или установить wordlength (5, 6, 7, 8)
Stopbits [value] — получить или установить стоп бит(1, 2)
Save — сохраняет текущие настройки в памяти EEPROM
Load — загружает настройки из памяти EEPROM

Пример:

baudrate 9600
parity N
stopbits 1
wordlength 8
save
?

Подключившись телнетом к шлюзу по порту 23:

telnet <ip-address> 23

мы может отправлять и принимать данные.

Для получения и отправки данных из скрипта в IoBroker используем следующий код:

var PORT = 23;
 var HOST = '192.168.1.55';

var net = require('net');

var client = new net.Socket();

client.connect(PORT, HOST, function() {
     log('Connected');
     client.write('Connected');
});

client.on('data', function(data) {
   log('Received: ' + data);
});

client.on('error', function(err) {
   log("Error: " + err);
});

 

 

Шлюз RS232, CAN, RS485 to Ethernet MQTT на Atmega328
Шлюз RS232, CAN, RS485 to Ethernet MQTT на Atmega328
Разьем питания и Ethernet
Разьем питания и Ethernet
Размер платы
Размер платы
Микросхема W5500
Микросхема W5500
Atmega328 поселилась на обратной стороне платы
Atmega328 поселилась на обратной стороне платы
Разьем для подключения RS232, RS485 или CAN
Разьем для подключения RS232, RS485 или CAN
Шлюз RS232, CAN, RS485 to Ethernet MQTT на Atmega328
Шлюз RS232, CAN, RS485 to Ethernet MQTT на Atmega328
Корпус для устройства
Корпус для устройства

 

 

Размеры корпуса
Размеры корпуса

 

Скачать: Гербер файлы для заказа плат на производстве
Скачано: 373, размер: 126.4 KB, дата: 15.Дек.2017
Подписаться
Уведомлять
guest

11 комментариев
Старые вначале
Новые вначале По голосам
Межтекстовые Отзывы
Посмотреть все комментарии
6 лет назад

Очень круто сделали, но я так и не понял как заменой микросхемы получить RS485, ведь управляющего контакта на приемо/передачу нет, и в проекте на GitHub используется Serial1 но компилятор ругается на него, пишет что он не задекларирован. Напишите пожалуйста как мне решить данный вопрос.

Dito
Dito
2 лет назад
Ответить на  instalator

Очень нужная разработка. А можно посмотреть ваш код, где есть передача по RS485? В частности хотел сделать шлюз протокола ModBus (Ethernet-RS485), хотел посмотреть как вы определяете конец посылки и управляете приемом/передачей max485

Dito
Dito
2 лет назад
Ответить на  instalator

Вы не правильно меня поняли. Вы пишете: «Можно установить микросхему MAX485 и тем самым получить RS485.» Хотелось бы посмотреть код именно этого проекта, с поддержкой RS485 интерфейса, так как в коде выложенном на гите этого нет.

Dito
Dito
2 лет назад
Ответить на  instalator

Если, собрать вашу плату и впаять MAX485, а затем загрузить в контроллер код с гита, то работать она не будет. Как вы выразились выше: «его нужно адаптировать». Так вот в чем и вопрос, существует ли этот адаптированный код для вашего устройства и можно его посмотреть?

Ihor
Ihor
4 лет назад

это круто. а нет ли на примете шлюза WI-FI to RS485

УПРАВЛЕНИЕ ТЕЛЕВИЗОРОМ LG SM9800 ЧЕРЕЗ USB Порт | blog.instalator

[…] решено подключить использующийся ранее переходник для управления через RS232. Взглянув на заднюю панель […]

11
0
Поделиться своими мыслямиx