Передача данных от Arduino через XBee

  1. Передача данных с Arduino через XBee на другой XBee (подключенный к ПК). Должны ли данные быть в char? Итак, скажем, данные, которые я хочу передать, являются числами с плавающей запятой. Должен ли я преобразовать его в char, прежде чем я смогу передать его через Arduino?

  2. Какой протокол передачи данных через Arduino? Допустим, у меня уже есть функция, которая преобразует число с плавающей запятой в строку символов. Какой протокол/функцию я могу ввести для этого символа, чтобы он был передан через XBee на другой XBee. Я использую Arduino Arduino Uno, а XBee, который у меня есть, — XBee PRO s1.

  3. Я понимаю, что в C программирование с плавающей запятой имеет точность только до 7 знаков после запятой. Таким образом, double всегда более точен, чем float. Но правда ли, что Arduino принимает только числа с плавающей запятой? Но я также читал, что поплавок в Arduino точен до многих знаков после запятой. Насколько верно последнее утверждение?

  4. Мне нужно передать эту информацию через XBee на другой XBee. Принимающий XBee подключен к ПК, на котором установлена ​​Ubuntu/ ROS. Есть ли какой-нибудь протокол для декодирования этого символа, чтобы получить начальный поплавок, который у меня есть на стороне Arduino?


person Rick Tan    schedule 22.03.2015    source источник


Ответы (1)


Если вы используете радиостанции XBee в «прозрачном последовательном» или «режиме AT», то у вас просто есть поток 8-битных байтов, которые вы отправляете от одного к другому. Как вы интерпретируете данные в этот момент, зависит от вас.

  1. Данные не обязательно должны быть символами, так как XBee передает 8-битные байты. Хотя числа с плавающей запятой хранятся в виде последовательности байтов, они могут храниться неодинаково на разных платформах (например, от Arduino к ПК). Поэтому, как правило, безопаснее отправлять серию символов (от «0» до «9» с «.» или «,» в качестве десятичного разделителя).

    Какой диапазон значений вы отправляете? Вы можете использовать фиксированную точку для хранения значений - 32-битное целое число может хранить примерно +/- 2 миллиарда. Если вам нужно 8 знаков после запятой, это число может представлять +/- 20.00000000.

  2. Вы просто отправляете последовательный поток данных, точно так же, как вы выводите данные на консоль, чтобы кто-то мог их прочитать.

  3. Я не уверен в точности чисел с плавающей запятой Arduino. Рассмотрите возможность использования фиксированной точки, если вы представляете числа в узком диапазоне значений.

  4. На принимающей стороне вы просто открываете последовательный порт и получаете поток данных. Его обработка будет зависеть от того, как вы закодировали его на Arduino. Если вы используете sprintf() для преобразования float или double в удобочитаемый текст, вы можете использовать sscanf() для преобразования его обратно в число с плавающей запятой на ПК.

person tomlogic    schedule 22.03.2015