С одной платы на другую посылается 0 и 1, по очереди. Но приходит куча символов! Так и должно быть? Как достать нужные символы? Код на приёмнике: Код (Text): #include <SPI.h> #include <Ethernet.h> byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x1D, 0xED }; byte ip[] = { 192, 168, 1, 177 }; EthernetServer S = EthernetServer(80); void setup(){ Serial.begin(9600); Ethernet.begin(mac, ip); S.begin(); } void loop(){ EthernetClient cl = S.available(); if(cl){ S.println("HTTP/1.1 200 OK"); S.println(); while(Serial.available()){ S.println("<p>" + String(char(Serial.read())) + "</p><br>"); } S.println("thets all"); cl.stop(); } } Код на передатчике: Код (Text): void setup(){ Serial.begin(9600); } void loop(){ Serial.println("1"); delay(1000); Serial.println("0"); delay(1000); }
Удалось решить ли проблему? Передатчик подключен на IO Shield, питается от USB? Открыт ли для него Serial Monitor? Можете попробовать запитать его от батарейки, чтобы исключить внешнее влияне?
Проблема не решена( она точно в XBee, потому что я соединял контакты serial напрямую и всё было ОК. Питание от батарейки (XBee жрут их как волки)) без USB. У меня XBee/SD shield, а не IO.
Кстати, я прошил на XBeeшки только PAN ID (не нашел как прошить id модулей и получателей), то есть они работают в режиме бродкаст и не думают что получает другой?
Да, они броадкаст пока делают. Если честно, не могу понять где тут собака порылась. Давайте попробуем выяснить. Ход конём: снимите XBee с передающего устройства. А не продолжит ли сыпаться мусор? Какой прошивкой вы их прошили? AT или API command set?
Возвращаемся к теме. У вас достаточно стабильный паттерн: ваша цифра, нечто, line-break, много нечто одинакого для каждого сообщения. Можете ли исследовать: что (сколько) возвращает Serial.available каждый раз, что за символы приходят после полезной нагрузки — попробуйте вывести их, не преобразуй в char, как есть, то есть byte, чтобы появился ASCII-код.
ДА, ДА, ДА! Всё работает. По ходу дело было в том, что прошивка XBee работала на стандартной скорости, а ардуина на 9600 b/s. Перепрошил xbee с установкой на 9600 и заработало!
Congrats! Но я таки не до конца понял суть замеса. Исходя из ваших сэмплов кода: и приёмник и передатчик работали на 9600. Вы, видимо, имеете в виду внутренний baud-rate XBee, так? Вы его в итоге установили через X-CTU?