Сделано соединение 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 | 5V | GND | 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. Пусть сервер, на котором крутится сайт посылает данные на плату, а она что-то отвечает. Вопрос: зачем это делать через Ethernet shield? Ответ: есть сведения, что организация взаимодействия через параллельный порт слишком трудозатратна. Лично для меня организовать сетевое подключение к чему-либо гораздо более простая задача, чем написание надстройки для serial-порта (или его эмуляции через usb).
Собственно для решения вышеописанной задачи у нас почти все готово. Запускаем веб-сервер и делаем новый сайт для него. Я использую denwer. Сайт будет состоять из одного файла index.php c формой.
По submit формы запрашиваем arduino.
Лучшим решением было бы использовать fsockopen и соединяться с платой. Однако, пока этого сделать не удалось. Поэтому отсылка данных производится через file_get_contents в GET-параметрах. Это временное решение, т.к. пока мне не удалось организовать полноценный socket-сервер на стороне arduino.