11.3.1. Автономное питание платы Arduino
Поскольку плата Arduino не будет подключена к компьютеру через USB, необходимо предусмотреть внешнее питание. Рассмотрим несколько вариантов решения этой проблемы.
Питание от USB с компьютера или сетевого адаптера
Если плата Arduino подключена через USB-кабель к компьютеру, то теряется смысл беспроводного соединения. Можно подключить плату к одному USB-порту компьютера, а модуль ХВее будет общаться с платой USB ХВее Explorer, подключенной к другому USB-порту компьютера. Способ подойдет для тестирования беспроводной связи, но бесполезен с точки зрения практического применения. В данном варианте необходимо убедиться, что правильно выбран последовательный порт для просмотра данных адаптера USB ХВее Explorer в мониторе последовательного порта или в приложении Processing.
Можно использовать 5-вольтовый сетевой блок питания с USB-выходом. При этом отпадает привязка к компьютеру. Подобные адаптеры широко применяются для зарядки iPhone, Android-устройств, а также других планшетов и смартфонов. На рис. 11.13 показан стандартный сетевой USB-адаптер для американских розеток.
- 236 -
Рис. 11.13. Сетевой 5-вольтовый USB-адаптер
Питание от батареи
Можно питать плату Arduino от батареи, подключив ее к разъему питания или входу Vin. С этих входов напряжение поступает на встроенный стабилизатор, который выдает напряжение 5 В для питания микропроцессора и других компонентов. На рис. 11.14 показана 9-вольтовая батарея со встроенным выключателем и разъемом питания.
Вместо 9-вольтовой батареи можно использовать несколько батареек АА с напряжением 1,5 В. Если соединить последовательно четыре таких батарейки, получится напряжение около 6 В. Минимальное падение напряжения на встроенном в Arduino стабилизаторе равно 1 В. При входном напряжении 5,5 В на шине питания будет
рис. 11.14. Батарея 9 В
- 237 -
4,5 В. Можно рассчитывать, что плата будет работать и при напряжении 4,5 В, что приемлемо для платы на базе ATMega, хотя и ниже напряжения при питании от USB.
Сетевые источники питания
Еще один вариант питания для удаленной платы Arduino - стандартный сетевой адаптер. Он подключается к обычной розетке и имеет на другом конце разъем для соединения с Arduino. При выборе подобного сетевого блока питания необходимо обратить внимание на три важных характеристики:
• размеры разъема (диаметр 2,1 мм с плюсовым центральным контактом (рис. 11.15) );
• напряжение питания (желательно 7-12 В);
• максимальный ток (чем выше ток, тем больше устройств можно подключить к плате Arduino ). Блок с током 1 А довольно распространен и обеспечивает более чем достаточную мощность для платы Arduino и некоторых дополнительных компонентов.
Рис. 11.15. Разъем сетевого адаптера с плюсовым центральным контактом
11.3.2. Пример 1: беспроводное управление цветом окна на компьютере
Теперь перейдем, наконец, к практическому примеру использования беспроводной связи. Так как модуль ХВее настроен в режим простого последовательного обмена, можно начать с проектов из главы 6. Необходимо выполнить следующие действия:
1. Загрузите программу, которая позволяет изменить цвет окна обработки с помощью потенциометра, подключенного к Arduino. Сделайте это до установки переходника ХВее на плату Arduino, чтобы избежать коллизий UART, которые обсуждались ранее в этой главе. Если на переходнике есть перемычка или переключатель для выбора режима подключения/отключения ХВее к UART, то сам переходник при программировании платы Arduino можно не извлекать. Уточните это в документации на ваш переходник ХВее. Код программы, читающий данные потенциометра и передающий их на компьютер, приведен в листинге 11.1.
Листинг 11.1. Программа Arduino для отправки данных на компьютер - pot_to_processing/arduino_read_pot
// Отправка данных потенциометра на компьютер
const int POT=0; // Аналоговый вход для подключения потенциометра
int val;
// Переменная для хранения данных потенциометра
- 238 -
void setup()
{
Serial.begin(9600); // Запуск последовательного порта
}
void loop()
{
val = map(analogRead(POT), 0, 1023, 0, 255); //
//Чтение и масштабирование данных
//Отправка данных
Serial.println(val);
delay(50); // Задержка
}
2. Отключите плату Arduino от компьютера и подсоедините к ней переходник вместе с модулем ХВее. Подключите потенциометр к аналоговому входу 0, как показано на электрической схеме, изображенной на рис. 11.16.
3. Для питания платы Arduino используйте один из методов, описанных в предыдущем разделе. Я выбрал сетевой USB-адаптер питания.
4. Подключите ХВее USB Explorer с другим запрограммированным модулем ХВее к компьютеру с помощью кабеля USB. Если модули настроены правильно, Rx светодиод на переходнике USB ХВее Explorer будет быстро мигать в момент получения данных.
5. Перед использованием приходящих данных в Processing-приложении откройте монитор последовательного порта в Arduino IDE. Выберите последовательный порт, к которому подключен ваш переходник USB ХВее Explorer, и убедитесь, что данные поступают в компьютер (рис. 11.17).
6. После того как вы убедитесь, что данные поступают, закройте монитор последовательного порта и запустите программу на Processing для регулировки цвета окна. Проверьте, что последовательный порт выбран правильно. Текст программы на Processing приведен в листинге 11.2.
Листинг 11.2. Программа на Processlng для чтения последовательных данных и установки цвета экрана - pot_to_processing/processlng_d,splay_color
// Программа на Processing для чтения переменной и изменения цвета экрана
// Подключение и инициализация библиотеки serial
import processing.serial.*;
Serial port;
float brightness = 0; // Переменная для хранения значения потенциометра
void setup()
{
// Размер окна
size(500,500);
port = new Serial(this, "COM3", 9600); // Инициализация
// последовательного порта
- 239 -
port.bufferUntil(' ');// Символ конца строки
}
void draw()
{
background(0,0,brightness);// Перерисовать окно
}
void serialEvent (Serial port)
{
brightness = float(port.readStringUntil(' ')); // Получить переменную
}
Рис. 11.16. Схема соединения платой Arduino с потенциометром и переходником ХВее
- 240 -
Рис. 11.17. Данные, переданные по беспроводному каналу в монитор последовательного порта
При запуске программы она должна работать так же, как это было при подсоединении платы Arduino непосредственно к компьютеру. Теперь вы можете ходить вокруг дома и офиса (если питаете Arduino от батареи) и менять цвет на экране компьютера.
11.3.3. Пример 2: управление RGB-светодиодом
В предыдущем примере мы убедились, что возможна беспроводная передача данных от Arduino к компьютеру. Теперь используем код из главы 6 для управления RGB-светодиодом, чтобы проверить, что можно отправлять данные без проводов от компьютера к плате Arduino. Удостоверившись в успешном обмене данными между компьютером и Arduino по беспроводному соединению, вы сможете создавать множество интересных приложений (некоторые есть на веб-странице для этой главы).
Сначала загрузим программу (листинг 11.3) на плату Arduino. Подобный пример был рассмотрен в главе 6. Принимаем строку значений RGB и устанавливаем цвет RGB-светодиода.
Листинг 11.3. Управление RGB-светодиодом через последовательный порт - processing_control)RGB/list_control
// Отправка многоразрядных значений
// Константы выводов RGB-светодиода
const int RED =11;
const int GREEN =10;
const int BLUE =9;
// Переменные значений выводов RGB
int rval=0;
int gval=0;
int bval=0;
- 241 -
void setup()
{
Serial.begin(9600);// Инициализация последовательного
// порта на скорости 9600
// Установить выводы на выход OUT
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);
}
void loop()
{
// Пока в буфере есть данные
while (Serial.available() > 0)
{
rval=Serial.parselnt(); //Первое число
gval=Serial.parselnt(); //второе число
bval=Serial.parselnt(); //Третье ЧИСЛО
if (Serial. read() == ' ') //Конец передачи
{
// Установить яркость R,G,B светодиода
analogWrite(RED, rval);
analogWrite(GREEN, gval);
analogWrite(BLUE, bval);
}
}
}
Далее соединяем элементы, как вы делали в главе 6 (рис. 11.18). К плате Arduino присоединяем переходник ХВее и модуль ХВее.
Как и в предыдущем разделе, подключаем адаптер USB ХВее Explorer к компьютеру и запускаем программу на Processing (листинг 11.4).
Убедитесь, что файл hsv.jpg находится в папке data в каталоге программы. И не забудьте установить правильное имя последовательного порта.
Листинг 11.4. Программа на Processing для установки цвета RGB-светрдиода processing_control_RGB/processing_control_RGB.pde
import processing.serial.*;
PImage img;
Serial port;
// Подключение библиотеки serial
void setup()
{
size(640,256);
// Загрузка фоновой картинки
img = loadImage("hsv.jpg");
port = new Serial(this, "СОМ9", 9600); // Открыть последовательный порт
}
- 242 -
void draw()
{
background(0);// Установка цвета фона
image(img,0,0);// Картинка
}
void mousePressed()
{
color с = get(mouseX, mouseY); // Получить RGB-цвет по позиции курсора мыши
String colors = int(red(c))+","+int(green(c))+","+int(blue(c))+" ";
// Преобразовать в строку
// Вывод для отладки
print(colors);
port.write(colors); // Отправка переменной в Arduino
}
Рис. 11.18. Соединение Arduino и RGB-светодиода
- 243 -
При запуске программы появится экран выбора цвета как в главе 6. Выберите цвет.
Данные будут переданы по беспроводной связи на плату Arduino, и подключенный к ней светодиод должен светить выбранным цветом. Передаваемые значения можно контролировать в мониторе последовательного порта.
Теперь ясно, что с помощью модулей ХВее можно обмениваться данными с компьютером в двух направлениях. В следующем разделе мы рассмотрим беспроводной обмен между двумя платами Arduino напрямую.