Передвижная метеостанция с управлением по Bluetooth
В этой статье мастер-самодельщик расскажет нам, как он сделал передвижную метеостанцию. По сути это четырехколесная тележка с полностью функциональным управлением по Bluetooth через Blynk. Тележка может двигаться вперед, назад, влево и вправо с помощью четырех двигателей постоянного тока. При этом устройство измеряет давление воздуха, температуру, влажность, освещенность. Устройство управляется терминалом Seeed Wio Terminal и DFRobot Quad DC Motor Driver Shield. Все данные, связанные с тележкой и погодой, отображаются как на ЖК-дисплее терминала Wio, так и на экране HMI Blynk.
Инструменты и материалы:
-Терминал Seeed Wio ATSAMD51;
-Драйвер мотора DFRobot для Arduino;
-Датчик температуры и влажности DHT11;
-Датчик температуры и давления BMP280;
-Мотор-редуктор GA25 12 В, 4 шт;
-Резиновые колеса, 2 шт. X 65 мм, + два шкива GT2;
-Шестигранная муфта — 4 шт;
-Литий-ионный аккумулятор 18650, 6 шт;
-Держатель батареи 18650, 2 ячейки на 2 шт;
-Держатель батареи 18650, 2 шт., 1 ячейка;
-Регулируемый понижающий модуль питания постоянного и переменного тока LM2596S 3A;
-Плата расширения Arduino Uno;
-Штыревые разъемы;
-Белый акрил, размер A4, толщина 5 мм;
-Выключатель;
-Ленточный кабель;
-Двухжильный силовой кабель 2 метра;
-Штекер питания постоянного тока + гнездо;
-Кабельные стяжки;
-Труба ПВХ Ø42 мм и Ø60 мм;
-Тройник из ПВХ, Ø 42 мм. 2 шт.;
-Заглушка Ø42 мм для трубы из ПВХ — 4 шт;
-Тройник прямой из ПВХ Ø60 мм;
-Заглушка для трубы из ПВХ Ø60 мм;
-Сверлильный станок;
-Ножовка;My Webpage
-Паяльные принадлежности;
Шаг первый: терминал Seed Wio
Терминал Wio — это микроконтроллер на базе SAMD51 с возможностью беспроводного подключения на базе Realtek RTL8720DN, совместимый с Arduino и MicroPython. Он работает на частоте 120 МГц (увеличение до 200 МГц), имеет 4 МБ внешней флэш-памяти и 192 КБ ОЗУ. Он поддерживает как Bluetooth, так и Wi-Fi, являясь основой для проектов Интернета вещей.
Сам терминал Wio имеет:
ЖК-экран с диагональю 2,4 дюйма.
Инерциальные измерительные модули (LIS3DHTR).
Микрофон.
Зуммер.
Слот для карты microSD.
Световой датчик.
Инфракрасный излучатель (ИК 940 нм).
5-позиционный переключатель.
3 кнопки.
Встроенная функция RTC.
Вдобавок ко всему, он также имеет два многофункциональных порта Grove для экосистемы Grove и 40 контактов GPIO, совместимых с Raspberry Pi, для дополнительных надстроек.
Подробную информацию можно найти по адресу: https://www.seeedstudio.com/Wio-Terminal-p-4509.html.
Шаг второй: драйвер мотора
В устройстве используется драйвер двигателя, совместимый с контроллером Arduino 5 В / 3,3 В. Он может одновременно управлять четырьмя двигателями постоянного тока с 8 контактами. Драйвер поддерживает управление скоростью и направлением.
Экран драйвера включает в себя две микросхемы драйвера двигателя TB6612FNG с максимальным выходным постоянным током 1,2 А на каждом канале. Модуль включает в себя встроенную схему обнаружения низкого напряжения и схему защиты теплового отключения.
Шаг третий: принципиальная схема
Драйверу двигателя необходимы два сигнала для управления одним двигателем постоянного тока: направление и скорость. Сигналы скорости двигателя должны быть подключены к контактам PWM терминала Wio следующим образом:
PWM0 (D0/A0).
PWM1 (D2/A2).
PWM3 (D6/A6).
PWM4 (D8/A8).
Датчик температуры и влажности DHT11 подключается к порту Grove I2C, а датчик давления BMP280 к контакту D4 / A4 терминала Wio.
Шаг четвертый: шасси
Сначала мастер соединил 2 тройника из ПВХ Ø42 мм.
На 4 торцевых заглушках диаметром 42 мм просверлил по центру отверстия, для осей двигателей. Двигатели прикрутил винтами, на оси двигателей установил муфты.
Далее просверлил несколько отверстий в верхней части корпуса для крепления держателя батареи, плат управления и кабелей двигателя постоянного тока.
Шаг пятый: установка колес
Колеса крепятся к валам мотора через шестигранные муфты. В связи с тем, что у него было всего два колеса, на одну из осей он установил шкивы.
Узлы колес были установлены в торцы каркаса. Провода от двигателей вывел в отверстие.
Между двумя тройниками из ПВХ установил стальную пластину.
Шаг шестой: держатель батареи
Держатели батареи закреплены на полосе из акрила. Весь узел помещается внутрь ПВХ-трубы. С торца трубы устанавливаются заглушки. В одной из заглушек устанавливается выключатель.
Шаг седьмой: сборка
Мастер припаял 2-х рядные 20-контактные штыревые разъемы к нижней части платы Protoshield. Разъем используется для подключения к розетке терминала Wio.
На верхней части платы припаял штыревые разъемы. Затем припаял провода от терминала Wio к плате драйвера двигателя.
Подключает Protoshield к терминалу Wio и плате драйвера.
Для питания устройства он использовал 6 аккумуляторов x 18650, которые были разделены на 2 параллельные группы, в каждой группе по 3 последовательно соединенных аккумулятора. При полной зарядке выходное напряжение составляет около 12 В постоянного тока. Для подачи 5 В постоянного тока на Wio Terminal и драйвер мотора он использовал понижающий модуль питания LM2596.
Деталь с аккумуляторами устанавливается на основное шасси. Сверху устанавливается модуль LM2596.
Подключаются провода от двигателей. Устанавливаются датчики DHT11 и BMP280.
Для установки терминала Wio и платы драйвера он использовал алюминиевый уголок и акриловый лист.
Теперь нужно установить аккумуляторы.
Шаг восьмой: программное обеспечение
Чтобы обновить последнюю версию прошивки для Wireless Core Realtek RTL8720 на терминале Wio до версии 2.1.3, нужно перейти по этой ссылке.
Некоторые библиотеки для Bluetooth также были установлены в Arduino IDE.
Seeed_Arduino_rpcBLE
Seeed_Arduino_rpcUnified
Код проекта доступен на GitHub
Управление тележкой
Тележка управляется по Bluetooth через программное обеспечение Blynk. Пользователю необходимо получить собственный «Токен аутентификации» в Blynk App.
Для двигателей определяются следующие значения:
Показать / Скрыть текстtypedef struct { int SPD_PIN; // Speed Pin int DIR_PIN; // Direction Pin int SET_SPEED; // Speed to be set } Motor;
Управление автомобилем осуществляется в приложении Blynk с помощью виртуальных контактов.
Показать / Скрыть текстBLYNK_WRITE(V1) { Forwardcmd_V1 = param.asInt(); // Get value as integer if(Forwardcmd_V1) { RC_Car_Forward(); } else { RC_Car_Stop(); } }
Команды движения также выводится на экран терминала Wio.
Показать / Скрыть текстvoid RC_Car_Forward() { // Set car Direction digitalWrite(MotorFrontLeft.DIR_PIN, 0); digitalWrite(MotorBackLeft.DIR_PIN, 0); digitalWrite(MotorFrontRight.DIR_PIN, 0); digitalWrite(MotorBackRight.DIR_PIN, 0); // Set car Speed analogWrite(MotorFrontLeft.SPD_PIN, MotorFrontLeft.SET_SPEED); analogWrite(MotorFrontRight.SPD_PIN, MotorFrontRight.SET_SPEED); analogWrite(MotorBackLeft.SPD_PIN, MotorBackLeft.SET_SPEED); analogWrite(MotorBackRight.SPD_PIN, MotorBackRight.SET_SPEED); // Show "FORWARD" command on LCD screen Car_Image.createSprite(WIDTH, HEIGHT); Car_Image.fillSprite(TFT_BLACK); Car_Image.setTextColor(TFT_MAROON); Car_Image.setFreeFont(&FreeMonoBold24pt7b); Car_Image.drawString("FORWARD", 70, 6); Car_Image.pushSprite(0, (HEIGHT/2) + 1); Car_Image.deleteSprite(); }
Информация о погоде
Информация о погоде обновляется и отображается на экране независимо от того, подключена ли тележка к Blynk или нет. Мастер использовал « BlynkTimer » для настройки интервалов считывания датчиков температуры и влажности, давления и освещенности.
Показать / Скрыть текст // Set-up 2 second intervals between BMP280 readings timer.setInterval(2000L, myTimerBMP280); // Set-up 3 second intervals between DHT11 readings timer.setInterval(3000L, myTimerDHT11); // Set-up 4 second intervals between Light sensor readings timer.setInterval(4000L, myTimerLight);
Например, датчик давления BMP280 считывается каждые 2 секунды, затем его данные отправляются на экран Blynk, а также отображаются на ЖК-экране терминала Wio.
Показать / Скрыть текстvoid myTimerBMP280() { readPressure(); // Send to Blynk Blynk.virtualWrite(V6, pressure/1000); // Show actual pressure on LCD screen Car_Image.createSprite(WIDTH/2, HEIGHT); Car_Image.fillSprite(TFT_BLACK); Car_Image.setTextColor(TFT_RED); Car_Image.setFreeFont(&FreeMonoBold12pt7b); Car_Image.drawString(pressureStr, 2, 12); Car_Image.pushSprite(0, (8*HEIGHT/2) + 1); Car_Image.deleteSprite(); }
Фактическое окружающее давление считывается и обрабатывается следующим эскизом:
Показать / Скрыть текстvoid readPressure() { // Read the pressure from BMP280 pressure = bmp280.getPressure(); // Convert to String for showing on the LCD screen pressureStr = "P:" + String(pressure/1000) + "kPa"; }
Шаг девятый: экран терминала Blynk и Wio
Дисплей терминала Wio
На экране устройства, под заголовком « Четырехколесный радиоуправляемый автомобиль » показаны:
-Статус команды Вперед/ Назад/ Поворот направо/ Поворот налево/ Стоп / Экстренная остановка / Индикация скорости в процентах.
Под заголовком «Информация о погоде» отображаются следующие данные:
Температура (T).
Влажность (Н).
Давление (Р).
Свет (L).
Экран Blynk на смартфоне
Blynk отображает информацию о погоде и команды управления автомобилем таким образом, чтобы они соответствовали экрану терминала Wio.
Мастер использовал виртуальный pin-код в Blynk для кнопки электронной остановки. Но лучше запрограммировать одну из встроенных физических кнопок на терминале Wio в качестве кнопки остановки на случай, если что-то пойдет не так.
Шаг десятый: тестирование
После сборки и кодирование нужно протестировать устройство и откалибровать работу двигателей. Скорость вращения всех двигателей должна быть одинакова. Если это не так, то необходимо программно ограничить или увеличить напряжения подаваемое на каждый из двигателей.
Wio Terminal имеет встроенный датчик акселерометра, благодаря чему можно отслеживать находится устройство в движении или нет.
Все готово, это устройство можно использовать как в стационарном, так и в мобильном режиме. Его можно поставить на стол как обычную метеостанцию.
Сборку и демонстрацию работы станции можно посмотреть на видео.
Источник (Source)
Источник: