Не соглашусь библиотека modbus для ардуина сырая и заброшенная вещь, боле чем с двумя устройствами не завилась,и мне проще было свой обмен данными наладить чем ковырять чужую наработку. И дело не в протоколе а в библиотеке.
foxvlad, а кто заставляет пользоваться сырой библиотекой? Есть готовая проверенная библиотека freemodbus, написанная на C. Берите, пользуйтесь. Я её запускал вообще на atmega16, прекрасно работает (в C++ окружении запускал, подключая сишные исходники). Только нужно уметь её готовить, а это, по-видимому, народу делать лень.
uni, вот не совсем понял ваше предложение... преимущества, в смысле.
Преимущества:
- стандартный распространённый протокол Modbus-RTU (исходники есть на всех языках для любого применения);
- если пользоваться Modbus-RTU, то становятся доступным ПО верхнего уровня для работы по этому протоколу (OPC сервера, утилиты диагностики и пр, и пр);
- мк занимается только непосредственно сбором данных и управлением;
- нет ограничений на количество потоков для Ethernet (при использовании роутера);
То, про что вы говорите, это действительно мини-роутер, с прошивкой на основе CyberWrt, т.е. имеющую внутреннюю "морду" в виде веб-интерфейса для управления "роботом", и рабтающем в режиме шлюза Ethernet <-> UART. Роутер подключается к чему? Да, к Ардуине или любому другому контроллеру, понимающему команды с UARTa. Т.е. это доп. устройство в системе, все также выгружающее в браузер пользователя интерфейс управления.
К слабому контроллеру, я еще могу понять. На таком контроллере сервер не поднять. Но зачем нужно доп. устройство к Ардуине с wifi шилдом, понимаю с трудом. Единственное объяснение, что OpenWtr допилили под нужды робототехники, а собственного web-сервера под Ардуинe все еще нет.
Здесь не "роутер подключается", а наоброт - любое другое устройство является примочкой для роутера. К роутеру можно подключить через usb-хаб множество ардуин, а вот к ардуине только один Ethernet-шилд.
"
Ардуине с wifi шилдом" - звучит грозно, но на самом деле функционал очень ограничен. Ардуино был бы действительно "мощным", если бы использовал внешнее ОЗУ. Вот мне непонятно зачем Arduino нужен шилд-костыль, когда за ту же цену есть полноценный практически комп с Linux'ом на борту? Этот шилд очень ограниченный. Зачем платить те же деньги за функционал на порядок меньше? К тому же с Wi-Fi на борту.
Нет, это не есть верный путь. Мощностей Ардуины вполне хватает и на сервер и на парсинг запросов и на управление начинкой робота, физической необходимости в доп устройстве я не вижу.
Да, я тоже не вижу необходимости в Ethernet шилде, тем более, узнав о его ограничениях. Мк не должен заниматься разбором строк. Это не очень хорошее применение для систем с малым количеством ОЗУ.
К тому же в связке Ардуино + TP-Link вы администрируете два устройства, а необходимо только одно, если не считать контент на SD-карте.
Что означает
администрируете? В каком смысле? Смотрю, что на обоих лампочки моргают? Для их сопряжения нужен только кабель usb. Очень простая конфигурация. А работа с Linux'ом, думаю, будет не сложнее написания кода на C++ для Ардуино.
И кстати, я вот не уверен, что через CyberWrt есть доступ к SD на шилде (так же как а Ардуино, думаю, не получит доступ к флешке, вставленной в роутер), а это критично для автономных систем, с диска которых вы забираете по IP информацию, собранную аппаратом за автономный этап работы.
Это смотря какая у вас конфигурация. Если такая, какую я написал, то можно вообще использовать самую примитивную Arduino, без всяких наворотов, но с FTDI микросхемой на борту. Зачем мк писать что-то самому на флешку? Роутеру гораздо проще вести архивирование. Можно настроить его работу на ведение логов, как это делается в промышленных системах. Можно писать куда угодно, хоть в БД. Данные с мк забирать по modbus-rtu, а отдавать "наверх" можно разными способами (выкачать архивы по ftp, к примеру).
В этом случае мк выступает как источник/приёмник данных и как устройство, на котором крутится алгоритм управления. Ни на какую "лишнюю" работу не отвлекаясь. Внешнее же обслуживание делает роутер.