Arduino:Примеры/WiFiWebClient
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Веб-клиент при помощи WiFi Shield[1]
Этот пример демонстрирует, как делать HTTP-запрос при помощи модуля WiFi Shield – это будет запрос к Google по слову «Arduino». Результаты поиска будут показаны в HTML-виде через 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.
Код
/*
Веб-клиент при помощи WiFi Shield
Этот скетч при помощи WiFi Shield подключается к вебсайту
(в данном случае – к http://www.google.com).
По умолчанию скетч работает с сетями, использующими WPA-шифрование.
Но его можно настроить таким образом, чтобы он работал с WEP –
для этого соответствующим образом измените функцию Wifi.begin().
Цепь:
* WiFi Shield, подключенный к Arduino
Создан 13 июля 2010 пользователем dlf (Metodo2 srl),
модифицирован 31 мая 2012 Томом Иго (Tom Igoe).
*/
#include <SPI.h>
#include <WiFi.h>
char ssid[] = "yourNetwork"; // название (SSID) вашей сети
char pass[] = "secretPassword"; // пароль к вашей сети (для WPA; если работаете с WEP-сетью, вам нужен будет ключ)
int keyIndex = 0; // индекс ключа к вашей сети (нужно только для WEP)
int status = WL_IDLE_STATUS;
// Если не хотите использовать DNS (и тем самым уменьшить размер скетча)
// вместо названия (веб-адреса) сервера используйте числовой IP:
//IPAddress server(74,125,232,128); // числовой IP для Google (без DNS)
char server[] = "www.google.com"; // web-адрес для Google (с DNS)
// Инициализируем библиотеку WiFi:
WiFiClient client;
void setup() {
// Инициализируем последовательную передачу данных и ждем открытия порта:
Serial.begin(9600);
while (!Serial) {
; // ждем подключения порта (нужно только для Leonardo)
}
// Проверяем наличие WiFi Shield:
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield not present"); // "WiFi Shield не подключен"
// Дальше не продолжаем:
while(true);
}
// Пытаемся подключиться к 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.println("Connected to wifi"); // "Подключение к WiFi прошло успешно"
printWifiStatus();
Serial.println("\nStarting connection to server..."); // "\nЗапускаем подключение к серверу..."
// Если подключение установлено, сообщаем об этом на Serial Monitor:
if (client.connect(server, 80)) {
Serial.println("connected to server"); // "Подключение к серверу прошло успешно"
// Делаем HTTP-Запрос:
client.println("GET /search?q=arduino HTTP/1.1");
client.println("Host: www.google.com");
client.println("Connection: close");
client.println();
}
}
void loop() {
// Если от сервера пришли какие-нибудь байты,
// считываем их и показываем на Serial Monitor:
while (client.available()) {
char c = client.read();
Serial.write(c);
}
// Если сервер отключился, останавливаем клиент:
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting from server."); // "Соединение с сервером разорвано"
client.stop();
// Дальше ничего не делаем (вечно):
while(true);
}
}
// Пользовательская функция для показа на Serial Monitor
// характеристик сети и используемого сетевого оборудования:
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