Может и нет. Но настораживает “аккумулятор от машины”.
Я вижу у вас выбор - либо купить мешок ардуин и менять их каждый час, либо разобраться, почему они горят.
Для второго варианта нужно нарисовать подробную схему с указанием всех подключений, включая питание и обозначенными номерами пинов. И выложить свой код ПОЛНОСТЬЮ. не забывайте про правила вставки кода в сообщение.
О! Мне из ремонта прислали хрустальный шар!
Модуль имеет фиксированные напряжения 3.3,5,9,12в Легко запутаться,т.к. визуально модули не отличаются.
И МК как раз запитан от 9в,т.к. при 5в не сгорел бы,а от 12в.сгорел бы сразу.
Сейчас нарисую схему
у меня mini560 на 5v. На выходе выдает 5,06v
может и не 13, но у меня ведь понижающий модуль на 5в.
Сейчас нарисую
На nrf24l01 припаяно ещё: электролитический конденсатор 100мкФ, керамический конденсатор(104) на 0,1 мкф
//--------------------- НАСТРОЙКИ ----------------------
#define CH_NUM 0x60 // номер канала (должен совпадать с передатчиком)
//--------------------- НАСТРОЙКИ ----------------------
//--------------------- ДЛЯ РАЗРАБОТЧИКОВ -----------------------
// УРОВЕНЬ МОЩНОСТИ ПЕРЕДАТЧИКА
// На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
#define SIG_POWER RF24_PA_MIN
// СКОРОСТЬ ОБМЕНА
// На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
// должна быть одинакова на приёмнике и передатчике!
// при самой низкой скорости имеем самую высокую чувствительность и дальность!!
// ВНИМАНИЕ!!! enableAckPayload НЕ РАБОТАЕТ НА СКОРОСТИ 250 kbps!
#define SIG_SPEED RF24_1MBPS
//--------------------- ДЛЯ РАЗРАБОТЧИКОВ -----------------------
//--------------------- БИБЛИОТЕКИ ----------------------
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include <EEPROM.h>
RF24 radio(10, 9); // "создать" модуль на пинах 9 и 10 для НАНО/УНО
#include <DigiPotX9Cxxx.h>
DigiPot potLeft(5,6, A3);//inc u/d cs
DigiPot potRight(5,6, A2);
#define leftRele A0
#define rightRele A1
//RF24 radio(9, 53); // для МЕГИ
//--------------------- БИБЛИОТЕКИ ----------------------
//--------------------- ПЕРЕМЕННЫЕ ----------------------
byte pipeNo;
byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; // возможные номера труб
byte connected = false;
bool entermenu = false;
byte connect_R_T = false;//соединение
unsigned long connecttimer = 0;
int recieved_data[5]; // массив принятых данных
int telemetry[5]; // массив данных телеметрии (то что шлём на передатчик)
//--------------------- ПЕРЕМЕННЫЕ ----------------------
struct paramStatus {
byte sharpness = 0;
byte autoMove = 0;
byte overheating_protection = 0;
byte discharge_protection = 0;
byte maxCurrent = 0;
byte obstacleSensor = 0;
};
paramStatus ParamSt;
void setup() {
Serial.begin(9600);
radioSetup();
for(byte i = 0; i < 100; i++)
{
potLeft.decrease(1);
delayMicroseconds(100);
potRight.decrease(1);
}
EEPROM.get(20, ParamSt);
pinMode(leftRele, OUTPUT);//реле
pinMode(rightRele, OUTPUT);//реле
digitalWrite(leftRele, HIGH);
digitalWrite(rightRele, HIGH);
}
void loop() {
connect_R_T = false;
while (radio.available()) { // слушаем эфир
radio.read(&recieved_data, sizeof(recieved_data)); // чиатем входящий сигнал
// формируем пакет данных телеметрии
telemetry[0] = 20;
telemetry[1] = 30;
radio.writeAckPayload(1, &telemetry, sizeof(telemetry));
if(recieved_data[0] == 1234 && recieved_data[1] == 4321 && !entermenu)
{
for(byte i = 0; i < recieved_data_len; i++) {recieved_data[i] = 0;}
recieved_data[0] = 1234;
recieved_data[1] = 4321;
entermenu = true;
changePotVal(0, 0);
changePotVal(0,1);
}
else if(recieved_data[0] == 4321 && recieved_data[1] == 1234 && entermenu) {for(byte i = 0; i < recieved_data_len; i++) {recieved_data[i] = 0;}entermenu = false;}
if(entermenu)
{
int8_t pointer = recieved_data[2];
int8_t paramSetting = recieved_data[3];
static int8_t oldpointer = 0;
static int8_t oldparamSetting = 0;
if(pointer != 0 && paramSetting != 0)
{
if(oldpointer != pointer || oldparamSetting != paramSetting)
{
oldpointer = pointer;
oldparamSetting = paramSetting;
if(paramSetting == -1) paramSetting = 0;
if(pointer == -1) ParamSt.sharpness = paramSetting;
else if(pointer == 1) ParamSt.autoMove = paramSetting;
else if(pointer == 2) ParamSt.overheating_protection = paramSetting;
else if(pointer == 3) ParamSt.discharge_protection = paramSetting;
else if(pointer == 4) ParamSt.maxCurrent = paramSetting;
else if(pointer == 5) ParamSt.obstacleSensor = paramSetting;
paramSetting = oldparamSetting;
//EEPROM.put(20, ParamSt);
recieved_data[2] = 0;
recieved_data[3] = 0;
}
}
}
connect_R_T = true;
connecttimer = millis();
//radio.writeAckPayload (1, &ackData, sizeof(ackData) ); // Помещаем данные всего массива ackData в буфер FIFO для их отправки на следующее получение данных от передатчика на 1 трубе.
//recieved_data[1] - "ход"
//recieved_data[2] - влево/вправо
if(recieved_data[2] == 0)//если не двигаемся влево или вправо
{
if(recieved_data[3] == 0)//передний ход
{
digitalWrite(leftRele, HIGH);
digitalWrite(rightRele, HIGH);
}
else if(recieved_data[3] == 1)//задний ход
{
digitalWrite(leftRele, LOW);
digitalWrite(rightRele, LOW);
}
changePotVal(recieved_data[1], 0);
changePotVal(recieved_data[1], 1);
}
else//если двигаемся влево или вправо
{
if(recieved_data[2] < 0)//влево
{
digitalWrite(leftRele, LOW);
digitalWrite(rightRele, HIGH);
}
if(recieved_data[2] > 0)//вправо
{
digitalWrite(leftRele, HIGH);
digitalWrite(rightRele, LOW);
}
changePotVal(abs(recieved_data[2]), 0);
changePotVal(abs(recieved_data[2]), 1);
}
Serial.print(recieved_data[2]);
Serial.print(",");
Serial.print(recieved_data[1]);
Serial.println();
}
if(!connect_R_T && millis() - connecttimer >= 1500)
{
potLeft.set(0);
potRight.set(0);
digitalWrite(leftRele, HIGH);
digitalWrite(rightRele, HIGH);
}
}
void changePotVal(byte val, byte type)
{
if(entermenu == true) return 0;
if(type == 0) potLeft.set(val);
else if(type == 1) potRight.set(val);
}
void radioSetup() { // настройка радио
radio.begin(); // Инициируем работу nRF24L01+
radio.setChannel (27); // Указываем канал передачи данных (от 0 до 125), 27 - значит передача данных осуществляется на частоте 2,427 ГГц.
radio.setDataRate (RF24_1MBPS); // Указываем скорость передачи данных (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS), RF24_1MBPS - 1Мбит/сек.
radio.setPALevel (RF24_PA_MAX); // Указываем мощность передатчика (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm).
radio.enableAckPayload(); // Указываем что в пакетах подтверждения приёма есть блок с пользовательскими данными.
// radio.enableDynamicPayloads(); // Разрешить динамически изменяемый размер блока данных на всех трубах.
radio.openReadingPipe (1, 0xAABBCCDD11LL); // Открываем 1 трубу с адресом 0xAABBCCDD11, для приема данных.
radio.startListening (); // Включаем приемник, начинаем прослушивать открытые трубы.
radio.writeAckPayload (1, &telemetry, sizeof(telemetry) );
}
И что можно понять в этой наскальной живописи?
А что не так? Не получается у меня красиво провода расположить на рисунке
ардуино какая? черная плата, что за модуль?
А что так? Из всех обозначений только “на вход 12-14 вольт”. Что означают остальные картинки? Если уж рисовать схемы не сподобились, так хоть модули подпишите
Он nrf24 питает от CH341 по ходу дела
ну четы все сразу рассказал, блин…
Arduino
ты хоть ченить понял, в чем твоя ошибка?
nrf24l01, двухмодульный реле, ардуино нано, 2штуки X9C104, mini560 5v
ошибка в том, что питание подавал на 5в?
нет!
вторая попытка…
в этом?
да, если у тебя нано, а черный модуль это nrf24.
выход 3.3 вольта на нано, это выход внутреннего преобразователя CH340, который стоит у ней “на пузе”, он слаботочный, а ты пытаешься от него запитать модуль который в пике жрет ДОХРЕНА!
вот он и сопротивляется))
ставь второй преобразователь на 3.3 вольта и от него питай nrf/