Web server на ардуино: Веб-сервер — ваша первая сетевая программа Arduino / Хабр

Web-server на Arduino для графического представления информации с удаленных датчиков

Please use this identifier to cite or link to this item:
http://elar.khmnu.edu.ua/jspui/handle/123456789/7328
Можете відсканувати цей QR-код телефоном( програмою «Сканер QR-кодів» ) для збереження.

Title: Web-server на Arduino для графического представления информации с удаленных датчиков
Other Titles: Web-server on Arduino for graphic representation of information from remote sensors
Authors: Мясищев, Александр Анатольевич
Myasischev, A.A.
Keywords: микроконтроллер;ENC28J60;W5100;W5500;Arduino Mega;Arduino UNO;ATmega328p;библиотека Dygraphs;AVR Studio;microcontroller;Dygraphs library
Issue Date: 2018
Publisher: Хмельницький національний університет
Citation: Мясищев А. А. Web-server на Arduino для графического представления информации с удаленных датчиков / А. А. Мясищев // Вісник Хмельницького національного університету. Технічні науки. – 2018. – № 2. – С. 146-152.
Abstract: В работе на базе Arduino Mega и контроллера W5100 построен web-сервер для графического отображения данных удаленного клиента, полученных с датчиков температуры, давления, влажности. Программа сервера написана в среде разработки Arduino IDE. Откорректирована библиотека Ethernet для W5100, которая для Arduino IDE ver. 1.0.3, 1.0.5-r2 приводила к зависанию сервера. Показана возможность использования библиотеки Dygraphs для графической визуализации данных, полученных с помощью датчиков. Написаны скрипты для прорисовки графиков для спроектированного web-сервера. Проанализирована скорость передачи данных с web-сервера Arduino для различных сетевых контроллеров ENC28J60, W5100, W5500 для среды программирования Arduino IDE и библиотек UIPEthernet, Ethernet, Ethernet2.
Показано, что с наименьшей скоростью данные передаются web-сервером с контроллером ENC28J60 — 3.3КБайт/с, с наибольшей контроллером W5500 — 23.4Кбайт/с. Отмечено, что эти сервера не поддерживают многопоточную работу. Поэтому они не могут быть использованы для создания миниатюрных универсальных web-серверов для обработки нескольких запросов одновременно. Рассмотренный в работе сервер может обслуживать только один запрос от одного удаленного клиента. Проанализированы скоростные параметры передачи данных для сервера на микроконтроллере ATmega328p(Arduino UNO) с контроллером сети ENC28J60. Программа сервера реализована на языке Си в среде программирования AVR Studio. Отмечена высокая скорость передачи данных — 140КБайт/с и возможность многопоточной работы. Установлено, что при одновременной передачи трех файлов разным клиентам суммарная скорость передачи достигает 120-130КБайт/с, а для каждого клиента 40-50КБайт/с. Показано, что использование такого сервера для решения задачи графического представления данных с датчиков затруднено вследствие сложности переноса программного обеспечения на другие микроконтроллеры и ограниченностью библиотеки для работы с картой microSD.
Эксплуатация разработанного здесь сервера в течении тех лет показала высокую надежность его работы.
In the work on the basis of Arduino Mega and the W5100 controller, a web server is built for graphical display of remote client data obtained from temperature, pressure, humidity sensors. The server program is written in the Arduino IDE development environment. The Ethernet library for the W5100 has been updated, which for Arduino IDE ver. 1.0.3, 1.0.5-r2 caused the server to hang. The possibility of using the Dygraphs library for graphical visualization of data obtained with sensors is shown. Written scripts for drawing graphics for the projected web server. The data transfer rate from the Arduino web server for various network controllers ENC28J60, W5100, W5500 for the Arduino IDE programming environment and UIPEthernet, Ethernet, Ethernet2 libraries was analysed. It is shown that with the lowest speed the data is transmitted by the web server with the ENC28J60 controller — 3.
3Kb/s, with the largest controller W5500 — 23.4Kbytes/s. It is noted that these servers do not support multithreaded work. Therefore, they can not be used to create miniature universal web servers for processing multiple requests simultaneously. The server considered in the work can serve only one request from one remote client. The speed parameters of data transfer for the server on the ATmega328p microcontroller (Arduino UNO) with the network controller ENC28J60 are analysed. The server program is implemented in C language in the AVR Studio programming environment. A high data transfer rate of 140Kb/s and a possibility of multithreading are noted. It is established that with simultaneous transmission of three files to different clients, the total transmission speed reaches 120-130Kb/s, and for each client 40-50Kb/s. It is shown that the use of such a server to solve the problem of graphical representation of data from sensors is difficult due to the complexity of transferring software to other microcontrollers and the limited library for working with a microSD card.
The operation of the server developed here for three years has shown high reliability of its operation. It is established that for the correct operation of the developed web server, a microcontroller ATmega128 and higher with a SRAM size greater than 4K is required.
URI: http://elar.khmnu.edu.ua/jspui/handle/123456789/7328
UDC: 004.522
Content type: Стаття
Appears in Collections:Вісник ХНУ. Технічні науки — 2018 рік

