Arduino:Примеры/WebClientRepeating
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Веб-клиент на базе Arduino, делающий повторяющиеся запросы[1]
Этот пример демонстрирует, как при помощи Ethernet Shield делать повторяющиеся HTTP-запросы. Мы будем использовать DNS, присваивая Ethernet-клиенту MAC-, IP- и DNS-адрес. Скетч будет подключаться к странице http://www.arduino.cc/latest.txt, а ее содержание будет отображаться через Serial Monitor.
Необходимое оборудование
- Сетевой модуль Arduino Ethernet Shield;
- Плата Arduino, совместимая с Ethernet Shield;
Цепь
Ethernet Shield позволяет подключить плату Arduino к контроллеру WizNet Ethernet (через SPI-шину), и это подключение осуществляется через 10-ый, 11-ый, 12-ый и 13-ый контакты. У последних моделей Ethernet Shield имеется встроенный слот для SD-карты, а управление SS-контактом этой SD-карты осуществляется через 4-ый цифровой контакт.
Ethernet Shield должен подключен к сети при помощи Ethernet-кабеля. Кроме того, сетевые настройки скетча нужно будет поменять, чтобы они соответствовали настройкам вашей сети.
Ethernet Shield устанавливается поверх платы Arduino.
Схема
Код
/*
Веб-клиент на базе Arduino, делающий повторяющиеся запросы
Этот скетч подключается к веб-серверу, а затем при помощи
Ethernet Shield делает HTTP-запрос.
Для этого примера подойдет и Arduino Ethernet Shield,
и Adafruit Ethernet Shield (если у него будет модуль WizNet Ethernet).
Кроме того, этот скетч использует DNS, присваивая Ethernet-клиенту
MAC-адрес, IP-адрес и DNS-адрес.
Цепь:
* Ethernet Shield, подключенный к 10-ому, 11-ому, 12-ому и 13-ому контактам
Создан 19 апреля 2012 Томом Иго (Tom Igoe)
http://arduino.cc/en/Tutorial/WebClientRepeating
Этот код не защищен авторским правом.
*/
#include <SPI.h>
#include <Ethernet.h>
// Присваиваем Ethernet-контроллеру MAC-адрес.
// Свой адрес вставьте здесь:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
// Вписываем IP-адрес, доступный для вашей сети (для ручной настройки):
IPAddress ip(10,0,0,20);
// Здесь вписываем ваш DNS-адрес:
IPAddress myDns(1,1,1,1);
// Создаем экземпляр класса:
EthernetClient client;
char server[] = "www.arduino.cc";
unsigned long lastConnectionTime = 0; // время, когда вы в последний раз подключались к серверу (в миллисекундах)
boolean lastConnected = false; // статус подключения при последнем проходе через главный цикл
const unsigned long postingInterval = 60*1000; // задержка между апдейтами (в миллисекундах)
void setup() {
// Запускаем последовательную передачу данных:
Serial.begin(9600);
// Даем Ethernet-модулю время для загрузки:
delay(1000);
// Запускаем Ethernet-соединение при помощи фиксированного IP-адреса и DNS-адреса:
Ethernet.begin(mac, ip, myDns);
// Выводим IP-адрес Ethernet Shield:
Serial.print("My IP address: "); // "Мой IP-адрес: "
Serial.println(Ethernet.localIP());
}
void loop() {
// Если через интернет-соединение пришли какие-то данные,
// пересылаем их на последовательный порт.
// Это нужно только в отладочных целях:
if (client.available()) {
char c = client.read();
Serial.print(c);
}
// Если интернет-соединения нет, но при последнем проходе через цикл оно было,
// то останавливаем работу клиента:
if (!client.connected() && lastConnected) {
Serial.println();
Serial.println("disconnecting."); // "Отключение..."
client.stop();
}
// Если вы не подключены, а с момента последнего подключения прошло 10 секунд,
// подключаемся снова и отсылаем данные:
if(!client.connected() && (millis() - lastConnectionTime > postingInterval)) {
httpRequest();
}
// Сохраняем статус соединения для следующего прохода через цикл:
lastConnected = client.connected();
}
// Эта функция будет осуществлять HTTP-соединение к серверу:
void httpRequest() {
// Если подключение прошло успешно:
if (client.connect(server, 80)) {
Serial.println("connecting..."); // "Подключение..."
// Отсылаем HTTP PUT запрос:
client.println("GET /latest.txt HTTP/1.1");
client.println("Host: www.arduino.cc");
client.println("User-Agent: arduino-ethernet");
client.println("Connection: close");
client.println();
// Отмечаем время, когда было сделано соединение:
lastConnectionTime = millis();
}
else {
// Если подключиться не удалось:
Serial.println("connection failed"); // "Подключиться не удалось"
Serial.println("disconnecting."); // "Отключение."
client.stop();
}
}
См.также
- Arduino Ethernet Shield
- Getting started with the ethernet shield
- Ethernet library
- ChatServer
- ChatClient
- WebClient
- WebServer
- PachubeClient?
- PachubeClientString?
- BarometricPressureWebServer
- UDPSendReceiveString
- UdpNtpClient
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino