Как стать автором
Обновить

Starting Electronics: руководство по веб-серверам на Arduino. Часть 1

Блог компании Timeweb Cloud Программирование микроконтроллеров *Разработка для интернета вещей *Разработка под Arduino *DIY или Сделай сам
Туториал
Перевод
Всего голосов 28: ↑26 и ↓2 +24
Просмотры 5.3K
Комментарии 34

Комментарии 34

От себя добавлю: это отлично работает даже на 8-битной Mega2560 + W5100, не говоря уже о более крутом железе.

Я не спорю, что работает
Просто в статье зачем то много времени уделено конфликту Ethernet шилда м SD-карты, вместо того чтобы больше времени уделить собственно работе веб-сервера

Ну, это автор так написал, я тут выступил только как переводчик.

Вообще, это моя тема и в процессе перевода мне всё время хотелось что-то добавить, но я наступил на горло своему креативу и старался строго придерживаться оригинала.

Вполне можно было под спойлером вставлять свои комментарии. Кому интересно развернули бы. Тем более, когда переводчик в теме. А то обычно какие-то надмозги берутся за переводы...

Я пришёл к выводу, что данное руководство представляет собой отдельное оригинальное «произведение искусства» и дополнять его уже нет особого смысла. Скорее я когда-нибудь напишу своё собственное руководство на эту тему, только более расширенное и полное. Но это требует значительных затрат времени и сил, поэтому оно появится на свет только если «звёзды сойдутся».

Тоже вариант. Например, мне тут понадобилось на ESP рисовать гистограммы в реальном времени (без интернета). То ещё приключение... Готовых рецептов нет, надо изобретать.

У меня в публичных сборках AMS есть код, который на 8-битной Меге с 8-ю килобайтами памяти в реальном времени рисует (на веб-странице) осциллограммы тока и напряжения в электросети.

Может некорректно написал. Именно в веб-интерфейсе нужны гистограммы. С обновлением в реальном времени. А это надо понимать html, xmlhttprequest, javascript, css, ajax. И желательно без jquery... Я в этом плохо ориентируюсь, потому мне сложно.

Так именно это у меня реализовано и код доступен для ознакомления. Правда, чтобы понять, как это работает, нужно, как минимум, пройти тот курс по веб-серверам, который я сейчас перевожу и выкладываю на Хабре :)

Понял. Как-то эта тема вообще мимо меня прошла. Почитаю ваши статьи.

К сожалению, даже базовый пример не компилируется. Версии библиотек, которые там нужные неизвестны. Отлавливать баги и переписывать чужой код то ещё удовольствие. Всё безнадёжно устарело...

Не всё так плохо :) Среда Arduino для компиляции 1.8.5, все нужные библиотеки уже есть в составе дистрибутива, а сам дистрибутив проверен тысячами инсталляций.

Но!

Для работы с AMS нужна определённая квалификация в программировании и микроконтроллерах и, судя по вашему сообщению, она недостаточна.

Здесь может помочь только самообучение и обширная практика работы с подобными системами.

Начать можно с освоения уроков этого руководства — для этого они и переводятся мной.

Не знаю с чего такие выводы... Я написал, что с динамическим веб программированием у меня слабо, если бы на esp был php сервер, то без проблем написал бы что угодно. Завтра попробую ещё раз скомпилировать. Покажу ошибки. Ругалась среда на wifi библиотеку вроде, толь количество операторов в функции ей не нравилось, толь их качество. В комплекте этой библиотеки не было.

Подождите, какой Wi-Fi? Сетевой осциллограф нужно смотреть в дистрибутиве Mega 2560.

И, кстати, не совсем понятно зачем вам компиляция и запуск самого сервера — для анализа доступен исходный код дистрибутива (без всякого запуска).

Если просто хотите посмотреть, как это выглядит, можете посмотреть на ютубе:

http://www.youtube.com/channel/UCzwiCsCitrMphSTIEr8It_w

Скачал тот дистрибутив, какое у меня есть железо (esp8266). Откуда я мог догадаться, что дистрибутивы отличаются по функционалу?

Если что, первая ошибка:

C:\Arduino\arduino_mega_server_esp8266\server.ino: In function 'void serverWorks()':
server:165:67: error: no matching function for call to 'WiFiClient::write(fs::File&, int)'
  165 |                   wclient.write(webFile, HTTP_DOWNLOAD_UNIT_SIZE_2);
      |                                                                   ^

Ладно, скачал дистрибутив на mega2560. Где там в недрах закопан этот осциллограф? В ino файлах комментарии настолько минималистичны, что по сути их нет.

Ладно, остановимся на том, что я ничего в этом не понимаю и попрощаемся. Счастливо.

Ок, тогда ловите идею того, как это работает — далее вам не составит особого труда это реализовать самостоятельно.

Всё очень просто: на стороне контроллера формируется массив значений какой-то функции, далее этот массив отсылается в ответ на запрос браузера. Отсылать можно в любом формате — у меня это XML, вы можете использовать, например, JSON.