Show full item record &nbsp&nbsp Google Scholar

Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.

Домашний веб сервер на Аrduino. Температура и Реле [Проверенно] — Автоматизация и проектирование

Был модуль WI-FI. Было реле. В доме установлен роутер со статическим IP. Захотелось отображать температуру дома на экране телефона и в добавок включать и выключать подсветку в квартире (Удаленно управлять приборами).

В итоге получилось следующее: Захожу с телефона на свой IP адрес, на экране отображается температура и влажность в квартире + несколько кнопок для управления реле.

Без контроля состояния приборов. Код программы рабочий и предназначен для личного последующего творчества. Готового продукта веб сервера тут нет.
Датчик температуры все тот же DHT-11. Реле собрано на печатной плате с транзисторным ключем (c945) (Для скачивания оставьте комментарий) и управляется напряжением 5В. Коммутирует 270В — 6А.
В моем случае реле коммутировало дополнительное освещение в доме которое изображено на фото ниже.

По плинтусу с кабель каналом протянуты провода и выведено по квартире для ночного освещения. Питание от блока питания 9В, что бы ночью глаза не резало и видно было.

На рисунке ниже изображен весь используемый комплект.

Модуль WI-FI ESP8266 не нуждается в дополнительном обвесе. Единый минус в том что необходимо питание 3.

3В и потребление модуля 250 милиампер. Стандартный стабилизатор на ардуине 3.3В не смог обеспечить стабильное питание WI-FI модулю. В прочем моя Arduina китайская. Поэтому пришлось использовать отдельный стабилизатор напряжения 78033.

Я не писатель поэтому если какая то информация не раскрыта, но она необходима — спрашивайте в комментариях.

Про свой WI-FI модуль могу сказать так же что он китайский и в нем очень плохая прошивка. Которую можно заменить подключив модуль к преходнику USB-TTL и заменить. В китайской прошивке нет метода для программной перезагрузки модуля. Т.е если мой модуль зависает приходится передергивать для него питание. Это огромнейший минус в постройке веб сервера.
перейдем к коду программы для ардуины для построения Веб сервера с задуманными плюшками. Код взять с разных сайтов, более менее изменен под свои нужды и проверен. Добавлены комментарии для того что бы не описывать все словами и большим текстом в статье.

Wi-FI модуль ESP8266 общается при помощи 2х линий Rx Tx.
Ниже полный код веб сервера в который советуется вникнуть.

[Часть 1] Домашний веб сервер на Ардуино [Рабочий код]
[Часть 2] Домашний веб сервер на Ардуино [Рабочий код]

Cкачать код программы:
4870_1injner_web_server_arduino.ino

Пояснения: Для отладки расскоментируйте все строки // monitor.print. Посмотреть работу сервера можно в терминале IDE Arduino.

Как работает код выше вкратце:
Происходит включение ардуины, ардуина инициализирует интерфейсы Serial для компьютера и Serial1 для модуля wi-fi. Далее Ардуина отправляет в модуль данные для коннекта с нужным SSID в воздухе, и подключается к нему получая в ответ IP адрес. Для любопытства в таблице DHCP роутера обнаружится новое устройство без имени (Имя модулю так же можно задать). Как только IP выделен, ардуина начинает ждать данные от Wi-Fi модуля и распознавать, выполняя нужные действия.

Если подключения не произошло, то ардуина повторно без остановки пытается подключится к WI-FI.

Как выглядит веб сервер визуально с компьютера можно увидеть ниже на рисунке.

С телефона тоже работает.

Впрочем, все написано на скорую руку и не изменялось долгое время, и все что возможно выполнить в html и Js можно воплотить на странице сервера для своих нужд. Цвет, авто обновление, красивые кнопки и многое другое. Полный полет фантазии.

Опрос датчика температуры происходит при каждом обновлении страницы. Для датчика нужна библиотека которая находится в соседнем посту про DHT-11.
Реле включается одним пином переводя его в HIGHT или LOW.

В заключение скажу то что сервер в данном виде каким он есть работал у меня больше 3х недель без ресетов. Минусами является то что если часто обновлять страницу то сервер можно положить, а вернее модуль wi-fi, но с хорошим модулем ESP8266 это не проблема, программный автоматический сброс и все пройдет.

В скором времени напишу как сделать систему контролируемую напрямую через WiFi модуль ESP8266 для управления объектами и контроля данных.

