Bdyssh! // Бдыщщь!

Вы ввели неправильное имя или пароль, %username%, попробуйте еще раз.

10.09.2012, 11:24
Uncategorized // http://bdyssh.ru/?p=885

Последовательный сетевой интерфейс / Serial network interface

The article will be done shortly. Please be patient! (hey, why my plashka is acid-yellowish now???)

Анонс: Разработано универсальное устройство для сетей Ethernet TCP/IP, функционал которого расширяется сменными дочерними платами. Имеется функция PoE (Power over Ethernet) 5V / 12V / 48V (passive) / 48V802.3af, являющаяся одной из основополагающих функций всего проекта (выполнена как дочерний модуль). Размер  базовой печатной платы 76*29 мм. Базовая плата, модуль PoE и платы расширения разработаны под стандартный прозрачный корпус 100*50*25 мм.

Открытость и прозрачность разработки наивысшая из всех возможных вариантов. Использована микросхема Wiznet W5100, что, в отличие от решений на программных IP-стеках, позволяет с меньшим риском применять устройство в промышленных условиях.

Микроконтроллер ATmega32A 8-битный и имеет исходные коды для основной платы и всех дочерних плат, открытые и полностью написанные на Ассемблере, что в комбинации обеспечивает максимальную теоретически достижимую надёжность для решений на микроконтроллере.

Все компоненты, кроме корпуса (и некоторых датчиков), допускаются для работы при t –40…+85 C.

Планируется крепление на DIN-рейку.

Announce: I am develop the complete set of Ethernet embedded board and modules for the standard 100*50*25 mm translucent enclosure. The set is quite universal. The PoE function (5V / 12V / 48V (passive) / 48V802.3af) was initially planned as essential part of project, and now available as an option.

The main parts of it are Wiznet W5100 chip, ATmega32A microcontroller, 76*29 mm main PCB, set of additional boards, and enclosure. This all has open source hardware, and all microcontroller code written in Assembler. This, together with hardwired TCP/IP stack of W5100, makes this project less failure, and even suitable for industrial environment.

I take special attention while select components, dimensions etc., to get most clear, powerful, open, upgrade-able, yet simple and small, project possible. It should be cheap also, and must definitely fully conforms with KISS rule. It should be easy reproduce-able and modifiable by community.

All used components, except maybe enclosure, are industrial grade (t –40 to +85 C). Some exclusions by thermal range also may apply to particular gas/humidity sensors.

Planned is DIN rail mounting.

This project is made from scratch.

  Hammond 1591ATBU translucent box

Рис. 1

Hammond 1591ATBU translucent box.

 

Fig. 1.

Hammond 1591ATBU translucent box.

 

 To be continued.

Предыстория и выбор основной микросхемы

История создания этого устройства началсь в 2006 году. В это время в сети появились первые робкие сообщения о серийных встраиваемых Ethernet-устройствах, одной из основных функций которых было преобразование Ethernet-пакетов в RS232-данные. Таковым устройством был, к примеру, Lantronix X-Port, который и был приобретён 20.08.2003 г. Он был необходим для полноценного администрирования ЭВМ с ОС Linux (сервера), так как через стык RS232 сервера, можно не только переконфигурировать сетевые интерфейсы, не боясь потерять удалённую связь с сервером, но и даже выбирать загружаемый раздел/ядро, что вообще невозможно сделать через Интернет удалённо. К сожалению, цена этого устройства, ограниченный функционал, и закрытость разработки – не позволили использовать их в дальнейшем.

С другой стороны, появились на иностранных аукционах макетные платы, и даже готовые преобразователи, по низкой цене, но на другой элементарной базе и в неприемлемых габаритах. (Правда, они появились много позже). Всё равно они были закрытыми разработками.

Переломным моментом было появление микросхемы W5100(около 2009 года). Именно она, как никакая другая, позволяет принципиально решить все указанные проблемы. Поэтому было разработано своё устройство на базе этой микросхемы. Причины выбора этой микросхемы:

  1. Аппаратный TCP IP стек.
  2. Интегрированный трансивер 10/100.
  3. Различные виды адресации регистров.
  4. Доступность, т.е. наличие и цена.
  5. Неплохое описание основ работы c TCP/IP.
  6. Открытые спецификации программирования — эта микросхема вообще не нуждается в программировании. (также см. ниже о W7100).
  7. Выводный корпус (не BGA/QFN).
  8. Температурный диапазон –40…+85 С.