В качестве механизма обмена могут выступать GET запросы, Websockets или что-то другое, на ваш вкус.

А далее получаете данные и при помощи Javascript делаете с ними всё, что захотите и как угодно визуализируете, хоть в 3D формате с помощью соответствующих Javascript библиотек.

Я всё так и сделал. Цифры обновляются на лету в таблице. Надо график рисовать. Буду сам это делать.

Мерси.

Оригинальная статья 10 летней давности, ESP еще не изобрели

Кстати, 14 января будет юбилей — туториалу ровно 10 лет.

Но сам материал нисколько не устарел — он описывает принципы по которым это работает на любых платформах. Например, у меня одни и те же куски кода (HTML, CSS, Javascript) работают и на микроконтроллерах и на моём сайте в интернете.

Вероятно потому что HTML, CSS и JavaScript выполняются в браузере, а не на сайте или микроконтроллере.

Пока я переводил эти части туториала от Starting Electronics, то постоянно боролся с желанием развернуть каждый абзац текста в более объёмное объяснение.
Приобретённые в их ходе навыки
Очень хорошо, что Вам удалось побороть желание «развернуть каждый абзац».
Вниманию желающих поставить минус: через Ctrl-Enter я уже сообщал.
И ещё. За статью я проголосовал положительно.
Если же минус прилетел от автора, то… лучше бы Вы ошибки исправили.

Mike-M, за плюс спасибо. А по поводу ошибок - мы же с вами уже обсуждали, что 95% ваших исправлений носят субъективный и крайне спорный характер.

А попытки править авторский стиль вообще неуместны (это не говоря о куче ляпов в ваших собственных текстах).

В моих статьях нет «кучи ляпов». Я вам это наглядно доказал. На моё предложение привести дополнительные примеры вы ответили молчанием.

«Приобретённые в их ходе навыки» — это авторский стиль?
Или может конструкция «Пока…, то ...» — это авторский стиль?
Нет, это явные синтаксические ошибки. На русском языке так не говорят.

На 14 замечаний в вашей статье приходится четыре ошибки:
  1. В этой статье я рассажу — расскажу.
  2. и рассказал о его схемотехнике, сегодня я попытаюсь осветить ещё один важный аспект — вместо запятой должна быть точка и новое предложение.
  3. резисторы R21-R24 — диапазон значений задается через тире, а не дефис.
  4. можно делать всё, что угодно — лишняя запятая.
Четыре ошибки — это не 5%, как вы утверждаете, а более 25%.

Но даже если ошибок всего 5%, это не значит, что их не нужно исправлять.

Mike-M, пожалуйста, не нужно превращать комменты к статье о веб-серверах в цирк и ярмарку вашего тщеславия.

Если вы нашли какие-то ошибки, то просто пришлите мне их в личку — я их посмотрю и, если сочту справедливыми, то исправлю и поблагодарю вас за бдительность.

Не ожидал, что человеку с ником smart нужно повторять дважды.
Повторяю: в личку я вам уже сообщал, но прошло более трех месяцев, а ошибки до сих пор не исправлены.

И тщеславие здесь ни при чем. Это вы зарабатываете на корпоративном блоге. Я с ваших ошибок не имею ни копейки.

Тоже против никчемных обсуждений. Просто впредь пишите грамотнее — меньше минусов будет. А значит, выше ваш заработок.

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

Это же надо, зайти в комменты обучающей статьи (ни слова не сказав по сути темы) и так всё изгадить...

Это же надо, так долго заниматься пустословием, вместо того чтобы за пару минут исправить ошибки… Или просто промолчать на худой конец, раз уж виноват…

По сути темы я действительно ничего не сказал — вместо этого поставил плюс статье, причем двойной.

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

Mike-M, я с вами общался и отвечал на ваши вопросы, как отвечаю любому обратившемуся ко мне. В личной переписке и в этих комментах вы достаточно себя показали — я больше не вижу смысла терять время на общение с вами.

Забавно, как это вы отвечали на мои вопросы, если я их не задавал ))

Рад, что вы наконец-то приняли решение прекратить бесполезный флуд.

Главное — чтобы в ваших будущих публикациях не встречалось нелепостей вроде «Приобретённые в их ходе навыки», а также других ошибок правописания, прикрытых «авторским стилем».

В качестве прикола подключал Arduino по USB Serial к роутеру Mikrotik. У последнего можно прокинуть tcp порт на serial порт Arduino (raw). Mikrotik выступал в роли типа CGI шлюза )

Под Ардуино написал обработчик GET запроса, который по Serial в него приходил, когда я браузером запрашивал TCP порт микротика. В ответ Ардуино выдавало "web страничку", которая благополочно выплевывалась микротиком в браузер. Такой вот занятный web сервер. Хотел даже статью написать, но ума не приложу кому это может понадобиться )

Ждем продолжения

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

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.