Ethernet -> ATMega328P (Arduino UNO)

Тема в разделе "Проводная и беспроводная связь", создана пользователем CryNET, 6 дек 2015.

  1. CryNET

    CryNET Гик

    Всем привет!

    Нужна помощь, задумка такова:
    Untitled-1.png
    Данные распознавать не нужно, по сути надо конвертировать Ethernet в двоичную систему, передать, получить в двоичной и конвертировать в Ethernet.

    Проблема заключается именно в связи между Ethernet -> ATMega328P, т.к. Ethernet стандарт не такой простой. Но я думаю, что это вполне возможно.

    Руки есть, паять не боюсь.

    З.Ы. Это чисто научный эксперимент, никуда такой ужас применяться, скорее всего, не будет.
    Скорость передачи не важна...
     
  2. geher

    geher Гуру

    Сильно сомневаюсь, что ардуина потянет.
    Во-первых, скорость передачи (10 МБит минимум в современных условиях, в смысле по витой паре) как-то слишком близка к тактовой ардуины. Получается меньше двух тактов на передачу бита.
    Во-вторых, необходимость разрешения коллизий, что потребует достаточно большого буфера в ОЗУ (а оно в ардуино маленькое). Конечно, это дело можно возложить на специализированный модуль, но тогда ситуация из первого пункта может еще больше осложниться за счет медленного интерфейса между таким модулем и ардуино (особенно если он последователный).
    А остальное (декодирование-кодирование и распаковка-упаковка данных Ethernet пакета или трансляция данного пакета как он есть по другому каналу связи) уже легко и без проблем реализуемы. И физический, и канальный уровни протокола открыты и описаны. Беглое гугление сразу навело на это:
    http://www.znanius.com/4372.html?L=2
    А по сути надо всего лишь вдумчиво прочитать описание стандарта IEEE 802 в части, касающейся физического уровня.
     
  3. CryNET

    CryNET Гик

    Спасибо за ответ, geher.
    Хорошо, а что можно взять за альтернативу?

    Есть в наличии такое чудо как TP-Link MR3020 с OpenWRT на борту готовый к бою: проц 400Мгц, на борту встроенный USB и UART.
    Получится что-нибудь с этим? Я вижу пути Ethernet -> USB(драйвер нужно писать?) и Ethernet -> UART

    В этой области не силен, могу что-то путать или не знать - простите :)

    UPT: Еще вижу вариант на python написать программу Internet -> UART
     
  4. ANV

    ANV Гуру

  5. CryNET

    CryNET Гик

    Это чисто научно-спортивный интерес, я говорил, что это устройство никуда использовано не будет.
    Вопрос ещё в силе :)

    P.S. Может платформу другую выбрать? Я много наслышан о STM32, но вообще больше названия не знаю о ней и её возможностях.
    P.S.S. FPGA не предлагать - дорого :(
     
  6. ANV

    ANV Гуру

    Вы сначала определитесь чего хотите, а то вас штормит от Ардуины до ПЛИС :)
     
  7. CryNET

    CryNET Гик

    Вот я и спрашиваю какая платформа годится для подобных извращений :)
     
  8. Radius

    Radius Гик

    Вы сначала начните со стандарта IEEE 802.3. Разберитесь в Манчестере. Это физический уровень. Затем разберитесь в канальном уровне. На мой взгляд оптимально использовать готовый трансивер физического уровня с интерфейсом MII на выходе. Но на прямую вы его к Ардуино не подключите. Такие интерфейсы (MII/RMI) имеют некоторые ARM Cortex. Можете посмотреть в эту сторону, но без специализированной микросхемы декодировать физический уровень Ethernet это пустая трата времени.
     
  9. Radius

    Radius Гик

    К Ардуино вы сможете подключить любой трансивер от WIZnet с интерфейсами SPI, или, довольно таки старый, SC8900A.
     
  10. CryNET

    CryNET Гик

    Спасибо, посмотрю.