Есть ли, и если да, способ использовать пакеты данных, которые вы получаете от передатчика LoRa, в определенных командах, таких как оператор if?

Я заканчиваю школьный проект и нахожусь на последнем этапе, чтобы мое устройство заработало на 100%. Немного информации о проекте. Я разрабатываю беспроводной спидометр, который отслеживает обороты и преобразует их в миль в час с помощью датчика Холла. В модулях я использую Heltec LoRa esp32 в дополнение к библиотеке LoRa через Arduino. Проблема, с которой я столкнулся, заключается в том, что я пытаюсь использовать полученные пакеты данных и использовать отправленные значения датчиков для использования в операторе if для активации вибромотора, чтобы указать, достигли ли они определенной максимальной скорости. Мой код приведен ниже, и мы будем очень признательны за любой ввод о том, как правильно использовать пакеты. Спасибо. Приемник:

1 ответ

Что касается дизайна API на основе проводов:

      // packet is the packet from the transmitter
String packet = "S12.5"
String measurement = packet.substring(0, 1); // "S"
if (measurement == "S") {
  // at this point we know that the rest of the message is the MPH
  String data = packet.substring(1, strlen(packet)-1); // "12.5"
  float mph = data.toFloat();
  if (mph >= TOP_SPEED) {
    doSomething();
  }
  else {
    doSomethingElse();
  }
}

вы могли бы использовать charAt(0) чтобы получить measurement вместо substring() если вы знаете, что в сети меньше 25 датчиков.

каждое измерение будет иметь свой charв начале сообщения, и сразу же последуют данные, относящиеся к этому измерению. Таким образом, отправитель и получатель взаимодействуют как клиент / сервер при обмене API. Между ними существует неявный контракт, так что когда передатчик говорит «S12,5», приемник знает, что это означает 12,5 миль в час. Это ваша система, поэтому вы можете создавать коммуникационные пакеты любым удобным для вас способом.

Другие вопросы по тегам