Arduino Mega Server

Модератор: Alex

Аватара пользователя
foxvlad
Сообщения: 287
Зарегистрирован: Пн сен 22, 2014 3:18 pm
Откуда: Сочи
Благодарил (а): 78 раз
Поблагодарили: 78 раз
Контактная информация:

Re: Arduino Mega Server

Сообщение foxvlad » Чт авг 20, 2015 3:27 pm

uni писал(а):Sterpa, а зачем вам вообще сервер на Arduino? Для вашей задачи подошёл бы просто роутер в качестве шлюза: Ethernet - UART. Так делают, к примеру, в роботе CyberBot2 на cyber-place форуме.

Я бы лично использовал вообще протокол Modbus-RTU для управления. Тогда в Arduino был бы код, реализующий modbus-slave устройство. Если использовать роутер в качестве шлюза, то modbus-master делается на скриптах. Тогда весь протокол обмена идёт по стандартным спецификациям. Другое дело, что подавляющее большинство робототехников являются любителями и не могут освоить промышленные протоколы для последовательных интерфейсов. От чего постоянно выдумывают велосипеды.
Не соглашусь библиотека modbus для ардуина сырая и заброшенная вещь, боле чем с двумя устройствами не завилась,и мне проще было свой обмен данными наладить чем ковырять чужую наработку. И дело не в протоколе а в библиотеке.

А свой протокол я делал на основе модбас. Как раз для того что-бы велосипед не изобретать.
Sterpa
Сообщения: 2
Зарегистрирован: Чт авг 20, 2015 11:43 am
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Arduino Mega Server

Сообщение Sterpa » Чт авг 20, 2015 5:00 pm

uni, вот не совсем понял ваше предложение... преимущества, в смысле.
То, про что вы говорите, это действительно мини-роутер, с прошивкой на основе CyberWrt, т.е. имеющую внутреннюю "морду" в виде веб-интерфейса для управления "роботом", и рабтающем в режиме шлюза Ethernet <-> UART. Роутер подключается к чему? Да, к Ардуине или любому другому контроллеру, понимающему команды с UARTa. Т.е. это доп. устройство в системе, все также выгружающее в браузер пользователя интерфейс управления.
К слабому контроллеру, я еще могу понять. На таком контроллере сервер не поднять. Но зачем нужно доп. устройство к Ардуине с wifi шилдом, понимаю с трудом. Единственное объяснение, что OpenWtr допилили под нужды робототехники, а собственного web-сервера под Ардуинe все еще нет.

Нет, это не есть верный путь. Мощностей Ардуины вполне хватает и на сервер и на парсинг запросов и на управление начинкой робота, физической необходимости в доп устройстве я не вижу. К тому же в связке Ардуино + TP-Link вы администрируете два устройства, а необходимо только одно, если не считать контент на SD-карте. И кстати, я вот не уверен, что через CyberWrt есть доступ к SD на шилде (так же как а Ардуино, думаю, не получит доступ к флешке, вставленной в роутер), а это критично для автономных систем, с диска которых вы забираете по IP информацию, собранную аппаратом за автономный этап работы.
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Чт авг 20, 2015 6:37 pm

Причем здесь ВНУТРЕННЯЯ МОРДА сервера, на которой вы сосредоточились на 33х страницах форума
Что есть внутренняя морда сервера? Совершенно непонятный термин.
Вторая актуальная тема у вас, это загрузка файлов обратно на сервер. Это разве тема Ардуино-сервера?
АМС это универсальная вещь. И вы просто можете не представлять себе многие аспекты его применения.
А вот для начала работы, пожалуй, нужен сам сервер, который на запросы GET выдает таки корректно и многопоточно html-код и файлы css и js
Это уже есть в наилучшем виде.
но все же, почему для того, чтобы достать таки последнюю версию вашего продукта нужно пробежаться по кучи перекрестных ссылок начиная с гиктаймс и потом на форуме помереть таки в поисках заветного поста с последней версией!?
Потому, что его (поста) нет в природе. 0.12 только готовится к выпуску.
Перечитывая в который раз обсуждение, пришел в выводу, что ваш сервер работает ТОЛЬКО с модулем w5100. Это так? Если так, то, о Боги!, да почему же!!!???
Потому, что у меня под рукой w5100, а делать всё сразу я не могу физически.
Ребята, в общем, что нужно сделать с вашим сервером, чтобы отвязать его от конкретного чипа wifi, и превратить в полноценный Ардуино веб-сервер, который работает с заданным UART портом?
Про wi-fi вообще не понял. Я с wi-fi вообще ничего не делал.
Сервера самого под Ардуино человеческого нет, вот проблема…
Уже есть настолько хороший, насколько позволяют w5100 и стандартная библиотека.
Подскажите, все же, где взять последнюю версию?