Недостатки:

  1. Шаг выводов 0,4 мм почти невозможно запаять автоматизированно.
  2. Высокое энергопотребление.
  3. Полное отсутствие аналогов в мире. Поэтому, если пойдёт слух о прекращении производства W5100, мы вынуждены будем закупить сразу десятки упаковок, чтобы весь проект остался действующим.

К сожалению, использование микросхемы W7100 недопустимо, так как она имеет ПО программирования только для Windows, а это неприемлемо. Спецификации программирования закрыты. Я запрашивал у Wiznet о работе W7100 с Linux, но они сделали вид, что не поняли вопрос. (Или правда не поняли?). Принимаю предложения по использованию любых других микросхем, если они не хуже W5100.

Стоимость W5100 порядка 6 у.е. с доставкой при количествах 2 шт.

A few years ago

The main idea of this projest born in 2006. I was need anything that can talk to my Linux server via RS232 port but using LAN/remote access. I suddenly find Ethernet-to-RS232 converters. Very few are exist at that time, and very expensive. I buy Lantronix X-Port 08/20/2003 (64 USD each). Using it, i was able to administer my Linux server via RS232 port remotely via Internet, so i can not only switch up and down, or reconfigure, all network interfaces without chance the connection can be lost. More, i was able even select statrup configuration (LILO, GRUB menus) that is impossible via any network card. So i can easy build true headless remote-controlled server. But the cost of X-Port was too high for mass use. And it was closed-source (of course).

Few years later, sometimes i see much less expensive devices on ebay. But they was too big (or enclosure-less) and (of course) was closed-source. So all of these remains just RS232-TCP/IP converter, and can’t, say, be modified to (remotely) push power/reset button on my PC.

More few years later, i find wonderful Wiznet W5100 solution. It was look exactly as i need. I buy it and try to use. It was successful, and this tiny board now grow and enhance to well useful stuff. The main reasons of selection the W5100, was:-

  1. Hardwired TCP/IP stack.
  2. Integrated 10/100 transceiver.
  3. Different modes of register and data access.
  4. Reasonable price and good availability.
  5. Good documented TCP/IP states and examples.
  6. Open specification for programming; in fact, the W5100 does not need programming at all, so it means definitely open specification 🙂 (i care about programming starting from times when W7100 was issued, see below).
  7. Packaging suitable for DIY: not QFN, not BGA; not require multilayer PCB.
  8. Industrial quality, t –40 to 85 C.

The bad things are:-

  1. 0.4 mm lead pitch; it’s too hard or impossible to solder for inexperienced people or old SMT robots.
  2. High power consumption.
  3. This is only one suitable IC on the market. When W5100 will tend to become discontinued product, we should buy thousands of this IC.

Unfortunately, the W7100 can’t be used, even when it looks that W7100-based solution can be cheaper, eliminating the micro-controller and 2nd quartz crystal. We can’t use it due to it can be programmed only via Binbows, and this is not suitable at all. The programming code is closed and algorithm is undocumented. I ask Wiznet about using W7100 under Linux, but they appear like suddenly don’t understand my question (or really don’t understand in fact?). (N.B.: I think also that it can’t be programmed using pirated copy of native Windows, running via virtual machine on Linux PC; and i almost sure that Wine never can be used).

Please suggest me other IP solutions, if you found anything similar or better than Wiznet!

The pricing of W5100 is adequate for most small or middle projects. It’s ~6 USD including S&H when you buy 2 pcs.

 

Выбор микроконтроллера

Насколько я знаю, выбор невелик — PIC или Atmel. До этого проекта (который был всерьёз начат в 2010 году) я не использовал МК вообще, и не знал как они программируются, и т.д. Был выбран Atmel, с одной стороны из-за большего количества информации в сети по работе с ним в Linux, но главное – из-за возможности программирования из Linux, простоты программирования, и дешевизны/доступности программатора. Сейчас полноценный программатор USB (USBISP) стоит на ebay 3…8 у.е. с  доставкой. (И да, он работает под Linux – через avrdude, «из коробки»). Сами 8-битные контроллеры также крайне дёшевы. С ассемблером avra, мы получаем полный цикл разработки МК в Linux.

