Pull to refresh

Atmega328p + ENC28J60 = мост между UART и Ethernet

Reading time 2 min
Views 15K
image

Создавая различную электронику и программируя AVR, STM и т.п. всегда встает вопрос как ее подключить к другой периферии для управления и передачи информации, например, к компьютеру.

Есть много различных решений: COM, RS482, WiFi, Zigbee, ZWave, Ethernet и т.п. Из всех вариантов я пробовал WiFi, Zigbee, Ethernet, все остальное крайне неудобно или устарело.

Я хочу рассказать и поделиться, как можно использовать чип ENC28J60 от Microchip и Atmega328p для создания «моста» (далее по тексту) между UART и Ethernet.

Есть готовые платы из Китая с чипом, но это только чип без реализации TCP/IP и имеет большие размеры.

image

Поэтому мне пришлось создавать не только прошивку, но и саму печатную плату.
Плата получилась небольших размеров.

image

image

image

Многие пишут, что чип глючный, есть подделки, но мне этого не удалось встретить в своей практике. В интернете есть много проектов и исходников для работы с этим чипом, но рабочих проектов мне не удалось встретить. Как правило эти проекты «умирали» или были не доведены до конца автором. Мой проект полностью рабочий, его можно смело использовать. Вот и захотелось поделиться. На сегодняшний день я уже не использую ENC28J60 т.к. на смену ему пришел WiFi модуль ESP8266. Я также напишу позже статью как собрать под ESP8266 прошивки AT, MicroPython, NodeMCU, Esp-Bridge и т.д. Но возможно кому-то еще требуется проводное Ethernet соединение с его девайсами или недоверие к беспроводным технологиям. В любом случае в каждой ситуации хорошо свое решение. Универсального решения не бывает!

Все схемы и пояснения в конце статьи. И конечно отвечу на вопросы.

У меня была задача подключиться удаленно к моему устройству на AVR через интернет.
Передача полностью сквозная и двухсторонняя

Вот примерно по такой схеме

image

Т.к. Atmega имеет не особо много памяти, то я реализовал только самое необходимое:

image

Для настроек используется Web интерфейс на 80 порту

  • IP адрес
  • Маска
  • Шлюз
  • Выбор скорости UARTa

В моем конечном девайсе было две платы, основная со всей логикой и отдельная как «мост».
Сам «мост» был реализован на отдельной плате, которая вставлялась уже в основную.
На основной плате располагался разъем RJ45 (для меня это было удобно). Можно было всегда убрать «мост» если заказчик этого не требовал.

Вид модели (Altium)

image

image

Уже готовая печатная плата:
image

image

В моем устройстве:

image

image

Основные возможности

  • «Мост» всегда слушает порт 23 и ждет подключения.
  • Одновременно возможно только одно соединение.
  • Есть поддержка ping’а
  • Полностью реализовал TCP/IP
  • Скорость порта от 2400… 115200
  • Есть поддержка RTS/CTS
  • Питание 3.3В

Сам исходник для Atmeg328
Схемы (PDF) и фотографии

Схемы и PCB рисовал в Altium`e, если нужно, пишите вышлю.

В общем надеюсь кому-то это поможет для реализации внешнего подключения к его девайсам используя Ethernet (TCP/IP).
Tags:
Hubs:
+19
Comments 3
Comments Comments 3

Articles