Начало работы с Arduino WiFi Shield 101

Первые шаги по настройке Arduino WiFi Shield 101.

Примечание

Это устаревший продукт.

Arduino WiFi 101 Shield позволяет плате Arduino подключаться к интернету с помощью библиотеки WiFi101. Библиотеку WiFi101 можно загрузить с помощью Менеджера библиотек Arduino. Библиотека WiFi101 похожа на библиотеку Ethernet, и многие вызовы функций совпадают.

Подключение платы расширения

WiFi Shield 101

Чтобы использовать плату расширения, установите её поверх платы Arduino (например, Zero). Для загрузки скетчей на плату подключите её к компьютеру USB-кабелем, как обычно. После загрузки скетча вы можете отключить плату от компьютера и запитать её от внешнего источника питания.

  • Цифровой пин 7 используется как пин подтверждения связи (handshake) между WiFi Shield и Arduino и не должен использоваться;

  • Цифровой пин 6 подключён к кнопке на плате;

  • Цифровой пин 5 управляет линией сброса встроенного модуля WINC1500;

Сетевые настройки

Плата расширения может подключаться к открытым сетям, а также к сетям с шифрованием WEP и WPA2 Personal. Плата расширения не может подключаться к сетям с шифрованием WPA2 Enterprise.

SSID (имя сети) должен быть видимым (broadcast) для подключения платы расширения.

В зависимости от конфигурации вашего беспроводного маршрутизатора вам потребуется разная информация.

  • Для открытой (незашифрованной) сети вам нужен SSID.

  • Для сетей с шифрованием WPA/WPA2 Personal вам нужны SSID и пароль.

  • Пароли сетей WEP представляют собой шестнадцатеричные строки, называемые ключами. Сеть WEP может иметь 4 разных ключа; каждому ключу присваивается значение «Key Index». Для сетей с шифрованием WEP вам нужны SSID, ключ и номер ключа.

Сканирование доступных сетей

Скетч ниже рекомендуется запустить при первом использовании платы в новом месте. Этот скетч не будет подключаться к сети, но покажет, какие сети видит плата расширения. Ваш WiFi Shield, вероятно, увидит меньше сетей, чем компьютер с более крупной WiFi-антенной. После загрузки скетча на Arduino откройте монитор последовательного порта, чтобы увидеть доступные сети.

#include <SPI.h>
#include <WiFi101.h>

void setup() {
  // initialize serial and wait for the port to open:
  Serial.begin(9600);
  while(!Serial) ;

  // attempt to connect using WEP encryption:
  Serial.println("Initializing Wifi...");
  printMacAddress();

  // scan for existing networks:
  Serial.println("Scanning available networks...");
  listNetworks();
}

void loop() {
  delay(10000);

  // scan for existing networks:
  Serial.println("Scanning available networks...");
  listNetworks();
}

void printMacAddress() {
  // the MAC address of your Wifi shield
  byte mac[6];

  // print your MAC address:
  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() {
  // scan for nearby networks:
  Serial.println("** Scan Networks **");
  byte numSsid = WiFi.scanNetworks();

  // print the list of networks seen:
  Serial.print("number of available networks:");
  Serial.println(numSsid);

  // print the network number and name for each network found:
  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";     // the name of your network
int status = WL_IDLE_STATUS;     // the Wifi radio's status

void setup() {
  // initialize serial:
  Serial.begin(9600);

  // attempt to connect to an open network:
  Serial.println("Attempting to connect to open network...");
  status = WiFi.begin(ssid);

  // if you're not connected, stop here:
  if ( status != WL_CONNECTED) {
    Serial.println("Couldn't get a wifi connection");
    while(true);
  }
  // if you are connected :
  else {
      Serial.print("Connected to the network");
  }
}

void loop() {
  // do nothing
}

Пример сети WPA

Пример ниже показывает, как подключиться к сети с шифрованием WPA/WPA2 Personal с именем «yourNetwork» и паролем «12345678».

#include <SPI.h>
#include <WiFi101.h>

char ssid[] = "yourNetwork";     //  your network SSID (name)
char pass[] = "12345678";    // your network password
int status = WL_IDLE_STATUS;     // the Wifi radio's status

void setup() {
  // initialize serial:
  Serial.begin(9600);

  // attempt to connect using WPA2 encryption:
  Serial.println("Attempting to connect to WPA network...");
  status = WiFi.begin(ssid, pass);

  // if you're not connected, stop here:
  if ( status != WL_CONNECTED) {
    Serial.println("Couldn't get a wifi connection");
    while(true);
  }
  // if you are connected, print out info about the connection:
  else {
    Serial.println("Connected to network");
  }
}

void loop() {
  // do nothing
}

Пример сети WEP

Ваш маршрутизатор, скорее всего, имеет диалог настроек, подобный показанному ниже, для генерации WEP-ключа на основе ASCII-парольной фразы:

Настройка WEP на маршрутизаторе

Если у вас нет доступа к административным инструментам маршрутизатора, обратитесь к сетевому администратору.

Каждый ключ имеет длину 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";     //  your network SSID (name)
char key[] = "ABBADEAF01";    // your network key
int keyIndex = 0;            //your network key Index number
int status = WL_IDLE_STATUS;     // the Wifi radio's status

void setup() {
  // initialize serial:
  Serial.begin(9600);

  // attempt to connect using WEP encryption:
  Serial.println("Attempting to connect to WEP network...");
  status = WiFi.begin(ssid, keyIndex, key);

  // if you're not connected, stop here:
  if ( status != WL_CONNECTED) {
    Serial.println("Couldn't get a wifi connection");
    while(true);
  }
  // if you are connected, print out info about the connection:
  else {
    Serial.println("Connected to network");
  }
}

void loop() {
  // do nothing
}

SPI

Arduino связывается с платой расширения через шину SPI. На Uno это цифровые пины 11, 12 и 13, на Mega – пины 50, 51 и 52. На обеих платах пин 10 используется как SS. На Mega аппаратный пин SS (53) не используется, но он должен быть настроен как выход, иначе интерфейс SPI не будет работать.

Обновление прошивки и загрузка SSL-сертификатов

При необходимости библиотека WiFi101 обновляется для реализации новых функций. Обычно это требует обновления прошивки WiFi с помощью специального инструмента. Плата расширения поставляется с рядом корневых сертификатов, которые позволяют безопасно подключаться к большому количеству веб-сайтов. Если вам нужно использовать другие сертификаты, вам понадобится тот же инструмент. Пожалуйста, обратитесь к документации скетча Firmware Updater и плагина, доступной на странице библиотеки WiFi101.

Руководства

Вот список руководств, которые помогут вам создавать интересные проекты!

Взаимодействие с Google Calendar

Этот пример показывает, как отправлять запросы к Google Calendar с использованием WiFi Shield 101.

Звуковой уведомитель погоды

В этом примере информация о погоде с openweathermap.org используется для отображения текущей информации о погоде.

Загрузка данных на ThingSpeak

Отправляйте поток значений освещённости и температуры в вашем окружении в реальном времени, используя ThingSpeak.com.

Дальнейшие шаги

Обратитесь к странице библиотеки WiFi 101 для получения дополнительной информации о функциональности платы расширения, а также дополнительных примеров.