Текущее время: 28 мар 2024, 16:25

Калининград & ХОББИ

Занятие любимым хобби - это путь к счастливой жизни!

Радиоуправляемая модель на Ардуино

Тут собраны схемы различных устройств сделанных на контроллерах Ардуино, Лазерный гравер на Ардуино, Металлоискатель на Ардуино, Метеостанция, Кодовый замок, и множество других устройств и изобретений
Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Радиоуправляемая модель на Ардуино

Сообщение -=dp=- » 12 янв 2016, 21:52

Всем привет!

Решил для своей детворы соорудить радиоуправляемую машинку на Ардуино и радиомодулях на 433 МГц. :)
Порылся в детских игрушках и нашел сломанную машинку с моторчиком на задних колесах, от другой машинки нашел 4 колеса и перекладины для них, от третей машинки взял верхнюю часть кузова :D
Дальше осталось только все это сляпать воедино :?

Долго думал на какой Ардуино делать, УНО, НАНО, ПРО мини и решил взять две модели контроллеров Ардуино, это:
Ардуино НАНО для установки в самой модели и
Ардуино ПРО мини 5В 16МГц для установки в пульт.
В качестве приемопередатчиков я выбрал комплект радио-модулей на 433 МГц.
Для управления поворотной осью радио-модели решил применить серводвигатель SG90.
Вот собственно весь основной набор деталей.

Изготовление пульта для радиоуправления.
Для изготовления пульта радиоуправления , как я уже писал выше, нам понадобится контроллер Ардуино ПРО мини 5В 16 МГц, передатчик на 433 МГц, 8 кнопок без фиксации, 1 кнопка с фиксацией для включения питания, отсек для пальчиковых батареек 6 шт, что бы получилось напряжение питания 9 в, ну и корпус с антенной.
Сначала делаем разметку на корпусе под установку кнопок, сверлим отверстия и вкручиваем все наши 8 кнопочек и кнопку питания.
Я разместил на передней панели пульта еще пару светодиодов, один для контроля нажатия на любую из кнопок, второй для контроля напряжения питания или разряда батареек.
После крепления кнопок размещаем в корпусе Ардуино ПРО мини , радиомодуль на 433 МГц и отсек для батареек.
Все это я прикрепил термоклеем.
Далее начнем распайку кнопок. В начале припаиваем ко всем кнопкам кроме кнопки питания общий провод, его конец подпаиваем через резистор 560 Ом на вывод пинания VCC Ардуино.
К другому концу кнопок припаиваем отдельные проводки , которые распаиваем на цифровые выходы Ардуино, начиная с 2 по 9.
Затем берем 8 одинаковых резисторов , номиналом от 3 до 100 КОм и припаиваем их один конец к тем же цифровым выводам или к контактам кнопок, к которым они подпаяны.
Вторые концы соединяем все вместе и припаиваем их проводом к общему выводу GND Ардуино.
Эти резисторы необходимы для шунтирования цифровых входов от наводок и помех.
Затем припаиваем светодиоды последовательно с резисторами 560 Ом к выводам 10 и 13 Ардуино.
Далее припаиваем вывод VCC передатчика 433 МГц к + контакту блока батареек, вывод GND припаиваем к выводу GND на Ардуино, вывод DATA припаиваем к цифровому входу 12 Ардуино.
Вывод питания Ардуино VCC припаиваем к клемме в средней части батарейного блока так, чтобы получился овод + от третей батарейки, то есть 4,5 В.
Минусовой вывод батарейного блока припаиваем к одной клемме кнопки с фиксацией, а вторую клемму соединяем с общим выводом GND Ардуино ПРО мини.
Как вы наверное уже догадались, мы будем использовать два напряжения питания:
4,5 В для питания контроллера Ардуино ПРО мини,
9 В для питания передатчика.
Так как мы используем 2 напряжения, коммутировать питание (включать, выключать) мы будем через минус.
После завершения монтажа пульта радиоуправления, подключаем Ардуино ПРО мини через переходник USB UART RS232 TTL5В, я использовал на чипе CH340 и закачиваем в контроллер наш скетч :

Код: выделить все
#include <VirtualWire.h>
const int btn2 = 2;
const int btn3 = 3;
const int btn4 = 4;
const int btn5 = 5;
const int btn6 = 6;
const int btn7 = 7;
const int btn8 = 8;
const int btn9 = 9;
int btn2State = 0;
int btn3State = 0;
int btn4State = 0;
int btn5State = 0;
int btn6State = 0;
int btn7State = 0;
int btn8State = 0;
int btn9State = 0;
int check = 0;

