Przeszukaj forum
Pokazywanie wyników dla tagów 'nrf24l01'.
Znaleziono 6 wyników
-
witam mam problem z nrf24l01 nie mogę się komunikować na dosłownie wszystkim od prostych programów typu naciśnij przycisk na arduino 1 a na arduino 2 zapalisię dioda Aż po programy pokroju auta nie nie chodzi o to że jak ktoś może zrozumieć z opisu nie umiem programować ale ja umiem programować może nie świetnie ale potrafie tyle że właśnie ja nawet niewiem co jest nie tak próbiwałem wgrywać gotowce sam pisać i du*a ta dodatkowo nie wiem o co chodzi (najprawdopodobniej nrf24l01) bo inne szkice działają na tych arduinach typu miganie diodą (bez nrf24l01) nie wiem ile już wypróbowałem szkiców dotyczących nrf24l01 piętnaście? i żadne nie działa czy może ktoś wie o co chodzi możecie też dać jakiegoś gotowca ale i tak nie zadziała (at tak wogóle gratuluje że komuś to śię chce czytać bo dużo XD)
-
Witam. Mam problem z dwoma Arduino Nano (oczywiście klony z allegro) oraz dwoma modułami NRF24L01 (zakupionych na Aliexpress), mianowicie nie chcą one się połączyć. Już na początku przy przykładzie pingpair były problemy bo raz się łączyło raz nie. Szukałam innych przykładów na internecie i w ogóle nie działały, szukałam dalej i sprawę z stabilnym zasilaniem rozwiązałam poprzez stabilizator +3.3V, program nigdzie się nie zacina i połączenia sprawdzone po kilka razy. Nie mam już pomysłów co może być. Kod nadajnika: #include <SPI.h> #include <nRF24L01.h> #include <RF24.h> #include <RF24_config.h> int State1 = 0; RF24 radio(9, 10); const byte address[6] = "00002"; void setup() { Serial.begin(9600); pinMode(2, INPUT); radio.begin(); radio.openWritingPipe(address); radio.setPALevel (RF24_PA_LOW); radio.stopListening(); } void loop() { if (digitalRead(2) == 0) { State1 = 0; Serial.println("0"); } else{ State1 = 1; Serial.println("1"); } } Kod odbiornika: #include <SPI.h> #include <nRF24L01.h> #include <RF24.h> #include <RF24_config.h>// biblioteki int State1 = 0; RF24 radio(9, 10); // CE, CSN const byte address[6] = "00002"; void setup() { Serial.begin(9600); pinMode(5, OUTPUT); radio.begin(); radio.openReadingPipe(0, address); radio.setPALevel(RF24_PA_LOW); } void loop(){ radio.startListening(); radio.read(&State1, sizeof(State1)); Serial.println("start"); if (State1 == 1) { digitalWrite(5, LOW); Serial.println("1"); } else { digitalWrite(5, HIGH); Serial.println("0"); } Serial.println("koniec"); }
-
Arduino Nano 33 IoT odczytuje/wyświetla nie poprawnie dane
piotr_1998-09 opublikował temat w Arduino i ESP
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"); } */ } }- 3 odpowiedzi
-
- ArduinoNanoIoT
- nrf24l01
- (i 2 więcej)
-
Nie wiem czy można to nazwać pełnoprawnym DIY ale dzisiaj zaprezentuję drugie życie robota z kursu budowy robotów. Komentarz dla czepialskich: tak, mogę tego robota nazwać robotem ponieważ jest wyposażony w akcelerometr który jest pewnego rodzaju czujnikiem. Wykorzystałem tą konstrukcję, ponieważ chciałem zrobić coś małego co będzie mogło jeździć po całym domu z kamerką. Najpierw omówimy sobie co było gotowe a później co dodałem albo zmieniłem. Cała konstrukcja, Arduino i shield forbota przez cały czas były na swoim miejscu nic w tej kwestii nie ruszałem (oprócz przylutowania paru kabelków do shielda, i wkręcenia wyższych dystansów pod Arduino). Natomiast ze zmian jest jedna ale za to ważna sprawa jaką jest zasilanie. W oryginalnym robocie całość była zasilana z 6 paluszków AA co daje razem 9 woltów (1,5V * 6 = 9V) . Wady takiego rozwiązania były dwie - brak możliwości ponownego naładowania i zajmowały sporo miejsca. Pozbyłem się problemu i zamieniłem na 2 akumulatorki 18650 co daje 8.4 woltów (4.2V * 2 = 8,4V). Ale ktoś może powiedzieć zaraz zaraz, ale 2 takie akumulatorki 18650 wcale nie zajmują jakoś mniej miejsca i w ogóle to 8.4 V to nie za mało ? I ma rację bo przy 8.4V mogłem jeździć niecałe dwie minuty (to wszystko wina malinki) dlatego dodałem przetwornicę step- up która podnosi napięcie do 10V. Wracając do kwestii zajmowanego miejsca przez baterie to może faktycznie 18650 nie zajmuje mniej miejsca objętościowo ale za to kształtem idealnie wpasowały się pod przestrzeń między podwoziem a Arduino. Swoją drogą, gdybym nie odkrył tego miejsca to ten projekt by nie powstał. To tyle ze zmian teraz czas na dodatki. Najważniejszym dodatkiem jest mój samodzielnie zlutowany shield na shielda, może śmiesznie to brzmi ale tak właśnie jest. Zawiera on: moduł radiowy nRF24l01 który odpowiada za sterowanie wszystkim, akcelerometr MPU6050 który daje możliwość cieszyć się w miarę prostą jazdą do przodu, wyprowadzenia na 2 serwa które pozwalają poruszać kamerą aby uzyskać większy kąt widzenia, tranzystor do którego podpięte są 2 ledy 1w każda. Drugim dodatkiem jest Raspberry Pi 4B razem z kamerką . Tak zdaję sobie sprawę że rpi 4 to overkill do takiego projektu, zajmuje połowę platformy i potrafi zużywać więcej prądu niż cała reszta robota. Ale po prostu nie mam nic innego pod ręką. Teraz powiem kilka słów o poszczególnych funkcjach i podzespołach (jeśli można tak to nazwać). Zasilanie - nie będę się już powtarzał ale dla tych co jeszcze się nie domyślili dopowiem tylko że malinka jest zasilana przez przetwornicę step-down ( 8.4V przetwarza na 5V) Sterowanie - jak już mówiłem za sterowanie odpowiada nRF24l01, jako transmitera używam własnoręcznie zlutowanego pilota którego używałem już w moich poprzednich projektach i o dziwo cały czas jest sprawny. Na razie pilot ma 10 kanałów z czego 8 używam w tym robocie. Krótka rozpiska co obsługuje poszczególny kanał: lewy joystick góra dół - jazda przód tył, lewy joystick lewo prawo - obrót lewo prawo, prawy joystick góra dół - ruch kamerą góra dół, prawy joystick lewo prawo - ruch kamerą lewo prawo, potencjometr - trymer (albo jakoś tak, nie wiem jak to się pisze) do kamery lewo prawo, chodzi o taki minimalny ruch serwem który pomaga ustawić kamerę w miarę prosto, środkowy(pod nrf'em) toggle switch - włącza funkcję w miarę prostej jazdy do przodu, prawy toggle switch - światła on/off, przycisk w lewym joysticku - włącza buzzer (ten wbudowany w forbotowego shielda). Akcelerometr - sprawił mi najwięcej problemów, a właściwie to program którego nie umiałem poprawnie napisać. Okej przyznam się że funkcji przetwarzającej dane z akcelerometru nie napisałem w pełni samodzielnie. Działa to tak że program odczytuje przyspieszenie w osi Z i w zależności od tej danej steruje prędkością poszczególnych silników. Kamera - podłączona do RPI 4B przekazuje obraz przez Wi-Fi w sieci WLAN . Ja siedząc przy komputerze widzę ten obraz z programu VNC. Oczywiście najpierw muszę wywołać jakąś komendę którą się z wami podzielę, może ktoś skorzysta: raspivid -o -t 0 -w 800 -h 400 -rot 180 -fps 30 Ta część też zajęła mi trochę czasu. Chciałem żeby opóźnienie obrazu nie przekraczało 200ms więc przekopywałem internet żeby znaleźć jak streamować obraz za pomocą netcata. Niestety nie udało się znaleźć żadnego właściwego poradnika. Po dłuższym czasie poszukiwań znalazłem tą komendę która pozwoliła mi streamować obraz z kamery na naprawdę sensownym opóźnieniu (postaram się później podesłać filmik w komentarzu). Wady - oczywiście, tak jak wszystko na tym świecie robot ma wady i to nie jedną, a kilka: środek ciężkości - można głównym ciężarem są akumulatorki które są położone z tyłu co znacznie przesuwa środek ciężkości (czerwony - gdzie jest, zielony - gdzie powinien być), Raspberry Pi 4B - zajmuje za dużo miejsca i pobiera za dużo prądu, Zasilanie - pomimo że je zmieniłem to nadal 18650 nie są najlepszym rozwiązaniem. Na końcu zamieszczę jeszcze filmik pokazujący moc akcelerometru, ruch kamery i jazdę po dywanie.
- 6 odpowiedzi
-
- 13
-
Ostatnio kupiłem moduł NodeMcu V3 udało mi się podłączyć go do Internetu i kanału na ThingSpeak. Teraz chcę do niego podłączyć moduł NRF24l01 tak żeby połączyć to z arduino uno i modułem NRF24l01. Chcę zrobić tak żeby NodeMcu odczytywało dane z trzech czujników DHT22 i wysyłało na ThingSpeak, i do arduino uno poprzez NRF24l01. Tylko mam taki problem, żeby NodeMcu połączyło się z siecią to muszę odpiąć wszystkie czujniki a jak się połączy to można je podpiąć ( żeby wgrać program też trzeba odpiąć czujniki). A drugi problem to taki, że nie wiem jak wysłać i odebrać odczytane temperatury i wilgotności do arduino. Poniżej programy: Odbieranie danych poprzez arduino //Include Libraries #include <SPI.h> #include <nRF24L01.h> #include <RF24.h> //create an RF24 object RF24 radio(9, 8); // CE, CSN //address through which two modules communicate. const byte address[6] = "00001"; void setup() { while (!Serial); Serial.begin(9600); radio.begin(); //set the address radio.openReadingPipe(0, address); //Set module as receiver radio.startListening(); } void loop() { //Read the data if available in buffer if (radio.available()) { char text[11]; radio.read(&text, sizeof(text)); Serial.println(text); } } Wysyłanie danych poprzez NodeMcu //Include Libraries #include <SPI.h> #include <nRF24L01.h> #include <RF24.h> //create an RF24 object RF24 radio(5, 4); // CE, CSN //address through which two modules communicate. const byte address[6] = "00001"; void setup() { radio.begin(); radio.openWritingPipe(address); radio.stopListening(); } void loop() { //Send message to receiver const char text[] = "Hello World"; radio.write(&text, sizeof(text)); delay(1000); } Wysyłanie na kanał ThingSpeak #include "ThingSpeak.h" #include "secrets.h" #include <ESP8266WiFi.h> #include "DHT.h" char ssid[] = "BESKID_MEDIA"; // your network SSID (name) char pass[] = "slowackiego11"; // your network password int keyIndex = 0; // your network key Index number (needed only for WEP) WiFiClient client; unsigned long myChannelNumber = 1202307; const char * myWriteAPIKey = "LG492GYXPS7UXOC0"; // Uncomment one of the lines below for whatever DHT sensor type you're using! //#define DHTTYPE DHT11 // DHT 11 //#define DHTTYPE DHT21 // DHT 21 (AM2301) #define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 // Initialize DHT sensor. DHT dht(D6, DHTTYPE); DHT dht1(D7, DHTTYPE); DHT dht2(D8, DHTTYPE); float Temperature; float Humidity; float Temperature1; float Humidity1; float Temperature2; float Humidity2; // Initialize our values int number1; int number2; int number3; int number4; int number5; int number6; String myStatus = ""; void setup() { Serial.begin(115200); // Initialize serial WiFi.mode(WIFI_STA); ThingSpeak.begin(client); // Initialize ThingSpeak pinMode(D6, INPUT); pinMode(D7, INPUT); pinMode(D8, INPUT); dht.begin(); dht1.begin(); dht2.begin(); delay(500); } void loop() { // Connect or reconnect to WiFi if(WiFi.status() != WL_CONNECTED){ Serial.print("Attempting to connect to SSID: "); Serial.println(SECRET_SSID); while(WiFi.status() != WL_CONNECTED){ WiFi.begin(ssid, pass); // Connect to WPA/WPA2 network. Change this line if using open or WEP network Serial.print("."); delay(5000); } Serial.println("\nConnected."); } // set the fields with the values ThingSpeak.setField(1, number1); ThingSpeak.setField(2, number2); ThingSpeak.setField(3, number3); ThingSpeak.setField(4, number4); ThingSpeak.setField(5, number5); ThingSpeak.setField(6, number6); delay(200); // set the status ThingSpeak.setStatus(myStatus); // write to the ThingSpeak channel int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); if(x == 200){ Serial.println("Channel update successful."); }else{ Serial.println("Problem updating channel. HTTP error code " + String(x)); } Serial.println(Temperature); Serial.println(Temperature1); Serial.println(Temperature2); Temperature = dht.readTemperature(); // Gets the values of the temperature Humidity = dht.readHumidity(); // Gets the values of the humidity Temperature1 = dht1.readTemperature(); // Gets the values of the temperature Humidity1 = dht1.readHumidity(); // Gets the values of the humidity Temperature2 = dht2.readTemperature(); // Gets the values of the temperature Humidity2 = dht2.readHumidity(); // Gets the values of the humidity number1 = Temperature; number2 = Humidity; number3 = Temperature1; number4 = Humidity1; number5 = Temperature2; number6 = Humidity2; delay(10000); // Wait 20 seconds to update the channel again }
-
Witam Tak jak napisałem w temacie mam problem z obsługą 2rf24l01 a dokładnie po kilku godzinach prób nie udało mi się uruchomić ani jednego programu na Arduino nano. Czy moglibyście coś mi doradzić w związku z tymi modułami ? Dodam że przylutowałem kondensatory 3.3µF. Poniżej wklejam jeden z przykładów jaki próbowałem zastosować. Nadajnik #include <SPI.h> #include <nRF24L01.h> #include <RF24.h> int przycisk = 7; const uint64_t pipe = 0x1CF8361637LL; RF24 radio(7, 8); int stan; void setup() { pinMode(przycisk,INPUT); radio.begin(); radio.openWritingPipe(pipe); } void loop() { stan = digitalRead(przycisk); radio.write(&stan, sizeof(int)); / } Odbiornik #include <SPI.h> #include <nRF24L01.h> #include <RF24.h> const uint64_t pipe = 0x1CF8361637LL; int dioda = 8; RF24 radio(7, 8); int stan; void setup() { pinMode(dioda,OUTPUT); delay(1000); radio.begin(); radio.openReadingPipe(1,pipe); radio.startListening(); } void loop() { if (radio.available()) { radio.read(&stan, sizeof(int)); if(stan == 0) { digitalWrite(dioda,HIGH); }else digitalWrite(dioda,LOW); } }