Радиосвязь TinyDuino

В настоящее время я работаю над проектом с двумя TinyDuinos и двумя радиостанциями TinyShields 433 МГц (SI4432), чтобы передавать 3 оси (x, y, z) от одной к другой на большом расстоянии.

Я пробовал

  • чтобы объединить оси в одну строку и отправить строку,
  • чтобы отправить массив типа string axes = { x , y , z в получатель (разумеется, переменные уже определены),
  • отправить только одну строку. В данном случае у меня есть только первые две буквы строки. Например, если бы строка была string first = "456" , я бы получил "45" на получателе

В примерах Radio Shield используется тип uint8_t и массивы для отправки и получения данных. Я уже пытался преобразовать строку в char*, а затем в uint8_t, и ничего особенного не произошло. Возможно, я что-то упускаю.

Ниже приведены снимки экрана моего кода. Я приведу 2 ссылки на примеры передатчика и приемника, от которых я получил код

Похожий проект: https://tinycircuits.com/blogs/learn/121634375- Учебное пособие по игре в футбол

Страница радиозащиты: https://tinycircuits.com/products/433mhz-long-range-radio -tinyshield

Основной щит TinyDuino: https://tinycircuits.com/collections/all/products/tinyduino-processor -доска

Скриншоты кода

Код передатчика

Код приемника

Вывод из получателя

, 👍-1

Обсуждение

Пожалуйста, добавьте код в свой вопрос, не используйте изображения/скриншоты. Это упрощает редактирование другими людьми и, что более важно, помогает поисковым системам., @MichaelT


1 ответ


Лучший ответ:

0

Для такого рода вещей вам нужно создать пакет, содержащий ваши данные. Лучший способ — использовать структуру.

struct coords {
    int x;
    int y;
    int z;
};

Затем вы можете определить из него переменную:

struct coords myCoords;

И установите индивидуальные значения:

myCoords.x = 23;
myCoords.y = 180;
myCoords.z = -3817;

Теперь вы можете привести его к любому типу, который вам нужен для отправки:

manager.sendtoWait((uint8_t *)&myCoords, sizeof(struct coords), SERVER_ADDRESS);

Получение осуществляется примерно так же:

struct coords recCoords;
uint8_t len = sizeof(struct coords);
uint8_t from;

if (manager.recvfromAck((uint8_t *)&recCoords, &len, &from)) {
    Serial.print("X = ");
    Serial.println(recCoords.x); 
    Serial.print("Y = ");
    Serial.println(recCoords.y); 
    Serial.print("Z = ");
    Serial.println(recCoords.z); 
}

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

,