Выбрать главу

#include <SPI.h>

#include <WiFi.h>

Чтобы установить соединение с сетью, следует вызвать команду WiFi.begin и передать ей имя беспроводной сети и пароль:

WiFi.begin("MY-NETWORK-NAME", "mypassword");

Пример в разделе «Пример использования WiFi» иллюстрирует еще одно отличие, о котором вы должны знать.

Особые функции в библиотеке WiFi

Библиотека WiFi включает несколько специальных функций. Они перечислены в табл. 12.1.

Полное описание библиотеки WiFi можно найти по адресу http://arduino.cc/en/Reference/WiFi11.

Таблица 12.1. Специальные функции в библиотеке WiFi

Функция

Описание

WiFi.config

Позволяет установить статические IP-адреса платы, сервера имен (DNS) и шлюза

WiFi.SSID

Возвращает строку идентификатора беспроводной сети SSID

WiFi.RSSI

Возвращает значение мощности сигнала типа long

WiFi.encriptionType

Возвращает числовой код, соответствующий методу шифрования

WiFi.scanNetworks

Возвращает количество найденных сетей, но никакой дополнительной информации о них не возвращается

WiFi.macAddress

Помещает MAC-адрес адаптера WiFi в шестибайтный массив, переданный как параметр

Пример использования WiFi

Для этого примера я изменил скетч sketch_12_02_server, адаптировав его для работы с платой расширения WiFi. Полный исходный код можно найти в скетче sketch_12_04_server_wifi. Я не буду повторять пример целиком, только отмечу отличия от оригинальной версии.

Чтобы подключиться к беспроводной точке доступа, нужно указать имя беспроводной сети и пароль:

char ssid[] = "My network name";  // имя сети (SSID)

char pass[] = "mypassword";       // пароль для доступа к сети

Также нужно изменить имена классов сервера и клиента, EthernetServer и EthernetClient, на WiFiServer и WiFiClient:

WiFiServer server(80);

WiFiClient client;

При определении объекта сервера все так же требуется указать номер порта 80.

Следующее ракзличие между двумя платами заключается в инициализации подключения. В данном случае должна использоваться команда

WiFi.begin(ssid, pass);

Прочий код остался почти без изменений. В функции loop вы увидите команду delay(1) перед остановкой клиента, она дает клиенту время завершить чтение до того, как соединение будет закрыто. В версии на основе библиотеки Ethernet такая задержка не нужна. Обратите также внимание на то, что кое-где я объединил несколько вызовов client.print в один, чтобы каждый вызов выводил более длинные строки. Этот прием увеличивает скорость взаимодействий, потому что плата WiFi крайне неэффективно обрабатывает короткие строки. Но не забывайте, что каждый отдельный вызов client.print или client.println не может обрабатывать строки длиннее 90 байт — они просто не будут отправлены.

Версия программы на основе библиотеки WiFi работает заметно медленнее версии на основе библиотеки Ethernet и тратит на загрузку около 45 секунд. Плата расширения WiFi поддерживает возможность изменения прошивки, и если в будущем разработчики Arduino повысят эффективность работы платы WiFi, вам определенно стоит подумать об обновлении прошивки в своей плате расширения. Инструкции по прошивке платы WiFi можно найти на странице http://arduino.cc/en/Main/ArduinoWiFiShield.

В заключение

В этой главе мы познакомились с разными способами подключения платы Arduino к сети и выполнения некоторых сетевых операций с использованием плат расширения Ethernet и WiFi. Здесь вы также узнали, как использовать Arduino в качестве веб-сервера и веб-клиента.

В следующей главе вы познакомитесь с цифровой обработкой сигналов (Digital Signal Processing, DSP) с помощью Arduino.

10 Перевод на русский язык: http://arduino.ua/ru/prog/Ethernet. — Примеч. пер.

11 Перевод на русский язык: http://arduino.ua/ru/prog/WiFi. — Примеч. пер.

13. Цифровая обработка сигналов

Плата Arduino способна выполнять простую обработку сигналов. В этой главе обсуждаются разные способы такой обработки, от фильтрации сигнала, поступающего на аналоговый вход, с применением программного обеспечения вместо внешних электронных устройств до вычисления относительной величины различных частотных сигналов с применением быстрого преобразования Фурье.

Введение в цифровую обработку сигналов

Принимая информацию с датчика, вы фактически измеряете сигнал. Сигналы принято отображать в виде линии (обычно извилистой), идущей слева направо с течением времени. Именно так отображаются электрические сигналы на экране осциллографа. Ось y отражает амплитуду сигнала (его силу), а ось x — время. На рис. 13.1 изображен сигнал, соответствующий воспроизведению музыкального фрагмента длительностью 1/4 секунды, который был захвачен с помощью осциллографа.