Машинка на Ардуино Нано из лазерной мыши

Машинка из лазерной компьютерной мыши

Машинка на Arduino Nano своими руками ► предлагаем два варианта данного проекта: машина на Ардуино Нано с блютуз управлением или с управлением от ик пульта.

Машинка на Arduino Nano своими руками из компьютерной мышки — интересный и простой проект для начинающих мейкеров. Предлагаем сразу два варианта данного проекта — с управлением от блютуз модуля или от ик пульта. Для корпуса используется старая лазерная мышка, поэтому используется микро моторчики с редукторами, миниатюрная плата Ардуино Нано и транзисторы для включения моторов.

Машинка на Ардуино Нано своими руками

Видео. Машинка на Arduino Nano

Программа для машинки на Ардуино Нано имеет два режима работы — прямое управление от Android смартфона или ик-пульта, а также автономный режим: машинка ездит сама по заданному алгоритму. Для индикации режима работы используются светодиоды. Питание машинки производится от аккумулятора Крона. Можно использовать USB шнур для питания, но моторы будут вращаться медленнее.

Так как вся схема должна поместиться внутри компьютерной мышки, то для управления моторчиками используются транзисторы вместо Motor Shield Arduino. Это позволяет сэкономить место, но минус данного решения в том, что у машинки не будет заднего хода (моторы могут вращаться только в одну сторону). А сами моторчики имеют редукторы для увеличения скорости оборотов и мощности вращения колес.

Как сделать машинку из лазерной мышки

Для этого проекта нам потребуется:

  • Arduino Nano;
  • два мотора с редукторами;
  • ИК-приемник или блютуз модуль HC-05/HC-06;
  • два NPN транзистора 3906 или аналоги;
  • тактовая кнопка, светодиод и резисторы;
  • корпус от старой компьютерной мыши;
  • провода, изолента, паяльник, термоклей с пистолетом и т.д.
Машинка на Arduino Nano своими руками из старой мышки
Машинка на Arduino Nano своими руками из старой мышки

Первым делом следует разобрать компьютерную мышку и вынуть из нее все лишнее. Затем сделать в корпусе отверстия для моторов, платы Arduino, тактовой кнопки и IR приемника. На следующем этапе следует собрать электрическую схему машинки на Ардуино Нано с блютуз или ик управлением и протестировать работу. Мы разместили схемы и скетчи сразу для двух вариантов этого проекта и все этапы сборки.

Схема и скетч машинки на Arduino Nano с ИК пультом

Схема машинки на Arduino Nano с ir приемником
Схема машинки на Arduino Nano с ir приемником

Провода от разъема для кроны припаиваются к портам VIN и GND микроконтроллера. Транзисторы (моторы) управляются с помощью ШИМ портов — 9 и 11. Светодиоды и тактовая кнопка используются по желанию, их отсутствие в схеме не повлияет на работу программы. Сигнальный контакт IR приемника припаивается к аналоговому входу A1. После сборки электрической схемы загрузите следующий скетч в плату.

#include "IRremote.h"  // подключаем библиотеку ИК приемника
IRrecv irrecv(A1);           // указываем пин для ИК приемника
decode_results results;

unsigned long currentTime;
byte w = 0;

void setup() {
  irrecv.enableIRIn(); // подключаем прием ИК сигнала
  Serial.begin(9600); // подключаем монитор порта

  pinMode(A1, INPUT);  // указываем пин для ИК приемника
  pinMode(3, OUTPUT); // указываем пины для светодиодов
  pinMode(5, OUTPUT);
  pinMode(9, OUTPUT); // указываем пины для моторов
  pinMode(11, OUTPUT);
  pinMode(7, INPUT_PULLUP); // указываем пин для кнопки

  digitalWrite(3, HIGH);
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value); // отправляем данные с ИК приемника на порт
    if (results.value == 16736925) {
      analogWrite(9, 150);
      analogWrite(11, 150);
    }
    if (results.value == 16755285) { // стоп
      analogWrite(9, 0);
      analogWrite(11, 0);
    }
    if (results.value == 16769565) { // налево
      analogWrite(9, 0);
      analogWrite(11, 150);
    }
    if (results.value == 16754775) { // направо
      analogWrite(9, 150);
      analogWrite(11, 0);
    }
    if (results.value == 16738455) { // переходим в автономный режим
      digitalWrite(5, HIGH);
      Serial.println("AUTO MODE");
      delay(500);
      w = 1;
    }
    irrecv.resume(); // снова принимаем сигнал на ИК приемнике
  }
  if (digitalRead(7) == 0) { // переходим в автономный режим
    digitalWrite(5, HIGH);
    Serial.println("AUTO MODE");
    delay(500);
    w = 1;
  }

  while (w == 1) {
    // задаем рандомные значения времени и скорости моторов
    int timer = random(500, 1500);
    int speed1 = random(50, 150);
    int speed2 = random(50, 150);

    if (millis() - currentTime > timer)   // проверяем сколько прошло миллисекунд
    {
      currentTime = millis();
      analogWrite(9, speed1);
      analogWrite(11, speed2);

      if (irrecv.decode(&results)) {
        Serial.println(results.value); // отправляем данные с ИК приемника на порт
        if (results.value == 16738455) { // выходим из автономного режима
          digitalWrite(5, LOW);
          analogWrite(9, 0);
          analogWrite(11, 0);
          Serial.println("NORMAL MODE");
          delay(500);
          w = 0;
        }
        irrecv.resume(); // снова принимаем сигнал на ИК приемнике
      }
      if (digitalRead(7) == 0) { // выходим из автономного режима
        digitalWrite(5, LOW);
        analogWrite(9, 0);
        analogWrite(11, 0);
        Serial.println("NORMAL MODE");
        delay(500);
        w = 0;
      }
    }
  }
}