Имеется также неподтверждённая информация по PIC, что он не имеет отдельной EEPROM-памяти для пользовательских данных, и поэтому они пишутся в основную программную память (Flash ROM). Я лично видел отказы, вызванные вероятно этим фактом. Ведь легко случайно повредить программный код.

Итак, конкретный вариант выбранного МК – ATmega32A-AU TQFP44. Стоимость не более 3 у.е. с доставкой при количествах 5 шт.

Из прочих достоинств:

  • Питание как 3 В, так и 5 В (важно) (но на 3 В частота снижается с 16 до 8 МГц)
  • Чрезвычайно низкое потребление в режиме программного таймера 32768 Гц – здесь нам не нужно, но очень пригодится в определённом другом проекте, ведь всегда лучше (и дешевле) привыкнуть к одному универсальному чипу, чем выбирать разные для разных задач.
  • Великолепная документация.
Недостатки:
Серьёзный недостаток контроллеров Atmel видимо только один: Операции INC / DEC не изменяют значение флага CARRY. Это не только неудобно, но и вообще непонятно, что вообще было причиной для разработчиков, что они пошли на такую дикость?…
И если выяснится, что PIC не имеет данной проблемы, это будет серьёзной причиной, чтобы посмотреть в его сторону.

How to select microcontroller?

Microcontroller (uC) is second important part of our design. I was never touch or program uCs before. So don’t know which is best. I’m analyze the volume of information available on the net about two most widely used types. It’s PIC and Atmel devices. I also specially search for possibility of use the particular type of chip in Linux environment. The price is also important. So i select Atmel now. The USB programmer for Atmel (USBISP) is cheapest possible in world: The price starts from ~3 USD including shipping! (You also can made RS232 dongle yourself for ~0 USD. Both case will work under Linux using avrdude).

The AVR’s itself also cheap enough, when we talk about 8-bit ones (i use only 8 bit anywhere, for a while). When we add free avra assembler, we get complete, open, cheap and solid working environment based on Linux, for writing microcode for microcontrollers.

I also sometimes see PIC-controlled device malfunction, which, by unconfirmed information, may caused by fact that PIC hasn’t EEPROM user data memory, and program can write only directly into program Flash memory; it is also unconfirmed yet. But if it is like so, it is bad.

OK, so we select ATmega32A-AU TQFP44. Pricing is low enough when buy 5 pcs.

Other benefits of AVR, but PICs may have the same or better, so please write me about it:

  • 3 V and 5 V supply for same device will work.
  • Outstanding low power draw not only when sleep, but also when used as advanced RTC 32768 Hz. This fact not used in this project, but we will use it later.
  • Good documentation.
The disadvantages:
Only one i find, but fatal and annoying. INC / DEC instructions do not affect CARRY flag! It is so confusing and buggy. I do not know, how wild and scare can be reasons for developers of command system for Atmel uC, to make this strange thing. So, if i find that PICs are free from this BUG, i will look at Microchip’s devices much closer.


Использование MagJack

Использование MagJack неприемлемо, так как они не поддерживают PoE, во всяком случае их варианты, широкодоступные со складов. Как дополнительный недостаток – их габаритная гибкость ниже, чем у связки разъём+трансформатор; да и цена не блещет; а также, посадочно-присоединительные размеры не стандартизированы.

Поэтому используем широкоизвестные, проверенные и доступные H1102NL* и обычный разъём Ethernet. Почти невозможно купить что-то из этого, что нам не подойдёт.

_______
* Примечание: H1102NL формально имеет ограниченный диапазон рабочих температур. Для индустриальных применений можно поставить HX1188NL.

Why we do not use MagJack’s ?

We almost can’t use MagJack in effective and cute design. They in most cases do not support PoE; at least, wide available from local stocks versions do not support it. Additionally, its design fitting flexibility is lower than common pair of well-known RJ45 socket and famous H1102NL* magnetics — due to case size of MagJacks. Pinout is also depents on supplier; i do not know any standard pinout for MagJack.

