Перейти к содержимому
Калькуляторы

Ethernet remote device альтернативные прошивки выкладываем прошивки,которые подходять под железо ERD

Здесь выкладываем свои или доработанные чужие прошивки, которые подходят под железо ERD-2.0 или ERD-3.0

Автор обсуждаемой прошивки будет поощряться отделом разработок компании НАГ.

В посте должно быть: исходник, ссылка на источник, описание, пример применения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Прошивка позволяет использовать ERD-2.0 в качестве конвертора ethernet-RS485 (можно RS232 полудуплексом, без контроля, только TX и RX). Для работы устройства в этой роли требуется простенькая "дочерняя плата" с приемопередатчиком RS485 (RS232). Дочерняя плата подключается к разъемам J6 и J7, используя ноги TXD(31), RXD(30) и (для RS485) SDA(27) микроконтроллера ATmega328 (нумерация ног приведена для корпуса 32TQFP), а также землю и входное питание устройства. Приемопередатчик выбран ST485EBDR, дешёвый и с защитой от статики. Можно взять любой другой пятивольтовый. Питание на дочерней плате на всякий случай гладится стабилизатором с низким падением напряжения (IL2931AZ-5.0). При питании самого устройства пятью вольтами такая схема может выглядеть несколько по-идиотски (если не вовсе неправильной), но в наших условиях эксплуатации решение является оправданным (у нас напряжение питания чуть выше и менее стабильно, чем хотелось бы). Можно попробовать использовать трёхвольтовый приемопередатчик RS485 с соответствующим стабилизатором, тогда логика схематики станет на место, но цена "дочерней платы" вырастет, скорее всего, в разы. А в нашем случае вроде всё работает пока без нареканий.

 

Из не очень приятных особенностей следует отметить, что стандартные скорости обмена получаются с погрешностями, т.к. используется внутренний тактовый генератор на частоте 8МГц. (Таблица с погрешностями для стандартных baudrate при тактовой 8МГц есть в даташите микроконтроллера). До 38400 погрешности получаются в пределах нормы для нормальной работы, и, кроме того, есть возможность программно менять параметр OSCCAL для корректировки тактовой частоты контроллера.

 

