как подружить arduino uno и радиоуправление от детской машинки

Тема в разделе "Проводная и беспроводная связь", создана пользователем ga2bi, 26 июн 2014.

  1. ga2bi

    ga2bi Нерд

    имеется
    arduino uno + Motor Shield (2 канала, 2 А)

    внутренности от
    Радиоуправляемая модель "Гоночная машина Func MC-09" ссылка на неё
    http://fast-box.ru/product/show/3184864
    и родной пульт

    там стоят
    приёмник rx-2c -g
    пульт tx-2 -g
    куда какие выводы приёмника прикрутить на ардуине чтобы р/у работало
    на мотор шилд будут
    прикручены 2 движка ими надо упровлять
    питание будет общим от 12v аккумулятора
    приёмник р/у, хочется запитать от ардуино
    роль ардуины получить сигнал с р/у, обработать и упровлять моторами через мотор шилд

    насколько это сложно ?
     
  2. ANV

    ANV Гуру

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

    Не хочу показаться "Капитан Очевидность спешит на помощь" , но надо взять осциллограф и посмотреть что творится на выходе приемника. В такой игрушке он может быть "не стандартным". Под стандартным я имею в виду поканальный PWM или UART как в приемниках Spektrum/Futaba.

    План Б:
    Можно снимать сигналы уже с исполнительных механизмов.

    План В:
    Купить самый дешевый набор передатчика и приемника:
    http://www.hobbyking.com/hobbyking/store/__44693__Quanum_2_4Ghz_3ch_Pistol_Grip_Tx_Rx_System.html
    $26 с доставкой.
     
  3. ga2bi

    ga2bi Нерд

    можно поподробнее про план б
     
  4. ANV

    ANV Гуру

    В плане Б мы считаем, что приемник и "мозги" являются "черным ящиком", т.е. мы внутрь них не лезем. Но из них ведь выходят управляющие сигналы на моторчики? Вот эти сигналы и использовать как входные сигналы для Ардуины.

    Фото кишок в студию и напряжение питания машинки.
     
  5. ga2bi

    ga2bi Нерд

    поковырялся в закромах, нашёл ещё одну плату приёмника от игрушки, но там вроде как драйвер мотора сгорел
    вот фото качество плохое
    1.0 и 2.0 это 1 приёмник
    1 и 2 это 2 приёмник
    питаются где то от 4,5в
     

    Вложения:

    • 1.0.jpg
      1.0.jpg
      Размер файла:
      656,4 КБ
      Просмотров:
      3.514
    • 1.jpg
      1.jpg
      Размер файла:
      728,2 КБ
      Просмотров:
      4.124
    • 2.0.jpg
      2.0.jpg
      Размер файла:
      656,5 КБ
      Просмотров:
      3.713
    • 2.jpg
      2.jpg
      Размер файла:
      525,2 КБ
      Просмотров:
      2.402
  6. ga2bi

    ga2bi Нерд

    вот я и хочу узнать куда прикрутить провода на ардуине или мотор шилде, от приёмника идущие к моторам
     
  7. ANV

    ANV Гуру

    Вот Вы и ответили на свой вопрос.
    Заводите 4 провода от моторов на свободные пины Ардуино. Если напряжение питания Ардуино меньше чем напряжение питания машинки, то через резистивные делители. Ну или через 10К резисторы, если ОЧЕНЬ лениво - излишки в защитные диоды утекут (что есть не совсем правильно).
     
  8. ga2bi

    ga2bi Нерд

    а провода от моторов заводить можно через мотор шилд?, ардуинка питается от 6 до 12в
    мои новые моторы будут работать от 12в, питание будет совместное между мотор шилдом и ардуиной, для питания платы приёмника можно поставить понижатель питания (или брать питание с самой платы ардуино)?, и питать всё от одного 12в ака.
     
  9. ANV

    ANV Гуру

    Приемник надо подключить к Ардуино, чтобы она получала сигналы, обрабатывала их и командовала новыми моторами, т.е. они идут не напрямую на motor-shield.

    Приемник надо питать от такого напряжения, какое на него подавалось штатно.
    От 5 вольт скорее всего работать будет, их можно взять с Ардуино, но если хочется сделать 4,5 то их можно сделать взяв 5 вольт и пропустить через диод, где-то пол-вольта на нем и останется.
     
  10. ga2bi

    ga2bi Нерд

    померил мультиметром выходной вольтаж на моторы с платы приёмника
    передний ход 2в, задний 1в, право лево 3,85в, турбо 3в.
    из за разного напряжения подаваемого на пины ардуины что то будет меняться в управлении (управление будет немного странное при нажатии в право будут вращаться оба мотора но в разные стороны, аналогично поворот влево, вперёд оба, назад оба) или ардуине главное что бы какой то сигнал прошло в пины
     
  11. ANV

    ANV Гуру

    Т.е. там все-таки ШИМ. Тогда надо ШИМ сгладить и заводить на аналоговые пины.
     
  12. ga2bi

    ga2bi Нерд

    новую тему городить не буду.
    Имею тележку на IR управлении от пульта, управление в режиме триггера или как оно там назв, держишь кнопку едешь, отпустил остановилась.
    вот скетч

    #include <IRremote.h> // это скачанная библиотека

    int RECV_PIN = 11; //вход ИК приемника

    IRrecv irrecv(RECV_PIN);

    decode_results results;

    //eventTime, для паузы, вместо delay,будем использовать функцию millis.

    unsigned long eventTime=0;

    //индикация таймера

    int timer = 12;

    int IN1 = 6;

    int IN2 = 5;

    int EN1 = 7;

    int EN2 = 4;

    void setup(){

    irrecv.enableIRIn(); // включить приемник

    pinMode(IN1, OUTPUT);
    pinMode(IN2, OUTPUT);
    pinMode(EN1, OUTPUT);
    pinMode(EN2, OUTPUT);

    pinMode(timer, OUTPUT);

    }

    void loop() {

    if (digitalRead(RECV_PIN) == LOW)


    eventTime=millis(),digitalWrite(timer, HIGH);


    if(millis()-eventTime>100) digitalWrite(timer, LOW)

    ,digitalWrite(IN1, LOW),digitalWrite(IN2, LOW)

    ,digitalWrite(EN1, LOW),digitalWrite(EN2, LOW);



    if (irrecv.decode(&results)) {
    Serial.println(results.value);
    if (results.value == 1641467951) // Если кодировка совпадает с кодом кнопки
    {
    // Едем вперед
    digitalWrite(EN1, HIGH);
    digitalWrite(EN2, HIGH);
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, HIGH);
    }

    if (results.value == 1641457751)
    {
    // Едем назад
    digitalWrite(EN1, LOW);
    digitalWrite(EN2, LOW);
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, HIGH);
    }

    if (results.value == 1641421031)
    {
    // Едем налево
    digitalWrite(EN1, LOW);
    digitalWrite(EN2, HIGH);
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, HIGH);
    }

    if (results.value == 1641427151)
    {
    // Едем направо
    digitalWrite(EN1, HIGH);
    digitalWrite(EN2, LOW);
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, HIGH);
    }

    irrecv.resume(); // Получаем следующее значение
    }
    }

    как сделать так что бы при удерживании кнопки пульта скорость моторов росла вместе с временем удерживания кнопки
     
  13. ga2bi

    ga2bi Нерд

    ау кто то может подсказать как это материализовать
     
  14. Morales

    Morales Нерд

    вот схема из даташита rx-2c
    rx-2c.jpg
    попробуйте соединить GND платы приемника и GND Arduino если питание раздельное и подайте сигналы с ножек 6, 7, 10, 11 на входы Arduino. Правда для использования функции digitalRead() может не хватить напряжения, которое, судя по описанию, составляет 2,8 В. Но можно попробовать воспользоваться аналоговыми входами.
     
  15. ga2bi

    ga2bi Нерд

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

    Morales Нерд

    Теперь загрузите это в Arduino и посмотрите что выдает вам микросхема RX2C

    Код (Text):

    int val1 = 0;          // variable to store the value read
    int val2 = 0;
    int val3 = 0;
    int val4 = 0;

    void setup()
    {

      Serial.begin(9600);          //  setup serial

      pinMode(A0, INPUT);
      pinMode(A1, INPUT);
      pinMode(A2, INPUT);
      pinMode(A3, INPUT);
     
    }

    void loop()
    {

      val1 = analogRead(A0);    // read the input pin
      val2 = analogRead(A1);
      val3 = analogRead(A2);
      val4 = analogRead(A3);

      Serial.println("Value1: " + val1 + ". Value2: " + val2 + ". Value3: " val3 + ". Value4: " + val4);            // debug value
    delay(200);
    }
    Если при нажатии кнопок на пульте управления значения val1-val4 будут принимать некоторые значения, отличные от нуля, то можно в дальнейшем использовать проверку на нажатие кнопки.
    Как то так :)

    Код (Text):
    if (analogRead(A0) >= 300)
    {
    // Едем вперед
    digitalWrite(EN1, HIGH);
    digitalWrite(EN2, HIGH);
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, HIGH);
    }
     
    Последнее редактирование: 2 июл 2014
  17. ga2bi

    ga2bi Нерд

    скетч с ошибкой
     
  18. ga2bi

    ga2bi Нерд

    попытался реанимировать плату с картинки 1 и 2, припаять туда l293d реакции на пульт нету движок не крутится.
    порылся по схемам и дата шитам, нашёл аналогичные схемы но там на мосфете ,( или как они там транзисторы) у меня там была одна микруха на 16 ножек китайская (наверно), логотип наподобие 7J или Tz ( последние 4 цифры 1028 (1 ряд)
    (последняя H-вторым рядом надпись)) вообще есть подозрение что весь передатчик сгорел ( запитал от 12в ).судя по визуальному осмотру сгорела та самая микруха, я так понил это был h-bridg
    или я ошибаюсь.
    при проверке мультиметром RX2C почти на всех ножках есть напряжение.
    мб выкинуть все и начать с новой китайской р/у

    или

    продолжить с опытами по ик приёмнику
     
  19. ga2bi

    ga2bi Нерд

    бросил (китайское игрушечное р/у) ушол в сторону ик управления.
    куплю норм р/у аппу, буду заново пытать ардуинку
     
  20. ANV

    ANV Гуру

    Что Вы называете нормальной аппаратурой?