Also the price is important.

So we use proven H1102NL* transformers and standard Ethernet connector. We almost can’t suddenly buy some unsuitable parts of these type.

_______
* H1102NL has limited working temperature range. One may use HX1188NL for true industrial device.

 

PoE: Питание по Ethernet

Совсем новый стандарт уже вострбован потребителями. Но и до его появления, нередко свободные пары кабеля ЛВС использовались для подачи удалённого питания на маломощные устройства – такие, как видеокамеры или модули радиодоступа. Распайка и напряжение были произвольными, что нередко приводило к проблемам.

С введением стандарта IEEE802.3af эти проблемы были решены, но возникла новая проблема: стоимость устройств.

Стоимость стандартных источника и потребителя, совместимых с IEEE802.3af, неприемлемо высока даже при серийном производстве. Должны быть установлены развязывающий трансформатор или автотрансформатор в приёмнике, а также полноценный импульсный преобразователь с сопутствующим набором компонентов, которые не могут быть сделаны малогабаритными или дешёвыми. Источник же PoE IEEE802.3af должен содержать собственно источник 48 вольт, довольно мощный, и один или несколько каналов (по числу портов Ethernet) управляющей логики с мощными транзисторами и многокаскадной защитой от переходных процессов. Обычно источники PoE IEEE802.3af встраивают в коммутаторы Ethernet 10/100.

Высокая цена такого решения делает нерентабельными многие устройства, такие как датчики для “умного дома”, ведь их должно быть много.

Поэтому мной был утверждён стандарт для себя, которого я рекомендую придерживаться всем, если не имеется причин этого не делать. Итак,

Для обеспечения возможности работы как дешёвых, так и дорогих потребителей, были проверены и рекомендуются четыре варианта PoE, отличающиеся ценой, длиной кабеля, напряжением, распайкой, наличием гальванической развязки, уровнем защиты:

1. PoE 5V – используется для сетей масштаба рабочего стола. Это измерительная техника, датчики, генераторы и иные приборы* с длинами кабелей до 2 м. Напряжение – 5В +/- 10 %
Ток до 350 мА (W5100 + типичная обвязка).
Защита – мощный стабилитрон 5,1-5,6 В
Развязки нет: земли всех устройств объединены.
________
* Наши приборы не будут большими и тяжёлыми. Вся наша лаборатория будет питаться от PoE 5V.

2. PoE 12V – для сетей масштаба жилого дома, квартиры, небольшого офиса. Длины кабелей – до 15 м.

Напряжение 12,6В +/- 20%
Ток до 800 мА
Защита – мощный стабилитрон 15 В
Допустимо прямое подключение к резервному свинцовому аккумулятору.
Используется импульсный понижающий стабилизатор. (KA34063 ?)
Развязки нет: земли всех устройств объединены.

3. PoE 48V Passive
Используется нестабилизированный выпрямитель или батарея аккумуляторов 36-57 В в источнике, логика отсутствует, защита источника – самовосстанавливающиеся предохранители по обоим полюсам. Потребитель аналогичен потребителю PoE 48V IEE802.3af (см. ниже), потому что пассивный потребитель невозможно сделать сколь-нибудь дешевле и проще активного – ведь импульсный преобразователь всё равно необходим.

4. PoE 48V IEE802.3af
Используется расширенная защитная логика как в источнике, так и в потребителе. Наиболее дорогое и надёжное решение. Сама логика подробно описана в стандарте и в Вики, но важно понять дополнительно, что потребитель PoE 48V IEE802.3af должен (я заявляю это) штатно работать и от обычного (пассивного) источника 48В. Помните об этом при выборе управляющей микросхемы приёмника-преобразователя PoE.
Потребитель PoE 48V IEE802.3af может быть выполнен с полноценной гальванической развязкой, или без неё, но учтите, что в последнем случае, в отличие от PoE 5/12 V (которые также не имеют развязки), земли устройств уже не могут быть объединены! В таком случае, устройству вообще запрещено иметь доступные части или корпус, соединённые со схемой. Например, потребитель PoE видеокамеры может быть построен без развязки. Но точка радиодоступа со съёмными антеннами – не может, так как разъёмы антенн невозможно гальванически развязать от остальной части схемы.