void setup()
{
pinMode(btn2, INPUT);
pinMode(btn3, INPUT);
pinMode(btn4, INPUT);
pinMode(btn5, INPUT);
pinMode(btn6, INPUT);
pinMode(btn7, INPUT);
pinMode(btn8, INPUT);
pinMode(btn9, INPUT);
pinMode(10, OUTPUT);
pinMode(13, OUTPUT);
// Initialize the IO and ISR
vw_setup(2000); // Bits per sec
delay(500);
digitalWrite(10, HIGH);
digitalWrite(13, HIGH);
delay(5000);
digitalWrite(10, LOW);
digitalWrite(13, LOW);
}


void loop()
{
int sensorValue1 = analogRead(A0);
if (sensorValue1<=800){
digitalWrite(10, HIGH);
delay(500);
digitalWrite(10, LOW);
delay(500);
digitalWrite(10, HIGH);
delay(500);
digitalWrite(10, LOW);
delay(500);
digitalWrite(10, HIGH);
delay(500);
digitalWrite(10, LOW);
delay(500);
digitalWrite(10, HIGH);
delay(500);
digitalWrite(10, LOW);
delay(500);
digitalWrite(10, HIGH);
delay(500);
digitalWrite(10, LOW);
delay(500);
} else {
digitalWrite(10, LOW);
};
btn2State = digitalRead(btn2);
btn3State = digitalRead(btn3);
btn4State = digitalRead(btn4);
btn5State = digitalRead(btn5);
btn6State = digitalRead(btn6);
btn7State = digitalRead(btn7);
btn8State = digitalRead(btn8);
btn9State = digitalRead(btn9);

if (btn2State == HIGH) {
send("1");
digitalWrite(13, HIGH);
delay(1);
} else {
digitalWrite(13, LOW);
};
if (btn3State == HIGH) {
send("2");
delay(1);
} else {
digitalWrite(13, LOW);
};
if (btn4State == HIGH) {
send("3");
delay(1);
} else {
digitalWrite(13, LOW);
};
if (btn5State == HIGH) {
send("4");
delay(1);
} else {
digitalWrite(13, LOW);
};
if (btn6State == HIGH) {
send("a");
delay(1);
} else {
digitalWrite(13, LOW);
};
if (btn7State == HIGH) {
send("b");
delay(1);
} else {
digitalWrite(13, LOW);
};
if (btn8State == HIGH) {
send("c");
delay(1);
} else {
digitalWrite(13, LOW);
};
if (btn9State == HIGH) {
send("d");
delay(1);
} else {
digitalWrite(13, LOW);
};

}

void send (char *message)
{
vw_send((uint8_t *)message, strlen(message));
vw_wait_tx(); // Wait until the whole message is gone
}




Да, чуть не забыл :) нам понадобится библиотека VirtualWire, которую вы можете скачать во вложении.


Вложения
VirtualWire.rar
Библиотека VirtualWire
(17.3 KiB) Скачиваний: 1131
2.jpg
Радио управление Ардуино ПРО мини 433 МГц
2.jpg (78.43 KiB) Просмотров: 41733
4.jpg
Пульт радиоуправления на Ардуино ПРО мини

Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Re: Радиоуправляемая модель на Ардуино

Сообщение -=dp=- » 12 янв 2016, 22:20

Изготовление радиомодели на Ардуино.
Для изготовления радио-модели понадобятся следующие детали:
Контроллер Ардуино НАНО,
Колесный привод от любой детской электромашинки , с редуктором и коллекторным двигателем постоянного тока с напряжением 5-9 В,
Серводвигатель SG90,
Модуль приемника 433МГц,
4 транзистора IRF 710 или аналоги, можно так же использовать биполярные транзисторы типа КТ819.
Стабилизатор LM7805,
Резисторы 560 ОМ - 8 шт,
200 Ом - 4 шт,
47-100К - 4 шт,
кучка цветных светодиодов,
передняя ось с колесами, и такие же колеса для задней оси,
корпус,
Кусок оргстекла толщиной 6-8мм,
Болтики на М3, гайки, в общем различные крепежные элементы,
Суперклей, термоклей, капроновые стяжки, изолента и т.д.

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

Затем крепим электронику, контроллер Ардуино НАНО, приемник на 433 МГц, кусок макетной платы для распайки транзисторного моста управления коллекторным двигателем заднего привода и схемы стабилизатора питания для Ардуино НАНО.
Распаиваем все это по схеме ниже.
Заранее планируем место для размещения аккумуляторов , кнопки включения питания и крепления кузова со светодиодами.
В кузове я насверлил отверстий в местах расположения фар и приклеил термоклеем в эти отверстия светодиоды, сзади красные, спереди синие габаритные огни и белые светодиоды с линзами в качестве фар ближнего-дальнего света.
В общем, тут все делаем на ваш собственный вкус , на сколько хватит фантазии :D

У меня получилось как то так :


Вложения
8.jpg
Радиоуправляемая модель на Ардуино
6.jpg
Радиоуправляемая модель на Ардуино
5.jpg
Шасси радио-модели на Ардуино, вид снизу

Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Re: Радиоуправляемая модель на Ардуино

Сообщение -=dp=- » 12 янв 2016, 22:28

Далее припаиваем выводы серводвигателя к Ардуино НАНО, распаиваем сигнальные выводы для включения светодиодов и управления двигателем заднего моста согласно скетчу

Код: выделить все
#include <VirtualWire.h>
#include <ServoTimer2.h>
byte message[VW_MAX_MESSAGE_LEN]; // a buffer to store the incoming messages
byte messageLength = VW_MAX_MESSAGE_LEN; // the size of the message
const int receive_pin = 11;
int startpos=1030;
int savepos = 1;
#define rollPin  2
ServoTimer2 servoRoll;
void setup()
{
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(13, OUTPUT);
servoRoll.attach(rollPin);

vw_set_rx_pin(receive_pin);
Serial.begin(9600);
Serial.println("Device is ready");
// Initialize the IO and ISR
vw_setup(2000); // Bits per sec
vw_rx_start(); // Start the receiver
servoRoll.write(startpos);
}


void loop()
{
if (vw_get_message(message, &messageLength)) // Non-blocking

{

for (int i = 0; i < messageLength; i++)
{
char c = message[i];
Serial.print(c);

if(c == '1') {
 digitalWrite(3, HIGH);
};
if(c == '2') {
 digitalWrite(3, LOW);
};
if(c == '3') {
 digitalWrite(4, HIGH);
};
if(c == '4') {
digitalWrite(4, LOW);
};
if(c == 'a') {
savepos=1;
digitalWrite(5, HIGH);
delay(50);
servoRoll.write(startpos);
delay(200);
digitalWrite(5, LOW);
};
if(c == 'b') {
savepos=2;
digitalWrite(6, HIGH);
delay(50);
servoRoll.write(startpos);
delay(200);
digitalWrite(6, LOW);
};

//-----------povoroty---------------
//------levo-------------
if(c == 'c') {
//--------vpered----------
if (savepos==1){
digitalWrite(5, HIGH);
delay(50);
servoRoll.write(startpos-200);
delay(100);
digitalWrite(5, LOW);
};
//---------nazad-------------
if (savepos==2){
digitalWrite(6, HIGH);
delay(50);
servoRoll.write(startpos-200);
delay(100);
digitalWrite(6, LOW);
};
};


//-----------pravo---------------
if(c == 'd') {
if (savepos==1){
digitalWrite(5, HIGH);
delay(50);
servoRoll.write(startpos+200);
delay(100);
digitalWrite(5, LOW);
};
if (savepos==2){
digitalWrite(6, HIGH);
delay(50);
servoRoll.write(startpos+200);
delay(100);
digitalWrite(6, LOW);
};
};

}
Serial.println();
}



}



Так же, для управления серводвигателем нам понадобится библиотека ServoTimer2 которую можно скачать ниже.
Почему необходимо использовать именно эту библиотеку?
Потому что в отличии от стандартной библиотеки Servo, библиотека ServoTimer2 не конфликтует с библиотекой VirtualWire :D

Немного причесав схему и провода я монтировал кузов и вот что у меня получилось:


Вложения
1.jpg
Радиоуправляемая модель на Ардуино
1.jpg (85.77 KiB) Просмотров: 41732
3.jpg
Автомобиль на Ардуино с радиоуправлением 433 МГц
3.jpg (163.11 KiB) Просмотров: 41732
ServoTimer2.rar
библиотека ServoTimer2
(4.33 KiB) Скачиваний: 1107

Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Re: Радиоуправляемая модель на Ардуино

Сообщение -=dp=- » 12 янв 2016, 22:34

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


Вложения
9.jpg
Машина с радио управлением на Ардуино и радио модулем на 433 МГц
12.jpg
Пульт радиоуправления на Ардуино
11.jpg
Пульт радиоуправления на Ардуино

Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Re: Радиоуправляемая модель на Ардуино

Сообщение -=dp=- » 12 янв 2016, 23:13

Видео с демонстрацией работы самодельной радиоуправляемой модели на Ардуино https://youtu.be/fqV9vXhEAkA



Аватар пользователя
 
Сообщений: 7
Зарегистрирован: 08 фев 2016, 18:31
Откуда: почти Метеоритбург

Re: Радиоуправляемая модель на Ардуино

Сообщение Pyzoterovod » 09 фев 2016, 20:13

