Создавая различную электронику и программируя AVR, STM и т.п. всегда встает вопрос как ее подключить к другой периферии для управления и передачи информации, например, к компьютеру.
Есть много различных решений: COM, RS482, WiFi, Zigbee, ZWave, Ethernet и т.п. Из всех вариантов я пробовал WiFi, Zigbee, Ethernet, все остальное крайне неудобно или устарело.
Я хочу рассказать и поделиться, как можно использовать чип ENC28J60 от Microchip и Atmega328p для создания «моста» (далее по тексту) между UART и Ethernet.
Есть готовые платы из Китая с чипом, но это только чип без реализации TCP/IP и имеет большие размеры.
Поэтому мне пришлось создавать не только прошивку, но и саму печатную плату.
Плата получилась небольших размеров.
Многие пишут, что чип глючный, есть подделки, но мне этого не удалось встретить в своей практике. В интернете есть много проектов и исходников для работы с этим чипом, но рабочих проектов мне не удалось встретить. Как правило эти проекты «умирали» или были не доведены до конца автором. Мой проект полностью рабочий, его можно смело использовать. Вот и захотелось поделиться. На сегодняшний день я уже не использую ENC28J60 т.к. на смену ему пришел WiFi модуль ESP8266. Я также напишу позже статью как собрать под ESP8266 прошивки AT, MicroPython, NodeMCU, Esp-Bridge и т.д. Но возможно кому-то еще требуется проводное Ethernet соединение с его девайсами или недоверие к беспроводным технологиям. В любом случае в каждой ситуации хорошо свое решение. Универсального решения не бывает!
Все схемы и пояснения в конце статьи. И конечно отвечу на вопросы.
У меня была задача подключиться удаленно к моему устройству на AVR через интернет.
Передача полностью сквозная и двухсторонняя
Вот примерно по такой схеме
Т.к. Atmega имеет не особо много памяти, то я реализовал только самое необходимое:
Для настроек используется Web интерфейс на 80 порту
- IP адрес
- Маска
- Шлюз
- Выбор скорости UARTa
В моем конечном девайсе было две платы, основная со всей логикой и отдельная как «мост».
Сам «мост» был реализован на отдельной плате, которая вставлялась уже в основную.
На основной плате располагался разъем RJ45 (для меня это было удобно). Можно было всегда убрать «мост» если заказчик этого не требовал.
Вид модели (Altium)
Уже готовая печатная плата:
В моем устройстве:
Основные возможности
- «Мост» всегда слушает порт 23 и ждет подключения.
- Одновременно возможно только одно соединение.
- Есть поддержка ping’а
- Полностью реализовал TCP/IP
- Скорость порта от 2400… 115200
- Есть поддержка RTS/CTS
- Питание 3.3В
Сам исходник для Atmeg328
Схемы (PDF) и фотографии
Схемы и PCB рисовал в Altium`e, если нужно, пишите вышлю.
В общем надеюсь кому-то это поможет для реализации внешнего подключения к его девайсам используя Ethernet (TCP/IP).
Автор: Sergey Abaev