Main

Arduino без Ethernetshield-а

На данной странице описывается схема использование контроллера Arduino без дополнительного Ethernet-модуля.

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

Задача в следующем -- сохранив общий принцип программирования контроллера обеспечить передачу данных от него в систему. Для этого можно использовать программу, представленную ниже (только для Windows-системы).

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

Переделка кода

Update: Полный код (уже с переделкой) данной прошивки контроллера без Ethernet-модуля можно найти здесь.

1. Удаляем приведённые ниже строки, т.к. они нам не понадобятся без etherner-модуля

#include <Ethernet.h>
#include <SPI.h>

// MAC-адрес нашего устройства
byte mac[] = { 0x00, 0x2A, 0xF6, 0x12, 0x68, 0xFC };
// ip-адрес устройства
byte ip[] = { 192, 168, 0, 72 };
// ip-адрес удалённого сервера
byte server[] = { 192, 168, 0, 17 }; 

Ethernet.begin(mac, ip);

2. Изменяем функцию отправки HTTP запроса на следующую:

void sendHTTPRequest() {
  Serial.println(buf); 
}

Программа ArduinoGW

Скачать (350Kb) Исходный код (Delphi 6)

В настройках программы указывается номер COM-порта, к которому подключен контроллер, а так же скорость срость соединения с устройством. После нажатия кнопки Connect, будет произведено подключение к устройству и в рабочей области программы будут отображаться данные, получаемые с устройства.

При обнаружении в потоке данных строки вида:

GET /<параметры_запроса>

Будет сформирован HTTP-запрос по адресу <BASEURL>/<параметры_запроса>

Например, если Base URL у нас http://localhost/ , а строка пришла вида

GET /objects/?object=sensorGarage&op=m&m=statusChanged&status=1

То будет отправлен запрос:

http://localhost/objects/?object=sensorGarage&op=m&m=statusChanged&status=1

Кроме того, при обнаружении строки вида

GET http://<полный_путь_с_параметрами>

Программа не будет использовать настройку Base URL, а сформирует запрос по указанному адресу, т.е.

http://<полный_путь_с_параметрами>

Таким образом, данная программа позволяет подключить Arduino к любому из компьютеров сети и перенаправлять запросы на "головной" сервер для последующей обработки в рамках общей системы.

Update: последнюю версию программы можно использовать ещё и для отправки команд в Arduino следующим образом:
1. Запускаем приложение, настраиваем, соединяемся с Arduino (так работало и раньше)
2. Если нужно что-то послать в открытое соединение, то просто из командной строки запускаем это же приложение, но в качестве параметров указываем строчку, которую нужно послать.

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

http://localhost:8082/?someData

При этом на устройство будет отправлена строка "someData". В качестве someData могут так же выступать управляющие команды. Пример:

http://localhost:8082/?run:notepad.exe -- запустит notepad
http://localhost:8082/?play:1.mp3 -- проиграет 1.mp3

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

Программа не завязана на системе MajorDoMo и может быть установлена совершенно автономно и использоваться вне общего комплекса, например посылая запросы на сервер, расположенный в сети Интернет.

Настройка "Auto connect at startup" обозначает, что программа после запуска будет автоматически стартовать сессию связи с контроллером и прятаться в системную облать.

Все настройки программы сохраняются от запуска к запуску в ini-файле, расположенном там же, где находится исполяемый exe-файл.

 

MajorDomo

Информация

Проекты

Партнёры

edit SideBar

 
 
 

 

Blix theme adapted by David Gilbert, powered by PmWiki