piotr_1998-09 Napisano Styczeń 18, 2021 Udostępnij Napisano Styczeń 18, 2021 Witam! Realizuję projekt w którym wykorzystuję moduły komunikacyjne nRF24L01 do budowy sieci sensorów. Sieć narazie składa się z jednego węzła, który odczytuje temperaturę. Dane z tego węzła trafiają do bramy, a brama ma przekazywać dane do bazy danych Firebase. Bramą ma być Arduino Nano 33 IoT, jednak natchnąłem się tu na problem, ponieważ nano wyświetla nie poprawnie odczyty temperatury. Bramę stworzyłem też na Arduino Mega i Uno, i te płytki odczytują poprawnie dane. Moje pytanie brzmi, czym może być spowodowane to, że Nano 33 IoT źle wyświetla dane? Jak można to naprawić? Poniżej załączam kod programu bramy i zdjęcia z odczytu temperatury na Nano 33 IoT(COM5) i Mega(COM9). Za wszelką pomoc z góry dziękuję! PS. Temperatura zapisałem w typie całkowitym int, czyli np. odczyt 30.31 będzie w wyświetlony jako 3031. #include <RF24Network.h> #include <RF24.h> #include <SPI.h> RF24 radio(7,8); RF24Network network(radio); const uint16_t this_node = 00; void setup() { Serial.begin(9600); SPI.begin(); radio.begin(); network.begin(90, this_node); radio.setDataRate(RF24_2MBPS); Serial.println("Start"); } void loop() { network.update(); // Receiving while(network.available()){ RF24NetworkHeader header; int incomingData; network.read(header, &incomingData, sizeof(incomingData)); if(header.from_node == 01){ Serial.print("Temperatura: "); Serial.print(incomingData); Serial.println(" *C"); } /* if(header.from_node == 02){ Serial.print(incomingData); Serial.println(" BPM"); } */ } } Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Styczeń 22, 2021 Udostępnij Styczeń 22, 2021 @piotr_1998-09 "strzelam" w ciemno, bo niestety nie mam teraz tych płytek pod ręką, ale w np. w UNO zmienne typu int są 2-bajtowe, a w płytkach MKR chyba 4-bajtowe. Spróbuj zmienić typ zmiennej incomingData na uint16_t. Cytuj Link do komentarza Share on other sites More sharing options...
piotr_1998-09 Styczeń 25, 2021 Autor tematu Udostępnij Styczeń 25, 2021 @Treker tak zgadza się z tym typem int, też do tego doszedłem. Ale zmiana na inny typ nie pomogła. Dane przyjmują już bardziej prawdopodobne wartości, ale są nadal nie poprawne. Kilka pomiarów jest poprawnych, po czym następne są niepoprawne i tak w kółko. Z tego co zauważyłem to w niepoprawnych danych zawsze występuje przekłamanie na jednym lub dwóch bitach względem wartości poprawnej. W konfiguracji Mega -> Mega wszystko działa poprawnie natomiast Mega -> Nano 33 IoT już nie. Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Styczeń 25, 2021 Udostępnij Styczeń 25, 2021 @piotr_1998-09 a na jakich ostateczne zmiennych robiłeś ten test? Sprawdzałeś co dokładnie zwraca ten "sizeof(incomingData)" na obu płytkach? Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!