Дополнение:
Для доступа через интернет, не забывайте прописать статический IP для MAC ESP8266 в роутере. И настроить пере направление трафика для порта 80 на данный IP.

Вопросы оставляйте в комментарии

Другие статьи по разделу:

 ЖКИ дисплей WH0802 подключение к Ардуино [Много проводов]


 Управление шаговым биполярным двигателем A4988ET [Рабочий код ino]

как создать веб-сервер для Arduino

Соберите необходимые компоненты

Прежде чем вы сможете создать веб-сервер для Arduino, вам необходимо собрать необходимые компоненты. Вам понадобится плата Arduino, экран Ethernet, кабель Ethernet и маршрутизатор. Вам также понадобится компьютер с подключением к Интернету. Когда у вас есть все компоненты, вы можете приступить к настройке веб-сервера.

Подключите Arduino к маршрутизатору

Первым шагом в настройке веб-сервера является подключение Arduino к маршрутизатору. Для этого подключите кабель Ethernet к защитному экрану Ethernet, а затем подключите другой конец кабеля к маршрутизатору. После подключения Arduino к маршрутизатору можно приступать к настройке веб-сервера.

Установите Arduino IDE

Следующим шагом будет установка Arduino IDE. Arduino IDE — это программа, которая позволяет вам писать код для платы Arduino. После установки Arduino IDE вы можете начать писать код для своего веб-сервера.

Напишите код для веб-сервера

После установки Arduino IDE вы можете приступить к написанию кода для веб-сервера. Код для веб-сервера позволит вам управлять Arduino из любой точки мира. Вы можете написать код для веб-сервера с помощью Arduino IDE.

Загрузите код в Arduino

После того, как вы написали код для веб-сервера, вы можете загрузить его в Arduino. Для этого подключите Arduino к компьютеру с помощью USB-кабеля. Затем откройте Arduino IDE и выберите опцию «Загрузить». Это загрузит код в Arduino.

Проверка веб-сервера

После загрузки кода в Arduino можно протестировать веб-сервер. Для этого откройте веб-браузер и введите IP-адрес Arduino. Это откроет веб-страницу, которая позволит вам управлять Arduino из любой точки мира.

Защитите веб-сервер

Когда веб-сервер заработает, вы должны его защитить. Для этого необходимо создать имя пользователя и пароль для веб-сервера. Это гарантирует, что только авторизованные пользователи смогут получить доступ к веб-серверу.

Создание веб-страницы для веб-сервера

Последний шаг — создание веб-страницы для веб-сервера. Эта веб-страница позволит вам управлять Arduino из любой точки мира. Вы можете создать веб-страницу с помощью HTML и CSS. После создания веб-страницы вы можете загрузить ее на веб-сервер. Создание веб-сервера для Arduino — отличный способ сделать ваш проект доступным для всего мира. Выполнив несколько простых шагов, вы сможете настроить веб-сервер для Arduino и управлять своим проектом из любого места.

Пожалуйста, внимательно прочитайте этот отказ от ответственности перед тем, как начать пользоваться сервисом. Используя эту услугу, вы подтверждаете, что вы полностью согласны и принимаете содержание этого заявления об отказе от ответственности. Вы можете отказаться от использования сервиса, если не согласны с данным отказом от ответственности. Этот документ создается автоматически на основе общедоступного контента в Интернете, захваченного Платформой машинного обучения для ИИ. Авторские права на информацию в этом документе, такую ​​как веб-страницы, изображения и данные, принадлежат их соответствующим авторам и издателям. Такой автоматически сгенерированный контент не отражает точку зрения или мнение Alibaba Cloud. Вы несете ответственность за определение законности, точности, подлинности, практичности и полноты содержания. Мы рекомендуем вам проконсультироваться со специалистом, если у вас есть какие-либо сомнения по этому поводу. Alibaba Cloud не несет ответственности за любые последствия использования вами контента без проверки. Если у вас есть отзывы или вы обнаружите, что в этом документе используется некоторый контент, в отношении которого у вас есть права и интересы, свяжитесь с нами по этой ссылке: https://www. alibabacloud.com/campaign/contact-us-feedback. Мы будем решать вопрос в соответствии с соответствующими правилами.

Веб-разработка на Arduino: раздвигая границы

Серверные страницы Arduino (ASP) с использованием веб-сервера Arduino MVC

Если вы когда-либо хотели разрабатывать веб-приложения Arduino для автоматизации бытовой техники, мониторинга удаленных датчиков и составления отчетов с помощью диаграмм, существует множество и предложения веб-серверов на выбор. Их основные недостатки заключались в том, что они все еще работают в соответствии с устаревшим дизайном, ориентированным на страницы, ограниченным визуализацией HTML, которая требует от разработчика написания неподдерживаемых операторов печати.

