Как сделать машинку на радиоуправлении Ардуино через bluetooth своими руками

Как сделать машинку на радиоуправлении Ардуино через bluetooth своими руками Лодки

Что такое н-мост?

Термин Н-мост произошел от типичного графического представления этой схемы. Это схема, которая может вращать мотор как в прямом, так и в обратном направлении.

Принцип работы:Посмотрите приложенную картинку для понимания принципа работы схемы Н-моста. Мост состоит из 4 электронных выключателей S1, S2, S3, S4 (транзисторы / MOSFET/ IGBTS).

Когда выключатели S1 и S4 закрыты, а остальные два открыты, положительное напряжение будет проходить через мотор, и он будет вращаться в прямом направлении. Таким же образом, когда закрыты выключатели S2 и S3, а S1 и S4 открыты, обратное напряжение будет даваться на мотор и он начнёт вращаться в обратном направлении.

Заметка: выключатели на одной руке (то есть S1, S2 или S3, S4) никогда не закрываются одновременно – это создаст короткое замыкание.

Н-мосты доступны в виде интегральных схем, либо можно собрать свой мост при помощи 4 транзисторов или MOSFET. В моём случае используется интегральная схема Н-моста LM298, которая позволяет управлять скоростью и направлением моторов.

Описание распиновки:

Out 1: DC мотор 1 « » или шаговый двигатель A Out 2: DC мотор 1 «-» или шаговый двигатель A-Out 3: DC мотор 2 « » или шаговый двигатель B Out 4: вывод мотора B12v: вход 12V, но можно использовать от 7 до 35VGND: Земля5v: выход 5V, если джампер 12V стоит на месте, идеально для питания Arduino (и т.п.)EnA: позволяет получать сигналы PWM для мотора A (Пожалуйста, прочитайте секцию «Arduino Sketch Considerations»)IN1: включает мотор AIN2: включает мотор AIN3: включает мотор BIN4: включает мотор BBEnB: позволяет получать сигналы PWM для мотора B (Пожалуйста, прочитайте секцию «Arduino Sketch Considerations»)

3 модель

Данную модель я не собрал до конца, но научился делать 3D модели для получения выкроек, а также узнал что такое шпангоуты и их назначение.

По данной модели была сделана выкройка:

Также узнал о отличной замене потолочной плитки: подкладка под ламинат.

У подкладки ряд плюсов по сравнению с потолочкой:

  1. Размер листов: 1000 х 500 мм.
  2. Различная толщина, я купил толщиной 3 и 5 мм, но использую пока только 5 мм.
  3. Отсутствие различного профиля и картинок.
  4. Хорошая прочность за счет большей толщины (для 5 мм).

А в остальном очень похожи:

  1. Малый вес.
  2. Не боятся воды.
  3. Низкая цена и доступность.

Клей использовал Титан, но затем перешел на термоклей, с которым сборка ускорилась в несколько раз.

Мотор, руль и вал были куплены магазинные, запчасти от магазинного радиоуправляемого катера. К тому же я научился вплавлять латунные гайки в пластик, и проблемы крепежа двигателя больше не было.

Данный мотор очень прожорлив, и имеет огромный пусковой ток, около 10 А, может и выше. Поэтому я решил сделать драйвер двигателя проще: из 1 полевого транзистора, отказался от заднего хода и упростил разработку платы.

Была разработана, разведена и изготовлена плата управления, состоящая из самодельной ардуины на Atmega328P, радио модуля NRf24L01, драйвера полевого транзистора, нескольких стабилизаторов напряжения. Также плата была протестирована:

Осталось проверить плату с «большим» мотором, и установить в плату, установить сервопривод с обвесом, продумать герметизацию крышки катера и можно будет испытывать на воде.

И конечно делюсь выкройками катеров, с различными габаритами, для желающих собрать:

Катер_v3.1_450х173х85

Катер_v3.1_590х227х112

Катер_v3.1_750х288х142

Продолжение:

Сделал небольшое видео, показывающее все основные этапы сборки катера

Ardu remote: очень простая и дешёвая аппаратура управления своими руками

Всем привет. Захотелось мне однажды маленькую удобную аппаратуру для дрона/крыла; usb-джойстик для симуляторов и Open.HD; найти оправдание построенной дельте (3d-принтеру) и пострадать ардуино. Сразу фото итога:

Как сделать машинку на радиоуправлении Ардуино через bluetooth своими руками

Размышления и гуглеж привели к выбору BetaFPV Lite radio как образца для внешнего вида. Хотелось, конечно, Taranis X-Lite, но стики были только крупные, от подаренной товарищем бесполезной ввиду древности аппаратуры. Переключатели на 60% были использованы от неё же.
Изначально делал только USB-версию. Оно отлично работало в симуляторе FPV Freerider и как управление в Open.HD линке, но мысль прилепить QCZEK и автономное питание уже овладела мной бесповоротно.

В итоге вышло что вышло.

→ Гитхаб

Видео:

На гитхабе скетч, схема, используемые библиотеки и всякое полезное, включая 3d-модели и исходники для solid.

Схема относительно проста и требует только пайки проводов за исключением резистивного делителя и светодиодов. Работу с qczek lrs я обойду стороной, для этого есть сайт разработчика и неплохие видеотуториалы в ютубе от Юлиана и Сани areyouroo.

Как сделать машинку на радиоуправлении Ардуино через bluetooth своими руками

Можно ограничиться только usb-версией без питания и lrs, в качестве lrs можно использовать другие проекты, где принимают на вход CPPM 8/10ch сигнал. При выборе QCZEK появляется выбор между 0.1 и 1вт модулями и частотами 433/868/915 МГц. Я не рекомендую 433, наводки от них дикие. Также не увидел смысла в 1вт, при 100мвт вполне реально пульнуть на 10км. Если планируете покупать антенны — смотрите на версии 915мгц и готовые антенны для популярных дальнобоек frsky. Недорого и какая-то гарантия попадания в приемлемый КСВ. Я же просто подпаял к хвосту с ipex два отрезка медной проволоки D0.4mm, длиной 8.21см и заложил это всё в корпус антенны прямо в середине печати на 3д-принтере. Побегал с аппаратурой по этажам многоквартирного дома — обрыва или падения rssi на модели в квартире не добился, устроило.