Терпение! Она почти готова и отличается от 0.11 как ракета от пылесоса. Чуть позже выложу (монументальный) список дополнений и улучшений.
За это сообщение автора Alex поблагодарил:
Sterpa (Чт авг 20, 2015 6:44 pm)
Рейтинг: 1.16%
Аватара пользователя
uni
Сообщения: 191
Зарегистрирован: Вс июл 26, 2015 9:21 pm
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 7 раз
Контактная информация:

Re: Arduino Mega Server

Сообщение uni » Пт авг 21, 2015 10:30 am

Не соглашусь библиотека 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, к примеру).
В этом случае мк выступает как источник/приёмник данных и как устройство, на котором крутится алгоритм управления. Ни на какую "лишнюю" работу не отвлекаясь. Внешнее же обслуживание делает роутер.
Россия навсегда!
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Пт авг 21, 2015 11:49 am

Понял, что имелось в виду под «внутренней мордой сервера». Цитата с Гиктаймс:
Необходимое пояснение. В названии присутствует слово «сервер» и речь в первой части статьи идёт о серверных функциях системы. Это может ввести вас в заблуждение и создать впечатление, что основным назначением системы является хостинг файлов и сайтов и раздача контента. Это не совсем так. ...

Смысл системы несколько в другом. Вместе с Arduino Mega Server вы получаете возможность удобного управления своим устройством при помощи веб-интерфейса и просто роскошного (в визуальном смысле) выведения результатов его работы при помощи всей мощи современных технологий (HTML5, CSS3, THREE.js и т.п.). Будь то система управления умным домом, теплицей, автоматом по продаже напитков, метеостанцией или чем угодно, на что у вас хватит фантазии.
А в серверном смысле всё упирается в 5100 и библиотеку, но для наших задач этого вполне должно хватить. Хостинг на контроллере никто в здравом уме делать не собирается.
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Пт авг 21, 2015 6:41 pm

Версия 0.12

(Эта краткая инструкция предполагает, что вы уже ознакомились с двумя инструкциями с первой странички.)

Основное нововведение — работа полностью автономно, без помощи стороннего сервера.

Установка и настройка проходит аналогично предыдущим версиям, различие заключается в том, что на сервере MajorDoMo создаётся папка one рядом с папкой mega, чтобы не мешать файлы от старой и новой версии. С папкой mega новая версия никак не работает.

Алгоритм работы. ЭТО ВАЖНО!

Конфигурация поставляется настроенной на одиночную работу. Это значит, что вы можете «не заморачиваться» установкой MajorDoMo и созданием папки one на нём. Только в этом случае вам нельзя будет изменять режим работы с одиночного на тандемный (по понятной причине).

Но лучше это всё-таки сделать потому, что так гораздо удобнее вести процесс разработки (не нужно каждый раз посылать файлы по Serial). Но нужно не забывать в конце разработки синхронизировать файлы на microSD карте с файлами на MajorDoMo.

IP адреса прописаны жёстко и должны соответствовать рекомендуемым.

Немного теории

Введён серверный язык программирования (макросы) с которым вы можете ознакомиться на страничке «Справочник» самого AMS. А с принципами подключения файлов — просто открыв любой файл странички (там каждый макрос подписан).

Общий принцип такой: AMS читает файл с карты памяти и когда находит макрос, то вставляет вместо него нужный файл с диска. Логика подключения частей страниц находится в файлах server и server_maker скетча Ардуино.

Разработка переведена на последнюю версию среды Arduino 1.6.5 r2 с которой конфликтует библиотека ICMPPing, поэтому она исключена из комплекта поставки и стоит задача решить проблему с адаптацией этой библиотеки.

Ахилесова пята

Поскольку размер файлов возрос, то стала актуальной проблема ошибок передачи файлов по Serial. Большие файлы передаются успешно только в 50-60 процентах случаев, что конечно же неприемлемо. И сейчас это проблема №1, которую нужно решить.

Нужно иметь в виду, что файлы картинок пока невозможно передать по Serial, их нужно заливать на карту вручную.

Вкратце это всё, будут вопросы — задавайте. Ну и конечно если вы не разберётесь как работает код, то не сможете самостоятельно ничего изменить, так что открывайте файлы и пытайтесь понять как всё это работает.

-------------------------

Файл дистрибутива 0.12 версии вместе со счётчиком загрузок (893) перенесён на официальный сайт проекта Arduino Mega Server

http://hi-lab.ru/arduino-mega-server
Вложения
012.jpg
012
012.jpg (132.51 КБ) 15877 просмотров
012.png
012
012.png (97.73 КБ) 15877 просмотров
Последний раз редактировалось Alex Сб дек 05, 2015 4:59 pm, всего редактировалось 3 раза.
За это сообщение автора Alex поблагодарил:
avton (Сб авг 22, 2015 4:11 pm)
Рейтинг: 1.16%
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Сб авг 22, 2015 7:27 pm

