Шестиногий робот павук з керуванням по Bluetooth
Автор: Надежда Хрыстюк • Февраль 9, 2022 • Курсовая работа • 3,942 Слов (16 Страниц) • 206 Просмотры
Міністерство освіти і науки України
Національний університет водного господарства та природокористування
Кафедра автоматики, кібернетики та обчислювальної техніки
Індивідуальна робота
з Електроніки та мікропроцесорної техніки
Шестиногий робот павук з керуванням по Bluetooth
Підготував :
студент групи Акіт-31
Ткачук О.С.
Перевірив:
Христюк А.О.
Рівне 2020
План
- Необхідні компоненти
- Структурна Схема
- Код
Необхідні компоненти
Android-додаток
1 Arduino MEGA
Датчик наближення
1 HC06 Bluetooth-модуль
18 MG995 серводвигунів
1 3S LiPo батарея
1 150Вт 12А понижуючий DC/DC перетворювач
6 Підшипників 608zz
Латунні вставки різьбові M3
Гвинти M3 2 см
1 Тумблер/ кнопка для включення живлення
1 світлодіод
2 2K резистора
2 1K резистора
1 150R резистор
1 Колодки клемні гвинтові
1 7x10 см макетна печатна плата
1 Роз’єми PLS/PLD + PBS/PBD
Тонкий провід
Структурна схема
[pic 1]
Спочатку підключаємо позитивний контакт батареї до тумблера. Плюс від тумблера и мінус від батареї підключаємо до входу понижуючого перетворювача. Встановлюємо вихідну напругу перетворювача на 7,2 В, це напруга буде підключена до всіх сервоприводів і до Vin контакту Arduino MEGA (на вхід вбудованого в неї стабілізатора). Підключаємо землю. Підключаємо модуль Bluetooth і додаємо дільник напруги на вивід RX, щоб знизити напругу до 3,3 В. Підключаємо керуючі виводи ШИМ від MEGA до кожного серводвигуна, згідно із запропонованою схемою. Для того, що б Ардуїно могла стежити за зарядом акумулятора додаємо ще один дільник безпосередньо на живлення з акумулятора і підключаємо його вихід до аналогового входу A1. Датчик наближення підключаємо до цифрового контакту на платі Arduino.
Код для Arduino IDE
#include <SoftwareSerial.h>
SoftwareSerial Bluetooth(12, 9);
#include <Servo.h>
int Received = 0;
int DELAY = 5;
int MODE = 0;
bool Impair_start = false;
int FM1 = 0;
int FM2 = 0;
int FM3 = 0;
int FM4 = 0;
int FM5 = 0;
int FM6 = 0;
int FM7 = 0;
int FM8 = 0;
int home_Leg1_Mot1 = 75;
int home_Leg1_Mot2 = 90;
int home_Leg1_Mot3 = 100;
int home_Leg2_Mot1 = 70;
int home_Leg2_Mot2 = 90;
int home_Leg2_Mot3 = 115;
int home_Leg3_Mot1 = 70;
int home_Leg3_Mot2 = 90;
int home_Leg3_Mot3 = 100;
int home_Leg4_Mot1 = 105;
int home_Leg4_Mot2 = 90;
int home_Leg4_Mot3 = 110;
int home_Leg5_Mot1 = 75;
int home_Leg5_Mot2 = 90;
int home_Leg5_Mot3 = 90;
int home_Leg6_Mot1 = 110;
int home_Leg6_Mot2 = 100;
int home_Leg6_Mot3 = 115;
Servo Leg1_Mot1, Leg1_Mot2, Leg1_Mot3; //Motors 1,2 and 3 of leg 1
Servo Leg2_Mot1, Leg2_Mot2, Leg2_Mot3; //Motors 1,2 and 3 of leg 2
Servo Leg3_Mot1, Leg3_Mot2, Leg3_Mot3; //Motors 1,2 and 3 of leg 3
Servo Leg4_Mot1, Leg4_Mot2, Leg4_Mot3; //Motors 1,2 and 3 of leg 4
Servo Leg5_Mot1, Leg5_Mot2, Leg5_Mot3; //Motors 1,2 and 3 of leg 5
Servo Leg6_Mot1, Leg6_Mot2, Leg6_Mot3; //Motors 1,2 and 3 of leg 6
int LED = 17;
int bat = A1;
void setup() {
Serial.begin(9600);
Bluetooth.begin(9600);
pinMode(LED, OUTPUT);
pinMode(bat, INPUT);
digitalWrite(LED, LOW);
Leg1_Mot1.attach(35);
Leg1_Mot2.attach(37);
Leg1_Mot3.attach(39);
Leg2_Mot1.attach(29);
Leg2_Mot2.attach(31);
Leg2_Mot3.attach(33);
Leg3_Mot1.attach(34);
Leg3_Mot2.attach(36);
Leg3_Mot3.attach(38);
Leg4_Mot1.attach(26);
Leg4_Mot2.attach(24);
Leg4_Mot3.attach(22);
Leg5_Mot1.attach(32);
Leg5_Mot2.attach(30);
Leg5_Mot3.attach(28);
Leg6_Mot1.attach(27);
Leg6_Mot2.attach(25);
Leg6_Mot3.attach(23);
set_home_pos(); }
void loop() {
if(analogRead(bat) < 580) {
...