Для Open.HD (usb-версия) пока нет смысла в свичах sw4 и sw5, так как число каналов ограничено 8-ю. Возможно, в дальнейшем это ограничение будет снято. Имейте ввиду, что подключение к Open.HD с модулем зарядки даёт дополнительную нагрузку на usb-порт наземной raspberry по питанию. Имеет смысл заюзать хаб с внешним питанием.

Калибровка аппаратуры: подаём питание с зажатой SW_CALIBRATE при средних положениях yaw/roll/pitch и минимальных throttle/aux1; ждём гудка; двигаем всё с осями от минимума до максимума, пока есть пищание. Когда пищать уже не может — выключаем, калибровка завершена.

Также есть защита от высоких значений каналов при включении, пока не переместите первые три свича и газ вниз — будет коротко попискивать.

Каждые 30 секунд, если значения не изменились — короткий ненавязчивый писк. Естественно, все это легко изменить/отключить в скетче. Например, просто закоментировав дефайн.

В общем, заготовка для творчества вполне себе ничего. Нет триммирования, но оно и не нужно для полетов с полётным контроллером, а без него эта аппаратура врядли может пригодится.

Также я прилепил блютус-модуль jdy-30 к qczek и гоню в него мавлинк телеметрию, которую принимает DroidPlanner 2.8 или Telemetry Viewaver на андроид-смартфоне. Наверное, также засуну и mavlink-display. Пусть будет красиво, как у дорогих crossfire xD

Спасибо за внимание, жду вопросов и повторений / развитий сего рукожопства.

Arduino – машинка на nrf24l01

Здарова всем, хочу поделиться своим проектом – машинка под управлением nrf24l01. Машинка получилась очень резвая и быстрая.

Управляется за счёт двух джойстиков от приставки. Ездит на 2 колёсах и одной шаровой опоре.

Делалась она из того, что было, а именно, из какого-то светорассеивающего оргстекла, пульт из распределительной коробки. Корпус это две пластинки из светорассеивающего оргстекла, которые скреплены между собой шестью спейсерами длиной 2 см. Размеры машинки: прямоугольник 10×15 см, у которого спереди по бокам срезано два треугольника 2.5×5 cм, высота 2 см. Размер распределительной коробки: 4 см высота, диаметр 10 см.

фото
P_20220731_172610[1].jpgP_20220731_172521[1].jpgP_20220731_172558[1].jpg

Перейдём к внутренностям:

КОМПОНЕНТЫ ПУЛЬТА

  • arduino nano
  • nrf24l01 без антенны c адаптером
  • Аккумулятор 610мАч 7.4А (две банки)
  • Джойстики X2
  • Выключатель

Фото внутренностей

P_20220731_181023[1].jpg
КОМПОНЕНТЫ МАШИНКИ

  • arduino nano
  • nrf24l01 с антенной и адаптером
  • Аккумулятор 610мАч 7.4В (две банки)
  • Драйвер моторов двухканальный Pololu на TB6612FNG v2 <1А
  • Мотор-редуктор Gekko MR12-050 turbo X2
  • Колесо Pololu 32×7 X2
  • Выключатель

Фото внутренностей

P_20220731_181942[1].jpg
СХЕМА МАШИНКИ
машинка схема.PNG

СХЕМА ПУЛЬТА
Схема пульт_xx.png

Принцип работы кода. Скорости вычисляются так: у нас есть 4 значения от 0 до 1023, измеряющихся в реальном времени (я решил использовать только два и разбил их на две части каждую, в итоге получили 4). Теперь преобразовываем их так, чтобы при сгибании 1-го джойстика из центра до максимума вперёд получали значения от 0 да 255, и при сгибании из центра назад было бы тоже самое. Со 2-м джойстиком, тоже из центра влево от 0 до 255 и в право от 0 да 255. В первой версии кода мы просто складывали эти скорости, то есть третье с четвёртым прибавляем к первым двум, и скорость движения вперёд просто пишем через if, чтобы можно было стоять . Это лишало нас способности поворачивать при движении вперёд на максимальной скорости. В version 2 (отдельное спасибо Nashatirkoза помощь в написании кода) c джойстика, отвечающего за поворот ось Y, мы снимаем коэффициент скорости колеса от 0 да 100, что более разумно. И вот так высчитываем скорость одного колеса: spr = x1p * y2r / 100. Скачать скетчи можно по ссылке.
КОД ПУЛЬТА

/*   Данный скетч модернизация скетча AlexGyver

*    исходник тут https://github.com/AlexGyver/nRF24L01

*/



#include <SPI.h>          // библиотека для работы с шиной SPI

#include "nRF24L01.h"     // библиотека радиомодуля

#include "RF24.h"         // ещё библиотека радиомодуля



RF24 radio(9, 10);





byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб

byte transmit_data[4];





