Два адруино подключены к малине по usb, но один переподключается во время выполнения кода обработки
Я пытаюсь решить эту проблему уже месяц... но все еще проблема...
Я хочу сделать светодиодную матрицу ниже спектра.
Скетч изображения
https://youtu.be/X35HbE7k3DA
※Окружающая среда
UML устройства
Один Raspberry Pi 3 : 2019-09-26-raspbian-buster-full
Два arduino uno с каждым экраном матрицы и матрицей 16x32
Один USB-микрофон
Если я подключил два Arduino Uno к raspberry pi и попытался запустить код обработки (.pde), один из них снова подключился к raspberry pi.
Другой все еще работает хорошо..
Если я подключу эти Arduino к Windows и запущу pde-файл... все будет хорошо. (две матрицы хорошо показывают спектр)
Что мне делать??? Является ли этот код проблемой? или проблема с малиной?
Мне действительно нужно это решить...
Я уже пробовал....
Перезагрузил ino-код на обе Arduino Uno. (оба arduino имеют одинаковый код)
Изменен номер платы 115200 -> другой номер (но для нормальной работы должно быть 115200)
Добавьте Arduino в правила udev, как показано ниже. https://www.intorobotics.com/how-to -setup-raspberry-pi-to-identify-two-arduino-devices/
Перекрестный обмен между каждой матрицей и Arduino.
Попробуйте использовать arduino mega с тем же кодом.
Вот код Arduino (.ino) и код обработки (.pde) https://github.com/snskreationz/Real-Time-RGB-Matrix-Spectrum-Analyzer
Выводы Arduino Uno Matrix
#define CLK 8
#define LAT 10
#define OE 9
#define A A0
#define B A1
#define C A2
Код основной обработки
import ddf.minim.analysis.*;
import ddf.minim.*;
import processing.serial.*;
Serial port1;
Serial port2;
Minim minim;
AudioInput in;
FFT fft;
int buffer_size = 4096;
float sample_rate = 200000;
int freq_width = 250; // <-O-> установите частотный диапазон для каждой полосы более 400 Гц. более крупные полосы будут иметь меньшую интенсивность на полосу. меньшие полосы привели бы к ограничению общего диапазона
//массивы для хранения данных 64 каналов
int[] freq_array = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
float[] freq_height = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
void setup()
{
size(200, 200);
minim = new Minim(this);
port1 = new Serial(this, "COM8" , 115200); // <-O-> установить скорость передачи данных и порт для первой матрицы RGB
// Здесь можно изменить на «/dev/ttyACM0» через Raspberry pi
//порт2 = новый серийный номер(этот, "COM5", 115200); // <-O-> установить скорость передачи данных и порт для второй матрицы RGB
// Здесь можно изменить на «/dev/ttyACM1» через Raspberry pi
in = minim.getLineIn(Minim.MONO,buffer_size,sample_rate);
// создаем объект БПФ с буфером во временной области
// того же размера, что и буфер сэмплов линейного входа
fft = new FFT(in.bufferSize(), in.sampleRate());
// Конусное окно важно для отображения логарифмического домена
fft.window(FFT.HAMMING);
}
Вот журналы ядра для Raspebrry pi
Nov 11 00:17:27 raspberrypi kernel: [ 5974.165722] Under-voltage detected! (0x00050005)
Nov 11 00:17:27 raspberrypi kernel: [ 5974.665649] usb 1-1.3: new full-speed USB device number 9 using dwc_otg
Nov 11 00:17:27 raspberrypi kernel: [ 5974.809539] usb 1-1.3: New USB device found, idVendor=2341, idProduct=0043, bcdDevice= 0.01
Nov 11 00:17:27 raspberrypi kernel: [ 5974.809556] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=220
Nov 11 00:17:27 raspberrypi kernel: [ 5974.809566] usb 1-1.3: Manufacturer: Arduino (www.arduino.cc)
Nov 11 00:17:27 raspberrypi kernel: [ 5974.809576] usb 1-1.3: SerialNumber: 55639313932351518040
Nov 11 00:17:27 raspberrypi kernel: [ 5974.810729] cdc_acm 1-1.3:1.0: ttyACM0: USB ACM device ---------------------> connected first arduino
Nov 11 00:17:28 raspberrypi kernel: [ 5975.685661] usb 1-1.2: new full-speed USB device number 10 using dwc_otg
Nov 11 00:17:28 raspberrypi kernel: [ 5975.829541] usb 1-1.2: New USB device found, idVendor=2341, idProduct=0043, bcdDevice= 0.01
Nov 11 00:17:28 raspberrypi kernel: [ 5975.829558] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=220
Nov 11 00:17:28 raspberrypi kernel: [ 5975.829569] usb 1-1.2: Manufacturer: Arduino (www.arduino.cc)
Nov 11 00:17:28 raspberrypi kernel: [ 5975.829578] usb 1-1.2: SerialNumber: 8563431373935121D0B2
Nov 11 00:17:28 raspberrypi kernel: [ 5975.830752] cdc_acm 1-1.2:1.0: ttyACM1: USB ACM device ---------------------> connected second arduino
Nov 11 00:17:33 raspberrypi kernel: [ 5980.405877] Voltage normalised (0x00000000) ---------------------> almost at this time starting processing code
Nov 11 00:17:37 raspberrypi kernel: [ 5985.121964] usb 1-1.2: USB disconnect, device number 10
Nov 11 00:17:37 raspberrypi kernel: [ 5985.122315] cdc_acm 1-1.2:1.0: failed to set dtr/rts
Nov 11 00:17:38 raspberrypi kernel: [ 5985.425669] usb 1-1.2: new full-speed USB device number 11 using dwc_otg
Nov 11 00:17:38 raspberrypi kernel: [ 5985.569812] usb 1-1.2: New USB device found, idVendor=2341, idProduct=0043, bcdDevice= 0.01
Nov 11 00:17:38 raspberrypi kernel: [ 5985.569831] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=220
Nov 11 00:17:38 raspberrypi kernel: [ 5985.569843] usb 1-1.2: Manufacturer: Arduino (www.arduino.cc)
Nov 11 00:17:38 raspberrypi kernel: [ 5985.569853] usb 1-1.2: SerialNumber: 8563431373935121D0B2
Nov 11 00:17:38 raspberrypi kernel: [ 5985.571468] cdc_acm 1-1.2:1.0: ttyACM2: USB ACM device ---------------------> reattached second arduino automatically
Nov 11 00:17:39 raspberrypi kernel: [ 5986.645829] Under-voltage detected! (0x00050005)
Nov 11 00:17:43 raspberrypi kernel: [ 5990.805775] Voltage normalised (0x00000000)
Я действительно хочу запустить оба спектра Arduino через Raspberry Pi.
@LJB, 👍-1
1 ответ
Лучший ответ:
Обнаружено пониженное напряжение!
Думаю, этим все сказано. У Rapsberry не раз возникала проблема с питанием от «общего источника питания», не говоря уже о подключенных устройствах. Особенно, если вы питаете от него и светодиоды.
Вам нужен более качественный источник питания для Rapsberry (и, возможно, даже питать его от контактов, но тогда вам нужно читать гораздо больше, чтобы не повредить его) и другой источник питания для этих светодиодов.
На обычном ПК источник питания намного мощнее и может подавать МНОГО энергии на каждый USB.
- Отправка информации (например, строки) через цифровые контакты
- Установите Arduino IDE в Raspberry Pi 3 модели B.
- Arduino Uno не загружает код и перегревается
- Метод перебора битов в байте, отправленном по последовательному каналу.
- серийные данные портятся
- Arduino Uno R3 не распознается Arduino IDE в Ubuntu 21.04
- Как программировать микрочипы напрямую через USB
- Отправка mouseX и mouseY из обработки в Arduino
Спасибо за ответ на мой вопрос! Вы правы... это проблема пониженного напряжения.. БПК (детектор снижения напряжения)... Я дал больше мощности arduino, и он отлично работает :), @LJB