Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/DnsWebClient

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Веб-клиент на базе DNS и DHCP[1]

Этот пример при помощи Ethernet Shield подключает Arduino к серверу с определенным именем, используя DHCP и DNS. При вызове функции Ethernet.begin(mac) библиотека Ethernet, используя DHCP, пытается получить IP-адрес.

Использование DHCP значительно увеличивает размер скетча, поэтому убедитесь, что у вас достаточно места для запуска программы.

Поиск DNS начинается при вызове функции client.connect.(servername, port), где servername – это URL-строка вроде «www.arduino.com».

Необходимое оборудование

  • Сетевой модуль Arduino Ethernet Shield;
  • Плата Arduino, совместимая с Ethernet Shield;

Цепь

Ethernet Shield позволяет подключить плату Arduino к Ethernet-контроллеру WizNet (через SPI). Это подключение осуществляется при помощи 10-ого, 11-ого, 12-ого и 13-ого контактов. У более поздних моделей Ethernet Shield имеется встроенный слот для SD-карты. В этом примере мы будем управлять SS-контактом этой SD-карты через 4-ый цифровой контакт.

Ethernet Shield должен быть подключен к сети при помощи Ethernet-кабеля. Также вам надо поменять сетевые настройки в скетче, чтобы они соответствовали настройкам вашей сети.

ArduinoPlusEthernetShield.png

Ethernet Shield устанавливается поверх платы Arduino.

Код

  1. /*
  2. Веб-клиент на базе DNS и DHCP
  3.  
  4. Этот скетч подключается к вебсайту http://www.google.com при помощи
  5. сетевого модуля Arduino Ethernet Shield на базе WizNet.
  6.  
  7. Цепь:
  8. * Ethernet Shield, подключенный к 10-ому, 11-ому, 12-ому и 13-ому контактам
  9.  
  10. Создан 18 декабря 2009 года Дэвидом А. Меллисом (David A. Mellis),
  11. модифицирован 9 апреля 2012 Томом Иго (Tom Igoe),
  12. основан на работе Эдриана Макивена (Adrian McEwen).
  13. */
  14.  
  15. #include <SPI.h>
  16. #include <Ethernet.h>
  17.  
  18. // Ниже введите MAC-адрес вашего контроллера.
  19. // У самых последних моделей Ethernet Shield MAC-адрес напечатан на стикере:
  20. byte mac[] = {  0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 };
  21. char serverName[] = "www.google.com";
  22.  
  23. // Создаем клиента, который затем будет подключаться
  24. // к необходимым для нас IP-адресу и порту
  25. // (порт 80 является для HTTP портом по умолчанию):
  26. EthernetClient client;
  27.  
  28. void setup() {
  29.  // Инициализируем последовательную передачу данных и ждем открытия порта:
  30.   Serial.begin(9600);
  31.    while (!Serial) {
  32.     ; // ждем подключения последовательного порта (нужно только для Leonardo)
  33.   }
  34.  
  35.   // Запускаем Ethernet-соединение:
  36.   if (Ethernet.begin(mac) == 0) {
  37.     Serial.println("Failed to configure Ethernet using DHCP");  //  "Не удалось сконфигурировать Ethernet при помощи DHCP"
  38.     // Продолжать дальше смысла нет, поэтому просто ничего не делаем:
  39.     while(true);
  40.   }
  41.   // Даем Ethernet Shield секунду на инициализацию:
  42.   delay(1000);
  43.   Serial.println("connecting...");  //  "Подключение..."
  44.  
  45.   // Если подключение прошло успешно, сообщаем об этом через Serial Monitor:
  46.   if (client.connect(serverName, 80)) {
  47.     Serial.println("connected");  //  "Подключено"
  48.     // Делаем HTTP-запрос:
  49.     client.println("GET /search?q=arduino HTTP/1.0");
  50.     client.println();
  51.   }
  52.   else {
  53.     // Если подключиться к серверу не удалось:
  54.     Serial.println("connection failed");  //  "Подключиться не удалось"
  55.   }
  56. }
  57. void loop()
  58. {
  59.   // Если от сервера доступны какие-либо входящие байты,
  60.   // считываем их и выводим на Serial Monitor:
  61.   if (client.available()) {
  62.     char c = client.read();
  63.     Serial.print(c);
  64.   }
  65.  
  66.   // Если сервер отключился, останавливаем клиента:
  67.   if (!client.connected()) {
  68.     Serial.println();
  69.     Serial.println("disconnecting.");  //  "Отключение."
  70.     client.stop();
  71.  
  72.     // Ничего не делаем:
  73.     while(true);
  74.   }
  75. }

См.также

  1. Arduino Ethernet Shield
  2. Getting started with the ethernet shield
  3. Ethernet library
  4. ChatServer
  5. WebClient
  6. WebServer
  7. PachubeCient?
  8. TwitterClient
  9. BarometricPressureWebServer

Внешние ссылки

  1. Arduino - DNS Web Client