void setup() {

  Serial.begin(9600); //открываем порт для связи с ПК



  radio.begin(); //активировать модуль

  radio.setAutoAck(0);         //режим подтверждения приёма, 1 вкл 0 выкл

  radio.setRetries(0, 0);    //время между попыткой достучаться, число попыток

  radio.enableAckPayload();    //разрешить отсылку данных в ответ на входящий сигнал

  radio.setPayloadSize(32);     //размер пакета, в байтах



  radio.openWritingPipe(address[0]);   //мы - труба 0, открываем канал для передачи данных

  radio.setChannel(0x60);  //выбираем канал (в котором нет шумов!)



  radio.setPALevel (RF24_PA_MAX); //уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX

  radio.setDataRate (RF24_1MBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS

  //должна быть одинакова на приёмнике и передатчике!

  //при самой низкой скорости имеем самую высокую чувствительность и дальность!



  radio.powerUp(); //начать работу

  radio.stopListening();  //не слушаем радиоэфир, мы передатчик

}
void loop() {

  transmit_data[0] = map(analogRead(A0), 0, 1023, 0, 255); //считываем и обрезаем показания с джостика 1 оси X

  transmit_data[1] = map(analogRead(A1), 0, 1023, 0, 255); //считываем и обрезаем показания с джостика 1 оси Y

  transmit_data[2] = map(analogRead(A2), 0, 1023, 0, 255); //считываем и обрезаем показания с джостика 2 оси X

  transmit_data[3] = map(analogRead(A3), 0, 1023, 0, 255); //считываем и обрезаем показания с джостика 2 оси Y

  radio.write(&transmit_data, sizeof(transmit_data)); //отправляем получившийся массив
}

КОД МАШИНКИ Version 2

/*   Данный скетч модернизация скетча AlexGyver
*    исходник тут https://github.com/AlexGyver/nRF24L01
*/

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"

RF24 radio(9,10); // "создать" модуль на пинах 9 и 10 Для Уно
//RF24 radio(9,53); // для Меги

byte address[][6] = {"1Node","2Node","3Node","4Node","5Node","6Node"};  //возможные номера труб
byte recieved_data[4];
void setup(){
  Serial.begin(9600); //открываем порт для связи с ПК

  pinMode(4, OUTPUT);

  pinMode(A0, OUTPUT);
  pinMode(A1, OUTPUT);
  pinMode(5, OUTPUT);

  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(6, OUTPUT);


  radio.begin(); //активировать модуль
  radio.setAutoAck(0);         //режим подтверждения приёма, 1 вкл 0 выкл
  radio.setRetries(0,15);     //(время между попыткой достучаться, число попыток)
  radio.enableAckPayload();    //разрешить отсылку данных в ответ на входящий сигнал
  radio.setPayloadSize(32);     //размер пакета, в байтах

  radio.openReadingPipe(1,address[0]);      //хотим слушать трубу 0
  radio.setChannel(0x60);  //выбираем канал (в котором нет шумов!)

  radio.setPALevel (RF24_PA_MAX); //уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
  radio.setDataRate (RF24_1MBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
  //должна быть одинакова на приёмнике и передатчике!
  //при самой низкой скорости имеем самую высокую чувствительность и дальность!!

  radio.powerUp(); //начать работу
  radio.startListening();  //начинаем слушать эфир, мы приёмный модуль
}

void loop() {
    byte pipeNo;               
    while( radio.available(&pipeNo)){    // слушаем эфир со всех труб
      radio.read( &recieved_data, sizeof(recieved_data) ); //читаем присланный массив
      digitalWrite(4, HIGH);

      int x1p = constrain(map(recieved_data[1], 128, 255, 0, 255), 0, 255); //обрезаем и переворачиваем значения
      int x1b = constrain(map(recieved_data[1], 128, 0, 0, 255), 0, 255); //обрезаем и переворачиваем значения
      int y2r = constrain(map(recieved_data[2], 122, 255, 100, 1), 0, 100); //обрезаем и переворачиваем значения
      int y2l = constrain(map(recieved_data[2], 122, 0, 100, 1), 0, 100); //обрезаем и переворачиваем значения

      int stl = constrain(map(recieved_data[2], 123, 255, 0, 255), 0, 255); //обрезаем и переворачиваем значения
      int str = constrain(map(recieved_data[2], 122, 0, 0, 255), 0, 255); //обрезаем и переворачиваем значения

      //Serial.print(x1p); Serial.print(" | "); Serial.print(x1b); Serial.print(" | "); Serial.print(y2r); Serial.print(" | "); Serial.print(y2l); Serial.println();
      int spr = constrain(x1p * y2r / 100, 0, 255); //скорость правого колеса
      int spl = constrain(x1p * y2l / 100, 0, 255); //скорость левого колеса
      int bspr = constrain(x1b * y2r / 100, 0, 255); //скорость правого колеса назад
      int bspl = constrain(x1b * y2l / 100, 0, 255); //скорость левого колеса назад
      Serial.print(stl); Serial.print(" | "); Serial.print(str); Serial.println();
      //Serial.print(recieved_data[2]); Serial.println();
      if (recieved_data[1]>138)
    { digitalWrite(A1, LOW);
      digitalWrite(A0, HIGH);
      analogWrite(5, spr);

      digitalWrite(7, LOW);
      digitalWrite(8, HIGH);
      analogWrite(6, spl);
    } else if (recieved_data[1]<118)
    { digitalWrite(A1, !LOW);
      digitalWrite(A0, !HIGH);
      analogWrite(5, bspr);

      digitalWrite(7, !LOW);
      digitalWrite(8, !HIGH);
      analogWrite(6, bspl);
    }else if (118<recieved_data[1]<138)
    { digitalWrite(A1, LOW);
      digitalWrite(A0, HIGH);
      analogWrite(5, str);

      digitalWrite(7, LOW);
      digitalWrite(8, HIGH);
      analogWrite(6, stl);
      }
  }
}

Я думаю, нужно усовершенствовать код. И машинке хорошо бы придумать применение, чтоб она не только была как игрушка для детей. К примеру, сверху держатель для бутылки приделать, чтобы возить напитки, не вставая с дивана, но это слишком просто. Предлагайте свои идеи по поводу кода и апгрейда.

Смотрите про коптеры:  Аппаратура и Электроника для радиоуправляемых моделей

Кстати скоро выйдет версия с камерой как у Алекса.

Всем спасибо за внимание!

Bluetooth машинка своими руками | alexgyver


И вот наконец-то я решился сделать свою собственную машинку на управлении по Bluetooth! Для начала решил сделать всё максимально просто: 4 мотора, 4 колеса, ардуина, блютус модуль, ну и драйвер. Запитаем всё от паурбанка, на него и колёса закрепим. Для Андроид слепил приложеньку GyverJoy, простенький джойстик. Самая главная фишка в том, что в проекте используем FPV камеру и приёмник для смартфона, добавив разделение экрана от новой версии Андроид получим одновременное управление машинкой и вывод видео с камеры! Смотрите видос, проект просто бомбезный!

Драйвер двигателей

Драйвер двигателя L298N
Драйвер двигателя L298N

Ардуино – достаточно ранимое устройство, не терпящее больших нагрузок по току. Соединяя его с “брутальными” мощными двигателями, не избежать беды. Поэтому для нормальной совместной работы нам нужно будет включить в схему робота компонент, отвечающий за управление двигателями – подающий и отключающий ток на их обмотки.

Речь идет о микросхеме или готовом модуле, которые называют драйвером двигателя. На нашем сайте есть статьи, посвященные драйверам, построенным на схеме H-моста.  Если вы покупаете готовые шасси, то обязательно предусмотрите возможность размещения на них подходящего драйвера.

Конструкция, шасси и двигатели робота на ардуино

Для того, чтобы что-то поехало или стало перемещаться, надо снабдить “это” колесами, гусеницами или манипуляторами-ногами. Вот тут выбор совершенно не ограничен, можно использовать совершенно любые комбинации и сочетания платформ. Как правило, в качестве начального варианта берутся уже готовые наборы платформ с Алиэкспресс.

Двигатель шасси ардуино
Двигатель, шасси и колеса машинки на ардуино

Если работать со стандартными наборами вам не интересно, можно создать платформу своими руками. Например, разобрать игрушечные радиоуправляемые машинки или любые двигатели на 5-12 вольт, с редукторами или без. Колеса можно создать и самим, что тоже является интересной задачей.

Контроллер ардуино

Куда уж без него, если мы говорим о проектах на этой платформе. Как правило, роботы машины делают на базе плат Arduino Uno и Nano. Mega будут слишком большие, Pro Mini сложнее подключать к компьютеру и соединять с остальными компонентами, а Leonardo требуют дополнительных навыков в программировании, они дороже и их основное преимущество (тесная интеграция с компьютером в качестве периферийного устройства) в данном случае не слишком востребована.

Есть еще вариант использования плат ESP8266 или ESP32, тогда в проекте появляется возможность управления машиной через WiFi. Но и сами платы и их программирование требует определенных навыков, в этой статье мы будем говорить преимущественно об Uno или Nano.

Кораблик для рыбалки пираний — радиоуправление на arduino это легко

Кораблик для рыбалки «Пираний» подойдет как для рыбалки, так и для отдыха в кругу семьи или друзей, мощный мотор и АКБ позволят ни один час рассекать волны. Оснащение светом светодиодных фар впереди и сзади позволяет не потерять его на водоеме в темное время суток. Хорошо преодолевает волны и встречный ветер, а также за счет эхолота Lucky FF918-CWLS на борту существенно облегчает поиск рыбных мест.

 Функционал данной модели:

  1 — Водяное охлаждение

  2 — Движение ВПЕРЕД/НАЗАД  ЛЕВО/ПРАВО

  3 — БУНКЕРА ГРУЗОПОДЪЁМНОСТЬ ПО 2 КГ

  4 — АКБ 60А/Ч

  5 — ЗАРЯДКИ АВТО, 12V, 220V

  6 — Свет передний/задний

  7 — Эхолот Lucky FF918-CWLS

  8 — МОЩНЫЙ ДВИГАТЕЛЬ

Купить arduino, модули и датчики ардуино | alexgyver


Привет, друг! Ты находишься на странице со ссылками на практически все существующие модули, датчики и сенсоры Arduino! ⚠ Все ссылки ведут на Aliexpress, на крупных проверенных продавцов (WAVGAT, Great Wall, e_goto, FEIYANG). Купить Arduino и модули у них можно абсолютно безопасно, и доставка от них обычно самая быстрая.

Да, они китайские, но Arduino — очень простое устройство, это всего лишь «обвязка» для микроконтроллера ATmega. А датчики для Ардуино… Это вообще простейшие устройства, их даже подделывать не нужно. Китайцы давно опережают всех по уровню производства микроэлектроники, так что покупать у них Arduino — лучшее, что можно сделать. У нас в России вы купите абсолютно то же самое, но дороже в 5, а в некоторых магазинах даже в 10 раз! ͡๏̯͡๏ (проверьте, это действительно так). Редкое исключение – Амперка, у них собственное производство.

✔ Небольшой лайфхак: если купить модули Arduino у одного продавца (добавлять в корзину Aliexpress), то они придут одновременно одной большой посылкой по цене одной доставки!

Также смотрите другие модули на странице магазина на Али: WORLD CHIPS, GREAT WALL, SAIMORE, ROBOT DYN, WAVGAT, S S S , EC BUYING, ROBOTLINKING, ELECTRONIC FANS

Обзор модули nrf24l01

При разработке электронных устройств нередко возникает потребность в передаче каких-либо данных на некоторое расстояние. Например термодатчик, расположенный на улице, должен передавать значение температуры центральному устройству, а датчик движения – отдавать команду на включение сирены, расположенной в отдельном помещении.

Подобных задач существует множество, как и методов их решения. В тех случаях, когда организовать проводную связь не представляется возможным, на помощь приходят радиомодули NFR24L01, работающие в диапазоне частот 2.4-2.5 ГГц. Их простота и надёжность обеспечила модулям огромную популярность среди радиолюбительских конструкций. NFR24L01 можно встретить в таких устройствах, как:

Рисунок №1 – внешний вид NRF24L01

Как видно из вышеприведенного рисунка, комплектация платы является базовой и содержит сам чип, штыревую колодку и антенну в виде извилистой дорожки. Такой набор обеспечивает дальность связи до 100м при прямой видимости или до 30м в помещении. Если этого недостаточно, то есть возможность приобрести такие же модули, только с дополнительным усилителем и внешней антенной (рисунок №2). В таком случае дальность связи можно увеличить до 1000м.


Рисунок №2 – NRF24L01 с усилителем и внешней антенной

Организация питания радиомодулей требует повышенного внимания, так как большинство начинающих пользователей сталкивается с проблемами при их запуске. Дело в том, что в момент инициализации NRF24L01 потребляют значительный ток, который не может обеспечить стандартный 3-вольтовый преобразователь Arduino.

Смотрите про коптеры:  ВЗГЛЯД / Запад бросился вдогонку за новейшим российским БПЛА :: В мире

Как следствие, наблюдаются сбои в работе радиосвязи. Исключить эту неприятную ситуацию поможет электролитический конденсатор, ёмкостью около 100 мкФ. Его необходимо подпаять параллельно выводам GROUND и VCC модуля. Дополнительная ёмкость поможет сгладить пульсации при старте и обеспечит достаточный запас энергии.

Ещё одним вариантом решения проблемы запуска, является использование дополнительного адаптера со встроенным стабилизатором напряжения. В таком случае для NRF24L01 можно использовать внешнее питание от 4.8В до 12В, а максимальный выходной ток составит 800мА. Внешний вид такого адаптера показан на рисунке №3.

Рисунок №3 – Дополнительный адаптер для NRF24L01

И наконец, для тех, кто хочет углубиться в строение самого радиомодуля NRF24L01, на рисунке №4 приведена его электрическая схема.

Рисунок №4 – электрическая схема NRF24L01

Передатчик

// Библиотека передатчика
#include <VirtualWire.h>

void setup() 
{ 
    // Запуск передатчика
    vw_set_ptt_inverted(true);
    vw_setup(1000); // Bits per sec 
}

void loop() 
{
    // чтение показаний с переменного резистора
    int sensorValue = analogRead(A0);

    // отправляем значение
    send(sensorValue); 
}

void send(int param) 
{ 
    // конвертируем int в массив из 2 байт
    uint8_t msg[2];
    int len = 2;
    msg[0] = highByte(param);
    msg[1] = lowByte(param);

    // отправляем непосредственно в радиоканал
    vw_send(msg, len);
    // ждем пока сообщение не уйдет целиком
    vw_wait_tx(); 

}

Питание робота

Обеспечение правильной схемы питания – это то, что очень часто оказывается на последнем месте в списке приоритетов начинающих ардуинщиков. Между тем, именно ошибки в схеме электропитания становятся основными причинами проблем, возникающих в процессе работы умных устройств на Ардуино.

Создавая ардуино-машинку нужно предусмотреть питание контроллера, двигателей, драйвера и датчиков. У всех них есть свои ограничения и особенности работы, требуется создать оптимальное по весу и сложности решение, позволяющее учесть все эти ограничения.

Питание робота
Питание робота на Ардуино

Создавая по-настоящему автономное устройство робота, нужно побеспокоиться и о времени его работы, и о возможности быстрой подзарядки или смены батареек. Как правило, выбираются решения из следующих вариантов:

  • Обычные батарейки AA. Тут нужно понимать, что платы Arduino Uno, Nano и большинство двигателей, используемых в Ардуино-робототехнике, требуют напряжения в диапазоне 6-9 вольт. Поэтому придется собрать вместе последовательно не менее 4 батареек на 1,5 В, причем сами батарейки должны быть хорошего качества и обеспечивать работу с достаточно большим током. Например, большинство солевых батареек этим критериям не удовлетворяют. Батарейки AAA при создании ардуино-машинок практически не используются из-за своей пониженной емкости (хотя могут использоваться в миниатюрных моделях, где размер имеет первостепенное значение).
  • Аккумулятор AA. Здесь возникает еще большее ограничение по напряжению и току. Большинство аккумуляторов выдают напряжение 1,2 вольт, поэтому их требуется больше для “собирания” нужных нам 6-9 вольт. Несомненным плюсом является возможность перезарядки.
  • Литиевые аккумуляторы 18650. Это уже “серьезная артиллерия”, позволяющая получить большое время автономной работы, возможность подзарядки и приемлемые характеристики по току и напряжению. Рабочее напряжение для таких элементов питания – 3,7 В, что позволяет собирать готовую схему питания всего из двух элементов.
  • Другие источники питания. Сюда можно включить как более мощные и габаритные никель-металлгидридные, кадмиевые аккумуляторы, так и многочисленные литий-ионные “плоские” варианты, используемые в дронах, смартфонах или другой портативной цифровой технике.

Каким бы ни был источник питания, нужно обеспечить его надежное крепление, удобное расположение, защиту от воздействия недружелюбной окружающей среды. Если вы подключаете к одному источнику и контролер, и двигатели, и датчики, то нужно позаботиться о правильной схеме, включающей, например, надежную связь “по земле” всех устройств.

Подключаем bluetooth к машинке

Мы собираемся использовать модуль Bluetooth через  SoftwareSerial (библиотеку SoftwareSerial.h), поэтому подключаем модуль блютуз к 3 и 4 цифровым пинам ардуино.  RX к D3,   TX к D4

Схема ардуино робота машинки 5
Схема подключения Bluetooth к ардуино машинке

Платформа робота готова! Теперь осталось загрузить прошивку для контроллера Ардуино и программу для смартфона RC CAR. Вы можете посмотреть на нашем сайте обзор Android приложений для работы с Arduino.

Подключаем двигатели и плату

С питанием платформы мы разобрались, теперь подключим остальные компоненты. Для начала припаиваем провода к моторам, затем обматываем их изолентой, чтобы случайно в дальнейшем не оторвать контакты. Можно сделать так, что в итоге на 2 двигателя будут идти всего два провода вместо 4х. Это немного упростит монтаж и сэкономит место на платформе.

Монтируем драйвер двигателей на платформу так, чтобы его радиатор был спереди. ЭТО ВАЖНО! В противном случае, вам придется переписывать программу для микроконтроллера.

Ардуино робот драйвер
Драйвер двигателя для Ардуино робота

Затем размещаем холдер и плату БМС. Не забываем оставлять место спереди для последующего монтажа каких-либо сенсоров. Ардуиио нужно разместить так, чтобы была в дальнейшем возможность подключить его к ПК для прошивки. Это же правило относится и к модулю для зарядки аккумуляторов.

Питание для ардуино и других электронных компонентов мы возьмем от драйвера двигателей.

Приложение

Так как я не владею навыком написания приложение под Anroid, то для создания пульта управления использовать уже известный у многих начинающих разработчиков инструмент визуального программирования — App inventor.

Что-то подсмотрел у других в интернете, что доработал, и получилось такое простое приложение.

Сначала нужно включить машинку и сделать сопряжение по Bluetooth со смартфоном. Пароль модуля 0000 или 1234. После этого откройте приложение и нажмите «Подключиться к машинке». Подключитесь к модулю HC-06. Светодиод на нём должен перестать мигать.

Если сразу начать нажимать на стрелки направлений движения, то не поедет. В первую очередь нужно нажать на одну из трёх скоростей, а уже потом на стрелки направления. Тогда поедет.

И, так как я не публиковал это приложение в Google Play, смартфон может ругаться на его безопасность. Но можно смело устанавливать. В нём всё работает безопасно.

Пример использования №2

Создадим проект передачи данных с одной плата Arduino на другую по радиоканалу и использованием модулей nRF24L01 .

Схема соединений нашего проекта на рис. 10.

Рисунок 10.

Листинг 3.

#include <SPI.h>                                     
#include <nRF24L01.h>                                         
#include <RF24.h>
// Создаём объект 
RF24  m24l01(7, 8);                  
// Массив для отправки данных  
byte  arr1[4];                                   
// идентификатор канала
#define ID 0xF0F0F0F0E2LL
// стартовый байт отправки
#define SEND_START 55       
// стоповый байт отправки
#define SEND_STOP 56         

#include "DHT.h"                                          
// создание DHT
DHT snr(6, DHT11);                              
int t;
int h;
unsigned long millissenddata=0;

void setup(){
    Serial.begin(9600); 

    m24l01.begin();
    m24l01.setPALevel(RF24_PA_HIGH);
    m24l01.setDataRate(RF24_250KBPS);
    m24l01.setChannel(0x55);
    m24l01.openWritingPipe(ID);

    snr.begin();      
}

void loop() {
   // отправка данных
   if(millis()-millissenddata>10000) {
      // получение данных с датчика
      h = snr.readHumidity();
      t = snr.readTemperature();
      arr1[0] = SEND_START;   
      arr1[1] = h;                             
      arr1[2] = t;                             
      arr1[3] = SEND_STOP;   
      Serial.println("send");
      // отправляем данные 
      m24l01.write(&arr1, sizeof(arr1));   
      delay(100);
      millissenddata=millis();
   }
}

Листинг 4.

#include <SPI.h>                                     
#include <nRF24L01.h>                                         
#include <RF24.h>
// Создаём объект 
RF24 m24l01(7, 8);                  
// для получения  данных  
int  arr1[4]; 
// идентификатор канала
#define ID 0xF0F0F0F0E2LL

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C dislpl(0x27,16,2);

void setup() {
    Serial.begin(9600);                                       
    m24l01.begin();                                          
    m24l01.setChannel(0x55);                            
    m24l01.setDataRate(RF24_250KBPS);                   
    m24l01.setPALevel(RF24_PA_HIGH);                 
    m24l01.openReadingPipe(1, ID);  
    // режим приема 
    m24l01.startListening  ();                             
    dislpl.init();
    // заголовки на дисплей
    dislpl.backlight();
    dislpl.setCursor(0,0);
    dislpl.print("H=");
    dislpl.setCursor(0,1);
    dislpl.print("T=");

}       
void loop() {
      if(m24l01.available()) { 
        m24l01.read(&arr1, sizeof(arr1));                  
        // Показания на дисплей
        dislpl.setCursor(2,0);
        dislpl.print(arr1[1]);
        dislpl.setCursor(2,1);
        dislpl.print(arr1[2]);
      }   
 }

И результат работы (рис. 11)

Рисунок 11.

Пример платформы робота-машины на ардуино

Предлагаем инструкцию по созданию универсальной платформы, которая потом пригодится для создания самых разных проектов, независимо от выбранного контролера или типа шасси. Вы можете использовать стандартные варианты из Алиэкспресса, как на видео, можете снабдить машину гусеницами и создать вездеход,  можете придумать вообще ни на что не похожий вариант.

Робот на Ардуино
Робот на Ардуино

Для реализации проекта нам понадобится:

  • Контроллер Ардуино (в нашем случае, Arduino Nano).
  • Драйвер двигателя L298N.
  • Двигатели с редукторами.
  • Корпус и шасси для крепления колес и оборудования
  • Корпус для аккумуляторов 18650 с выключателем.
  • Коммутационные провода.

Дополнительное оборудование, которое потребуется для создания полноценного проекта:

  • Датчик расстояния и серво-мотор, на который он установлен.
  • Инфракрасные датчики линии.
  • Светодиоды для индикации и “красоты”.
  • Пьезодинамик – пищалка.
  • Bluetooth модуль (если собираетесь управлять машинкой дистанционно).
  • Sensor shield (упрощает коммутацию).
  • Модуль контроля заряда и подзарядки аккумуляторов.
  • Сами аккумуляторы.
Схема ардуино-робота машинки 1
Общая схема машинки на Ардуино

Пример
использования №1

Так как основной областью применения
радиомодулей NRF24L01 являются
различные системы удалённого мониторинга, создадим небольшой проект, суть
которого передавать по радиоканалу температуру и влажность с датчика DHT11.

Рисунок №8 – проект удалённого контроля температуры и
влажности

Arduino1 будет один раз в 2 секунды считывать показания датчика DHT11 и отправлять
данные по радиоканалу на Arduino2,
которая выведет их на дисплей. В данном проекте использован символьный
ЖКИ-дисплей с конвертером I2C,
что позволяет использовать всего 2
провода для его подключения.

Радиоуправление на ардуино

Используя arduino можно самостоятельно изготовить сложную систему радиоуправления не затрачивая, при этом, много усилий. Для популярной, на данный момент, платформы arduino существует огромное количество модулей расширяющих возможности данной платформы. Например модули nrf24l01 для радиосвязи. Существует некоторое колличество разновидностей данного модуля. Есть модули для связи на расстояниях до 100м они небольшие и недорогие

Если необходима компактность то можно использовать другие ардуины например:

Также можно использовать любое другое ардуино но эти два (описанных выше) проще всего. Есть например 

Теперь давайте рассмотрим схему передатчика:

Рисунок 1 – Передатчик на ардуино

У данного передатчика имеется 10 кнопок и 5 потенциометров. Допустим нам надо управлять дистанционно двумя серврмрторами, 3мя ШИМами, одним пьезодинамиком и 8ю цифровыми выходами для каких либо целей (напр. сделать 8 фонарей на радиоуправлямый автомобиль или 1 фонарь а 7 выводов оставить для чего нибудь на будущее). На схеме выше показна ардуино уно но аналогично можно соединить радиомодуль кнопки и потенциометры с другим ардуино для этого надо использовать надписи на плате ардуино. Давайте теперь рассмотрим приемник:

Рисунок 2 – Приемник на Ардуино

 Напрямую к выводам ардуино можно подключать только маломощный пьезодинамик иначе слишком большой нагрузкой можно ардуино сломать. То же самое относится и ко всем остальным выводам на приёмнике. К ним нельзя подключать слишком большую нагрузку для того чтобы Ардуино не испортилось. Для питания сервомоторов можно использовать отдельный источник питания. Если сервомоторы мощные то их вывод питания нельзя подключать к выводу питания ардуино. Теперь давайте рассмотрим скетчь передатчика:

Смотрите про коптеры:  Аккумулятор для квадрокоптера: как выбрать и где заказать

В начале скетча подключаются заголовочные файлы для связи с радиомодулем потом назначаются пины для связи с радиомодулем по SPI, указывается идентификатор трубы который должен совпадать с идентификатором трубы указанном в скетче приемника (см. ниже), создаётся массив для передачи данных на приемник. Далее идёт функция инициализации в которой инициализируется и настраивается радиомодуль после чего он устанавливается на передачу данных, инициализируются входы ардуино и делается небольшая задержка на всякий случай. В основном цикле считываются значения с потенциометров для сервомоторов и преобразуются в градусы функцией map. Далее, в следующую ячейку массива, запихиваются состояния входов ардуино побитно. После чего считываются значения с потенциометров для управления ШИМами, делятс на 4 т.к. аппаратный ШИМ ардуино принимает 1 байт. Оставшиеся два состояния, с кнопок, пропихиваются в оставшуюся ячейку массива и он, наконец таки, отправляется на приемник.

Теперь скетчь приемника:

В приемнике помимо заголовочных файлов для связи с радиомодулем есть ещё заголовочный файл для работы с сервомоторами. Радиомодуль теперь настраивается на прием. В основном цикле происходит прием и раздача информации на периферию микроконтроллера ардуины. 

Посмотреть видео по данной теме с испытаниями системы радиоуправления на ардуино:

Робот на ардуино своими руками

В отличие от других проектов, создание робота – автомобиля (Arduino Car) требует понимания и навыков работы сразу с несколькими важными компонентами, поэтому не стоит приступать к созданию машинок без получения базовых навыков работы с платформой Arduino.

Робот машина на Ардуино
Робот машина на Ардуино

Вот список ключевых компонентов, которые обязательно встретятся в проекте.

Сборка

Можно купить готовое шасси для машинки сразу вместе с моторами и колёсами. Останется только установить электронику и всё подключить.

Но намного интереснее создать это самому. Для изготовления подойдёт любой листовой материал, который вам будет легко обрабатывать, и который достаточно лёгкий. Например, оргалит, текстолит, фанера. Я выбрал оргстекло, что сделало мою машинку даже очень похожей на шасси из магазина.

Из инструментов могут понадобиться:

  • Ручной или электрический лобзик (я пользовался ручным), чтобы отрезать нужные куски от материала.
  • Дрель или шуроповёрт, свёрла.
  • Крепёжные элементы — болты, гайки и саморезы любого подходящего диаметра.

Получилось дёшево и сердито. А главное работает.

Паять я тоже ничего не стал, чтобы потом можно было бы легко разобрать эту машинку и модернизировать. Припаивал только провода к моторам.

В магазинном наборе для крепления моторов используются специальный кронштейны, к которым сам мотор прикручивается болтами диаметром 3 мм. Но болтов нужного диаметра и длины у меня не оказалось, хоть и можно было изготовить аналогичный кронштейн. Поэтому пришлось изощряться и использоваться даже детали детского конструктора, чтобы надёжно прикрепить моторы. На видео крепление моторов рассмотрено лучше.

Платы в идеале лучше прикручивать короткими болтами с диаметром 3 мм. Но и таких у меня не оказалось. Поэтому пришлось делать в оргстекле отверстия 2 мм и прикручивать платы саморезами. Держится вполне нормально.

У модуля Bluetooth особая проблема крепления — там отверстий для крепления нет вообще. Пришлось прижимать плату к раме другой деталью из оргстекла. Тут главное не сжать слишком сильно, чтобы не повредить.

Аккумулятор крепится аналогично Bluetooth модулю, только снизу.

И обязательно прикручиваем мебельное поворотное колесо, которое станет опорным, и не будет приводным. Следите за тем, чтобы вся конструкция была в горизонтальном положении, когда стоит на всех трёх колёсах.

Схема подключения

Питание платы берётся от «Кроны» и подаётся на Arduino через пины VIN и GND. Также подаётся отдельно на драйвер двигателей через порты 12V и GND.

Blutooth модуль HC-06 получает питание в 3,3 вольта от Arduino. Если подключить к 5 вольтам, то тоже работает нормально. Выход RX модуля подключается к TX на Arduino, а TX — в RX, то есть наоборот.

На драйвере двигателей нужно снять две боковые перемычки — Enable. Пины под ними позволят нам управлять скоростью вращения двигателей. И эти пины подключаются к Arduino обязательно к ШИМ-портам (обозначенные знаком ~). На схеме это порты 3 и 5.

Питание моторов подаётся на Input драйвера от Arduino с портов 2 и 4, 6 и 7. А сами моторы подключаются к Output A и Output B драйвера.

Если после сборки и прошивки, вы подаёте на машинку сигнал двигаться вперёд, а оба колеса при этом вращаются в разных направления, то нужно поменять местами провода на одном из моторов в выходе Output.

Если при движении вперёд машинка едет назад, то нужно поменять местами провода Output обоих двигателей (хотя, кто знает, где у ней перед, а где зад…).

Если при повороте налево, машинка едет направо, то нужно поменять местами Output A и Output B.

Если подключить всё по схеме, то скетч переделывать не нужно будет.

Схема электропитания робота автомобиля

Вопрос организации правильного стабильного электропитания является одним из самых важных в любом проекте.В нашей модели применена рекомендованная нами схема питания, основанная на использовании литийионных аккумуляторов формата 18650 и платы защиты их от переразряда и перезаряда.

Давайте разберем самый простой вариант схемы питания электромоторов. Перед началом сборки лучше заранее припаять провода к моторам.

Схема ардуино робота машинки 2
Схема питания и подключения двигателей в ардуино автомобиле

Все достаточно стандартно и вы найдете в интернете десятки подобных примеров. Но в этой схеме есть большой минус – в случае полного разряда аккумуляторы придут в негодность.

Машинка на Ардуино
Машинка на Ардуино

Для добавления контроллера разряда придется внести следующие изменения в схему:

Схема ардуино робота машинки 3
Схема питания с контролем разряда аккумулятора

Теперь аккумуляторы будут защищены, но здесь нет возможности заряжать их.

Питание ардуино
Питание робота Ардуино

Для зарядки можно использовать модуль повышения напряжения с 5v до необходимого уровня зарядки, который зависит от количества серий используемых аккумуляторов. Он имеет гнездо типа микро USB и при частом использовании оно может сломаться, поэтому мы рекомендуем установить дополнительное гнездо для последующей подзарядки пяти вольтовым блоком питания. Для зарядки двух литий-ионных аккумуляторов необходимо настроить выходное напряжение на 8,4 Вольта.

Схема питания ардуино робота машинки
Схема питания с модулем зарядки для ардуино робота машинки

Шаг 1: нужные части и инструмент

Я воспользовался готовыми решениями, и все запчасти и инструменты были приобретены через интернет.

Запчасти:

  1. Набор шасси 4WD для робота (GearBest)
  2. Arduino Nano (GearBest)
  3. Модуль H-моста LM298 (GearBest)
  4. Модуль bluetooth HC-06 (Amazon)
  5. Литий-ионные батарейки 2 x 18650 (GearBest)
  6. Отсек для батареек 2x 18650 (GearBest)
  7. Небольшая макетная плата (GearBest)
  8. Провода сечением 0.5 мм2
  9. Провода с джамперами папа-мама (Amazon)
  10. Провода с джамперами мама-мама (Amazon)
  11. Малярная лента, изолента или что-то подобное (Amazon)

Для робота, объезжающего препятствия:

Ультразвуковой модуль измерения расстояния HC — SR04 (GearBest)

Необходимый инструмент :

  1. Паяльник (Amazon)
  2. Кусачки (Amazon)
  3. Стриппер для провод (GearBest)
  4. Клеевой пистолет (GearBest)

Шаг 11: источник питания

Чтобы управлять приводами (моторами) и питать контроллер, роботу нужен источник питания. Большинство роботов питается от батарей. Когда мы говорим о батареях, то имеем в виду множество вариантов:

  1. Алкалиновые батарейки AA (не заряжаются)
  2. Никель-металгидридные или никель-кадмиевые батарейки AA (заряжаются)
  3. Литий-ионные батареи
  4. Литий-полимерные батареи

В зависимости от ваших нужд, нужно выбрать подходящий вид батарей. По-моему мнению, нужно всегда выбирать заряжаемые батареи достаточной ёмкости. Я использовал 2 литий-ионные батареи стандарта 18650 ёмкостью 2600mAh. Если для автономности вам нужно больше мощности, используйте большой комплект батарей, например 5A turnigy.

Отсек для батарей:Отсек для батарей я заказал в Китае, он не подходил для батарей с плоским верхом, поэтому я использовал два неодимовых магнита для придания батарейкам нужной формы.

Зарядка:Для зарядки батарей нужен хороший зарядник. По моему опыту, эти зарядники хорошо зарекомендовали себя:

  1. PowerEx AA Charger-Analyzer (Amazon)
  2. XTAR LiIon Battery Charger (Amazon)
  3. Turnigy LiPo Battery Charger (Amazon)

Шаг 13: электропроводка

Для соединения модулей понадобятся провода с джамперами.Соедините красные провода двух моторов вместе (на каждой стороне) и затем черные провода. В итоге у вас выйдет по две клеммы с каждой стороны.

MOTORA отвечает за два правых мотора, соответственно два левых мотора соединены с MOTORB.Для соединения всех компонентов следуйте инструкции:

Соединение моторов:

Out1 -> красный провод левостороннего мотора ( )Out2 -> черный провод левостороннего мотора ( — )Out3 -> красный провод правостороннего мотора ( )Out4 -> черный провод правостороннего мотора ( — )LM298 — > ArduinoIN1 ->

D5IN2-> D6IN2 ->D9IN2-> D10Модуль Bluetooth -> ArduinoRx-> TxTx ->RxGND -> GNDVcc -> 3.3VПитание12V — > красный провод батарейGND -> черный провод батарей и пин GND на Arduino5V -> соедините с пином 5V Arduino

Шаг 8: контроллер

Теперь у нас установлены шасси и приводы, но нам не хватает контроллера. Шасси без контроллера никуда не поедут. Робот будет оставаться на месте, оставаясь безжизненным. Поэтому, для того чтобы робот перемещался, нам нужен мозг (контроллер).

Контроллер – программируемое устройство, способное работать по заданной программе и отвечающее за все вычисления, принятие решений и коммуникацию. В нашем случае в качестве контроллера мы используем микроконтроллер Ардуино Нано.

Контроллер принимает входные данные (с датчиков, удалённо и т.д.), обрабатывает их и затем даёт команду приводам (моторам) выполнить выбранное задание.

Если вы подключите позитивный провод от батарей на одну строну моторчика, затем подключите негативный провод от батарей на другой контакт моторчика, то он начнёт крутиться вперёд. Если вы поменяете провода местами, то мотор начнёт вращаться в другую сторону.

Микроконтроллер можно использовать, чтобы вращать мотор в одном направлении, но если вам хочется с помощью микроконтроллера вращать мотор и вперёд, и назад, то вам нужна дополнительная схема – H-мост. В следующем шаге я объясню, что это такое.

Оцените статью
Радиокоптер.ру
Добавить комментарий

Adblock
detector