Запись данных через последовательный порт //Arduino и гироскоп+акселерометр MPU6050

Я новичок в последовательной связи, и я просто царапаю поверхность, поэтому, пожалуйста, не стесняйтесь.

Что мне нужно сделать, так это передать данные гироскопа, которые я собираю на своем Arduino, в процессор на моем Macbook. У меня уже есть готовый код, который считывает мои данные гироскопа/ускорения, применяет дополнительный фильтр и выводит их на последовательный монитор в виде строки.

Я хотел бы узнать, как отправлять эти данные непосредственно с Arduino на обработку.

  • Каким будет наиболее эффективный способ отправки данных, которые могут быть положительными и отрицательными по последовательному каналу?
  • Я искал вокруг и наткнулся на использование строк по серийному номеру и прочитал/разделил их в обработке. Я не сторонник этого метода. Массив байтов HighByte и lowByte и float/char кажется альтернативой, но становится слишком сложным для моих текущих знаний и понимания.

Было бы здорово, если бы кто-нибудь мог подтолкнуть меня в правильном направлении или просто помочь мне в изучении последовательной связи и отправке/чтении данных из Arduino в приложение Macbook/Processing. Теоретически я знаю, что происходит внутри, но с точки зрения кода я немного потерялся.

Заранее спасибо,

Ответы (1)

Я предпочитаю использовать обычный текст для такой передачи данных — вы можете прочитать данные с помощью терминальной программы, чтобы убедиться, что Arduino отправляет то, что вы думаете (или нет!), Чтобы помочь изолировать любые проблемы.

Я использую простой протокол (фактически основанный на NMEA-0183) — формирую данные в «предложения» с символом начала предложения, который не будет встречаться в данных (обычно я использую «$»), затем отправляю элементы данных, разделенные запятыми и заканчивающиеся новой строкой или CR/LF.

Есть ли также способ отправки данных в виде массива байтов или пакетов?
Проблема, которую я вижу при отправке необработанных двоичных данных, заключается в том, что все возможные значения байтов могут быть допустимыми данными, поэтому трудно понять, как пометить начало данных, чтобы синхронизировать отправителя и получателя. Некоторые UART микроконтроллера могут использовать девятый бит в качестве флага команды, но я не думаю, что обычные UART ПК/USB могут с этим справиться.