Соответственно, линейка из 6 выводов имеет 2 переключателя ENA ENB (Enable A, B) для активации левого и правого моторов, 4 вывода IN1, IN2, IN3, IN4 используются для подачи управляющих импульсов.
Пример кода управления моторами показан ниже. Здесь входы EN1, EN2 используются для управления скоростью моторов уже рассмотренным ранее методом широтно-импульсной модуляции.
// Моторы M1, М2
int enA = 10, in1 = 9, in2 = 8;
int enB = 5, in3 = 7, in4 = 6;
void setup() {
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void runMotors() {
// Запустить мотор А
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
// Установить скорость 200 (диапазон 0~255)
analogWrite(enA, 200);
// Запустить мотор B
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
// Установить скорость 200 (диапазон 0~255)
analogWrite(enB, 200);
delay(2000);
// Изменить направление
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(2000);
// Остановить моторы
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void loop() {
runMotors();
delay(5000);
}
Другой вариант схемы подключения показан на картинке ниже, здесь входы EN1/EN2 программно не управляются, они просто замкнуты переключателями, идущими в комплекте с платой. Это не позволяет управлять скоростью моторов, зато делает подключение более простым.
Таким образом, с помощью одного или двух драйверов можно управлять двумя или четырьмя моторами.
Желающие заняться робототехникой более серьезно, могут также приобрести специальную платформу с колесами и моторами. Оснастить ее электроникой и датчиками можно по своему вкусу.
Стоимость такой платформы составляет от 20$ до 100$ в зависимости от размера, мощности моторов и качества изготовления.
2.13 Multiwii - делаем квадрокоптер
Платы Arduino имеют весьма неплохие возможности и вычислительную мощность, что позволяет не только мигать светодиодом, но даже сделать вполне функциональный дрон, способный летать в разных режимах, делать фотосъемку местности, удерживать высоту полета и пр. Для этого используется популярный проект с открытым исходным кодом Multiwii. Его название произошло от давно популярного контроллера Wii Nunchuck, имеющего внутри гироскоп и акселерометр. Соединив его с Arduino и платой управления моторами, можно было получить вполне летающий квадрокоптер. Позже появились уже готовые платы со всеми датчиками на борту.
Чтобы собрать квадрокоптер на базе Multiwii, потребуется:
- Специальная плата Multiwii, имеющая “на борту” процессор и набор датчиков.
- Пульт управления для радиоуправляемых моделей, приемник которого подключается к каналам D2 - D8.
- 4 бесколлекторных мотора и 4 регулятора скорости, выводы которых подключаются к площадкам D12, D3, D9, D10.
- 4 пропеллера разного направления вращения.
- Литий-полимерный аккумулятор для авиамоделей (они способны отдавать большие токи, в отличие например, от телефонных)
Примерная схема всех возможных устройств, подключенных к квадрокоптеру, показана на рисунке.
Здесь используются не только плата управления, но и GPS и подвес для фотокамеры, в простейшем случае без них можно обойтись.
Готовый самодельный квадрокоптер может выглядеть примерно так:
Все детали (раму, пропеллеры, моторы, контроллер) можно приобрести на специализированных сайтах RC-моделей, например на www.hobbyking.com.
Когда квадрокоптер собран, плату необходимо подключить к компьютеру. С помощью Arduino IDE в нее необходимо загрузить программу управления, скачать которую можно по адресу https://github.com/multiwii/multiwii-firmware.
Важно: все изменения и загрузку кода следует делать со снятыми винтами, во избежание травм.
Когда программа загружена в контроллер, необходимо запустить на компьютере программу управления, которая выглядит примерно так:
В ней можно проверить и настроить реакцию квадрокоптера на наклоны и ручки управления. Лишь когда все работает, можно сделать пробный запуск, сначала без пропеллеров, и лишь убедившись что моторы реагируют нормально, можно делать пробный полет. Кстати, в правом нижнем углу программы показана схема подключения моторов квадрокоптера. Их важно не перепутать, в противном случае коптер не сможет лететь в нужном направлении. Также важно не перепутать направление вращения винтов:
Настройка и постройка квадрокоптера выходит за рамки этой книги, желающим рекомендуется почитать статьи в Интернете или обратиться на специальные форумы, например на http://forum.rcdesign.ru.
2.14 Выходим в интернет: Serial to WiFi
Как можно видеть, возможности плат Arduino весьма неплохи. Но основной их недостаток, который в настоящее время становится все более критичным - невозможность выхода в Интернет. “Интернет вещей” заполняет нашу жизнь, и хочется к примеру, не только сделать робота, но и управлять им со смартфона, не только сделать метеостанцию, но и разместить график температуры онлайн, и т.к.
Разумеется, пожеланий пользователей не могли остаться без внимания, и в продаже появились платы Serial to wifi - несложные WiFi-модули, с помощью которых можно принимать или отправлять данные через последовательный порт.
Подключение платы к Arduino весьма несложно, достаточно 4х проводов. Для использования платы есть готовая библиотека ESP8266WiFi, найти которую можно на сайте https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WiFi.
Пример кода для подключения к домашней сети WiFi показан ниже.
#include <ESP8266WiFi.h>
const char* ssid = "MYFI_HOME";
const char* password = "12345678;
void setup() {
Serial.begin(115200);
delay(10);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
...
}
Как можно видеть, код вполне прост. Более сложные методы взаимодействия с сетью, чтение и отправка запросов на сервер, выходят за рамки данной книги, желающие могут изучить это самостоятельно.
Интересно заметить, что появление модулей ESP, цена которых составляет всего лишь 1-5$ произвели настоящую “революцию” в сфере любительской электроники. Теперь практически любой модуль получил возможность не только работать автономно, но и принимать или отправлять данные в сеть. Датчики температуры, реле, термостаты, часы, сигнализации - список устройств, для которых это актуально, весьма велик.
На этом мы закончим главу про Arduino и в третьей части рассмотрим модули ESP более подробно. Четвертая часть будет посвящена Linux и Raspberry Pi.