Arduino:Примеры/WebClient: различия между версиями
Myagkij (обсуждение | вклад) м (Замена текста — «<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">») |
Нет описания правки |
||
Строка 28: | Строка 28: | ||
==Код== | ==Код== | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
/* | /* | ||
Создание web-клиента на базе Arduino | Создание web-клиента на базе Arduino |
Версия от 12:34, 20 мая 2023
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Веб-клиент на базе Arduino[1]
Этот пример показывает, как при помощи Ethernet Shield сделать HTTP-запрос к Google по слову «Arduino». Результаты запроса можно будет наблюдать в HTML-виде в окне Serial Monitor.
Необходимое оборудование
- Сетевой модуль Arduino Ethernet Shield;
- Плата Arduino, совместимая Ethernet Shield;
Цепь
Ethernet Shield позволяет вам подключить к плате Ethernet-контроллер WizNet (через SPI-шину). Для SPI-подключения к WizNet используются 10-ый, 11-ый, 12-ый и 13-ый контакты. У последних моделей Ethernet Shield имеется встроенный слот для SD-карты, а для управления SS-контактом этой SD-карты используется 4-ый цифровой контакт.
Ethernet Shield должен быть подключен к сети при помощи Ethernet-кабеля. Кроме того, сетевые настройки в скетче нужно будет поменять, чтобы они соответствовали характеристикам вашей сети.
Ethernet Shield устанавливается поверх платы Arduino.
Схема
Код
/*
Создание web-клиента на базе Arduino
Этот скетч при помощи Arduino Ethernet Shield на базе WizNet
подключается к вебсайту (http://www.google.com).
Цепь:
* 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[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// Если не хотите использовать DNS (и тем самым сократить размер скетча),
// то вместо названия сайта воспользуйтесь цифровым IP:
//IPAddress server(74,125,232,128); // цифровой IP для Google (без DNS)
char server[] = "www.google.com"; // название сервера Google (с DNS)
// Задаем статический IP-адрес (на тот случай, если у DHCP выдать IP-адрес не получится):
IPAddress ip(192,168,0,177);
// Создаем клиента, который будет подключаться
// к необходимым для нас IP-адресу и порту
// (портом по умолчанию для HTTP является 80):
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"
// Продолжать дальше смысла нет, поэтому вместо DHCP
// попытаемся сделать это при помощи IP-адреса:
Ethernet.begin(mac, ip);
}
// Даем Ethernet Shield секунду на инициализацию:
delay(1000);
Serial.println("connecting..."); // "Подключение..."
// Если подключение установлено, сообщаем об этом на Serial Monitor:
if (client.connect(server, 80)) {
Serial.println("connected"); // "Подключение установлено"
// Делаем HTTP-Запрос:
client.println("GET /search?q=arduino HTTP/1.1");
client.println("Host: www.google.com");
client.println("Connection: close");
client.println();
}
else {
// Если соединения с сервером нет, пишем об этом на Serial Monitor:
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);
}
}
См.также
- Arduino Ethernet Shield
- Getting started with the ethernet shield
- Ethernet library
- ChatServer
- ChatClient
- WebClient
- WebServer
- PachubeClient?
- PachubeClientString?
- BarometricPressureWebServer
- UDPSendReceiveString
- UdpNtpClient