«… производительность сценариев на стороне сервера в сочетании с производительностью скомпилированного C++»

Последняя версия веб-сервера Arduino MVC предназначена для создания полных приложений и преодолевает вышеуказанные ограничения, позволяя веб-разработчикам использовать страницы сервера Arduino (ASP). Это позволяет создавать динамический веб-контент (HTML, XML или JSON), аналогичный сценариям на стороне сервера, с которыми знакомы профессиональные разработчики. С помощью онлайн-генератора представления или генератора командной строки серверные страницы Arduino преобразуются в классы представлений C++. Таким образом, веб-сервер MVC предлагает производительность сценариев на стороне сервера в сочетании с производительностью скомпилированного C++.

Пример Hello World с использованием серверных страниц Arduino (ASP).

Веб-сервер Arduino MVC был протестирован для сборки с использованием Arduino IDE v 2.x и развертывания на Arduino R3 Uno и Mega 2560 (с использованием Wiznet 5100 Ethernet Shield) и различных плат ESP8266. Он может похвастаться следующими функциями:

  • Реализует модель, вид, дизайн контроллера
  • Простота обработки HTTP-запросов GET и POST
  • URL-адреса RESTful с простой обработкой параметров
  • Просмотр привязки модели
  • Согласованность пользовательского интерфейса с макетом (основными) страницами
  • Запросы AJAX отличаются от обычных запросов
  • Простота реализации веб-API JSON или Xml
  • Проверка подлинности на основе файлов cookie для веб-страниц и API
  • Поддержка загрузки файлов и загрузки вложений
  • Подавать статический контент, хранящийся на SD-карте или в ПЗУ
  • Кэширование браузера для CSS, JavaScript и изображений
  • Поддержка асинхронной обработки запросов

Загрузите веб-сервер Arduino MVC и примеры кода

Исходный код веб-сервера Arduino MVC доступен по ссылке ниже и бесплатен для личного использования. Все программное обеспечение предоставляется как есть и без гарантии, и пользователь принимает на себя всю ответственность за его использование или неправильное использование. Включены примеры приложений, демонстрирующие Hello World , а также управление устройствами, мониторинг файлов журналов и AJAX без использования фреймворков JavaScript.

  • Библиотека веб-сервера Arduino MVC и необходимая библиотека StringBuilder
  • Примеры веб-приложений
  • Утилиты для создания шаблонов проектов и классов представления C++ из серверных страниц Arduino
Используйте дизайн MVC для разработки сложных веб-приложений для Arduino.

Дополнительные программные инструменты, необходимые для начала работы

В зависимости от того, используете ли вы Ethernet Shield или ESP8266, вам потребуется использовать Arduino IDE для установки либо библиотеки Ethernet, либо платы ESP8266. Для некоторых проектов также требуется устройство чтения карт памяти Arduino SD. Обязательно измените MAC и IP-адрес в исходном коде на значения, соответствующие конфигурации вашей сети, и скопируйте загруженные папки «web» и «data» в корень SD-карты Arduino.

«… Веб-сервер Arduino MVC предназначен для создания законченных приложений»

Файлы страницы сервера Arduino (ASP) проекта обычно находятся в подпапке asp_files и не редактируются с помощью Arduino IDE. Файлы ASP можно редактировать с помощью редактора, такого как notepad++ (и онлайн-построитель представлений, используемый для ручного создания классов представлений). В качестве альтернативы Visual Studio Code (VSCode) можно использовать в качестве IDE для редактирования всех файлов проекта и загрузки в Arduino. С помощью последнего варианта файлы ASP могут быть автоматически преобразованы для просмотра классов в процессе сборки проекта.

Сборка проектов Arduino с помощью Visual Studio Code

Преимущество использования Visual Studio Code для сборки проектов Arduino заключается в том, что сценарии можно вызывать во время события предварительной сборки. В этом случае скрипт вызывается для создания классов представлений C++ из файлов ASP перед сборкой проекта и его загрузкой в ​​Arduino. Расширение Visual Studio Code Arduino должно быть установлено и настроено для использования интерфейса командной строки Arduino. Для запуска включенного сценария генерации класса представления необходимо установить .NET и PowerShell. Обязательно ознакомьтесь с дополнительными инструкциями в файлах readme, прилагаемых к указанным выше загрузкам.

«… создавайте веб-приложения, как никогда раньше»

Создание веб-приложений Arduino с использованием VSCode и веб-сервера Arduino MVC.

Для создания собственных проектов Arduino с использованием серверных страниц Arduino и веб-сервера MVC используйте предоставленную утилиту Arduino.MVC.NewProj.dll в командной строке.

 > dotnet Arduino.MVC.NewProj.dll Web_Project Home О 

В приведенном выше примере будет создан веб-проект Arduino со страницами Home и 9.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *