По следам UDP-сервера на AVR микроконтроллере

UDP-сервер на AVRUDP-сервер на AVR микроконтроллере прекрасно описан на сайте сообщества Easyelectronics. С помощью такого сервера по сети можно связываться с устройствами имеющими другой интрфейс, например RS232, или управлять какими-либо устройствами посылая на них соответствующие команды. В свою очередь периферийные устройства на AVR микроконтроллерах могут выполнять функции, по съему показаний различных датчиков для передачи данных в головной компьютер и т. п.

Вобщем и целом все можно сделать на базе вышеупомянутой статьи. В данном посте представлен один из возможных вариантов UDP сервера на AVR микроконтроллере типа ATega128(A) на базе кода предствавленого на Easyelectronics. Кроме того для тестирования сервера написана небольшая программа UDP клиент под операционную систему Windows (тестирована на Windows XP) на C++ Builder котрая позволяет передать запрос на сервер и получить от него ответ в виде копии строки запроса. С помощью компьютерной программы можно отлаживать и программу самого сервера. Проект с исходным текстом программы с комментами позволяет модифицировать ее код в нужном направлении, например в сторону UDP сервера, TCP/IP клиента и т. п.

UDP клиент C++ Builder

Также для тестирования сервера на AVR микроконтроллере вполне может подойти и многофункциональная программа Hercules, которая позволяет передавать и принимать Ethernet пакеты по нескольким протоколам в том числе и по UDP.

Ethernet - RS-232 converters and similar Ethernet devices

Проекты UDP сервера выполнены в двух варитантах: под AvrStudio v 4.13 (скачать) и под IAR AVR v 5.51 (скачать). Полезно обратить вниманиена на установки в проекте под IAR где ключевыми являются размеры Heap и стека. Для контроля работы сервера в некоторых функциях сделана визуализация их работы путем формирования коротких импульсов на ножках микроконтроллера PC0, PC1, PC2.

В качестве Ethernet контроллера применен Ethernet модуль ENC28J60. Модуль подключен к микроконтроллеру ATmega128А, который используется в другом проекте, но как нельзя лучше подошел для создания на нем UDP сервера, поскольку в нем свободен SPI порт. Скриншет такого дуплета ниже.

Web сервер на AVR микроконтроллере

Ethernet модуль подключается к роутеру локальной сети или к дополнительному сетевому гнезду DSL модема прямым сетевым кабелем. Адрес сервера в сети 192.168.2.15 (шлюз 192.168.2.1) Если ваша локальная сеть имеет другой IP адрес шлюза (например 192.168.1.1) то для правильной работы сервера в файлах проектов lan.h необходимо сделать соответствующие изменения назначив свободный IP адрес сервера соответствующий IP вашего шлюза (типа 192.168.1.15). Поскольку программа сервера перенаправляет принятые UDP пакеты еще и на USART1 (скорость 19200, 8 бит) то для визуализации этого процесса полезно подключить ножку PD3 (Txd1) pin28 микроконтроллера к одному из последовательных портов компютера (контакт 3 разъема DB9). Принимать данные на RS232 можно с помощью любой утилиты работы с COM портом, например Com Port ToolKit.

UDP RS232 редиректор

Ниже по тексту таблица соединений основных цепей модуля с микроконтроллером ATmega128(A). Загрузить программу в микроконтроллер можно с помощью программы и программатора PonyProg.

ATmega128 Модуль ENC28J60
SCK - pin11 SCK - P1.6
RESET - pin20 RST - P1.9
MISO - pin13 MISO - P1.4
MOSI - pin12 MOSI - P1.5
SS - pin10 CS - P1.7

Кварцевый резонатор микроконтроллера 14.7456 мГц . Нужно не забывать, что если мироконтроллер питается напряжением 5 В то для питания Ethernet модуля нужно предусмотреть линейный стабилизатор на 3.3 В, например IRU1117-33 или любой ему подобный. При этом, как показала практика, согласование уровней сигналов ATmega128 и Ethernet модуля не требуется.

Top.Mail.Ru