Arduino:Знакомство с Arduino/Знакомство с Arduino WiFi Shield 101
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Знакомство с Arduino WiFi Shield 101[1]
«Шилд» Arduino WiFi Shield 101 позволяет плате Arduino/Genuino подключаться к интернету при помощи библиотеки WiFi101. Ее можно загрузить при помощи меню «Управлять библиотеками...» в IDE Arduino. Библиотека WiFi101 очень похожа на библиотеку Ethernet – многие функции вызываются точно таким же образом.
Подключение «шилда»
Чтобы использовать «шилд», подключите его к верхней части платы Arduino/Genuino (например, Zero). Чтобы загружать скетчи на плату, подключите ее к компьютеру при помощи USB-кабеля – как это делается обычно.
Когда скетч будет загружен, плату от компьютера можно отключить и питать от внешнего источника питания.
- Цифровой контакт 7 используется как контакт для «рукопожатия» между «шилдом» и Arduino, поэтому использовать его для других целей не следует
- Цифровой контакт 6 подключен к встроенной кнопке
- Цифровой контакт 5 управляет линией сброса на встроенном модуле WINC1500
Сетевые настройки
Этот «шилд» может подключаться как к открытым сетям, так и к сетям с шифрованием WEP и WPA2 Personal. Впрочем, он не умеет подключаться к сетям с шифрованием WPA2 Enterprise.
Чтобы «шилд» мог подключиться, точка доступа должна транслировать SSID (название сети).
В зависимости от настроек вашего беспроводного роутера, вам может потребоваться следующая информация:
- Для открытой (незашифрованной) сети – SSID
- Для сетей с шифрованием WPA/WPA2 Personal – SSID и пароль
- Для сетей с шифрованием WEP – SSID, ключ и номер ключа. Ключ – это, в сущности, тот же пароль, но в виде шестнадцатеричной строки. Кроме того, каждому ключу присваивается специальный индекс – это номер ключа.
Поиск доступных сетей
Скетч, приложенный ниже, хорошо подходит, если вы принесли плату в новое место и запускаете ее в первый раз. Он не подключается к сетям, но показывает сети, которые доступны в этом месте. Этот «шилд» вряд ли увидит столько же сетей, сколько ваш компьютер, потому что WiFi-антенна «шилда» меньше, чем у компьютера. Загрузите скетч на Arduino. Чтобы увидеть доступные сети, откройте монитор порта.
#include <SPI.h>
#include <WiFi101.h>
void setup() {
// инициализируем последовательную коммуникацию и ждем открытия порта:
Serial.begin(9600);
while(!Serial) ;
// пытаемся подключиться при помощи шифрования WEP:
Serial.println("Initializing Wifi..."); // "Инициализация WiFi..."
printMacAddress();
// сканируем доступные сети:
Serial.println("Scanning available networks..."); // "Сканирование доступных сетей..."
listNetworks();
}
void loop() {
delay(10000);
// сканируем доступные сети:
Serial.println("Scanning available networks..."); // "Сканирование доступных сетей..."
listNetworks();
}
void printMacAddress() {
// MAC-адрес WiFi-шилда:
byte mac[6];
// печатаем MAC-адрес:
WiFi.macAddress(mac);
Serial.print("MAC: ");
Serial.print(mac[5],HEX);
Serial.print(":");
Serial.print(mac[4],HEX);
Serial.print(":");
Serial.print(mac[3],HEX);
Serial.print(":");
Serial.print(mac[2],HEX);
Serial.print(":");
Serial.print(mac[1],HEX);
Serial.print(":");
Serial.println(mac[0],HEX);
}
void listNetworks() {
// сканируем ближайшие сети:
Serial.println("** Scan Networks **"); // "** Сканирование сетей **"
byte numSsid = WiFi.scanNetworks();
// печатаем список найденных сетей:
Serial.print("number of available networks:"); // "количество доступных сетей:"
Serial.println(numSsid);
// печатаем количество и название каждой найденной сети:
for (int thisNet = 0; thisNet<numSsid; thisNet++) {
Serial.print(thisNet);
Serial.print(") ");
Serial.print(WiFi.SSID(thisNet));
Serial.print("\tSignal: ");
Serial.print(WiFi.RSSI(thisNet));
Serial.print(" dBm");
Serial.print("\tEncryption: ");
Serial.println(WiFi.encryptionType(thisNet));
}
}
Подключение к открытой сети
Скетч ниже показывает, как инициировать подключение к открытой сети под названием «yourNetwork»:
#include <SPI.h>
#include <WiFi101.h>
char ssid[] = "yourNetwork"; // название вашей сети
int status = WL_IDLE_STATUS; // статус WiFi-соединения
void setup() {
// инициализируем последовательную коммуникацию:
Serial.begin(9600);
// пытаемся подключиться к открытой сети:
Serial.println("Attempting to connect to open network..."); // "Попытка подключения к открытой сети... "
status = WiFi.begin(ssid);
// если подключиться не удалось, завершаем работу:
if ( status != WL_CONNECTED) {
Serial.println("Couldn't get a wifi connection"); // "Подключиться по WiFi не удалось"
while(true);
}
// если подключились:
else {
Serial.print("Connected to the network"); // "Подключение прошло успешно"
}
}
void loop() {
// ничего не делаем
}
Подключение к сети с шифрованием WPA
Скетч ниже демонстрирует, как подключиться к сети с шифрованием WPA/WPA2 Personal, под названием «yourNetwork» и с паролем «12345678»:
#include <SPI.h>
#include <WiFi101.h>
char ssid[] = "yourNetwork"; // название (SSID) вашей сети
char pass[] = "12345678"; // пароль к вашей сети
int status = WL_IDLE_STATUS; // статус WiFi-соединения
void setup() {
// инициализируем последовательную коммуникацию:
Serial.begin(9600);
// пытаемся подключиться при помощи шифрования WPA2:
Serial.println("Attempting to connect to WPA network..."); // "Попытка подключения к сети с шифрованием WPA... "
status = WiFi.begin(ssid, pass);
// если подключиться не удалось, завершаем работу:
if ( status != WL_CONNECTED) {
Serial.println("Couldn't get a wifi connection"); // "Подключиться по WiFi не удалось"
while(true);
}
// если удалось, сообщаем об этом:
else {
Serial.println("Connected to network"); // "Подключение прошло успешно"
}
}
void loop() {
// ничего не делаем
}
Подключение к сети с шифрованием WEP
У вашего роутера, скорее всего, будет меню вроде того, что указано ниже. Оно используется для генерации WEP-ключа на основе фразы в формате ASCII.
Если у вас нет доступа к администраторским инструментам роутера, проконсультируйтесь у своего системного администратора.
Длина каждого ключа может составлять 10 или 26 шестнадцатеричных цифр (40 или 128 бит), и в паре с каждым ключом, кроме того, идет номер ключа. К примеру, 40-битный ключ «ABBADEAF01» работать будет, а «ABBADEAF» – нет (слишком короткий), и «ABBAISDEAF» – тоже нет («I» и «S» – это не шестнадцатеричные символы). Для 128-битного ключа нужно 26 символов. К примеру, подойдет ключ вроде «D0D0DEADF00DABBADEAFBEADED», потому что в нем 26 символов, и все в диапазонах 0-9 и A-F.
Примечание: WEP – это базовая система шифрования, и она может быть взломана. Если вам нужно более крепкое шифрование, советуем использовать WPA.
Скетч-пример ниже показывает, как подключаться к сети с шифрованием WEP, под названием «yourNetwork» и с шестнадцатеричным ключом ABBADEAF01, который имеет номер «0».
#include <SPI.h>
#include <WiFi101.h>
char ssid[] = "yourNetwork"; // название (SSID) вашей сети
char key[] = "ABBADEAF01"; // ключ к вашей сети
int keyIndex = 0; // номер ключа к вашей сети
int status = WL_IDLE_STATUS; // статус WiFi-соединения
void setup() {
// инициализируем последовательную передачу данных:
Serial.begin(9600);
// пытаемся подключиться при помощи шифрования WEP:
Serial.println("Attempting to connect to WEP network..."); // "Попытка подключиться к сети с шифрованием WEP... "
status = WiFi.begin(ssid, keyIndex, key);
// если подключиться не удалось, прекращаем работу:
if ( status != WL_CONNECTED) {
Serial.println("Couldn't get a wifi connection"); // "Не удалось соединиться по WiFi"
while(true);
}
// если подключиться удалось, сообщаем об этом:
else {
Serial.println("Connected to network"); // "Подключение прошло успешно"
}
}
void loop() {
// ничего не делаем
}
SPI
Arduino коммуницирует с «шилдом» при помощи интерфейса SPI. На Uno этот интерфейс находится на цифровых контактах 11, 12 и 13, а на Mega – на 50, 51 и 52. На обеих платах в качестве SS-контакта используется контакт 10. На Mega аппаратным SS-контактом является контакт 53, и он не используется, но его нужно держать в режиме OUTPUT, иначе интерфейс SPI не будет работать.
Обновление прошивки и загрузка SSL-сертификатов
Если необходимо, разработчики добавляют в библиотеку WiFi101 новые функции. Как правило, это требует обновления прошивки «шилда» при помощи специального инструмента. «Шилд» поставляется с несколькими корневыми сертификатами, позволяющими выполнять безопасное соединение со многими внешними сайтами. Если вам нужно использовать разные сертификаты, то понадобится и этот инструмент. Более подробно читайте в статье о скетче «Firmware Updater».
Руководства
Ниже – список руководств по сборке нескольких интересных проектов:
- Взаимодействие с календарем Google – здесь демонстрируется, как при помощи Arduino WiFi Shield 101 делать запросы к календарю Google.
- Звуковой синоптик – здесь показывается, как использовать погодную информацию с сайта openweathermap.org для вывода звуковой информации о том, какая сейчас погода.
- Загрузка данных на ThingSpeak – здесь демонстрируется, как при помощи thingspeak.com транслировать данные о свете и температуре в месте, в котором вы находитесь.
Что дальше
Дополнительную информацию о функционале «шилда» Arduino WiFi 101 Shield смотрите на странице библиотеки WiFi 101, в частности – в указанных там скетчах-примерах.
См.также
Внешние ссылки
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.
|
Клавиатура |
|
Мышь |
|
Разное |