Arduino:Примеры/DnsWebClient: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
м (Замена текста — «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">» на «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">»)
 
Нет описания правки
 
(не показана 1 промежуточная версия этого же участника)
Строка 28: Строка 28:
==Код==
==Код==


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
/*
/*
Веб-клиент на базе DNS и DHCP
Веб-клиент на базе DNS и DHCP
Строка 121: Строка 121:


<references />
<references />
{{Навигационная таблица/Портал/Arduino}}
[[Категория:Пример]]
[[Категория:Пример]]
[[Категория:Примеры]]
[[Категория:Примеры]]
[[Категория:Пример программирования Arduino]]
[[Категория:Пример программирования Arduino]]
[[Категория:Примеры программирования Arduino]]
[[Категория:Примеры программирования Arduino]]

Текущая версия от 12:33, 8 июля 2023

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


Веб-клиент на базе 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-кабеля. Также вам надо поменять сетевые настройки в скетче, чтобы они соответствовали настройкам вашей сети.

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

Код

/*
Веб-клиент на базе DNS и DHCP

Этот скетч подключается к вебсайту http://www.google.com при помощи
сетевого модуля Arduino Ethernet Shield на базе WizNet.

Цепь:
* Ethernet Shield, подключенный к 10-ому, 11-ому, 12-ому и 13-ому контактам

Создан 18 декабря 2009 года Дэвидом А. Меллисом (David A. Mellis),
модифицирован 9 апреля 2012 Томом Иго (Tom Igoe),
основан на работе Эдриана Макивена (Adrian McEwen).
*/

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

// Ниже введите MAC-адрес вашего контроллера.
// У самых последних моделей Ethernet Shield MAC-адрес напечатан на стикере:
byte mac[] = {  0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 };
char serverName[] = "www.google.com";

// Создаем клиента, который затем будет подключаться
// к необходимым для нас IP-адресу и порту
// (порт 80 является для HTTP портом по умолчанию):
EthernetClient client;

void setup() {
 // Инициализируем последовательную передачу данных и ждем открытия порта:
  Serial.begin(9600);
   while (!Serial) {
    ; // ждем подключения последовательного порта (нужно только для Leonardo)
  }

  // Запускаем Ethernet-соединение:
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");  //  "Не удалось сконфигурировать Ethernet при помощи DHCP"
    // Продолжать дальше смысла нет, поэтому просто ничего не делаем:
    while(true);
  }
  // Даем Ethernet Shield секунду на инициализацию:
  delay(1000);
  Serial.println("connecting...");  //  "Подключение..."

  // Если подключение прошло успешно, сообщаем об этом через Serial Monitor: 
  if (client.connect(serverName, 80)) {
    Serial.println("connected");  //  "Подключено"
    // Делаем HTTP-запрос:
    client.println("GET /search?q=arduino HTTP/1.0");
    client.println();
  } 
  else {
    // Если подключиться к серверу не удалось:
    Serial.println("connection failed");  //  "Подключиться не удалось"
  }
}
void loop()
{
  // Если от сервера доступны какие-либо входящие байты,
  // считываем их и выводим на Serial Monitor:
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  // Если сервер отключился, останавливаем клиента:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");  //  "Отключение."
    client.stop();

    // Ничего не делаем:
    while(true);
  }
}

См.также

  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

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