Ви не увійшли.
Сторінки 1
Всім привіт я студент колледжа і я роблю робочу модель дрона але під час тесту кодов ничего не происходить.
Код пишется у меня на 2 ардуино на нано и на Мега 2560.
Если кратко то он должен был работать так:
Мы подключаемся через блютуз к телефону и запускаем предложение "Bluetooth RC Controller" сигнал из телефона передается до Мега и тот сигнал передается до NRF24L01 до другого NRF24L01 на Нано а потом идет до L298N по и управляем двухколёсным дроном.
Кажу сразу это мой первый такой большой проект потому много чего не знаю как и что делать.
Если кому то надо то вот что входить в саму схему:
плата L298N
Bluetooth Module HC-06
Arduino Nano v3.0
NRF24L01
Arduino MEGA2560 R3
Два моторчика
вот если что ссылка на гугл диск из изображением:
https://drive.google.com/drive/u/0/folders/1jv2ChBbfHb0L0RCttW1MjeegEqy7mvmd
Эти схемы я делал в симуляции сам кроме схемы моторчиков.
НУ а если коротко то оно подключено так
Подключение NRF24L01 до Мега:
VCC >> до земли
GND >> до 3.3в
CE >> до 2 пина
SCK >> до 52 пина
CSN >> до 53 пина
MOSI(MO) >> до 51 пина
MISO(MI) >> до 50 пина
Подключение блютуза Module HC-06 до Мега:
VCC >> до 5в
GND >> до земли
TXD >> до 19 пина
RXD >> до 18 пина
подключение NRF24L01 до Нано:
GND >> до земли
CE >> до Д7
SCK >> до Д13
MISO(MI) >> до Д12
VCC >> до 3.3в
CSN >> до Д8
MOSI(MO) >> до Д11
Подключення Нано до L298N:
ENA >> до Д9
In1 >> до Д6
In2 >> до Д2
In3 >> до Д4
In4 >> до Д3
ENB >> до Д5
GND >> до GND
5в >> до 5в
код на Mega:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <SoftwareSerial.h>
#include <Arduino.h>
SoftwareSerial Peredacha(19,18);
RF24 radio(52, 51); // CE, CSN
const byte address[6] = "00002";
char data;
void setup() {
Peredacha.begin(9600);
radio.begin();
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening();
}
void loop() {
if (Peredacha.available() > 0)
{
data = Peredacha.read();
}
//int values[1] = {data};
radio.write(&data, sizeof(data));
}
Код на Nano:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define enA 9
#define in1 6
#define in2 2
#define in3 4
#define in4 3
#define enB 5
char rx;
char motorspeed;
RF24 radio(7, 8); // CE, CSN
const byte address[6] = "00002";
void setup() {
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
radio.begin();
radio.openReadingPipe(0, address);
radio.setPALevel(RF24_PA_MIN);
radio.startListening();
}
void loop() {
if (radio.available())
{
radio.read(&rx, sizeof(rx));
}
if (rx = 8)
{
digitalWrite(in1,LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3,LOW);
digitalWrite(in4,HIGH);
motorspeed = 100;
}
else if (rx = 2)
{
digitalWrite(in1,HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3,HIGH);
digitalWrite(in4,LOW);
motorspeed = 100;
}
else if (rx = 6)
{
digitalWrite(in1,LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3,HIGH);
digitalWrite(in4,LOW);
motorspeed = 100;
}
else if (rx = 4)
{
digitalWrite(in1,HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3,LOW);
digitalWrite(in4,HIGH);
motorspeed = 100;
}
else
{
motorspeed = 0;
}
if(rx = 1)
motorspeed = 0;
analogWrite(enA,motorspeed);
analogWrite(enB,motorspeed);
}
Остання редакція Cossack (2022-04-19 23:53:50)
Неактивний
Если кратко то он должен был работать так:
А как работает на самом деле?
Привіт), а де навчаєшся ?
Скажи в чом помилка ? бо ми не будемо збирати це все..звучить страшновато Тиш будеш провіряти на свої моделі.. і сам осмислювати в чому нам для тебе підсказати..
Остання редакція zDimaby (2022-04-19 20:51:31)
Неактивний
Привіт), а де навчаєшся ?
Скажи в чом помилка ? бо ми не будемо збирати це все..звучить страшновато Тиш будеш провіряти на свої моделі.. і сам осмислювати в чому нам для тебе підсказати..
Привіт навчаюсь у Полтаві в "Полтавський політехнічний фаховий коледж Національного технічного університету "Харківський політехнічний інститут" а якщо коротко в (ВСП "ППФК НТУ "ХПІ")
Спеціальність 123: Компютерна інженарія
Іду на Системного адміністратора
3 курс із 4
Це моя курсова робота просто в якій у мене по бажанню є створення моделі
Остання редакція Cossack (2022-04-19 21:39:07)
Неактивний
Cossack пише:Если кратко то он должен был работать так:
А как работает на самом деле?
Ну по перших подключаю к телефону і нажимаю на кнопки але нічого не происходить не даю ни одного действия.
Потом сделал так отключил антену которая идет до нано
и сделал тест для диода что бы нажать вперед диод должен загореться.
Но и это не работает
Неактивний
и сделал тест для диода что бы нажать вперед диод должен загореться.
Но и это не работает
Показывай этот тест
з/ы и зачем ты на Меге, у которой 4 аппаратных сериала, используешь softserial? Легких путей не ищешь?
Cossack пише:и сделал тест для диода что бы нажать вперед диод должен загореться.
Но и это не работаетПоказывай этот тест
з/ы и зачем ты на Меге, у которой 4 аппаратных сериала, используешь softserial? Легких путей не ищешь?
Я делал модель которую нашел на ютубе ток там замест блютуз управления использовали модуль двухосевой XY джойстик KY-023
int val;
void setup()
{
Serial.begin(9600);
pinMode(13, OUTPUT); // 13 пин – светодиод, объявляется как выход
}
void loop()
{
if (Serial.available()) // проверка поданных команд
{
val = Serial.read();
if (val == '8') {digitalWrite(13, HIGH);} // при 1 включается светодиод
if (val == '2') {digitalWrite(13, LOW);} // при 0 выключается светодиод
}
}
Неактивний
int val; void setup() { Serial.begin(9600); pinMode(13, OUTPUT); // 13 пин – светодиод, объявляется как выход } void loop() { if (Serial.available()) // проверка поданных команд { val = Serial.read(); if (val == '8') {digitalWrite(13, HIGH);} // при 1 включается светодиод if (val == '2') {digitalWrite(13, LOW);} // при 0 выключается светодиод } }
Этот код ты заливал в мегу или в нану? Как подключал?
Если честно, мне уже надоедает все вытягивать клещами. Хочешь помощи - расписывай все подробно. Выше уже тебе сказали - за тебя все это собирать и проверять никто не будет потому что
Если кому то надо
кроме тебя - никому не надо.
Cossack пише:int val; void setup() { Serial.begin(9600); pinMode(13, OUTPUT); // 13 пин – светодиод, объявляется как выход } void loop() { if (Serial.available()) // проверка поданных команд { val = Serial.read(); if (val == '8') {digitalWrite(13, HIGH);} // при 1 включается светодиод if (val == '2') {digitalWrite(13, LOW);} // при 0 выключается светодиод } }
Этот код ты заливал в мегу или в нану? Как подключал?
Если честно, мне уже надоедает все вытягивать клещами. Хочешь помощи - расписывай все подробно. Выше уже тебе сказали - за тебя все это собирать и проверять никто не будет потому чтоCossack пише:Если кому то надо
кроме тебя - никому не надо.
Это в мегу
а как оно подключено я же фото прикрепил(для открытия надо нажать ПКМ\ открыть изображения в другой вкладке)
Неактивний
а как оно подключено я же фото прикрепил(для открытия надо нажать ПКМ открыть изображения в другой вкладке)
https://drive.google.com/file/d/16vGsC8ip2JeJAlPx5seT0KjJWu9TLqZ3/view?usp=sharing
т.е. ты предлагаешь нам сидеть и догадываться что это за картинки, откуда они слизаны и рыться в интернетах чтобы догадаться где и какой пин на этих малюнках?
Это в мегу
Почитай про Serial, особенно про мегу
https://doc.arduino.ua/ru/prog/Serial
Cossack пише:а как оно подключено я же фото прикрепил(для открытия надо нажать ПКМ открыть изображения в другой вкладке)
https://drive.google.com/file/d/16vGsC8ip2JeJAlPx5seT0KjJWu9TLqZ3/view?usp=sharingт.е. ты предлагаешь нам сидеть и догадываться что это за картинки, откуда они слизаны и рыться в интернетах чтобы догадаться где и какой пин на этих малюнках?
Эти схемы я делал в симуляции сам кроме схемы моторчиков.
НУ а если коротко то оно подключено так
Подключение NRF24L01 до Мега:
VCC >> до земли
GND >> до 3.3в
CE >> до 2 пина
SCK >> до 52 пина
CSN >> до 53 пина
MOSI(MO) >> до 51 пина
MISO(MI) >> до 50 пина
Подключение блютуза Module HC-06 до Мега:
VCC >> до 5в
GND >> до земли
TXD >> до 19 пина
RXD >> до 18 пина
подключение NRF24L01 до Нано:
GND >> до земли
CE >> до Д7
SCK >> до Д13
MISO(MI) >> до Д12
VCC >> до 3.3в
CSN >> до Д8
MOSI(MO) >> до Д11
Подключення Нано до L298N:
ENA >> до Д9
In1 >> до Д6
In2 >> до Д2
In3 >> до Д4
In4 >> до Д3
ENB >> до Д5
GND >> до GND
5в >> до 5в
Неактивний
Cossack пише:Это в мегу
Почитай про Serial, особенно про мегу
https://doc.arduino.ua/ru/prog/Serial
Прочитал ну если коротко про меня то я накосячил из виводами да?
Хз почему но теория по ардуино мне сложно дается чем практика
Неактивний
Прочитал ну если коротко про меня то я накосячил из виводами да?
Ну если бы не накосячил то не было бы этой темы. Еще раз прочитай про serial и посмотри как он объявляется для меги и как он объявлен у тебя в тестовом коде. И второй момент - у тебя есть два устройства. У каждого есть два вывода: вход Rx и выход Тх. Подумай как их нужно соединить чтобы устройства могли общаться между собой.
Cossack пише:Прочитал ну если коротко про меня то я накосячил из виводами да?
Ну если бы не накосячил то не было бы этой темы. Еще раз прочитай про serial и посмотри как он объявляется для меги и как он объявлен у тебя в тестовом коде. И второй момент - у тебя есть два устройства. У каждого есть два вывода: вход Rx и выход Тх. Подумай как их нужно соединить чтобы устройства могли общаться между собой.
собрал макет для теста работает или нет оно.
Подключение блютуза Module HC-06 до Мега:
VCC >> до 5в
GND >> до земли
TXD >> до 0 пина
RXD >> до 1 пина
прикол в том что работает если написать "1" в Мониторе портов то диод загорится а если написать в блютуз терминале на телефоне то нет ответа от меги хоть телефон нашел его и подключился
#include <SoftwareSerial.h>
int val;
void setup()
{
Serial.begin(9600);
pinMode(13, OUTPUT); // 13 пин – светодиод, объявляется как выход
}
void loop()
{
if (Serial.available()) // проверка поданных команд
{
val = Serial.read();
if (val == '1') {digitalWrite(13, HIGH);} // при 1 включается светодиод
if (val == '0') {digitalWrite(13, LOW);} // при 0 выключается светодиод
}
}
Неактивний
В качестве компенсации(я там немного накосячил)
int val;
void setup()
{
Serial1.begin(9600);
pinMode(13, OUTPUT); // 13 пин – светодиод, объявляется как выход
}
void loop()
{
if (Serial1.available()) // проверка поданных команд
{
val = Serial.read();
if (val == '8') {digitalWrite(13, HIGH);} // при 1 включается светодиод
if (val == '2') {digitalWrite(13, LOW);} // при 0 выключается светодиод
}
}
И еще один совет - пин Rx блютуза или не подключай вообще(если он у тебя нигде не используется) или подключи через делитель иначе есть шанс сжечь модуль. У него уровни 3,3В. С меги прилетает 5
В качестве компенсации(я там немного накосячил)
И еще один совет - пин Rx блютуза или не подключай вообще(если он у тебя нигде не используется) или подключи через делитель иначе есть шанс сжечь модуль. У него уровни 3,3В. С меги прилетает 5
а если подключить VCC до 3.3в ?
тогда можно будет подключать Rx
(Мы на парах не проходили просто блютуз и так далее тому для меня очень сложно разобраться)
Неактивний
а если подключить VCC до 3.3в ?
тогда можно будет подключать Rx(Мы на парах не проходили просто блютуз и так далее тому для меня очень сложно разобраться)
Нет. Если у меги будет питание 3,3 - тогда можно. Rx у тебя нигде не задействован(по крайнее мере в том коде что ты выложил) поэтому просто не подключай его. Или ты собираешься что-то отправлять на телефон по синезубу?
з/ы у мну там еще одна очепятка - val = Serial1.read();
Cossack пише:а если подключить VCC до 3.3в ?
тогда можно будет подключать Rx(Мы на парах не проходили просто блютуз и так далее тому для меня очень сложно разобраться)
Нет. Если у меги будет питание 3,3 - тогда можно. Rx у тебя нигде не задействован(по крайнее мере в том коде что ты выложил) поэтому просто не подключай его. Или ты собираешься что-то отправлять на телефон по синезубу?
з/ы у мну там еще одна очепятка - val = Serial1.read();
ага то есть Rx отвечает за отправку на телефон
а TXD з телефона на пк
Верно?
Неактивний
В качестве компенсации(я там немного накосячил)
int val; void setup() { Serial1.begin(9600); pinMode(13, OUTPUT); // 13 пин – светодиод, объявляется как выход } void loop() { if (Serial1.available()) // проверка поданных команд { val = Serial.read(); if (val == '8') {digitalWrite(13, HIGH);} // при 1 включается светодиод if (val == '2') {digitalWrite(13, LOW);} // при 0 выключается светодиод } }
И еще один совет - пин Rx блютуза или не подключай вообще(если он у тебя нигде не используется) или подключи через делитель иначе есть шанс сжечь модуль. У него уровни 3,3В. С меги прилетает 5
Отключил Rx и загрузил твой код из отпечаткой тож розобрался
пишу в монитор портов и через телефон "1" ничего не происходить пишу тож "8" тож ничего
Неактивний
к каким пинам подключал?
Ссылку смотрю ты читал по диагонали. Serial1 - это 18,19 пины
Сторінки 1