Transmisja radiowa Arduino & nRF24L01P

Slides:



Advertisements
Podobne prezentacje
Anonimizacja danych adresowych pokrzywdzonego i świadka w procedurze wykroczeniowej w świetle ustawy z dnia 28 listopada 2014 r. o ochronie i pomocy dla.
Advertisements

Elektroniczna aparatura medyczna EMG
PRACA Z APLIKACJAMI SYSTEM PRZEMIESZCZANIA oraz NADZORU WYROBÓW AKCYZOWYCH EMCS PL 1.
Mirek Ostrowski, Radio Wrocław SA Radio hybrydowe wprowadzenie.
Poczta elektroniczna – e- mail Gmail zakładanie konta. Wysyłanie wiadomości.
Literary Reference Center Przewodnik
20/09/ Model warstwowy OSI. Model warstwowy OSI (Open Systems Interconnection ) – standard wprowadzony przez organizację ISO (International Organization.
Prawo telekomunikacyjne Ewa Galewska CBKE. Sektor telekomunikacyjny Monopole naturalne Operatorzy zasiedziali Brak równowagi pomiędzy podmiotami Wysokie.
Jak to się robi ? Instrukcja wypełnienia dzienniczka treningowego, na podstawie danych z GARMIN-a Forerunner 305.
Porównywarki cen leków w Polsce i na świecie. Porównywarki w Polsce.
POLITECHNIKA RZESZOWSKA im. Ignacego Łukasiewicza WYDZIAŁ ELEKTROTECHNIKI I INFORMATYKI KATEDRA METROLOGII I SYSTEMÓW DIAGNOSTYCZNYCH METROLOGIA Andrzej.
Zjawisko fotoelektryczne zewnętrzne i wewnętrzne
Działalność konsultantów wojewódzkich zmiany w ustawie o konsultantach w ochronie zdrowia oświadczenia składane przez konsultantów kontrola podmiotów leczniczych.
Model warstwowy OSI Model OSI (Open Systems Interconnection) opisuje sposób przepływu informacji między aplikacjami programowymi w jednej stacji sieciowej.
Dokumenty potrzebne do złożenia wniosku o dofinansowanie projektu w ramach Regionalnego Programu Operacyjnego Województwa Pomorskiego na lata
POLITECHNIKA POZNAŃSKA WBMiZ Zakład Urządzeń Mechatronicznych STEROWNIKI URZĄDZEŃ MECHATRONICZNYCH
BADANIA STATYSTYCZNE. WARUNKI BADANIA STATYSTYCZNEGO musi dotyczyć zbiorowościstatystycznej musi określać prawidłowościcharakteryzujące całą zbiorowość.
Pole wycinka kołowego r r α Wycinek kołowy, to część koła ograniczona dwoma promieniami. Skoro wycinek kołowy jest częścią koła, to jego pole jest częścią.
Cechy podobieństwa trójkątów Radosław Hołówko Konsultant: Agnieszka Pożyczka.
Projektowanie systemów cyfrowych z wykorzystaniem języka VHDL Układy sekwencyjne.
Apteka Oliwna Jak poprawnie złożyć zamówienie
API jądra do obsługi przestrzeni użytkownika Co jest tematem tej prezentacji: Transport danych pomiędzy przestrzeniami użytkownika i jądra (asm/uaccess.h)
TEMAT: Omówienie programu Twido Soft i jego podstawowe możliwości
System Monitorowania Kształcenia (SMK) Jak zapisać się na kurs / specjalizację – instrukcja krok po kroku Od dnia 1 lipca 2017 celem zapisania się na.
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Statut uczelni publicznej a statut publicznej szkoły podstawowej
T.15 Wybór narzędzi dla reengineeringu (szczegóły).
Komunikacja ze szkołą i nauczycielami - dziennik elektroniczny
Zasady transmisji w sieciach TCP/IP
terminologia, skale pomiarowe, przykłady
Symulacja procesu BPMN
FIZYKA na służbie b’Rowersa ...krótki kurs.
FIZYKA na służbie b’Rowersa ...krótki kurs.
Model ISO/OSI Wykład 4.
SIECI KOMPUTEROWE WYKŁAD 4. WARSTWA ŁĄCZA DANYCH
Full Text Finder Przegląd Publication Finder
Trendy w Public Relations
Programowanie obiektowe
Przewodnik Udoskonalanie listy wyników w wyszukiwarce naukowej
Bezprzewodowa sieć EnOcean
Silniki bezszczotkowe prądu stałego
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Bezpieczeństwo dostępu do danych w systemie Windows
Ogólny schemat systemu
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Sieci komputerowe Protokół TCP/IP.
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Spotkanie informacyjno-szkoleniowe
Otwarta firma Jak zgłosić firmę bądź instytucję do programu?
Laboratorium 1 – obsługa wejść i wyjść
Jak korzystać z usługi Video s i Raportu Kontaktów
Sensory i ich interfejsy
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
NAZIEMNA TELEWIZJA CYFROWA
Mikrokontrolery Tiva seria C
SYSTEM KONTROLI FREKWENCJI
Podstawy informatyki Zygfryd Głowacz.
Zmiany w zakresie procedury
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Wyjazdy dydaktyczne i szkoleniowe dla kadry akademickiej.
Transmisja radiowa Arduino & nRF24L01P
Sterowanie procesami ciągłymi
Prawa ruchu ośrodków ciągłych c. d.
Autor: Magdalena Linowiecka
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Konkursy nr RPKP IZ /19 Zmiany w zakresie procedur
Najważniejsze operacje graficzne w programie GIMP
pracę programu Outlook
Platforma LearningApps
Zapis prezentacji:

Transmisja radiowa Arduino & nRF24L01P Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Transmisja radiowa - Arduino & nRF24L01P nRF24L01 – transmisja w trybie Shockburst W tym trybie ramka ma prostą strukturę: Zakończona jest opcjonalnym polem kontrolnym, które obsługiwane jest sprzętowo wewnątrz układu RF Programista wybiera adres 3-5 bajtów Wysłanie preambuły i realizacja synchronizacji bitowej i bajtowej realizowane jest przez układ RF Taka organizacja ramki pozwala na wykorzystanie układu nRF24L01 do pracy w bardzo różnych protokołach transmisji Pole ładunku może być wypełnione różną treścią, wymaganą przez dany protokół. 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P nRF24L01 – transmisja w trybie Shockburst Można wykorzystać specyficzną cechę układu RF, dostępną w trybie RX a polegającą na użyciu do 6 kanałów logicznych (adresów) w ramach danego kanału radiowego 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P nRF24L01 – transmisja w trybie Shockburst Można wykorzystać specyficzną cechę układu RF, dostępną w trybie RX a polegającą na użyciu do 6 kanałów logicznych (adresów) w ramach danego kanału radiowego (MultiCeiver) 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P nRF24L01 – transmisja w trybie Shockburst Przykładowe adresowanie w MultiCeiver 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P nRF24L01 – transmisja w trybie Shockburst Biblioteka RF24 https://github.com/TMRh20/RF24 http://tmrh20.github.io/RF24/ 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P nRF24L01 – transmisja w trybie Shockburst Biblioteka RF24 https://github.com/TMRh20/RF24 http://tmrh20.github.io/RF24/ 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P nRF24L01 – transmisja w trybie Shockburst Biblioteka RF24 https://github.com/TMRh20/RF24 http://tmrh20.github.io/RF24/ 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P nRF24L01 – transmisja w trybie Shockburst Biblioteka RF24 https://maniacbug.github.io/RF24/classRF24.html 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P nRF24L01 – transmisja w trybie Shockburst Biblioteka RF24 https://maniacbug.github.io/RF24/classRF24.html 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P nRF24L01 – transmisja w trybie Shockburst Biblioteka RF24 https://maniacbug.github.io/RF24/classRF24.html 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P nRF24L01 – transmisja w trybie Shockburst Biblioteka RF24 https://maniacbug.github.io/RF24/classRF24.html 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P nRF24L01 – transmisja w trybie Shockburst Biblioteka RF24 https://maniacbug.github.io/RF24/classRF24.html 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P nRF24L01 – transmisja w trybie Shockburst Biblioteka RF24 https://maniacbug.github.io/RF24/classRF24.html 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P nRF24L01 – transmisja w trybie Shockburst Biblioteka RF24 !!! Uwaga Biblioteki ze stron https://github.com/TMRh20/RF24 http://tmrh20.github.io/RF24/ oraz https://maniacbug.github.io/RF24/classRF24.html Wykazują pewne różnicę – w szczególności należy zwrócić uwagę na funkcje radio.read() 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P nRF24L01 – transmisja w trybie Shockburst // Połączenie sygnałów CE i CSN układu nRF24L01+ z Arduino // CE -> 9; CSN -> 10 // Pozostałe sygnały SPI zgodne z Arduino // MOSI -> 11; MISO -> 12; SCK -> 13 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P Szkic Arduino //*************************************************** // Transmisja typu N->O #include <SPI.h> #include „nRF24L01.h” #include „RF24.h” #include „printf.h” #define TXBUF_SIZE 0x20 #define RXBUF_SIZE 0x20 unsigned char [TXBUF_SIZE] = {„xxxxxxImie Nazwisko”}; unsigned char[RXBUF_SIZE] = {}; 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P Ćwiczenie laboratoryjne – Radio1 Transmisja jednokierunkowa N --> O Tryb Shock Burst (wyłączone potwierdzanie i powtórzenia transmisji) Stała długość pola ładunku (danych) – 32 bajty Kanał 33 - 2433MHz Adres (pole pipe) - 0xE2E2E2E231 Sprzętowe CRC16 Prędkość 2 Mb/s 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P Szkic Arduino // Konfiguracja const int Btn = 5; const int Led = 13; // Połączenie sygnałów CE i CSN układu nRF24L01+ z Arduino // CE -> 9; CSN -> 10 // Pozostałe sygnały SPI zgodne z Arduino // MOSI -> 11; MISO -> 12; SCK -> 13 RF24 radio(9,10); 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P Szkic Arduino // Ustalenie roli węzła. Połączenie „role_pin” do GND – nadajnik // Bez połączenia – odbiornik const int role_pin = 7; // Tryby pracy węzła typedef enum {nadajnik = 1, odbiornik} rola_e; // Nazwy ról const char* stan_wezla[] = {„Niedostepny”, „Nadajnik”, „Odbiornik”}; // Zmienna określająca bieżącą rolę węzła rola_e rola; unsigned char frcnt = 0; // licznik ramek węzła 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P Szkic Arduino // Topologia // Adresy do komunikacji dwukierunkowej const uint64_t pipes[2] = {0xE2E2E2E231LL, 0xE2E2E2E253LL}; 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P Szkic Arduino void setup() { pinMode(Led, OUTPUT); pinMode(Btn, INPUT_PULLUP); // Konfiguracja pinu roli węzła (wejście) pinMode(role_pin, INPUT_PULLUP); digitalWrite(role_pin,HIGH); delay(20); // Wymagane opóźnienie // Oczyt roli węzła if (!digitalRead(role_pin)) rola = nadajnik; else rola = odbiornik; 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P Szkic Arduino // Informacja startowa Serial.begin(19200); printf_begin(); printf(„\n\ nRF24L01+ transmisja N -> O/\n\r”); printf(„Rola wezla: %s\n\r”, stan_wezla[rola]); 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P Szkic Arduino // Konfiguracja układu RF radio.begin(); // radio.disableCRC(); // bez CRC radio.setCRCLength(RF24_CRC_16); // sprzętowe CRC radio.setChannel(33); // 2433 MHz // Wybór trybu Shock Burst radio.setPayloadSize(TXBUF_SIZE); // l. bajtów 1-32 radio.setAutoAck(false); // blokada potwierdzeń radio.setDataRate(RF24_1MBPS); // lub RF_250KBPS radio.setRetries(0,0); // zerowa liczba powtórzeń 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P Szkic Arduino // Otwarcie kanałów logicznych dla komunikacji // Przydział adresów dla nadawania i odbioru if (rola == nadajnik) // tu tylko pipes[0] { radio.openWritingPipe(pipes[0]); // radio.openReadingPipe(1, pipes[1]); } else // radio.openWritingPipe(pipes[1]); radio.openReadingPipe(1, pipes[0]); 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P Szkic Arduino // Start nasłuchu radio.startListening(); // Wydruk konfiguracji wybranych rejestrów radio.printDetails(); } // Koniec funkcji setup() 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P Szkic Arduino - funkcja loop() void loop() { // Rola nadajnika if (rola == nadajnik) // Zatrzymanie nasłuchu radio.stopListening(); 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P Szkic Arduino - funkcja loop() /* Wysłać ramkę z następującym ładunkiem TxBuf[0] - rozmiar pola ładunku TxBuf[1] - stan przycisku Btn TxBuf[2] - nr sekwencyjny ramki (frcnt) TxBuf[3] - stały bajt 0xFF Pozostała część bufora od i=6 – tekst ASCII Wydruk zawartości wysłanej ramki */ radio.startListening(); delay(1000); } // koniec nadawania 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P Szkic Arduino - funkcja loop() // Rola nadajnika – skorzystać z funkcji radio.write() 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P Szkic Arduino - funkcja loop() // Rola odbiornika if (rola == odbiornik) { // Jeśli są dane do odczytu if (radio.available()) /* Odczyt danych do bufora RxBuf Wydruk: dane (Rxbuf[0] – RxBuf[3]), tekst od RxBuf[6] */ } } // koniec odbioru 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P Szkic Arduino - funkcja loop() // Rola odbiornika – skorzystać z funkcji radio.read() 11-2016 Zygmunt Kubiak

Transmisja radiowa - Arduino & nRF24L01P Projekty – Radio2 Transmisja zgodnie z przydzielonym protokołem Tryb Shock Burst (wyłączone potwierdzanie i powtórzenia transmisji) Sprzętowe CRC – wyłączone (radio.disableCRC()) Programowe CRC8 – zgodnie z wcześniejszymi ćwiczeniami (opcja – ostatni bajt ładunku) Uwaga – pole adresu pipe, pełni w tej realizacji rolę słowa synchronizacyjnego 11-2016 Zygmunt Kubiak

Dziękuję Zygmunt Kubiak 11-2016