Есть ли, и если да, способ использовать пакеты данных, которые вы получаете от передатчика 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 миль в час. Это ваша система, поэтому вы можете создавать коммуникационные пакеты любым удобным для вас способом.