Как Arduino будет общаться по беспроводной сети через XBee?

Я использую один XBee S2, настроенный как координатор API, подключенный к моему ноутбуку, и один XBee S2, подключенный к Arduino Uno, который настроен как маршрутизатор AT. Я хочу сгенерировать сигнал тревоги на LabVIEW, так как использовал VISA для последовательной связи.

#include <SoftwareSerial.h>

int buttonState1 = 0;
SoftwareSerial XBee(2,3); // RX, TX
int pin=13;
void setup() {
    XBee.begin(9600);
    Serial.begin(9600);
    pinMode(2,INPUT);

}

void loop() {
    if (Serial.available())
       buttonState1 = digitalRead(2);

    if (buttonState1 == HIGH) {
       // включить СВЕТОДИОД:
       Serial.println(1);

    }
   /*else
    {
        Serial.println(2);

    }*/
    else {
       // выключить СВЕТОДИОД:
       Serial.println(0);
    }

    delay(100);
}

но я не получаю никакого ответа.

Что может быть первопричиной этого и как мне это диагностировать?

, 👍-1

Обсуждение

вы никогда не использовали серийный номер XBee, в то время как вам полагается считывать с него данные., @goddland_16


2 ответа


0

Контакты 2 и 3 являются аппаратными последовательными контактами. Вы не можете/не должны прикреплять к ним контакты программного обеспечения.

Короче говоря, ваш программный XBee никогда не используется и использует те же контакты аппаратного последовательного.

Чего вы на самом деле пытаетесь достичь? Мне трудно это понять. Хотя. Сначала вы должны проверить, работает ли ваше соединение.

Какие устройства у вас подключены к arduino?

Это [Arduino] <-> [XBEE] <-><-> [ПК]?

Проверьте свое соединение, используя приведенный ниже код

int incomingByte = 0;   // для входящих последовательных данных

void setup() {
        Serial.begin(9600);     // открывает последовательный порт, устанавливает скорость передачи данных на 9600 бит/с
}

void loop() {

        // отправляйте данные только тогда, когда вы получаете данные:
        if (Serial.available() > 0) {
                // считывание входящего байта:
                incomingByte = Serial.read();

                // скажи, что у тебя есть:
                Serial.print("Я получил: ");
                Serial.println(incomingByte, DEC);
        }
}

Источник

,

Нет, на UNO аппаратные последовательные контакты равны 0 и 1. 2 и 3-это контакты прерывания, и если оператор не использует внешние прерывания, он может использовать их в качестве мягкого последовательного., @Delta_G


0

Используете ли вы XBee shield или напрямую подключаете его к Arduino и используете ли связь точка-точка между двумя XBees?

Для получения и отправки данных между двумя XBE они должны быть настроены в режиме "точка-точка". Во-первых, протестируйте их, чтобы убедиться, что они получают данные через это сообщение.

Если да, то проблема будет на вашем LabVIEW VI, потому что ваш код Arduino, похоже, в порядке

,