Arduino:Примеры/WiFiWebClientRepeating
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Повторяющийся запрос с помощью WiFi Shield[1]
Этот пример демонстрирует, как при помощи WiFi Shield делать повторяющийся HTTP-запрос. В процессе будет создан клиент, который каждые 10 секунд будет подключаться к странице https://www.arduino.cc/latest.txt, а ее содержание будет отображаться на Serial Monitor.
По умолчанию скетч написан таким образом, чтобы работать через WPA-зашифрованную сеть. Впрочем, его можно переписать, чтобы он вместо WPA работал с WEP – для этого поменяйте соответствующим образом функцию Wifi.begin().
Необходимое оборудование
- Сетевой модуль Arduino WiFi Shield;
- Плата Arduino, совместимая с Arduino;
Цепь
WiFi Shield для SPI-соединения с модулем HDG104 использует 10-ый, 11-ый, 12-ый и 13-ый контакты. Для управления SS-контактом SD-карты используется 4-ый цифровой контакт.
Также для этого примера понадобится доступ к 802.11b/g сети, подключенной к интернету. Кроме того, в скетче надо будет поменять сетевые настройки, чтобы они соответствовали сети, к которой вы собираетесь подключиться.
Для сетей, использующих шифрование через WPA и WPA Personal, понадобятся SSID и пароль. К сети, использующей шифрование через WPA Enterprise, Shield подключиться не сможет.
Пароли к сетям с WEP-шифрованием – это шестнадцатеричные строки, называемые «ключами». Причем WEP-сеть может иметь 4 разных ключа, каждому из которых будет присвоен свой собственный «индекс». Таким образом, для WEP-зашифрованных сетей вам понадобятся SSID, ключ и индекс ключа.
На картинке выше сетевой модуль WiFi Shield установлен поверх платы Arduino.
Код
/*
Веб-клиент, делающий повторяющиеся HTTP-запросы
Этот скетч подключается к веб-серверу, а затем при помощи WiFi Shield
делает запросы.
Цепь:
* WiFi Shield, подключенный к SPI-контактам и 7-ому контакту Arduino
Создан 23 апреля 2012,
модифицирован 31 мая 2012 Томом Иго (Tom Igoe),
еще раз модифицирован 13 января 2014 Федерико Ванзати (Federico Vanzati).
http://www.arduino.cc/en/Tutorial/WifiWebClientRepeating
Этот код не защищен авторским правом.
*/
#include <SPI.h>
#include <WiFi.h>
char ssid[] = "yourNetwork"; // SSID (имя) вашей сети
char pass[] = "secretPassword"; // пароль к вашей сети
int keyIndex = 0; // индекс ключа для вашей сети (нужно только для WEP)
int status = WL_IDLE_STATUS;
// Инициализируем клиентскую библиотеку WiFi:
WiFiClient client;
// Адрес сервера::
char server[] = "www.arduino.cc";
//IPAddress server(64,131,82,241);
unsigned long lastConnectionTime = 0; // время, когда вы в последний раз подключались к серверу (в миллисекундах)
const unsigned long postingInterval = 10L * 1000L; // задержка между обновлениями (в миллисекундах)
void setup() {
// Инициализируем последовательную передачу данных и ждем открытия порта:
Serial.begin(9600);
while (!Serial) {
; // ждем подключения последовательного порта (нужно только для Leonardo)
}
// Проверяем наличие Shield:
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield not present"); // "WiFi Shield не подключен"
// Дальше не продолжаем:
while (true);
}
String fv = WiFi.firmwareVersion();
if (fv != "1.1.0") {
Serial.println("Please upgrade the firmware"); // "Пожалуйста, обновите прошивку"
}
// Пробуем подключиться к WiFi-сети:
while (status != WL_CONNECTED) {
Serial.print("Attempting to connect to SSID: "); // "Пробуем подключиться к SSID: "
Serial.println(ssid);
// Подключаемся к сети с шифрованием через WPA или WPA2.
// Чтобы перенастроить скетч на подключение к WEP-сети, подправьте эту строчку:
status = WiFi.begin(ssid, pass);
// Ждем подключения 10 секунд:
delay(10000);
}
// Итак, мы подключились, поэтому сообщаем об этом на Serial Monitor:
printWifiStatus();
}
void loop() {
// Если через сетевое подключение пришли какие-нибудь данные,
// выводим их на Serial Monitor. Это нужно только в отладочных целях:
while (client.available()) {
char c = client.read();
Serial.write(c);
}
// Если с момента последнего подключения прошло 10 секунд,
// подключаемся снова, а затем отправляем новый запрос:
if (millis() - lastConnectionTime > postingInterval) {
httpRequest();
}
}
// Эта пользовательская функция осуществляет HTTP-подключение к серверу:
void httpRequest() {
// Перед отправкой нового запроса отключаем все соединения.
// Это освободит сокет на WiFi Shield:
client.stop();
// Если подключение прошло успешно:
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: ArduinoWiFi/1.1");
client.println("Connection: close");
client.println();
// Отмечаем время, было установлено когда подключение:
lastConnectionTime = millis();
} else {
// Если подключиться не удалось, сообщаем об это на Serial Monitor:
Serial.println("connection failed"); // "Подключиться не удалось"
}
}
// Пользовательская функция для отображения информации о сети и сетевом оборудовании:
void printWifiStatus() {
// Показываем на Serial Monitor название (SSID) сети, к которой подключились:
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
// Показываем IP-адрес WiFi Shield:
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: "); // "IP-адрес: "
Serial.println(ip);
// Показываем мощность приемного сигнала:
long rssi = WiFi.RSSI();
Serial.print("signal strength (RSSI):"); // "Мощность сигнала: (RSSI):"
Serial.print(rssi);
Serial.println(" dBm");
}
См.также
- ConnectNoEncryption : Demonstrates how to connect to an open network
- ConnectWithWEP : Demonstrates how to connect to a network that is encrypted with WEP
- ConnectWithWPA : Demonstrates how to connect to a network that is encrypted with WPA2 Personal
- ScanNetworks : Displays all WiFi networks in range
- WiFiChatServer : Set up a simple chat server
- WiFiWebClient : Connect to a remote webserver
- WiFiWebClientRepeating: Repeatedly make HTTP calls to a server
- WiFiWebServer : Serve a webpage from the WiFi shield
Внешние ссылки
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