Удаленная работа с Ардуино. Нужна практика.
- Войдите на сайт для отправки комментариев
Коллеги!
Стоит казалась бы простая задача: удаленное управление и мониторинг дачей. Есть знания с++, куплено "железо" (ардуино Ethernet, реле, датчики ...) но нужны для начала еще и теоретические знания, в которых к сожалению есть некоторый пробел.
Мое (на сегодняшний день) понимание удаленного управления и мониторинга следующее: есть ардуино, подключенное к сети со статическим IP адресом. На ардуино запущена программа, которая а) опрашивает порты ввода б) отправляет SNMP трапы мне домой (вор залез, температура опустилась ниже 5 град.) в) формирует некую web-страницу на которой можно нажав кнопку удаленно включить реле (например отопление) и посмотреть состояние портов ввода (температура, закрыты ли все двери ...)
Для начала, что бы небыло путаницы, хочу определиться с вводными данными:
IP адрес компьютера - 192.168.0.10
IP адрес ардуино - 192.168.0.100
Порт А1 (аналоговый) - температура
Порт D5 (цифровой) - Дверь
Порт D7 (цифровой) - Управление реле
Хотелось бы по шагам разобраться, с чего начинать. На сколько я понимаю на ардуино есть разъем для MicroSD карты. На ней нужно разместить web-страницу для управления ардуино или страница будет формироваться в коде программы для ардуино? Какой МИНИМАЛЬНЫЙ текст должна содержать эта страница для мониторинга и управления? Может ли ардуино быть и web-сервером и отправителем SNMP-трапов?
Подскажите, коллеги ...
С ув.,
Д.
Все уже изобретено до нас. Что мешает Вам найти (в том числе и на этом форуме) информацию про 100500 уже реализованных аналогичных проектов и воспользоваться ей ? [Вопрос риторический]
Приветствую, коллеги!
Воспользовавшись очень полезным, познавательным, содержательным и бесценным советом от Araris, решил для начала посмотреть образец веб-сервера. За пример взял стандартный: «файл» -> «образцы» -> «Ethernet» -> «WebServer», но тут же всплыла проблема. Первый раз я захожу на страничку и вижу, как живет контроллер. Но! Стоит ее покинуть, то вернутся на нее обратно можно только путем нажатия кнопки «reset» на контроллере. Причем на компьютере три браузера (IE, Opera и Chrome) везде одна и та же картина. Так же не работает, если сначала зайти на контроллер одним браузером, закрыть страницу и попытаться зайти другим.
Может кто сталкивался с подобной проблемой? Железо – Arduino Mega 2580 и Ethernet шилд на контроллере WIZnet Ethernet W5100.
Ответы по образцу Araris можно не писать. Не засоряйте ветку.
Спасибо. И за понимание тоже.
С ув.,
Д.
решил, но пока не понял как и почему так вышло ... Вынул Микро SD и все заработало в штатном режиме. Коллеги! что не так? как подружить Micro SD и эзернет шилд ?
продолжаем монолог. спасибо иностранным ресурсам.
теперь и SD ok и страничка отображается ...
#include <SPI.h> #include <Ethernet.h> #include <SD.h> byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; byte ip[]={192, 168, 1, 188}; byte subnet[] = { 255, 255, 255, 0 }; byte gateway[] = { 192, 168, 1, 100 }; EthernetServer server(80); void setup() { Serial.begin(9600); pinMode(10,OUTPUT); digitalWrite(10,HIGH); if(SD.begin(4) == 0) Serial.println("SD failed"); else Serial.println("SD ok"); while (!Serial) { ; // wait for serial port to connect. Needed for Leonardo only } Ethernet.begin(mac, ip, subnet, gateway); digitalWrite(10,HIGH); delay(2000); server.begin(); Serial.print("server is at "); Serial.println(Ethernet.localIP()); }Коллеги!
Стоит казалась бы простая задача: удаленное управление и мониторинг дачей. Есть знания с++, куплено "железо" (ардуино Ethernet, реле, датчики ...) но нужны для начала еще и теоретические знания, в которых к сожалению есть некоторый пробел.
Мое (на сегодняшний день) понимание удаленного управления и мониторинга следующее: есть ардуино, подключенное к сети со статическим IP адресом. На ардуино запущена программа, которая а) опрашивает порты ввода б) отправляет SNMP трапы мне домой (вор залез, температура опустилась ниже 5 град.) в) формирует некую web-страницу на которой можно нажав кнопку удаленно включить реле (например отопление) и посмотреть состояние портов ввода (температура, закрыты ли все двери ...)
Для начала, что бы небыло путаницы, хочу определиться с вводными данными:
IP адрес компьютера - 192.168.0.10
IP адрес ардуино - 192.168.0.100
Порт А1 (аналоговый) - температура
Порт D5 (цифровой) - Дверь
Порт D7 (цифровой) - Управление реле
Хотелось бы по шагам разобраться, с чего начинать. На сколько я понимаю на ардуино есть разъем для MicroSD карты. На ней нужно разместить web-страницу для управления ардуино или страница будет формироваться в коде программы для ардуино? Какой МИНИМАЛЬНЫЙ текст должна содержать эта страница для мониторинга и управления? Может ли ардуино быть и web-сервером и отправителем SNMP-трапов?
Deniska407, я для себя выбрал готовое решение нежели собирать конструктор на коленке. Использую устройство удаленного управления розетками NetPing 2/PWR-220 v1/SMS со встроенным GSM модемом. Неплохой девайс, который умеет управлять нагрузкой, мониторить информацию с датчиков и оповещать владельца различными средствами. Один экземпляр использую на даче, другой - в серверной на работе. Для дачи - отправляю SMS, включается обогреватель в комнате. Через пару часов уже тепло. В серверной - перезагружаю зависший 3G модем и контроллирую проходы в помещение.
Отстойная рекламма. Голимый девайс с огромной ценой и глючной работой - в топку. Модем он перегружает :) Плох админ который ватчдогами пользуется, пытается свою непроыессиональность режить костылями :) Это я как айтишник-управленец могу смело утверждать :)
Единственное, что невозможно дистанционно админить , это зависание канала связи. Про "ватчдоги" тут ничего не говорилось. Что значит " режить костылями" я вообще не понял , наверно это такой айтишно-управленческий "проЫЕссиональный" слэнг. Видимо айтишник-управленец это совсем не айтишник-админ. Может быть Вы расскажете про то, как Вы ! высокопроЫессионально-управленчески режите костыли. Хотя у айтишника-управленца всегда есть замечательный проЫессиональный способ перегрузить модем - отправить айтишника-админа.
Каждое устройство хорошо, если оно стоит приемлимые деньги и выполняет потребные от него функции. человека оно устроило. Когда высказываете личное мнение добавляйте ИМХО.
inspiritus,подразумевалось "решить")
Да.... Прикольно некоторым товарищам занозы не дают покоя. Инспиритус помните, свойство обижаться характерно для неудачников.
Про рекламу пурги- неоправданная цена с кривым функционалом. А зависшие каналы связи это пассаж ! Вам бы со сцены выступать. Чего нибудь про зависшие мир и вселенную зарядить. Смешно слышать рассуждения дилетанта. Да проверьте ошибки в моих сообщениях, я уверен вы считаете, что упрек в неграмотности другого сделает вас умнее, развивайтесь :)
Зависающее оборудование говорит о неграмотном применении или неправильном выборе. Сейчас любой сервер имеет ватчдог. Хотя нет, не буду метать бисер. Не вижу смысла.
Мдэ. Господи, спаси практиков от таких управленцев.
Я то на вас не обижаюсь. Я вообще стараюсь с идиотами не связываться. То что вам так не понравилась моя персона и вы не потерпели это, а попытались опустить меня, говорит о вашей неудовлетворенности собой. Я вообще в аллаха верю. Так, так что не там вы спасение ищете. Ищите его в своей голове.
Человек перед Вашим первым выступлением - Anatoljevich_pro , дал дельный совет, Вы его зачем-то обгадили.
Вот и вопрос кто опускал, кто неудовлетворен и кто обижен.
Вы мне вообще безразличны , как персона. Написали бы что дельное, а то сплошное самолюбование. В управленцы понимаешь выбился... челом бъем пресветлый князь :)
Человек перед Вашим первым выступлением - Anatoljevich_pro , дал дельный совет, Вы его зачем-то обгадили.
Вот и вопрос кто опускал, кто неудовлетворен и кто обижен.
Вы мне вообще безразличны , как персона. Написали бы что дельное, а то сплошное самолюбование. В управленцы понимаешь выбился... челом бъем пресветлый князь :)
Благодарю, inspiritus, за то что Вы оценили мою железку. Не обращайте внимания на неадыкватных людей, которые думают, что они ПУП земли.
Удачи во всех начинания!
Коллеги!
Стоит казалась бы простая задача: ...
Сам только что закончил проект управления по сети. Все работает, но делал все сверх примитивно. Возможно мои советы чем-то помогут.
1.Ethernet шилд работает либо как web сервер, либо как web клиент. Работать и так, и так он не может. Из вашей постановки задачи вам больше подойдет сервер (но тут лучше вам решать). Т.е. в дальнейшем рассматривайте только вопросы, касаемые работы шилда, как сервера.
2. Вот здесь:
http://startingelectronics.com/tutorials/arduino/ethernet-shield-web-server-tutorial/basic-web-server/
разжевано про работу шилда, как сервера по шагам и где-то в середине говорится, что при вставленной карточке в код надо что-то дописывать. Сам карточку не использовал, но обратил на это внимание. Посмотрите, может быть это поможет вашей проблеме с неоткликом шилда, когда там карточка.
3. Я за основу своего, достаточно сложного управления роботом, взял стандартный пример в библиотеках Ардуино Ethernet -> WebServer. Глубоко в него можно даже не вникать. Там вначале идет ожидание соединения, потом запроса клиента, потом начинается чтение самого запроса. Основная обработка идет только после строчки if (c == '\n' && currentLineIsBlank). Главное - понять идею удаленного управления и от этого плясать. А идея такова:
Чтобы управлять ардуиной удаленно надо: А) послать ей некоторое количество переменных, Б) Она должна прочесть все эти переменные, В) в зависимости от величин этих переменных она сделает те или иные действия. Г) обновит Веб страницу (или составит заново) и отправит обратно, туда от куда пришел запрос.
Теперь подробнее: А) переменные Ардуине вы можете послать с помощью http GET запроса. (есть еще POST запросы и др., но давайте их пока не рассматривать) GET запрос - это самый обычный текст, в котором идет куча непонятных (для ламера) букв и слов. Но среди этих непонятных символов обязательно присутствует строка, типа: ?name=Vasya&password=123 . В этой строке ? - начало запроса, name и password - имена передаваемых переменных, а Vasya и 123 - величины этих переменных. & - разделитель между передаваемыми переменными. Переменных может быть и 1 штука (тогда & не нужен, т.к. нечего разделять) и очень много штук, тогда и разделителей (&) будет много - между каждой переменной. Сформировать эту строку GET запроса вы можете как угодно. Например, вы можете тупо написать в строке браузера http://192.168.1.177?name=Vasya&password=123, и на сервер уйдет GET запрос с двумя переменными и их величинами. Можно на http странице нарисовать форму и по нажатию кнопки Send будет автоматически формироваться подобный запрос с количеством переменных, равных количеству полей формы. Я же, например, пошел по третьему пути: я на С# написал простенькую форму и воспользовавшись стандартными библиотеками для формирования GET запроса отправлял эти запросы на сервер. Т.е. путей формирования и отправки такого запроса - множество. Самый элементарный - браузер.
Б) Теперь в скетче, в строке кода HTTP_req += c; Ардуина считывает весь GET запрос посимвольно. Т.е. после прочтения всего запроса в переменной HTTP_req хранится весь непонятный вам мусор. Но там также находится и строчка с нашими переданными переменными. Т.е. второй крупный шаг программы - это анализ полученного текста и вытаскивание из него тех переменных и их значений, которые пришли с запросом. Тут, по сути, вы работаете с текстом. И тут все зависит только от вашей логики - работаете ли вы с одной переменной или множеством, приходит ли каждый раз четкий набор переменных или каждый раз могут приходить разные переменные по одиночке и т.п. Но, используя стандартные функции работы с текстом, анализ текста не должен вызвать трудностей.
В) Самый простой шаг. Анализ полученных переменных и выполнение определенных действий. Допустим, если переменная Level > 10 то на пине 3 будет высокий сигнал и т.д. Так же вам может потребоваться считать показания каких-то пинов.
Г) После того, как у вас есть все считанные переменные вы формируете Веб страницу и отправляете ее обратно клиенту. По указанной ссылке об этом очень хорошо сказанно. В html код страницу вы подставляете свои считанные переменные, чтобы их можно было видеть в удаленном браузере и формируете форму для вставки новых значений переменных и отправки их с очередным GET запросом. В зависимости от ваших запросов по управлению, веб страница может получиться достаточно большой и не влезть в оперативную память Ардуины. К тому же, передача большого объема информации требует некоторого времени. Я же в своем проекте поступил нестандартно. Я отправлял одну строку GET запроса с помощью отдельно написанной программки и принимал всего несколько абзацев Веб страницы с возвращенными переменными, которые анализировал в той же программке. Задержек в обмене запросами не заметил.
Желаю удачи.
P.S. Я в своем проекте соединялся с Ардуиной по локальной сети, т.е. связывался с ней по адресу, типа: 192.168.1.177. Но у меня ушел почти месяц на то, чтобы разобраться, а как же связаться с ней с удаленного компа по И-нету. Я поднимал подобную тему, но ответа не получил. Сейчас во всем разобрался. Сам же и отпишусь в своей теме. Если будет интересно - смотрите там.
Вот Vadim111 правильно и по делу пишет. Не то что непонятные комерсанты, ВПАРИВАЮЩИЕ СВОЮ ПУРГУ. Человек справшивает "как сделать", а ему отвечают "где купить". Это что... я даже объяснить глупостью это не берусь. Да еще и клоуны начинают красными носами мотать. Конечно, все за грамотность борются "неадЫкватных" везде мнят, на себя то в зеркало гляньте, только не испугайтесь. Я то как раз таких насмотрелся. Когда людей набираем, вот таких очень фильтровать тяжело, они на словах все могут, а на деле только "плюются".
Хочу добавить про пост запросы, они от гетов отличаются не только хидером, но и наличием блока данных, которые могут быть отправлены скрыто. Более того, в этих блоках не нужно соблюдать правило - "Только английский алфавит и никаких других знаков". В поле данных пост запроса можно отправлять и рав данные, то есть "какие есть, без обработки". Обычно оболочку с ардуино пишут на яваскрипте. Получается аякс :) Сам сейчас ковыряю веб сервер на меге. Такой где пользователь, при желании, может создвать свои страницы. Прикольно получается, немного тормозно, но вполне себе адекватная и надежная штука. В комплекте с SD - вообще бомба. Налепил явовских страничек, скинул их на флешку и готово. До DYN DNS пока не добрел, но и с этим планирую разобраться. На самом деле все намного проще, чем может показаться :)
Уважаемый Vadim111 , как обычно истину глаголет.
А Вы, как обычно, как в лужу ... Звучно, много и невнятно!
" говорил он много, но непонято об чём" ... вполне по-управленчески.
Вам бы подлечиться. Последнее дело на личности переходить, но для вас это естественно. Ну что тут скажешь... Я же не виноват, что вы неудачник, причина этому в вас :) А много и невнятно, этот тут на форуме вашего говнокода, для всяких утюгов.
Кстати, то что вы не понимаете о чем я пишу, говорит только о вашей плохой осведомленности в вопросе и нежелании чего либо изучать. Иными словами, если вы что то не поняли, то это из за вашей глупости :)
....ну вы как дети малые!!!.....ха-ха
..а вы знаете от чего все беды на земле? от не совместимости характеров-мировозрений,
...один считает надо так делать, - другой - не-е.. надо вот так делать , а так как ты говориш не правильно.
.....вот и начинаются все войны на земле, .....хотя каждый по своему прав, просто у него взгляд на мировозрение немножко посвоему...
...а вы уже перестреляли друг-друга
ха-ха-ха
gheki ,да вы некромант, очень надеюсь, что не капрофил. Хотя, почти уверен, что ошибаюсь. Спецом зарегистрироваться, что бы вырыть покойника, это не всяк заценит... Счтайте, что я оценил и ум ваш и совесть !
Deniska407
Доброго времени суток!
Получилось потравить Трап? Так же столкнулся с необходимостью отправить Трап, но что-то, видимо плоху гуглю, никак не выходит.