А вот инетересна дальность на таких радиомодулях. Ибо цена их просто смешная.Давно на них смотрю. Машина есть. но ее управление раздражает своей дальностью. Модернизировать есть желание.



Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Re: Радиоуправляемая модель на Ардуино

Сообщение -=dp=- » 09 фев 2016, 22:09

Pyzoterovod писал(а):А вот инетересна дальность на таких радиомодулях. Ибо цена их просто смешная.Давно на них смотрю. Машина есть. но ее управление раздражает своей дальностью. Модернизировать есть желание.


Модули приемопередатчиков на 433 МГц работают на 50 метров уверенно, с штыревыми антеннами 20 см .
Я ради эксперемента к передатчику сделал усилитель мощности ВЧ на одном транзисторе, на 500 м уверенный прием, дальше не проверял, не было возможности.

Схема на рисунке ниже.


Вложения
передатчик с усилителем на 433МГЦ.JPG
Усилитель для передатчика на 433 МГц

Аватар пользователя
 
Сообщений: 7
Зарегистрирован: 08 фев 2016, 18:31
Откуда: почти Метеоритбург

Re: Радиоуправляемая модель на Ардуино

Сообщение Pyzoterovod » 10 фев 2016, 08:56

Отлично вообще. Значит у китайцев закажу. Спасибо за усилитель)) Может и понадобится.



 
Сообщений: 4
Зарегистрирован: 19 июл 2016, 22:12

Re: Радиоуправляемая модель на Ардуино

Сообщение Dethdron » 22 июл 2016, 16:51

приветствую, подскажите пожалуйста, на машинке серво привод подключен на второй пин ,приемник 11, драйвер мотора 5,6 верно? запутался в скетче :idea: , и по какой схеме собирали н мост? не оставляйте без внимания собираю игрушку ребенку, именно на rf модулях



Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Re: Радиоуправляемая модель на Ардуино

Сообщение -=dp=- » 25 июл 2016, 19:42

Здравствуйте!

Выкладываю схему самодельного драйвера для двигателей постоянного тока


Вложения
dvigatel.jpg
dvigatel.jpg (14.86 KiB) Просмотров: 39913

Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Re: Радиоуправляемая модель на Ардуино

Сообщение -=dp=- » 25 июл 2016, 19:50

Dethdron писал(а):приветствую, подскажите пожалуйста, на машинке серво привод подключен на второй пин ,приемник 11, драйвер мотора 5,6 верно? запутался в скетче :idea: , и по какой схеме собирали н мост? не оставляйте без внимания собираю игрушку ребенку, именно на rf модулях


Да, все верно , серво на цифровой пин 2, приемник на 11, движение вперед 5 пин, движение назад 6 пин.



 
Сообщений: 4
Зарегистрирован: 19 июл 2016, 22:12

Re: Радиоуправляемая модель на Ардуино

Сообщение Dethdron » 25 июл 2016, 21:31

Собрал пульт по схеме,залил скетч, в про мини 5v 16мгц,но вот не задача! :shock: Пульт странно работает, приходится несколько секунд удерживать кнопки что бы включить или выключить например габариты, ближний. Тоже самое с движением сдвижением веред назад. Не пойму в чем проблема , при включении питания светодиоды загораются на 5 секунд и тухнут. Затем начинает моргать светодиод на 10 пине ,питание от трех aa и 9v батарейки для rf модуля, земли соединены. да и индикация нажатий на кнопки срабатывает только на первой кнопке при удержании. абракадабра какая то, что посоветуете? куда копать



 
Сообщений: 4
Зарегистрирован: 19 июл 2016, 22:12

Re: Радиоуправляемая модель на Ардуино

Сообщение Dethdron » 01 авг 2016, 19:04

Уважаемый помогите, замучился уже...



Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Re: Радиоуправляемая модель на Ардуино

Сообщение -=dp=- » 02 авг 2016, 18:53

Dethdron писал(а):Уважаемый помогите, замучился уже...


Здравствуйте!

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


Вложения
подключение кнопки.jpg
Подключение кнопок к Ардуино

 
Сообщений: 4
Зарегистрирован: 19 июл 2016, 22:12

Re: Радиоуправляемая модель на Ардуино

Сообщение Dethdron » 07 авг 2016, 22:22

Димон писал(а):
Dethdron писал(а):Уважаемый помогите, замучился уже...


Здравствуйте!

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


Спасибо так и подключал, разобрался уже! не допер сначала почему светодиод моргает, заглянул в скетч и увидел что задействован порт AO подключил плюс ардуинки на 5v и все встало на свои места, в статье этого не указано, потом уже на видео услышал что мигающий светодиод означает что акб разряжен. Надо было сразу глянуть!
P.S Вообще я задействовал atmega 8 в пульте и про мини в машинке, работает отлично :D




Вернуться в Устройства на Ардуино

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6