четверг, 14 августа 2014 г.

Bluetooth HC-05 Arduino Android RC. Первые шаги



Всем привет, хочу сделать какую-то игрушку на RC(радиоуправлении). В планах немного доделать антеннку модуля, модуль кстати HC-05, тянет в принципе недалеко если дома, на открытом пространстве думаю будет норм. В будущем всё перенесу на ATmega8. В качестве транзисторов использую сборку Дарлингтона ULN2003, очень удобная вещь для таких целей.





Моторчики от сидиромов, слабоватые но для теста сойдут.
Вот код который я приспособил для программки под андроид( код, который использовал на момент съемки видео):

#define MotorL 10
#define MotorR 9

byte valL = 0, valR = 0, maxL = 255, maxR = 255;
boolean state = false;

void setup() {
  // устанавливаем соединение с портом
  Serial.begin(9600); 
  //выход 10 в режиме OUTPUT - на нем висит вентилятор
  // При вызове parseInt() задержка ожидания последующего символа по умолчанию 1 секунда.
  // Функцией setTimeout() можно уменьшить эту задержку. Например на 4 миллисекунды, setTimeout(4);.
  // Чем выше скорость Serial.begin, тем меньше потребуется значение setTimeout.
  Serial.setTimeout(4);  // этого должно хватить
  pinMode(MotorL, OUTPUT); // левый двигатель
  pinMode(MotorR, OUTPUT); // правый двигатель
  pinMode(11, OUTPUT); // светодиод
  pinMode(13, OUTPUT); // светодиод, индикатор приёма данных

  //TCCR1B = 0x01; // Зададим частоту ШИМа, >60 кГц чтобы не слышать писк
}

//основной цикл программы
void loop() {         

  // пробую читать из порта

  if(Serial.available() > 0) // если нам приходит только один символ
  {
    digitalWrite(13, HIGH); // мигаем при получении данных
    char data = Serial.read();
    if (data == 'g') {  // средняя кнопка
      state = !state;
    }   

    if (data == 's') { // стоп, отправляется при отпускании кнопок 
      valL = 0;
      valR = 0; 
    }   

    if (data == 'f') { // вперёд 
      valL = maxL;
      valR = maxR; 
    }  

    if (data == 'l') { // влево
      valL = maxL; 
      //valR = 0;  
    } 

    if (data == 'r') {  //вправо
      valR = maxR; 
      //valL = 0;   
    } 

    if (data == 'x') {  // получение максимальной скорости для левого двигателя
      maxL = Serial.parseInt(); 
    } 

    if (data == 'y') { // получение максимальной скорости для правого двигателя 
      maxR = Serial.parseInt();
    } 

    digitalWrite(13, LOW); // данные получили, выключим светодиод
  }

  analogWrite(MotorL, valL); // управляем 
  analogWrite(MotorR, valR); // двигателями
  digitalWrite(11, state); // и светодиодом
  //debug();
  //delay(1000);
}

/*
void debug(){
 
 Serial.print("valL ");
 Serial.print(valL);
 Serial.println(" ");
 Serial.print("valR ");
 Serial.print(valR);
 Serial.println(" ");
 }
 */

Вот собственно ссылка на софт под Android:

Вот ссылка на проект автора программы(на английском языке):
http://www.mobilerobots.pl/index.php?p=1_64_Vacuum-Cleaner-Hack

Вступайте в мою группу ВКонтакте:
http://vk.com/razniepodelkiblogspot

Ключевые слова: Android Bluetooth Arduino Remote Control, DIY, HC-05, ULN 2003, ATmega8, RC car, радиоуправление, сделай сам, своими руками, машинка, игрушка, телефон, андроид, ардуино, блютуз, модуль, микроконтроллер

Комментариев нет:

Отправить комментарий