Роботизированная машина, управляемая веб-страницей Node.js (беспроводная связь)
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 2 |
Об этом проекте
Идея проекта
Node.js - один из лучших вариантов для приложений реального времени. Ранее я работал над некоторыми приложениями реального времени, использующими сокеты, поэтому, придерживаясь той же концепции, я решил создать несколько проектов Интернета вещей с сервером Node.js для самообучения.
Этот мой ровер связывается с моим сервером Node.js через Bluetooth, а во внешнем интерфейсе я отправляю команды на сервер с помощью сокетов.
Цель проекта
Для изучения и реализации беспроводной связи между сервером узла и оборудованием (которым в данном случае является наш ровер), а также для удаленного управления ровером с помощью мобильной веб-страницы, обслуживаемой сервером узла с помощью сокетов.
Предпосылка
Вам необходимо иметь базовые знания об узлах, программировании сокетов и работе драйвера двигателя L298.
Требования
- 1 Arduino Uno
- 1 драйвер двигателя L298
- Модуль Bluetooth HC-05
- Проволочные перемычки
- 2 батареи - 9 вольт каждая
- 2 мотор-редуктора (6-9 вольт)
- 2 совместимых колеса
- Шасси
- Компьютер с установленным Node.js для нашего сервера.
Шаг 1. Сборка вездехода
Сборка Rover не так уж и сложна, вы можете приобрести «комплект шасси с 2 колесами», который легко доступен в Интернете и поставляется со всеми сборочными единицами.
Наши Arduino Uno и драйвер двигателя L298 встроены в наш Rover, оба из которых питаются от двух 9-вольтных батарей отдельно.
Arduino Uno, в свою очередь, будет питать модуль Bluetooth HC-05, который будет связываться с нашим сервером.
Принципиальная схема
Как показано выше на принципиальной схеме, драйвер двигателя L298 питается от батареи 9 В, два выхода управления двигателем подключены к двигателю A и двигателю B, и, поскольку двигатель не имеет полярности, вы можете подключить к нему любую клемму, но убедитесь, что оба двигателя вращаются в одном направлении. Не снимайте перемычку регулятора 5 В.
Примечание : Если вы запитаете L298 напряжением более 12 В, встроенный регулятор напряжения 5 В будет поврежден.
Arduino Uno также питается от батареи 9 В, положительная клемма которой подключена к выводу Vin Arduino, а отрицательная клемма - к общей земле. Arduino, в свою очередь, будет питать модуль Bluetooth, поэтому подключите вывод Vcc HC-05 к 5V Arduino, а GND - к земле.
Для последовательной связи между HC-05 и Arduino подключите вывод TXD HC-05 к выводу RX Arduino, а вывод RXD HC-05 к выводу TX Arduino.
Теперь для управления модулем L298 вы можете соединить выводы EN1 и EN2 с любым выводом PWM Arduino. Затем подключите входной контакт -1, 2, 3, 4 L298 к любому цифровому контакту Arduino.
Передача данных
Как показано выше, это схема, показывающая передачу сигналов.
1. Пользователь получит доступ к веб-странице, обслуживаемой сервером узла. URL-адрес будет IP-адресом с используемым номером порта, например, «192.XXX.XXX.129:8080».
2. Когда пользователь нажимает кнопку на веб-странице, сервер запускает требуемую функцию. Это общение происходит благодаря сокетам.
3. Узловой сервер, подключенный к модулю HC-05 через Bluetooth, отправит необходимые данные в модуль HC-05.
4. HC-05 будет передавать данные в Arduino UNO через последовательную связь.
5. Arduino UNO, в свою очередь, будет управлять модулем L298.
Шаг 2. Настройка сервера
Для нашего сервера нам нужно установить Node.js. Установите любую стабильную версию узла, моя - версия 11.15. Нам необходимо установить следующие пакеты -
- узел-гипс
- экспресс
- узел-bluetooth
- socket.io
- ejs
Примечание. Установка "node-gyp" может быть сложной задачей, поскольку он не поддерживает некоторые последние версии Node, поэтому лучше установить версию 11.15 Node.
Теперь нам нужно прослушивать события с веб-страницы, как только событие запускается при взаимодействии с веб-страницей, страница испускает требуемую функцию, которую необходимо выполнить на нашем сервере Node. Сервер, в свою очередь, прослушает это сообщение и выполнит нужную функцию (в нашем случае отправит данные в Bluetooth).
Итак, создайте сервер и веб-страницу, используя такие пакеты, как «express» и «EJS». Создайте веб-страницу с элементами управления, которые вам нужны, и настройте для нее соединения сокетов, создав сервер сокетов, вы можете обратиться к этой документации.
Для настройки Bluetooth обратитесь к этой документации. При каждом нажатии любой кнопки управления в модуль HC-05 отправляется сообщение.
Вот моя простая веб-страница -
Шаг 3. Код Arduino
Поскольку Bluetooth будет взаимодействовать с Arduino-Uno с помощью последовательной связи, мы отправим некоторую «строку» в качестве команды и дополнительную букву, которая скажет нам завершить и захватить строку.
Например:для движения вперед Bluetooth будет передавать «forwardT», а в конце Arduino, как только мы встретим букву «T», мы узнаем, что последовательная связь завершена.
И с помощью этой входящей строковой команды мы настроим драйвер L298 для движения вперед, назад, влево, вправо, изменения скорости и т. Д.
Найдите прикрепленный код Arduino.
Шаг 4 - Окончательный результат
Улучшения и перспективы на будущее
На более поздних этапах я планирую управлять марсоходом с помощью голосовых команд и функции обхода препятствий. Я также могу вести базу данных, в которой я буду вести статистические записи, такие как пройденное расстояние, максимальная скорость, средняя скорость и т. Д. Я также добавлю несколько датчиков, таких как температура, свет и влажность, и буду отслеживать их через регулярные промежутки времени, что будет хранятся в нашей БД.
Следующая версия
Посмотрите мой следующий проект «Ровер с голосовым управлением с помощью мобильных устройств»
Код
- Код Arduino Node Rover
Код Arduino Node Rover Arduino
const int en1 =9; const int en2 =3; const int inp1 =2; const int inp2 =4; const int inp3 =7; const int inp4 =8; char charRead; String inputString =""; установка void () {Serial.begin (9600); pinMode (en1, ВЫХОД); pinMode (en2, ВЫХОД); pinMode (inp1, ВЫХОД); pinMode (inp2, ВЫХОД); pinMode (inp3, ВЫХОД); pinMode (inp4, OUTPUT);} void loop () {// поместите сюда ваш основной код для повторного запуска:if (Serial.available ()) {charRead =Serial.read (); если (charRead! ='T') {inputString + =charRead; } else {if (inputString =="forward") {// Чтобы переместить вперед digitalWrite (inp1, HIGH); digitalWrite (inp2, LOW); digitalWrite (inp3, HIGH); digitalWrite (inp4, LOW); } else if (inputString =="backward") {// Чтобы переместиться назад digitalWrite (inp1, LOW); digitalWrite (inp2, HIGH); digitalWrite (inp3, LOW); digitalWrite (inp4, HIGH); } else if (inputString =="fleft") {// Для перемещения влево digitalWrite (inp1, HIGH); digitalWrite (inp2, LOW); digitalWrite (inp3, LOW); digitalWrite (inp4, LOW); } else if (inputString =="испуг") {// Для перемещения вправо digitalWrite (inp1, LOW); digitalWrite (inp2, LOW); digitalWrite (inp3, HIGH); digitalWrite (inp4, LOW); } else if (inputString =="bleft") {// Чтобы переместиться назад влево digitalWrite (inp1, LOW); digitalWrite (inp2, LOW); digitalWrite (inp3, LOW); digitalWrite (inp4, HIGH); } else if (inputString =="bright") {// Вернуться вправо digitalWrite (inp1, LOW); digitalWrite (inp2, HIGH); digitalWrite (inp3, LOW); digitalWrite (inp4, LOW); } else if (inputString =="break") {// Чтобы остановить analogWrite (en1, 50); analogWrite (en2, 50); задержка (550); digitalWrite (inp1, LOW); digitalWrite (inp2, LOW); digitalWrite (inp3, LOW); digitalWrite (inp4, LOW); analogWrite (en1, 150); analogWrite (en2, 150); } else if (inputString =="maxspeed") {// Максимальная скорость analogWrite (en1, 250); analogWrite (en2, 250); } else if (inputString =="medspeed") {// Средняя скорость analogWrite (en1, 180); analogWrite (en2, 180); } else if (inputString =="lowspeed") {// Низкая скорость analogWrite (en1, 90); analogWrite (en2, 90); } else {// Остановить digitalWrite (inp1, LOW); digitalWrite (inp2, LOW); digitalWrite (inp3, LOW); digitalWrite (inp4, LOW); } inputString =""; }}}
Схема
Производственный процесс
- Создание беспроводного роботизированного автомобиля с использованием ИК-датчиков
- Эффективная технология веб-сервера для микроконтроллеров с ограниченными ресурсами
- Как установить защищенный встроенный веб-сервер на устройство Wi-Fi стоимостью 3 доллара
- Получить влажность / температуру из Интернета
- Вентилятор с регулируемой температурой
- Солнечный свет подъездной дороги к узлу беспроводного датчика MSP430
- Raspberry Pi 4 как веб-сервер [Создать собственный веб-сайт]
- Превратите свой радиоуправляемый автомобиль в радиоуправляемый автомобиль с Bluetooth
- Радиоуправляемая машина с джойстиком
- Радиоуправляемый автомобиль с Wi-Fi - Qi включен