В качестве основы взят (брезгливо и с омерзением) проект ethersex (http://www.ethersex.de/) и доработан до необходимого функционала.

 

Выкладываю архив как есть, со всей кучей файлов, не очищая (ethersex2.zip).

При проблемах с компиляцией можно использовать готовую прошивку: файлы ethersex.hex или ethersex.bin, которые также есть в отдельном файле ethersex.zip.

Ещё при необходимости можно исправлять дефолтный MAC-адрес устройства прямо в .bin файле прошивки, здесь он находится по адресу с 0x98 по 0x9d (байты AC DE 48 96 00 00).

 

Собирается с помощью avr-gcc под линуксом.

В текущей конфигурации занимает более 99% флеша atmega328. Если сделать "make clean; make", то, вероятно, уже не поместится: видимо, размер прошивки зависит от последовательности сборки. Мне случайно удалось скомпилировать так, что уместилось - сначала выключил что-то (не помню) в меню конфигурации (make menuconfig), собрал (make), затем обратно включил это что-то, и снова собрал (make). Для уменьшения размера прошивки всегда можно просто совсем отключить что-то ненужное в конфигурации.

 

При прошивке биты конфигурации (fuse bits) микроконтроллера ATmega328 следует установить следующим образом:

Extended Fuse Byte: 0xFF (11111111). (заводская настройка)

Fuse High Byte: 0xD9 (11011001). (заводская настройка)

Fuse Low Byte: 0xE2 (11100010). (относительно заводской настройки выключен CKDIV8)

 

В текущей конфигурации устройство по умолчанию имеет сетевые настройки: IP 192.168.15.20, маску 255.255.255.0, шлюз 192.168.15.10, для авторизации имя admin, пароль admin. При включении питания моргает светодиодом и начинает работать (для проверки пингуем). Если при включении удерживать кнопку, то мигает светодиодом медленнее, и после отпускания кнопки сбрасывает всю конфигурацию в значение по умолчанию (в том числе ip и пароль).

 

Для конфигурации прошитого устройства лезем на него телнетом на порт 2701. Там отвечает интерфейс ECMD. Без авторизации устройство будет отвечать "authentification required". Для входа потребуется строка вида "auth <имя> <пароль>", то есть "auth admin admin". Устройство должно ответить "authentification successful". После этого можно сказать "help" для просмотра краткого списка доступных команд. К сожалению, описания команд и их синтаксиса мы здесь не увидим, и они не документированы (ethersex очень мало документирован). Поэтому я приведу краткое описание того, с чем разобрался.

 

fuse - показать биты конфигурации микроконтроллера.

 

osccal [XX] - показать/установить байт калибровки встроенного тактового генератора. Для чтения: просто "osccal", для изменения: добавить шестнадцатиричное значение в виде "osccal 8E".

osccal w - сохранить байт калибровки в EEPROM (впоследствии считывается и устанавливается при каждом старте).

 

hostname - показать имя устройства.

 

eer <ADDR> <LENGTH> - читать <LENGTH> байт из адреса <ADDR> после блока конфигурации в EEPROM. Адрес и длина в десятичном виде (например, "eer 752 10" читает 10 байт, начиная с 752-го после массива конфигурации). Максимальная длина 25 байт.

 

eew <ADDR> <HEXBYTES> - сохранить данные в EEPROM после массива конфигурации. Адрес в десятичном виде, данные в шестнадцатиричном, например: "eew 752 1122335588AAFFFF00" пишет девять байт.

 

reset - осуществить перезагрузку микроконтроллера.

 

wdreset - Go into endless loop to trigger a watchdog timeout. Перезагрузка посредством watchdog.

 

pam <USER> <PASSWORD> - установить имя пользователя и пароль (в текущей конфигурации длина имени и пароля до 16 символов).

 

io - работа с портами ввода-вывода. Порты нумеруются от 0 до 2 (соответствие портам контроллера: 0 - PB, 1 - PC, 2 - PD). Далее чуть подробнее, но для понимания потребуется осознание даташита на микроконтроллер в части портов ввода-вывода:

io set ddr <PORTNUM> <HEXVALUE> [MASK] - Set the DDR of port PORTNUM to VALUE (possibly using the provided MASK).

io get ddr <PORTNUM> - Display the current value of the DDR PORTNUM.

io set port <NUM> <HEXVALUE> [MASK] - Set the PORT NUM to VALUE (possibly using the provided MASK).

io get port <NUM> - Display the current value of the PORT NUM.

io get pin <PORTNUM> - Display the current value of the PIN-register of the port PORTNUM.

io get mask <PORTNUM> - Display the mask of the port PORTNUM.

Пример чтения из порта D, c отпущенной кнопкой:

io get pin 2

port 2: 0x1b

с нажатой кнопкой:

io get pin 2

port 2: 0x0b

Чтение из порта B, без подачи напряжения на вход контроля и с подачей:

io get pin 0

port 0: 0xcf

io get pin 0

port 0: 0x4f

 

adc get [CHANNEL] - получить значение из канала CHANNEL АЦП. Если номер канала не указан, выдает весь набор.

adc vget [CHANNEL] - получить значение АЦП в вольтах из канала CHANNEL, или весь набор.

adc vref [VOLTAGE] - получить/установить значение опорного напряжения АЦП, в милливольтах.

 

mac [xx:xx:xx:xx:xx:xx] - получить/установить MAC-адрес устройства.

 

1w list - получить список присоединенных устройств OneWire.

 

1w get <DEVICE> - получить значение от OneWire устройства с идентификатором DEVICE.

 

1w convert <DEVICE> - инициировать АЦП преобразование OneWire устройства с идентификатором DEVICE или всех.

 

1w name set <ID> <DEVICE> <NAME>

1w name clear ID

1w name list

1w name save

- команды для назначения имён устройствам OneWire и сохранения их в EEPROM. В текущей конфигурации ID в диапазоне от 0 до 3.

 

ipstats - вывод статистики порта ethernet.

 

ip [iP] - получить/установить значение IP-адреса устройства.

 

netmask [MASK] - получить/установить значение сетевой маски.

 

gw [iP] - получить/установить значение сетевого шлюза устройства.

 

yport stats - вывод статистики асинхронного порта.

 

yport baud [bAUDRATE] - получить/установить скорость обмена асинхронного порта.

 

yport mode [MODE] - получить/установить режим обмена асинхронного порта. MODE в виде "8N1" означает длину символа 8 бит, без четности, один стоп. Длина символа может быть от 5 до 8, четность может быть "N", "E" или "O" (без четности, четность, нечетность), число стоповых бит - 1 или 2.

 

help - вывод списка поддерживаемых команд.

 

version - вывод какой-то версии софта.

 

eeprom reinit - инициализация конфигурации значениями по умолчанию (то же, что и запуск с нажатой кнопкой).

 

 

Теперь о работе устройства в режиме удаленного COM-порта.

Под Windows используется бесплатная программа HW Virtual Serial Port 3.1.2 (www.hw-group.com). Для связи с устройством на вкладке "Virtual Serial Port" следует указывать IP-адрес устройства и порт 7970. На вкладке "Settings" нужно выключить "NVT enabled".

В среде Unix-систем можно попробовать socat (socat PTY,link=/dev/YPort TCP:192.168.15.20:7970) или что-нибудь подобное (я пока не пробовал, планирую пользоваться сырым телнетом).

Размер буфера 192 байта, если это где-то важно. Ещё, при попытке общаться дуплексом данные могут теряться. Но, собственно, RS485 - полудуплескный интерфейс.

 

Применяем эту конструкцию для удаленного доступа к счетчикам электрической энергии.

ethersex.zip

ethersex2.zip

post-104868-033174100 1343719441_thumb.jpg

post-104868-046170300 1343719443_thumb.jpg

post-104868-014859700 1343719445_thumb.jpg

post-104868-076752000 1343719447_thumb.jpg

post-104868-073320500 1343719454_thumb.jpg

post-104868-026064400 1343719459_thumb.jpg

Изменено пользователем shura-i

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Интересное решение. Я думаю, отдел разработок, презентует для shura-i устройство ERD-3.0, у которой на борту есть и преобразователь RS485 и в два раза более производительный контроллер и возможность поменять кварцевый резонатор.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо, не откажусь, пригодится. Да, на ERD-3.0 этот софт тоже можно применить, заодно значительно увеличить функционал (стОит заглянуть в "make menuconfig", чтобы оценить, что ещё можно попытаться прикрутить). Для этого в проекте нужно сменить тип микроконтроллера, указать правильную тактовую частоту и правильное назначение портов ввода-вывода.

Однако, ERD-2.0 вместе с дополнительной платкой всё-таки самое дешевое решение поставленной задачи (конвертор) из тех, что я вижу. Конечно, не самое лучшее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

а какую-то ардуино-подобную прошивку никто не пытался прикрутить ? по-моему железо позволяет

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Наконец то один из наших активистов получил долгожданную награду за свои труды, а именно пользователю shura-i вручили плату ERD-3.2.

DSC03040_2.jpg

Изменено пользователем Dmitry Polyakov
фото

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Здесь выкладываем свои или доработанные чужие прошивки, которые подходят под железо ERD-2.0 или ERD-3.0

Автор обсуждаемой прошивки будет поощряться отделом разработок компании НАГ.

В посте должно быть: исходник, ссылка на источник, описание, пример применения.

 

Есть-ли возможность получить оригинальный исходник SNR-ERD-2.3 для модификаций? Или в интересах компании это невозможно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Здесь выкладываем свои или доработанные чужие прошивки, которые подходят под железо ERD-2.0 или ERD-3.0

Автор обсуждаемой прошивки будет поощряться отделом разработок компании НАГ.

В посте должно быть: исходник, ссылка на источник, описание, пример применения.

 

Есть-ли возможность получить оригинальный исходник SNR-ERD-2.3 для модификаций? Или в интересах компании это невозможно?

Добрый день!

Невозможно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.