Transmisja radiowa Arduino & nRF24L01P

Slides:



Advertisements
Podobne prezentacje
Zerowanie mikroprocesorów Cel: wprowadzenie mikroprocesora w określony stan początkowy Zwykle realizowany poprzez: inicjalizację licznika rozkazów (PC)
Advertisements

Programowanie wizualne PW – LAB6 Wojciech Pieprzyca.
Mechanizmy pracy równoległej
1 Dzisiejszy wykład Klasa string wersja prosta wersja ze zliczaniem odwołań Wyjątki Specyfikator volatile.
SIECI KOMPUTEROWE WYKŁAD 4. WARSTWA ŁĄCZA DANYCH
Systemy rozproszone W. Bartkiewicz
Dziel – Rządź - Złącz.
Tablice.
Programowanie w C Wykład 3
I T P W ZPT PRUS 2007 Krzysztof Jasiński 1 PRUS - Projektowanie Programowalnych Układów Scalonych Krzysztof Jasiński
I T P W ZPT 2009 PRUSn_W2 Krzysztof Jasiński 1 PRUS - Projektowanie Programowalnych Układów Scalonych Krzysztof Jasiński
Język ANSI C Operacje we/wy
1-Wire® Standard 1-Wire®, zwany też czasami siecią MicroLAN, oznacza technologię zaprojektowaną i rozwijaną przez firmę Dallas Semiconductor polegającą.
10. PROSTE MECHANIZMY KOORDYNACJI DOSTĘPNE W JĘZYKU C W systemie Unix użytkownikowi (nie będącemu administratorem) nie wolno wykonywać bezpośrednio żadnych.
nowe operatory & . (kropka) * operator rzutowy -> , (przecinek)
Transmisja modemowa Xmodem, Ymodem, Zmodem.
Programowalny układ we-wy szeregowego 8251
przykładowy 8-bitowy mikroprocesor uniwersalny CISC
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Przyciski i klawiatury
Mikrokontrolery PIC.
Podstawy programowania w języku C i C++
RODZAJE TRANSMISJI PRZESYŁANIE INFORMACJI W MODELU WARSTWOWYM
ANNA BANIEWSKA SYLWIA FILUŚ
Bezprzewodowego system OMNIA
Wiadomości wstępne o sieciach komputerowych
Protokół drzewa opinającego
Wykład IV Protokoły BOOTP oraz DHCP.
Opracowanie radiomodemu i programu do transmisji danych
Warstwa łącza danych.
Systemy operacyjne (wiosna 2014)
Systemy plików Bibliografia: Windows XP. Komendy i polecenia. Praktyczne przykłady, P. Czarny Windows XP. Naprawa i optymalizacja, B. Danowski Windows.
Bariery synchronizacyjne Bariery są obiektami synchronizacyjnymi pakietu pthread służącymi do wyrównywania czasów pracy wątków wykonujących wspólne zadanie.
Systemy operacyjne i sieci komputerowe
Sieci komputerowe E-learning
Zintegrowany sterownik przycisków. Informacje podstawowe Każdy przycisk jest podłączony do sterownika za pośrednictwem dwóch przewodów, oraz dwóch linii.
Klawiatura i mysz.
1 dynamiczny przydział pamięci malloc() free() realloc() calloc() memset() memcpy( ) mempcpy( ) memmove() (wskaźniki!! )
Układy i systemy mikroprocesorowe
1 Opisy funkcji Adres strony WWW : html (należy odszukać hyperlink Function Index) (
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
POLITECHNIKA POZNAŃSKA WBMiZ Zakład Urządzeń Mechatronicznych STEROWNIKI URZĄDZEŃ MECHATRONICZNYCH
Akademia ETI 2016 LABORATORIUM 2 – OBSŁUGA WYŚWIETLACZA GRAFICZNEGO.
PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES
Sadsadafghfhfghg POLITECHNIKA RZESZOWSKA WYDZIAŁ ELEKTROTECHNIKI I INFORMATYKI POLITECHNIKA RZESZOWSKA im. Ignacego Łukasiewicza WYDZIAŁ ELEKTROTECHNIKI.
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
POLITECHNIKA POZNAŃSKA
Transmisja radiowa Arduino & nRF24L01P
SIECI KOMPUTEROWE WYKŁAD 4. WARSTWA ŁĄCZA DANYCH
Nowe rozwiązania sieci miejscowych - sieć LIN
Interfejsy synchroniczne
Silniki bezszczotkowe prądu stałego
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Mikrokontrolery z rdzeniem ARM Cortex-M0+ Energooszczędność
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Sensory 3-osiowy kompas cyfrowy
Telekomunikacja Bezprzewodowa (ćwiczenia - zajęcia 8,9)
Opisy funkcji Adres strony WWW :
Arduino Lab Akcelerometr MMA7455
Mikrokontrolery System przerwań
Mikrokontrolery STMicroelectronics
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
nowe operatory & . (kropka) * operator rzutowy -> , (przecinek)
Mikrokontrolery MSP430 DMA
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
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://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 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 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.openWritingPipe(1, pipes[1]); } else // radio.openWritingPipe(pipes[1]); radio.openWritingPipe(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

Dziękuję Zygmunt Kubiak 11-2016