Arduino Spybot
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 4 | ||||
| × | 4 | ||||
| × | 8 | ||||
| × | 2 | ||||
| × | 8 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Приложения и онлайн-сервисы
|
Об этом проекте
Краткое введение
Это простой четырехколесный автомобиль, которым можно управлять по bluetooth. В машине можно разместить любой мобильный телефон, который можно использовать как IP-камеру. Я решил создать этого робота с javascript, используя веб-сервер узла, на котором я могу отслеживать, куда идет робот.
Вы можете увидеть схему основных деталей на рисунке 1.
После запуска сервера я получаю экран, содержащий вводную информацию об управлении и окно для обзора камеры (рисунок 2).
И да, этот макет адаптивный.
Шасси
В этой версии бота я решил сделать шасси самостоятельно. Если у вас нет сверлильного станка или вам просто нужно более простое решение, вы можете купить его из широкого ассортимента пластиковых кузовов автомобилей.
Я пошел по пути, чтобы сделать свое собственное шасси, и это оказалось не так просто, как кажется. Самым важным правилом является то, что вы должны поставить шины как можно ближе друг к другу, если вы хотите выбрать дифференциальное рулевое управление для поворота. Вы можете прочитать основные ошибки и основные правила физики по следующей ссылке:
http://www.rakeshmondal.info/4-Wheel-Drive-Robot-Design
Еще одна проблема заключалась в том, как прикрепить двигатели постоянного тока к шасси. В моем случае у меня нет для этого специальной детали, поэтому я решил выбрать для этой задачи несколько кабельных стяжек (150 / 3,5). Для правильного крепления шин мне пришлось просверлить отверстия как можно точнее и использовать 2 стяжки для одного двигателя постоянного тока. К сожалению, есть вероятность, что двигатели не будут располагаться настолько прямо, насколько это возможно, и ваша машина может немного сместиться влево или вправо, когда вы управляете вперед и назад.
Батарейки
Для питания плат и двигателей я решил выбрать для этой задачи один источник питания постоянного тока. В корпусе нет места для держателя батарей 8 x AA, поэтому мне пришлось внести некоторые изменения, поэтому я прикрепил два держателя 4 x AA 2 винтами друг к другу. Для этого мне пришлось просверлить пластик.
Питание
В моем случае я питаю плату Arduino Uno от 8 перезаряжаемых батареек AA. Этой мощности хватит и на моторный щит. На этом щите есть перемычка, которая является съемной, поэтому ваш моторный щит не будет получать питание от Arduino. В этом случае вы можете запитать свой щит отдельно, используя контакты питания на нем. Вы можете прочитать о различных вариантах питания по следующей ссылке:
https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino/powering-motors
Беспроводное соединение
Я использовал модуль Bluetooth HC-06, чтобы установить соединение между автомобилем и компьютером. Я хотел использовать как можно меньше кабелей, поэтому я решил создать собственный экран Arduino, поместив модуль Bluetooth в пустой экран прототипа, проложив проводку под экраном и припаяв несколько контактных разъемов для правильного механизма крепления. Вы можете быстро просмотреть результат на рисунках 3 и 4.
Хорошо то, что у вас есть возможность отсоединить модуль bluetooth от экрана в любое время, потому что он не припаян к плате.
Для настройки модуля Bluetooth следуйте инструкциям на этом сайте:
https://github.com/rwaldron/johnny-five/wiki/Getting-Started-with-Johnny-Five-and-JY-MCU-Bluetooth-Serial-Port-Module
Движение
Робот может двигаться вперед, назад и поворачивать с помощью дифференциального рулевого управления. Держатель камеры прикреплен к сервоприводу непрерывного вращения, поэтому вы можете смотреть по сторонам с телефоном, не перемещая сам автомобиль. Вы можете просмотреть короткую демонстрацию в следующем видео.
Мобильный телефон
Я использовал Nokia Lumia 520 для проекта и приложение Win IP Camera, которое вы можете найти в магазине:
https://www.microsoft.com/en-us/store/p/win-ip-camera/9nblgggz4xb1
О коде
Как разработчик javascript я решил создать веб-сервер узла для страницы управления и использовать несколько необычных библиотек для улучшения внешнего вида и синтаксиса кода. Вы можете увидеть полный список на моей странице github и в следующем разделе.
Я решил выбрать модуляризацию как во фронтенде, так и в бэкэнде. Вот точка входа в приложение:
var boardModule =require ('./ src / boardModule'), servoModule =require ('./ src / servoModule'), motorModule =require ('./ src / motorModule'); boardModule.initBoard (). then (function () {motorModule.initMotors (); servoModule.initServo ();});
В передней части я также использую разделение для каждого модуля:
импортировать {moveWheels, stopWheels} из './wheelsControl';import {moveServo, stopServo} из' ./servoControl '; document.onkeydown =checkKeyDown; document.onkeyup =checkKeyUp; функция checkKeyDown (e) {moveWheels (e.keyCode); moveServo (e.keyCode);} функция checkKeyUp (e) {stopWheels (e.keyCode); stopServo (e.keyCode);}
Полную кодовую базу можно найти в моем репозитории на github выше.
Библиотеки сортировочного ПО
- express.js - для улучшения нашего приложения Nodejs
- johnny-five - для использования API управления Arduino Javascript
- socket.io - для использования веб-сокетов для установления связи между серверной частью и клиентской частью.
- susy - для создания макета и адаптивного дизайна.
- Google Material Design - для использования элементов материалов.
- gulpJS - для автоматизации задач
- BabelJS - для переноса EcmaScript 6
- Browserify - для поддержки модулей
Последние слова
Я новичок в этом мире Интернета вещей, и это мой первый проект. Я не хочу сказать, что использовал оптимальные решения, но, надеюсь, вы найдете полезную информацию из этого руководства.
Код
Github
https://github.com/dominikfilkus/arduino-spybot-V2Схема
arduino-spybot.fzzПроизводственный процесс