Проблемы с аппаратным последовательным интерфейсом (UART) на Nano 33 BLE Sense
мой новый Nano 33 BLE Sense прибыл сегодня. Я работаю над проектом по отправке данных из Nano через модуль Xbee S2C в модуль приемника, подключенный к IoT Nano 33. У меня был проект, работающий до того, как я использовал плату MPU6050 и Mega 2560, которая работала (используя программное обеспечение Serial на Mega). На стороне IoT я использую 'Uart XBeeRx (&sercom0, 5, 6, SERCOM_RX_PAD_1, UART_TX_PAD_0);' для обработки данных из Xbee. Попробовав этот синтаксис на BLE Sense, я столкнулся с проблемами и после некоторого Гугления нашел другой синтаксис. Однако мой новый код не работает до тех пор, пока он компилируется, загружается, а затем выходит из строя BLE Sense (последовательный порт исчезает из инструментов, а встроенный светодиод мигает медленно и беспорядочно). Мне нужно продолжать сбрасывать плату и подозревать, что есть какая-то проблема с моей аппаратной последовательной реализацией. Я сократил код, чтобы просто отправить данные акселерометра. Мой код выглядит следующим образом - библиотека EasyTransfer упрощает связь Xbee. Любая помощь ценится!
#include <EasyTransfer.h>
#include <Arduino_LSM9DS1.h>
UART XBeeTx (digitalPinToPinName(6), digitalPinToPinName(5), NC, NC);
EasyTransfer ET;
struct SEND_DATA_STRUCTURE {
float xAcc;
float yAcc;
float zAcc;
};
SEND_DATA_STRUCTURE myData;
// ================================================================
// === INITIAL SETUP ===
// ================================================================
void setup() {
XBeeTx.begin(9600);
ET.begin(details(myData), &XBeeTx);
}
// ================================================================
// === MAIN PROGRAM LOOP ===
// ================================================================
void loop() {
float x, y, z;
if (IMU.accelerationAvailable()) {
IMU.readAcceleration(x, y, z);
}
myData.xAcc = x;
myData.yAcc = y;
myData.zAcc = z;
ET.sendData();
}
@RobM, 👍1
Обсуждение1 ответ
Лучший ответ:
Вы не можете звонить в IMU, если вы не инициализировали его с помощью IMU.begin()
Вы должны иметь возможность отметить свой собственный ответ как принятый., @timemage
- В чем разница между библиотеками Software Serial? Какая из них совместима с Arduino Nano?
- Как синхронизировать несколько ардуино?
- Использование последовательных контактов TX/ RX для связи по USB
- Контроллер HM-10 BLE не отвечает на некоторые AT-команды
- Проблема последовательной связи с общей землей SIM800L
- Поможет ли подтягивающий резистор точности передачи UART на Arduino nano?
- Raspberry Pi 3B+ BLE связь с Arduino Nano 33 IOT
- Потеря данных при последовательном считывании с помощью Arduino Nano
почему бы не использовать Сериал1? (и на Мега тоже), @Juraj
Привет, я попробовал подключить мой Xbee к контактам D0 и D1 (UART Rx и Tx), но возникла та же проблема, и я использовал Serial1.begin(9600) и &Serial1 в инструкции ET.begin в приведенном выше коде. Кажется, что Nano Sense теряет свое USB - соединение и блокируется. Действительно не могу понять, почему так должно работать. Я думаю, что плата в порядке, так как я могу нормально запускать некоторые примеры сценариев (например, акселерометр и печать на USB-накопителе). Google, похоже, действительно легко находит хиты для серийного оборудования UART в полном смысле этого слова!, @RobM
На двух платах используются разные ядра Arduino. IoT 33 использует семейство микросхем, общее для плат Arduino; чип Nordic Semi ARM, который в прямом смысле этого слова, намного меньше. Микросхемы ARM, используемые в этих устройствах, связаны только с этим. Имя "SERCOM_RX_PAD_1" связано с Atmel (и 33-м IoT); использование его в качестве поискового запроса для поиска решения для этого в вашем понимании может быть контрпродуктивным., @timemage
Дох! Я маппет!! Я звоню в IMU, не установив IMU.begin() в настройках. Я удалил его вместе с каким-то другим кодом, который был избыточным, но добавил его обратно, и проект работает как мечта! Блок BLE Sense работает правильно, и теперь блок приемника получает данные по каналу связи Xbee. Тем не менее, спасибо за комментарии., @RobM
@RobM, если это что-то, что имеет смысл из вопроса, таким образом, чтобы это могло быть полезно кому-то другому, вы можете опубликовать ответ на свой собственный вопрос. Если решение не имеет ничего общего с заданным вопросом, то, вероятно, лучше всего просто удалить вопрос., @timemage