Об организации работы Arduino Nano + Ethernet Shield

26.07.2011

Сделано соединение Arduino Nano и Ethernet Shield.
Подключение к компьютеру производится напрямую, без роутера. При этом нужно обратить внимание на настройки сети.
Организован обмен данными между браузером и микроконтроллером.
Рассмотрен вопрос об организации взаимодействия arduino и связки Apache+php.

О подключении arduino nano Ethernet shield существует тема на официальном форуме: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1247619986.

В целом я воспользовался описанным подходом. Однако я подключил вывод reset Ethernet Shield не к digital 2 на Arduino - как советовали на форуме, - а к RST. В результате я не потерял функциональности и все работало правильно. Даже наоборот: нет нужды программно маршрутизировать сигнал с выхода D2 Arduino на RESET сетевой платы.

Таким образом, схема подключения у меня такая:

Nano
TX1
RX0
D10
D11
D12
D13
REF
5VGND
RESET
Ethernet Sheild
D1
D0
D10
D11
D12
D13
AREF
5V
GND
RESET

Следующим шагом идет подключение полученной конструкции к компьютеру через сетевой кабель. В случае отсутствия роутера – как у меня, - нужно просто отключить кабель интернета и поставить на его место провод от Ethernet Shield. При правильном подключении на Ethernet плате будут гореть три зеленых светодиода, красный маркер PWR и свтодиоды сетевого кабеля.

Теперь, для выполнения тестового примера из бибдиотеки Ethernet нам нужно указать корректный ip адрес, который мы можем назначить arduino. В этом вопросе я поступил так же, как советуют в случае соединения через роутер. Т.е. взял свой ip и вычел из последней его группы число 5. Полученный ip указал в тестовом примере. Кроме того, мне пришлось перенастроить сеть специально для данного случая. Я убрал предпрописанный gateway в своем сетевом соединении.
Заливаем пример на плату. Значок сетевых подключений при этом мигает – с отсутствия подключения на его наличие. На Ethernet Shield светодиоды RX(желтый) и TX(красный) начинают весело мигать некоторое время. Затем периодически мигает только TX.
При открытии в браузере страницы с ip, который мы прописали arduino мы видим результат работы тестового примера: опрос аналоговых выходов платы.

arduino через браузерТаким образом удалось соединиться с arduino через сетевой протокол.

Однако все это само по себе мало интересно. Было бы неплохо организовать общение некоторого сайта с платой arduino. Пусть сервер, на котором крутится сайт посылает данные на плату, а она что-то отвечает. Вопрос: зачем это делать через Ethernet shield? Ответ: есть сведения, что организация взаимодействия через параллельный порт слишком трудозатратна.  Лично для меня организовать сетевое подключение к чему-либо гораздо более простая задача, чем написание надстройки для serial-порта (или его эмуляции через usb).
Собственно для решения вышеописанной задачи у нас почти все готово. Запускаем веб-сервер и делаем новый сайт для него. Я использую denwer. Сайт будет состоять из одного файла index.php c формой.
По submit формы запрашиваем arduino.

Лучшим решением было бы использовать fsockopen и соединяться с платой. Однако, пока этого сделать не удалось. Поэтому отсылка данных производится через file_get_contents в GET-параметрах. Это временное решение, т.к. пока мне не удалось организовать полноценный socket-сервер на стороне arduino.

Внимательно изучаю WebSocket для arduino.