Master Slave Многопроцессорная обработка на стороне Arduino

Я начал проект робототехники Arduino с Bluetooth-датчиком HC-05 для отправки данных на мой компьютер для обработки. В моем проекте Arduino должен служить ведомым устройством, которое собирает данные с датчиков и отправляет их на ПК для обработки и принятия решений, который будет выполнять роль ведущего устройства.

Моя проблема в настоящее время заключается в том, что я не знаю, как выполнять многопроцессорную обработку с помощью Arduino. То есть я не хочу, чтобы процесс, который постоянно считывает данные с HC-05 побитно, блокировал процесс сбора и передачи данных. В идеале я мог бы иметь несколько потоков для каждого процесса, которые зависят друг от друга с точки зрения времени, но не с точки зрения выполнения кода, и работают независимо в коде Arduino.

Есть ли какая-нибудь многопоточная библиотека, которую я могу использовать на стороне Arduino, чтобы чтение данных, передаваемых с ПК, не блокировало другие процессы/выполнение других процессов не приводило к тому, что Arduino пропускал данные? передается ПК во время другой обработки? Есть ли другие решения?

, 👍-1

Обсуждение

Как HC-05 подключен к вашему Arduino? СПИ? UART (последовательный TX/RX)?, @jose can u c

Подключен через UART, базовый последовательный TX/RX, @Jack Frye

Arduino уже использует программный буфер, управляемый прерываниями, для получения данных на активных аппаратных последовательных портах. В целом, однако, этот вопрос слишком широк, чтобы соответствовать здесь., @Chris Stratton


1 ответ


0

Обязательная ссылка на Ника Гэммона: https://www.gammon.com.au/blink

Ваш первый шаг — изучить и запустить пример BlinkWithoutDelay. Это показывает самый простой способ выполнять действия через определенные промежутки времени без использования задержек, освобождая ЦП для выполнения других действий.

Существует несколько библиотек планирования, позволяющих делать то, что вы хотите, но если вы научитесь делать это самостоятельно, это поможет вам лучше понять Arduino.

FreeRTOS кажется интересной альтернативой многозадачности. Без личного опыта. Погуглите «Arduino FreeRTOS», чтобы найти руководства и примеры.

,