Архитектура системы

Структурно, архитектура системы Arduino Mega Server состоит из трёх частей:

  1. Код, работающий на стороне контроллера
  2. Код, работающий на стороне браузера
  3. Утилита Arduino Serial Commander, служащая для загрузки файлов на работающий сервер

Режимы работы системы

Контроллер без подключения браузера

Это основной режим работы контроллера в котором он проводит 99% своего времени. Подключение браузера отсутствует, интерфейс не работает. Контроллер занимается своими прямыми обязанностями, т. е. обслуживает датчики и периферийные устройства. Также, в этом режиме контроллер осуществляет сетевые взаимодействия (принимает и отдаёт команды и информацию по сети).

Контроллер с подключённым браузером

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

Этот обмен запросами и ответами продолжается до тех пор, пока пользователь не закроет окно браузера. Как только он это сделает, контроллер переходит в свой обычный режим (без работы интерфейса).

Загрузка файлов на сервер

В любой момент, независимо от того, работает ли интерфейс или нет, может быть произведена загрузка файлов на сервер (microSD карту памяти). Если вам нужно изменить содержание веб-страниц сайта или логику работы скриптов, то вы можете отредактировать их на компьютере и при помощи утилиты Arduino Serial Commander отправить по Serial интерфейсу на контроллер. Передача происходит в течение нескольких секунд (на время передачи работа сервера блокируется) и после загрузки сервер начинает работать с вновь загруженным файлом.

Взаимодействие контроллерного и браузерного кода

При открытии пользователем браузера и соединении с сайтом AMS, происходит загрузка веб-страницы и соответствующих JavaScript файлов с сервера, которые, в свою очередь, инициируют обмен данными и начинают посылать периодические (раз в 1–2 секунды) запросы контроллеру.

На стороне контроллера эти запросы парсятся (разбираются) и на них формируются соответствующие ответы, которые посылаются обратно браузеру. На стороне браузера, скриптами, из этих ответов извлекаются данные и динамически помещаются на веб-страницу. Это, вкратце, принцип организации интерфейса Arduino Mega Server.

Как конкретно это делается вы можете узнать, проанализировав код или из документации и руководств по Arduino Mega Server.