Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Кардиограф на arduino. По Bluetooth очень медленно передаются данные!

андрей Мудрец (13220), закрыт 7 лет назад
Аналоговый сигнал оцифровывается на Arduino Leonardo и передаётся по блютузу (HC-05) на ноутбук в матлаб. Выполнение должно было длиться около 3 секунд, а длилось минут 5! Понятное дело, на графике, вместо кардиограммы, сплошные ломанные линии. Думаю что сильно тормозит матлаб. Можно ли как-то по другому организовать передачу данных? Может какой-то другой прогой записывать данные в текстовый файл, а потом в матлабе обрабатывать? Хотя изначально хотелось просматривать график в реальном времени... И от матлаба отказываться не хочется, где ещё есть такие возможности для анализа?
Дополнен 7 лет назад
bt=Bluetooth('chip',1) %создаём объект блютуз
pause(5)
fopen(bt) %открываем его для чтения
pause(5)
arrayTime=[]; %массив для записи значений времени
arrayU=[]; %массив для записи значений напряжения
t=0;
iteration=3000;
for 0:1:iteration
fwrite(bt,1); %отправляем ардуине 1
while bt.BytesAvailable == 0 %ждём пока придёт от неё байт
end
bt1=fscanf(bt); %считываем байт как текст
bt2=str2double(bt1); %переводим текст в число
arrayU=[arrayU,bt2]; %записываем число в массив
pause(0.001); %задержка чтобы хоть как то отсчитывать время
t=t+0.001;
arrayTime=[arrayTime,t]; %записываем шаг времени в массив
end
dlmwrite('MyTime2.dat',arrayTime) %по завершении 3000 циклов сохраняем данные в файлы
dlmwrite('MyU2.dat',arrayU)
pause(5)
fclose(bt)
pause(5)
clear
Дополнен 7 лет назад
Это был код матлаба, а этот - ардуино
#include
int rxPin = 8;
int txPin = 9;
int xx = 0; //переменная для того чтобы просто убрать бит из буфера
SoftwareSerial BTport (rxPin, txPin);

void setup() {
BTport.begin(38400);
analogReference(EXTERNAL);
delay(1000);
}

void loop() {
if (BTport.available()){ //Если от матлаба пришёл символ
xx = BTport.read(); //Считываем его
BTport.println(analogRead(A0)); //Передаём считанную из аналогового порта цифру
}
}
Дополнен 7 лет назад
Может посоветуете ещё какую нибудь программу для просмотра и анализа данных, кроме матлаба? В идеале хочу смотреть графики и анализ спектра на смартфоне под android
Лучший ответ
МАСТЕР Мудрец (15758) 7 лет назад
Вывести на комп в отладочной среде arduino
Остальные ответы
Саша Воробьев Ученик (9) 7 лет назад
Обращайся в саппорт
Мистер CanУченик (132) 7 лет назад
Текст трудно прочитать по блютус можно передавать данные быстрее! Для этого надо включить режим в самолёте!!!!
Виктор Адаменя Искусственный Интеллект (134206) 7 лет назад
по другому просто можно в отладочную консоль вывести
как вариант вобще может не работать датчик
андрейМудрец (13220) 7 лет назад
Датчик работает 100% Проверял перед этим на осциллографе. А как в отладочную консоль вывести? Консоль матлаба?
q q Знаток (250) 7 лет назад
Поставь обновленный bluetooth-модуль, например, четвертой версии - там скорость передачи увеличена.
Alexey Prochorenko Оракул (55128) 7 лет назад
под ардуину обычно юзают processing
Алексей Панских Мастер (2249) 7 лет назад
Как по мне, у тебя слишком огромные задержки, только и всего. Блютуз позволяет гнать аудио в реальном времени, чтобы ты понимал его скорость. Иначе говоря, ориентируйся на задержку 50 или 100мс, этого с головой.

И почему ты выбрал скорость 38400? Возьми 115200 - будет норм. Попробуй, возможно и 921600 поддерживается (чаще всего да).
Похожие вопросы