Версия 0.12 постом выше
За это сообщение автора Alex поблагодарил:
avton (Сб авг 22, 2015 7:30 pm)
Рейтинг: 1.16%
avton
Сообщения: 6
Зарегистрирован: Пт июл 04, 2014 9:34 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Arduino Mega Server

Сообщение avton » Сб авг 22, 2015 7:57 pm

пока как то не очень хочет ...
Arduino: 1.6.5 (Windows 8.1), Плата"Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

C:\Users\HOME\Desktop\arduino-1.6.5-r2\libraries\Ethernet\Ethernet.cpp: In member function 'void EthernetClass::begin(uint8_t*, IPAddress, IPAddress, IPAddress, IPAddress)':
C:\Users\HOME\Desktop\arduino-1.6.5-r2\libraries\Ethernet\Ethernet.cpp:64:39: error: no matching function for call to 'W5100Class::setIPAddress(IPAddress::<anonymous union>&)'
W5100.setIPAddress(local_ip._address);
^
C:\Users\HOME\Desktop\arduino-1.6.5-r2\libraries\Ethernet\Ethernet.cpp:64:39: note: candidate is:
In file included from C:\Users\HOME\Desktop\arduino-1.6.5-r2\libraries\Ethernet\Ethernet.cpp:1:0:
C:\Users\HOME\Desktop\arduino-1.6.5-r2\libraries\Ethernet\utility/w5100.h:392:6: note: void W5100Class::setIPAddress(uint8_t*)
void W5100Class::setIPAddress(uint8_t *_addr) {
^
C:\Users\HOME\Desktop\arduino-1.6.5-r2\libraries\Ethernet\utility/w5100.h:392:6: note: no known conversion for argument 1 from 'IPAddress::<anonymous union>' to 'uint8_t* {aka unsigned char*}'
C:\Users\HOME\Desktop\arduino-1.6.5-r2\libraries\Ethernet\Ethernet.cpp:65:38: error: no matching function for call to 'W5100Class::setGatewayIp(IPAddress::<anonymous union>&)'
W5100.setGatewayIp(gateway._address);
^
C:\Users\HOME\Desktop\arduino-1.6.5-r2\libraries\Ethernet\Ethernet.cpp:65:38: note: candidate is:
In file included from C:\Users\HOME\Desktop\arduino-1.6.5-r2\libraries\Ethernet\Ethernet.cpp:1:0:
C:\Users\HOME\Desktop\arduino-1.6.5-r2\libraries\Ethernet\utility/w5100.h:368:6: note: void W5100Class::setGatewayIp(uint8_t*)
void W5100Class::setGatewayIp(uint8_t *_addr) {
^
C:\Users\HOME\Desktop\arduino-1.6.5-r2\libraries\Ethernet\utility/w5100.h:368:6: note: no known conversion for argument 1 from 'IPAddress::<anonymous union>' to 'uint8_t* {aka unsigned char*}'
C:\Users\HOME\Desktop\arduino-1.6.5-r2\libraries\Ethernet\Ethernet.cpp:66:38: error: no matching function for call to 'W5100Class::setSubnetMask(IPAddress::<anonymous union>&)'
W5100.setSubnetMask(subnet._address);
^
C:\Users\HOME\Desktop\arduino-1.6.5-r2\libraries\Ethernet\Ethernet.cpp:66:38: note: candidate is:
In file included from C:\Users\HOME\Desktop\arduino-1.6.5-r2\libraries\Ethernet\Ethernet.cpp:1:0:
C:\Users\HOME\Desktop\arduino-1.6.5-r2\libraries\Ethernet\utility/w5100.h:376:6: note: void W5100Class::setSubnetMask(uint8_t*)
void W5100Class::setSubnetMask(uint8_t *_addr) {
^
C:\Users\HOME\Desktop\arduino-1.6.5-r2\libraries\Ethernet\utility/w5100.h:376:6: note: no known conversion for argument 1 from 'IPAddress::<anonymous union>' to 'uint8_t* {aka unsigned char*}'
Ошибка компиляции.

В чем косяк ?
Спасибо
P.S.
Со встроенными примерами тоже самое
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Сб авг 22, 2015 8:26 pm

Опишите подробно что и как вы делали.

Есть 2 варианта: нужно удалить (сохранить где нибудь) папку Ethernet и заменить её папкой из дистрибутива

Или: взять из дистрибутива 2 файла

EthernetServer.cpp
EthernetServer.h

и заменить ими аналогичные из вашей "родной" поставки
killeo
Сообщения: 11
Зарегистрирован: Пт июл 31, 2015 8:40 pm
Благодарил (а): 3 раза
Поблагодарили: 1 раз

Re: Arduino Mega Server

Сообщение killeo » Сб авг 22, 2015 8:31 pm

По поводу версии Arduino. На arduino.org есть 1.7. библиотеки пролистал мельком, ethernet не меняли, добавили ethernet2 для w5500
По поводу ошибок в Arduino, на ubuntu не компилилось, на windows получилось.
Ответить