Как подключить Arduino к Интернету с помощью модуля ESP8266. Как настроить сервер на Arduino для удаленного управления. Какие существуют способы организации связи Arduino с облаком. Как реализовать управление Arduino через публичный IP-адрес.
Подключение Arduino к Интернету с помощью ESP8266
Одним из самых простых и доступных способов подключить Arduino к Интернету является использование Wi-Fi модуля ESP8266. Этот модуль позволяет добавить поддержку Wi-Fi практически любой плате Arduino. Рассмотрим основные шаги по подключению и настройке ESP8266:
- Подключите ESP8266 к Arduino согласно схеме:
- VCC ESP8266 -> 3.3V Arduino
- GND ESP8266 -> GND Arduino
- TX ESP8266 -> RX Arduino
- RX ESP8266 -> TX Arduino
- CH_PD ESP8266 -> 3.3V Arduino
- Установите библиотеку ESP8266 в Arduino IDE
- Загрузите базовый скетч для настройки ESP8266:
#include <SoftwareSerial.h> SoftwareSerial esp8266(2, 3); // RX, TX void setup() { Serial.begin(9600); esp8266.begin(115200); sendCommand("AT+RST"); sendCommand("AT+CWMODE=1"); sendCommand("AT+CWJAP=\"SSID\",\"PASSWORD\""); sendCommand("AT+CIFSR"); } void loop() { if (esp8266.available()) { Serial.write(esp8266.read()); } } void sendCommand(String cmd) { esp8266.println(cmd); delay(1000); }
- Замените SSID и PASSWORD на данные вашей Wi-Fi сети
- Загрузите скетч на Arduino и проверьте подключение в мониторе порта
После успешного подключения к Wi-Fi вы сможете отправлять HTTP-запросы и создавать веб-сервер на Arduino для удаленного управления.
Создание веб-сервера на Arduino для удаленного управления
Для организации удаленного управления Arduino через Интернет удобно создать простой веб-сервер непосредственно на плате. Это позволит отправлять команды через браузер или HTTP-запросы. Вот пример базового веб-сервера для управления светодиодом:
#include <ESP8266WiFi.h> #include <ESP8266WebServer.h> const char* ssid = "SSID"; const char* password = "PASSWORD"; ESP8266WebServer server(80); const int ledPin = 13; void setup() { pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); } server.on("/", handleRoot); server.on("/on", handleOn); server.on("/off", handleOff); server.begin(); } void loop() { server.handleClient(); } void handleRoot() { String html = "<h1>Arduino Web Server</h1>"; html += "<p><a href=\"/on\">LED ON</a></p>"; html += "<p><a href=\"/off\">LED OFF</a></p>"; server.send(200, "text/html", html); } void handleOn() { digitalWrite(ledPin, HIGH); server.sendHeader("Location","/"); server.send(303); } void handleOff() { digitalWrite(ledPin, LOW); server.sendHeader("Location","/"); server.send(303); }
Этот код создает простой веб-интерфейс для включения и выключения светодиода. Вы можете расширить его для управления другими устройствами, подключенными к Arduino.
Облачные платформы для управления Arduino
Для более продвинутого удаленного управления Arduino удобно использовать специализированные облачные платформы IoT. Они предоставляют готовую инфраструктуру для подключения устройств и управления ими через Интернет. Некоторые популярные варианты:
- Blynk — позволяет быстро создавать мобильные приложения для управления Arduino
- ThingSpeak — платформа для сбора и анализа данных с IoT устройств
- Adafruit IO — простой сервис для визуализации данных и управления
- PubNub — платформа для создания систем реального времени
- AWS IoT — профессиональное решение от Amazon
Использование облачных платформ упрощает разработку, но может потребовать дополнительных затрат на подписку. Для небольших проектов часто достаточно собственного веб-сервера на Arduino.
Управление Arduino через публичный IP-адрес
Если вы хотите получить доступ к Arduino из любой точки интернета, вам потребуется публичный IP-адрес. Обычно провайдеры не предоставляют статические публичные IP домашним пользователям, но есть несколько способов решить эту проблему:
- Использовать сервис динамического DNS (например, No-IP, DynDNS). Он позволит привязать доменное имя к вашему динамическому IP.
- Настроить проброс портов на роутере, чтобы запросы извне попадали на Arduino.
- Использовать VPN для создания защищенного туннеля к домашней сети.
- Применить технологию NAT traversal для прямого подключения через NAT.
Протоколы для обмена данными с Arduino
Выбор правильного протокола важен для эффективного обмена данными между Arduino и управляющим устройством. Наиболее распространенные варианты:
- HTTP — простой протокол для отправки команд и получения данных
- MQTT — легковесный протокол для IoT устройств, работает по модели publish/subscribe
- WebSocket — обеспечивает двустороннюю связь в реальном времени
- CoAP — протокол для ограниченных устройств, похож на HTTP
Для большинства проектов хорошо подходит MQTT благодаря своей простоте и эффективности. HTTP удобен для периодического опроса состояния. WebSocket лучше использовать, если нужен постоянный канал связи.
Безопасность при удаленном управлении Arduino
При подключении Arduino к Интернету крайне важно обеспечить безопасность устройства и данных. Основные рекомендации:- Используйте шифрование (SSL/TLS) для всех соединений
- Применяйте надежную аутентификацию пользователей
- Ограничьте доступ только необходимыми IP-адресами
- Регулярно обновляйте прошивку Arduino и используемые библиотеки
- Отключите неиспользуемые сервисы и порты
- Используйте брандмауэр для фильтрации трафика
- Ведите журналы доступа и мониторьте подозрительную активность
Помните, что безопасность — это непрерывный процесс. Регулярно проверяйте настройки и обновляйте систему защиты.
Примеры проектов с удаленным управлением Arduino
Рассмотрим несколько интересных проектов, демонстрирующих возможности удаленного управления Arduino:
- Умный дом — управление освещением, климатом, безопасностью через мобильное приложение
- Удаленный мониторинг теплицы — контроль температуры, влажности, полива растений
- Система видеонаблюдения с управляемыми камерами на сервоприводах
- Робот-манипулятор с веб-интерфейсом управления
- Метеостанция с публикацией данных в облако
Эти проекты демонстрируют широкие возможности Arduino в сочетании с удаленным управлением через Интернет. Вы можете использовать их как источник идей для собственных разработок.
Заключение
Подключение Arduino к Интернету открывает огромные возможности для создания умных устройств и систем автоматизации. Мы рассмотрели основные способы организации удаленного управления — от простого веб-сервера до использования облачных платформ. Выбор конкретного решения зависит от требований вашего проекта.
Помните о важности безопасности при работе с интернет-подключенными устройствами. Правильно настроенная защита позволит безопасно управлять Arduino из любой точки мира.
Экспериментируйте, создавайте новые проекты и делитесь своими достижениями с сообществом!
Internet for Arduino. Arduino — это платформа, основными… | by Anastasia
Arduino — это платформа, основными компонентами которой являются простая плата ввода-вывода и среда разработки на языке Processing/Wiring. Ядром платы выступает микроконтроллер ATmega.
Существует несколько версий этой платы. Они все отличаются размером, количеством пинов, памяти и совместимости с различными шилдами (платами расширения).
Сама плата намного меньше и менее мощная, чем одноплаточный компьютер, поэтому нормального и стандартного вывода Ethernet-кабеля нет. И для подключения к сети будем использовать дополнительное оборудование в виде шилда.
Однако сейчас появились версии Arduino, которые изначально имеют build-in Ethernet-разъем или Wi-Fi, Bluetooth чипы.
Чтобы вывести нашу плату в сеть Интернет, будем использовать:
Arduino UnoEthernet shield 28j60ZyXEL Keenetic 4g IIHame A3У нас было два разных роутера: ZyXEL и Hame.
Первый роутер использовался как обычный рядовой для расшаривания интернета в лаборатории для всех гостей по Wi-Fi. Он умеет работать как с модемом, так и с обычным кабелем.
Причем этот роутер умеет автоматически включать доступный вид связи.
Второй роутер — Hame — проще, но сложнее в настройке. Он также умеет работать с модемом и кабелем и раздавать Wi-Fi.
Подключение пинов на Ethernet ShieldПодключение пинов на Arduino UnoЧтобы подключить Arduino к сети Интернет, надо сначала подключить его к ethernet shield-у. Мы приобрели Ethernet Shield на базе чипа ENC28J60.
Сам шилд работает по шине SPI.
SPI, или Serial Peripheral Interface, представляет собой интерфейс, работающий в полном дуплексе. С его помощью можно управлять несколькими устройствами. Эта шина очень похожа на I2C, но для её подключения требуется больше проводов: четыре вместо двух у I2C. Однако, это всё же меньше, чем для параллельных интерфейсов. Кроме этого, пропускная способность SPI выше, чем у I2C.
Распиновка на разных линейках плат Arduino разная. Поэтому схема подключения такая:
Пины Arduino Uno |Пины Arduino Mega |Пины Ethernet shield |Описание
GND GND GND Земля
3,3V 3,3V VCC Питание
10 53 CS Chip Select
11 51 SI Master Output
12 50 SO Master Input
13 52 SCK Serial Clock
В SPI используются четыре линии:
- MOSI — выход ведущего, вход ведомого (Master Out Slave In). Служит для передачи данных от ведущего устройства ведомому.
- MISO — вход ведущего, выход ведомого (Master In Slave Out). Служит для передачи данных от ведомого устройства ведущему.
- SCLK — последовательный тактовый сигнал (Serial Clock). Служит для передачи тактового сигнала для ведомых устройств.
- CS или SS — выбор микросхемы, выбор ведомого (Chip Select, Slave Select).
Но имена могут быть разными на разных устройствах:
- MOSI: SIMO, SDO, DO, DOUT, SI, MTSR;
- MISO: SOMI, SDI, DI, DIN, SO, MRST;
- SCLK: SCK, CLK;
- SS: nCS, CS, CSB, CSN, nSS, STE, SYNC.
На Arduino используются такие названия: MOSI, MISO, SCK, SS.
Чтобы подключить Arduino к Интернетам с помощью шилда используют штатную библиотеку Ethernet. Но эмпирическим путем и исследованием на многих форумах стало понятно, что не все типы чипов поддерживаются этой библиотекой. А именно библиотека Ethernet хорошо работает с чипом W5100 от Wiznet.
У нас же на шилде стоит другой чип — ENC28J60, и он не совсем совместим с этой библиотекой.
К счастью, эта проблема решается. Есть дополнительные другие библиотеки, которые помогают работать с шилдом. Это:
"etherShield"
"ETHER_28J60"
Их можно скачать тут. Или можно найти их здесь. Также они лежат и в github репозитории вместе с примерами кода. Стоит отметить, что эти две библиотеки используются в связке.
Для того, чтобы Ethernet shield смог помогать Arduino общаться через сеть Интернет с внешним миром, надо подключить его к роутеру, который это обеспечивает.
Начнем с ZyXel. Подключаем Ethernet shield с Arduino к роутеру. Пишем код и тестируем соединение.
Eshield & ZyXELВ библиотеке для этого чипа есть примеры, которыми можно проверить работоспособность шилда и роутера тоже (на работу DHCP). По умолчанию для домашней сети ZyXel настроен как DHCP-сервер, поэтому с этим проблем не должно быть.
Для примера можно попробовать управлять лампочкой со страницы в браузере.
Но нужно убедиться, что компьютер, с которого будем заходить на страницу, создаваемую Arduino, и сама Arduino находятся в одной подсети.
Подключим на 6 пин лампочку, которой будем управлять через сеть.
Схема получается такая:
Arduino & Ethernet shieldЧтобы проверить работоспособность Hame с Ethernet shiled-ом для Arduino будем использовать те же библиотеки и тот же пример. Включаем Ethernet-кабель в шилд и в роутер:
Arduino & HameНо одну вещь надо проверить в настройках своего роутера — это настроен ли он в режим DHCP-сервера. Проверить это можно во вкладке Internet в пункте Lan Networking. Надо проверить пункт DHCP Type. Он должен быть установлен в тип Server. Такие мелочи я имела в виду, когда писала, что этот маленький роутер сложнее в настройке.
Лампочку на 6 пине ещё не отключаем, потому что будем снова ею управлять со страницы браузера удаленного клиента.
Снова нужно убедиться, что компьютер, с которого будем заходить на страницу, создаваемую Arduino, и сама Arduino находятся в одной подсети.
Единственной разницей в коде для Arduino будет IP-адрес подсети, в которой мы запускаем Arduino. При условии, если есть желание запустить оба примера одновременно и в таком ключе.
Код можно посмотреть на github.
Originally published at wiki.perexy.com on July 9, 2015.
Контроллеры телеметрии и другое совместимое оборудование http://web-telemetry.ru/
ПОДКЛЮЧЕНИЕ ПРОМЫШЛЕННОГО КОМПЬЮТЕРА АКСИКОН-10
Пример подключения системы автоматизации АСУТП в облако системы «Веб-телеметрия» с использованием промышленного компьютера АКСИКОН-10 и простого GPRS модема.
Данные с датчиков и измерительных каналов передаются на модули ввода/вывода ICP DAS, где сигналы преобразуются в протокол DCON или MODBUS и по шине RS-485 поступают на вход промышленного компьютера АКСИКОН-10. Программное обеспечение АКСИКОН-10 реализует протокол JSON RPC системы web-телеметрия и по GPRS каналу посредством GPRS-модема передаётся в облако.
В случае использования специализированного модуля, облако системы «Веб-телеметрия» позволяет организовать так же систему управления из web-интерфейса личного кабинета.
За 1 час можно создать полноценное SCADA приложение, для совместной работы, «расшарить» его другим участникам проекта.
ПОДКЛЮЧЕНИЕ ПАНЕЛИ УПРАВЛЕНИЯ ДИЗЕЛЬ-ГЕНЕРАТОРА
Пример подключения панели дизель-генераторной установки для удалённого мониторинга и управления генератором с использованием облака системы «Веб-телеметрия».
Панель управления подключается к порту RS-232 промышленного компьютера АКСИКОН-10. С помощью конфигуратора драйвера MODBUS реализован протокол панели управления и далее по протоколу JSON RPC данные ретранслируются на сервер облака.
Средствами облачного сервиса создан SCADA-документ, позволяющий управлять и производить диспетчерский контроль всех режимов генераторной установки.
В такой конфигурации возможно использование дополнительного датчикового оборудования, подключённого к другим портам промышленного компьютера.
ПОДКЛЮЧЕНИЕ ПРОГРАММИРУЕМОГО МОДЕМА К СИСТЕМЕ WEB-ТЕЛЕМЕТРИЯ
Для решения задачи сбора данных в системах учёта ресурсов можно использовать предложенную ниже схему.
Программируемый модем позволяет реализовать протокол JSON RPC и драйвер прибора учёта ресурса.
Данные полученные с прибора учёта могут отображаться в виде отчётного документа, созданного средствами облачного сервиса.
ПОДКЛЮЧЕНИЕ ТЕХНОЛОГИЧЕСКОЙ УСТАНОВКИ С ПРИМЕНЕНИЕМ ПРОГРАММНОГО ШЛЮЗА
Для задач вывода данных с существующих систем автоматизации в облачный сервис можно использовать программный шлюз, который реализует открытый протокол JSON RPC сервиса web-телеметрии.
В данном случае, необходимо ретранслировать данные с существующего OPC DA сервера или SCADA системы в облако. Для этого на компьютере диспетчерского пульта устанавливается программный шлюз OPC DA – JSON RPC. Визуальный конфигуратор шлюза позволяет гибко настраивать необходимый набор параметров (тэгов).
Все что необходимо для успешной передачи данных в облако – это наличие Интернет канала.
ПОДКЛЮЧЕНИЕ МАЛОЙ АВТОМАТИЗАЦИИ НА ПРИМЕРЕ ARDUINO UNO
Вывод данных в Интернет с систем «домашней» автоматизации или систем «умный дом» теперь не является трудновыполнимой задачей. Для реализации такой системы автоматизации можно использовать популярную плату Arduino Uno или подобную.
После реализации открытого протокола JSON RPC появиться возможность вывода данных в облачный сервис системы «Веб-телеметрия».
Управление личной котельной, освещением, отоплением или другими системами, а так же контроль утечек (затопление), пожарной сигнализации и т.д будет возможен из любой точки где доступна сеть Интернет.
МОНИТОРИНГ И УПРАВЛЕНИЕ РОБОТОТЕХНИКОЙ
Энтузиасты робототехники часто сталкиваются с проблемой управления роботом с использованием web-интерфейса.
Реализация открытого протокола JSON RPC полностью решает проблему удалённого управления робототехническими системами с помощью Интернет и позволяет разработчикам сосредоточиться на конкретной задаче.
Как подключить Arduino к Интернету с помощью модуля ESP8266
Предоставленный код также должен работать в стандартной среде Arduino IDE, но для фактической части этого руководства я бы рекомендовал PlatformIO через VS Code, поскольку он лучше построен в форматировании проще добавлять пакеты, а самое главное имеет тёмную тему. Что касается клиента REST, я использую Insomnia, но другие клиенты, такие как Postman, будут работать так же хорошо.
Подключение ESP8266 к Arduino для программирования
Перед подключением я рекомендую подключить Arduino к компьютеру и прошить пример скетча «Bare Minimum» на плату. Это гарантирует, что на вашем Arduino больше ничего не работает.
Сначала мы подключим ESP8266 к нашему Arduino, чтобы выполнить начальную настройку. Я нашел конфигурацию проводки благодаря полезному сообщению на форумах Arduino, хотя мне пришлось внести некоторые изменения.
Конфигурация проводки для отправки команд на ESP8266 отличается от конфигурации проводки для использования ESP8266, поэтому внимательно следите за ней. См. изображение ниже для распиновки ESP8266.
Подключите ESP8266 к Arduino Uno следующим образом.
Обратите внимание, что хотя ESP8266 рассчитан на 3,3 В, мы подключаем его к линии 5 В от Arduino. Это связано с тем, что линия 3,3 В от Arduino не обеспечивает достаточной мощности.
Я работаю с модулем при напряжении 5 В уже несколько месяцев, и проблем не возникало. Если вы действительно беспокоитесь об этом, вы можете приобрести стабилизатор напряжения, который будет выдавать надежные 3,3 В.
Первоначальное программирование ESP8266
Чтобы наш ESP8266 правильно работал с Arduino, нам нужно выполнить начальное программирование. В частности, мы будем менять ESP8266 для работы в качестве точки доступа и клиента, а также изменять скорость передачи данных. Поскольку большинство примеров кода обмениваются данными с модулем ESP со скоростью 9600 бод, мы будем использовать именно ее. Мы также проверим, может ли модуль ESP8266 подключиться к нашему маршрутизатору.
Подключив Arduino Uno к компьютеру, откройте последовательный монитор через Arduino IDE (ctrl + shift + m). В нижней части последовательного монитора есть выпадающие списки для окончаний строк и скорости передачи данных. Установите окончания строк на «Both NL & CR» и измените скорость передачи на «115200». Затем отправьте следующие команды:
1. Убедитесь, что ESP8266 правильно подключен.
Команда для отправки: AT
Ожидаемый ответ: OK
2. Измените режим.
Команда для отправки: AT+CWMODE=3
Ожидаемый ответ: OK
3. Подключитесь к маршрутизатору (Обязательно замените YOUR_SSID и YOUR_WIFI_PASSWORD) .
Команда для отправки: AT+CWJAP=»YOUR_SSID»,»YOUR_WIFI_PASSWORD»
Ожидаемый ответ:
WIFI ПОДКЛЮЧЕН
WIFI GOT IP
OK
4. Установить скорость передачи 9600.
Отправляемая команда: AT+UART=9600,8,1,0,0
Ожидаемый ответ: OK
Отправляемая команда: AT
Ожидаемый ответ: OK
Если вам интересно, что делает каждая команда, или вы ищете дополнительную информацию о доступных командах. , я нашел эту страницу удобной для чтения и невероятно полезной.
Подключение ESP8266 для реального использования
Теперь, когда мы настроили наш модуль ESP и убедились, что он может подключаться к нашей беспроводной сети, пришло время подключить модуль ESP к Arduino для реального использования.
Для связи с модулем ESP нам необходимо подключить линии TX и RX к цифровым контактам. Вы можете использовать любые два контакта с 8 по 13, но в этом уроке я буду использовать контакт 11 для RX и контакт 10 для TX.
Для справки, вот как все должно быть подключено:
Отправка данных JSON в ESP8266
Теперь, когда у нас все подключено, пришло время начать отправку команд в наш модуль ESP. Для простоты я включаю только код для инициализации сервера ESP и разбора JSON. Что вы будете делать, получив данные JSON, зависит от вас. Лично я использую его для управления освещением: одна полезная нагрузка JSON выключает свет, а другая включает свет.
Для начала откройте код Visual Studio. Если у вас правильно настроена PlatformIO IDE, должна открыться вкладка под названием «PIO HOME». Оттуда выполните следующие действия:
1. В меню быстрого доступа нажмите Новый проект
2. В диалоговом окне мастера проектов:
a. Введите название проекта в поле Name
b. Выберите Arduino Uno из раскрывающегося списка Board
c. Нажмите Готово
3. Вернитесь на вкладку Главная PIO и выберите Библиотеки на боковой панели навигации
4. В поле поиска введите WifiESP и нажмите Введите
5. Установите библиотеку на Bportaluri
6. Очистите поле поиска и тип в ArduinoJson
7. Установите библиотеку на Benoit Branchon
9000 3 9000 3 9000 3 9000 3 9000 3 9000 3 9000 9000 3 9000 9000 9000 9000 9000 9000 . Проводник слева, откройте src/main.cpp9. Скопируйте и вставьте приведенный ниже код:
Обязательно измените строку 11, чтобы она соответствовала контактам, которые вы использовали (если вы использовали 10 и 11 в соответствии с рекомендациями , модификация не требуется). Также не забудьте ввести свой SSID и пароль WIFI в строках 18 и 19..
Прежде чем загружать код в Arduino, давайте посмотрим, что происходит. Вот краткий обзор:
Функция настройки- Инициализация модуля ESP с помощью библиотеки WifiESP, которую мы установили ранее
- Подключитесь к нашей беспроводной сети и подождите, пока это соединение будет установлено
- Распечатайте наш локальный IP-адрес, чтобы мы могли использовать его позже в наших запросах REST
- Запустите наш сервер и скажите ему прослушивать клиентов на порту 80, стандартный HTTP-порт
Мы постоянно ждем подключения клиента. После подключения клиента:
- Распечатать, что клиент подключился
- Разобрать входящий запрос
- Поиск запроса на открывающую скобку JSON
- Чтение запроса до тех пор, пока не будет найдена закрывающая скобка JSON
- Добавьте скобки обратно вокруг данных JSON
- Используйте библиотеку ArduinoJSON для преобразования нашей строки JSON в объект JSON
- ПРИМЕЧАНИЕ. Если вы вообще измените формат запроса JSON, вам потребуется пересчитать размер буфера с помощью этого инструмента .
- Получите и распечатайте значение ключа «действие» в нашем объекте JSON.
- Напечатать другое сообщение в зависимости от значения ключа действия
Теперь пришло время загрузить все на плату.
В Visual Studio Code откройте меню Задачи и выберите Запустить задачу , затем выберите PlatformIO: Загрузка и мониторинг .
Если все в порядке, в консоли вы должны увидеть следующее:
Отправка JSON-запроса на ESP8266
Осталось только отправить запрос в наш модуль и убедиться, что запрос получен. Убедитесь, что вы получили IP-адрес с последнего шага и что ваша задача загрузки и мониторинга все еще выполняется. Затем откройте свой любимый клиент REST и введите следующее:
URL: http://ВАШ_ESP_IP_АДРЕС_HERE/
Заголовки:
Контент-тип: приложение/JSON
Тело запроса:
{
«Действие»: «Выкл»
}
Отправить запрос и вернуться к кодексу визуальной студии. Теперь вы должны увидеть следующее в консоли загрузки и мониторинга:
Вот и все!
Теперь у вас есть Arduino, способная получать команды через WIFI. Все, что вам нужно сделать сейчас, это решить, как выглядят ваши данные JSON и какие действия необходимо предпринять после получения этих данных.
Надеюсь, вы нашли эту запись в блоге полезной, и я избавил вас от необходимости искать всю эту информацию самостоятельно. Дайте мне знать, что вы думаете в комментариях.
Бонусные баллы за ссылки на проекты, в которых использовалось это руководство.
встроенный — управление Arduino через общедоступный интернет
Задать вопрос
спросил
Изменено 6 лет, 2 месяца назад
Просмотрено 2к раз
Я думаю об управлении Arduino через Интернет.
Скажем, у меня нет статического IP-подключения к моему Arduino (я использую GPRS-шилд). В таких ситуациях я должен следовать примерно такой процедуре. Предположим, я пытаюсь включить/выключить одно устройство через Интернет.
- Существует веб-сайт с доменным именем, размещенным на сервере. Там есть веб-страница PHP и связанная с ней таблица MySQL для включения/выключения команды.
- Когда пользователю необходимо включить устройство, он отправляет конкретный запрос к странице PHP. Он изменяет флаг, хранящийся в таблице в база данных.
- Arduino периодически отправляет запросы на веб-страницу, чтобы спросить есть ли обновление. Страница PHP проверяет базу данных и ответьте на ардуино, так что теперь ардуино может включать / выключать устройство соответственно.
Мои вопросы:
Запуск (веб-сервера) в Arduino может быть другим подходом. Но могу ли я получить к нему доступ из общедоступного Интернета? Я использую модуль GPRS. Разрешают ли абоненты мобильной связи входящие соединения?
Чтобы получить вывод в реальном времени, я должен постоянно отправлять запросы с очень коротким днем. И страница PHP должна снова и снова запрашивать базу данных. С точки зрения производительности это не лучший подход. Какие у меня есть альтернативы в этом случае? (Я использую базу данных, так как планирую иметь много пользователей со многими устройствами.)
Какие альтернативные подходы я должен реализовать?
- встроенный
- Arduino
- связь
- GPS
1
Другой подход, который вы можете рассмотреть, заключается в подключении Arduino к серверу с использованием клиентского сокета на стороне Arduino, а затем, когда происходит обновление, сервер может просто отправить обновление в сокет, который слушает Arduino. Это позволило бы получать мгновенные обновления в реальном времени.
Рассматривали ли вы вместо этого Raspberry Pi? Вы можете управлять 8 выводами GPIO (ввод/вывод общего назначения, как в Arduino), чего достаточно для большинства приложений.
http://www.raspberrypi.org/
1
Вы не говорите, почему вы используете GPRS-шилд. Некоторые вещи, которые следует учитывать при использовании базовой настройки, которую вы описали:
- Мудрость в Интернете заключается в том, что по умолчанию входящие GPRS-соединения отключены, но их можно включить. Если это так, то а) вы можете получить статический IP-адрес, б) вы можете получить имя хоста, которое будет разрешаться для вашего устройства Arduino, или в) вы можете (в худшем случае) использовать динамические службы DNS, такие как noip.com и подобные.
- Я не согласен с другими плакатами в том, что голосование — такая ужасная идея. Если вы хорошо разбираетесь в своей архитектуре, то опрос новых данных только не должен вызывать интенсивного трафика. Я говорю о том, что ваш промежуточный сервер должен отправлять на Arduino только те данные, которые Arduino раньше не видел. В этом случае единственный дополнительный трафик связан с опросом трафика рукопожатия/протокола, а не данных. На заднем плане сервер может предварительно обработать данные для отправки в Arduino, ожидая следующего запроса опроса. Дело в том, что единственными недостатками опроса по сравнению с push должны быть а) потенциальная задержка во времени и б) дополнительные данные, потраченные впустую при установлении соединения. Если вы можете найти приемлемый ответ на а), б) не должно быть большой проблемой.
Если вы хотите рассмотреть другие способы подключения Arduino к Интернету, как предлагает пользователь 2019047, есть много способов подумать:
- Мобильный. Может быть, ваша ссылка может использовать телефонию, по крайней мере частично: скажем, ваш сервер уведомил Arduino о том, что есть новые данные, которые нужно получить с помощью SMS или телефонного звонка с определенного номера?
- Вы можете связать Arduino с ПК через XBee, последовательный порт, Bluetooth или другую беспроводную или проводную технологию.