Построение потребителя PoE 48V IEE802.3af без гальванической развязки может быть заметно дешевле только при крупной серии. Поэтому, обычно, риски не оправдывают экономии, и мы будем делать устройства только с полноценной развязкой.

PoE 5V имеет примерно нулевую стоимость.

PoE 12V имеет несколько бОльшую надёжность при увеличении длины кабеля.

При разработке распайки контактов важно понимать, что случайно устройства могут быть перепутаны. Поэтому не имеющие логической защиты низковольтные потребители PoE, должны быть защищены от 48 В физически: PoE 5V защищено не только стабилитроном, как и PoE 12V, но и дополнительно, закорачивающей распайкой, т.е. распайка потребителя PoE 5V в части контактов 4,5,7,8 разъёма  Ethernet, отличается от распайки 12 / 48 В.

Для того, чтобы превратить обычный коммутатор 10/100 в поддерживающий PoE 5V или PoE 12V, необходимо в соответствии с показанной распайкой подать питание со входного разъёма питания на контакты 4,5,7,8 разъёмов RJ45, причём плюсовое — через индивидуальные самовосстанавливающиеся предохранители, а земляное — соединить и с корпусом блока разъёмов, и с земляными участками печатной платы. Обязательно внешний блок питания коммутатора заменить на хороший, значительно более мощный 5V- или 12V-адаптер, или подать питание от ЭВМ. Внутри коммутатора используется напряжение 3,3В, которое он получает из нестабилизированного выхода штатного адаптера 6-15 В с помощью той же KA34063, поэтому замена адаптера не должна ухудшить работу основных цепей коммутатора.

Важно: Нельзя экономить на блоке питания 5 / 12 В в этом случае. Менять штатный адаптер — обязательно.

PoE: Power over Ethernet

Text

 

POE 5V 12V DIY

Рис. 2.

Пример доработки коммутатора для PoE 5V. (Распайка для 12V будет другая!)  Стабилитроны 5,1 или 15 В защищают от коммутационных помех. Заземление необходимо для настольной лаборатории на базе PoE; для умного дома оно менее важно.

 

Fig. 2.

How can be standard 10/100 switch become PoE 5V power supplier. (Pinout for 12 V will be different!) The Zener diodes (5.1 or 15 V) protect from connection-time voltage spikes. Resettable fuses 1A used. Ground wire (yellow) is important when we build desktop lab; it’s less important for PoE smart home installation.

 

 

wwwww

Исходный код

Исходный код можно взять здесь.

The pre-release version of Assembler source code

You may find it here.

 

Карта ПЗУ (EEPROM)

Распределение памяти МК платы OSCaR, в которой содержатся индивидуальные пользовательские настройки устройства.

EEPROM memory map.

This is current EEPROM memory map for OSCaR motherboard microcontroller. It contains particular device-dependent user settings.

 


Рис. 3.

0.0 – IP-адрес устройства;
0.1 – маска подсети;
0.2 – шлюз (для UDP не используется);
0.3 – порт;
1.0 – широковещательный IP-адрес;
1.1 – широковещательный порт;
1.2 – дополнительный широковещательный IP-адрес;
1.3 – дополнительный широковещательный порт;
2.0 – МАК-адрес (три младшие байта);
3.0 – делитель установки скорости RS232;
3.1 – режим telnet;
4 – ASCII  строка фиксированной длины, макс. 32 байта;
5 и 6 – ASCII строки переменной длины, макс. 31 байт, первые байты – длина строки.

 

Fig. 3.

0.0 – my IP address;
0.1 – subnet mask;
0.2 – gateway (not makes sense for UDP);
0.3 – port;
1.0 – broadcast IP address;
1.1 – broadcast port;
1.2 – 2nd broadcast IP address;
1.3 – 2nd broadcast port;
2.0 – MAC address (3 lower bytes);
3.0 – RS232 BPS divider;
3.1 – telnet mode;
4 – fixed length ASCII string (max. 32 bytes);
5 and 6 – variable lenght ASCII strings, max. 31 char, first bytes are lenghts.

 

dffgf

ыыы

ed