Шлюз 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
Корпус для устройства
Корпус для устройства
Размеры корпуса
Размеры корпуса

Отправить ответ

Оставьте первый комментарий!

avatar
wpDiscuz