Пояснения к коду:

  1. скорость моторчиков уменьшена analogWrite(11, 150); (слишком резвая машинка получилась), но при желании можете увеличить это значение до 255;
  2. автономный режим включается/выключается с помощью кнопки или пульта.

Схема и скетч машинки на Arduino Nano с блютуз

Схема машинки на Arduino Nano с блютуз модулем
Схема машинки на Arduino Nano с блютуз модулем

Загрузить программу в микроконтроллер следует до подключения Bluethoth модуля. Так как для подключения используются UART порты TX и RX и плата Ардуино начинает «общаться» с блютуз модулем, а не с компьютером. При повторной прошивке — модуль следует отключать от Ардуино. После загрузки скетча и сборки схемы, следует установить приложение на смартфоне и выполнить сопряжение с блютуз.

unsigned long currentTime;
byte w = 0;
byte val;

void setup() {
  Serial.begin(9600); // подключаем монитор порта

  pinMode(3, OUTPUT); // указываем пины для светодиодов
  pinMode(5, OUTPUT);
  pinMode(9, OUTPUT); // указываем пины для моторов
  pinMode(11, OUTPUT);
  pinMode(7, INPUT_PULLUP); // указываем пин для кнопки

  digitalWrite(3, HIGH);
}

void loop() {
  if (Serial.available()) {
    val = Serial.read(); // получаем данные с блютуз

    if (val == '2') { // вперед
      analogWrite(9, 150);
      analogWrite(11, 150);
    }
    if (val == '3') { // стоп
      analogWrite(9, 0);
      analogWrite(11, 0);
    }
    if (val == '4') { // налево
      analogWrite(9, 0);
      analogWrite(11, 150);
    }
    if (val == '5') { // направо
      analogWrite(9, 150);
      analogWrite(11, 0);
    }
    if (val == '1') { // переходим в автономный режим
    digitalWrite(5, HIGH);
    Serial.println("AUTO MODE");
    delay(500);
    w = 1;
    }
  }
  if (digitalRead(7) == 0) { // переходим в автономный режим
    digitalWrite(5, HIGH);
    Serial.println("AUTO MODE");
    delay(500);
    w = 1;
  }

  while (w == 1) {
    // задаем рандомные значения времени и скорости моторов
    int timer = random(500, 1500);
    int speed1 = random(50, 150);
    int speed2 = random(50, 150);

    if (millis() - currentTime > timer)   // проверяем сколько прошло миллисекунд
    {
      currentTime = millis();
      analogWrite(9, speed1);
      analogWrite(11, speed2);

    if (Serial.available()) {
      val = Serial.read(); // получаем данные с блютуз

      if (val == '0') { // выходим из автономного режима
        digitalWrite(5, LOW);
        analogWrite(9, 0);
        analogWrite(11, 0);
        Serial.println("NORMAL MODE");
        delay(500);
        w = 0;
      }
  }
      if (digitalRead(7) == 0) { // выходим из автономного режима
        digitalWrite(5, LOW);
        analogWrite(9, 0);
        analogWrite(11, 0);
        Serial.println("NORMAL MODE");
        delay(500);
        w = 0;
      }
    }
  }
}

Пояснения к коду:

  1. если машинка поворачивает не в ту сторону — поменяйте местами пины подключение транзисторов к плате или измените включение моторов в скетче;
  2. протестировать работу машинки можно, управляя Ардуино через монитор порта Arduino IDE (до подключения Bluethoth модуля).

Сборка машинки из старой компьютерной мышки

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

Установка моторов для машинки из пк мышки
Установка моторов для машинки из мышки на Arduino Nano

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

Сборка электрической схемы машинки из мышки
Сборка электрической схемы машинки Ардуино Нано из мышки

В зависимости от формы компьютерной мышки, размещение деталей на корпусе может получиться разным. Еще одна «изюминка» данной машинки в том, что колеса выполнены из неодимовых магнитов диаметром 16 мм и толщиной 5 мм. Эти мощные магниты позволяют ездить машине на Ардуино Нано с блютуз управлением по вертикальной металлической поверхности, например, по маркерной доске.

Сборка машинки из лазерной мышки на Ардуино
Сборка машинки из пк мышки на Ардуино Нано своими руками

Заключение. Мы рассмотрели, как сделать своими руками на Ардуино Нано машинку с блютуз управлением или с управлением от пульта ДУ из старой лазерной мышки (проект Апогей 2.0). Приложение для смартфона, а также скетчи с необходимыми библиотеками для Arduino IDE можно скачать одним архивом здесь. Все вопросы по сборке данного проекта с блютуз вы можете задать в комментариях к этой записи.

1 Star2 Stars3 Stars4 Stars5 Stars (3 votes, average: 5,00 out of 5)
Загрузка...

Похожие записи по теме:

2 комментариев для “Пример: Машинка на Ардуино Нано из лазерной мыши”

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *