Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Podobne dokumenty
ĆWICZENIE 5. TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD.

4 Transmisja szeregowa, obsługa wyświetlacza LCD.

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Expandery wejść MCP23S17 oraz MCP23017

Schemat blokowy architektury AVR

Pilot RF 4-kanałowy + odbiornik XY-DJM-5V umożliwia zdalne sterowanie do czterech urządzeń. Nadajnik pilot MX804. Odbiornik XY-DJM.

SCL > Pin 21 SDA > Pin 20 VCC > 5V GND > GND

NOTATNIK KONSTRUKTORA Łącze radiowe w paśmie 2,4 GHz

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Uwaga: dioda na wyjściu 13 świeci gdy na wyjście podamy 0.

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Instytut Teleinformatyki

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Systemy Wbudowane. Arduino C. Arduino C - stałe. Arduino C - Stałe. Arduino C - Stałe. Funkcje matematyczne. Arduino C - Stałe

Problematyka sieci miejscowej LIN

Protokół komunikacyjny sondy cyfrowej CS-26/RS-485 (lub RS-232)

Magistrala SPI. Linie MOSI i MISO sąwspólne dla wszystkich urządzeńna magistrali, linia SS jest prowadzona do każdego Slave oddzielnie.

Komunikacja w mikrokontrolerach Laboratorium

Tematem projektu jest oparty na Arduino zegar pokazujący godzinę oraz datę.

Zastosowanie moduł Wi-Fi ESP-12 (1) Wirtualny interfejs szeregowy

Struktury czyli rekordy w C/C++

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

MOBOT-RCR v2 miniaturowe moduły radiowe Bezprzewodowa transmisja UART

RFID. Czytniki RFID. Instrukcja rev. 1.01

Systemy Wbudowane. Arduino C. Arduino C - stałe. Arduino C - Stałe. Arduino C - Stałe. Funkcje matematyczne. Arduino C - Stałe

TECHNIKA MIKROPROCESOROWA

Stereofoniczny moduł sonaru (((STEREO)))

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Karty SD posiadają 9 wyprowadzeń. Dodatkowo karta SD ma na brzegu przełącznik blokujący możliwość zapisu. Karta SD operuje na napięciu 3,3V.

Klawiatura matrycowa

Systemy wbudowane Wykład 6 - transmisje szeregowe: UART i pochodne. Komunikacja szeregowa Notes. Rodzaje transmisji Notes. Rodzaje transmisji Notes

Praktyka programowania w C Laboratorium 5.

UW-DAL-MAN v2 Dotyczy urządzeń z wersją firmware UW-DAL v5 lub nowszą.

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

TRD-MINI COMBO. Uniwersalny moduł czytnika transponderów UNIQUE - wersja OEM. Podstawowe cechy :

Magistrala LIN

Język ludzki kod maszynowy

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Wskaźniki. Informatyka

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska. Zygmunt Kubiak 1

Programowanie w językach wysokiego poziomu

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

Systemy Wbudowane. Arduino, AVR. Arduino. Arduino. Arduino. Oprogramowanie. Mikrokontroler. Mikrokontroler Platforma Arduino. Arduino IDE: Arduino C:

Zagadnienia zaliczeniowe z przedmiotu Układy i systemy mikroprocesorowe elektronika i telekomunikacja, stacjonarne zawodowe

Wprowadzenie do szablonów klas

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Systemy Wbudowane. Arduino, AVR (wersja 2019) Arduino. Arduino. Oprogramowanie. Rys historyczny. Mikrokontroler

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

SYNCHRONIZOWANA SIEĆ POMIAROWA

MAGISTRALE MIKROKONTROLERÓW (BSS) Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Funkcja (podprogram) void

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Komunikacja radiowa Arduino - Raspberry Pi z wykorzystaniem modułu Bluetooh HC-06

Uczeń/Uczennica po zestawieniu połączeń zgłasza nauczycielowi gotowość do sprawdzenia układu i wszystkich połączeń.

Materiały dodatkowe Krótka charakterystyka protokołu MODBUS

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Systemy Wbudowane. Arduino rozszerzanie Wersja Plan. Biblioteka EPROM Arduino bez płytki Arduino. Czyli... Co musimy mieć, aby uruchomić chip?

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

MIKROKONTROLERY - MAGISTRALE SZEREGOWE

Instytut Teleinformatyki

2. Format danych i zaimplementowane funkcje MODBUS

Hardware mikrokontrolera X51

> C++ typy wyliczeniowe, struktury, unie, konwersje napis <-> liczba, formatowanie wyjścia

Pomiar natężenia światła (005; ; arduino, processing)

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Instrukcja dla: Icomsat v1.0 SIM900 GSM/GPRS shield for Arduino oraz dla GPRS Shield produkcji Seeedstudio.

Programowanie w językach

Podstawy programowania w języku C++

Wbudowane układy komunikacyjne cz. 1 Wykład 10

Politechnika Wrocławska

Podstawy systemów mikroprocesorowych. Interfejs USART. Interfejsy szeregowe w mikrokontrolerach AVR

Funkcje standardowej biblioteki wejść-wyjść do wyświetlania i pobierania danych

Instrukcja obsługi czytnika MM-R32

TECHNIKA MIKROPROCESOROWA

Stałe, tablice dynamiczne i wielowymiarowe

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

POWER LINE MODEM PMM-1 VER. 2.2

Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307

Podstawy programowania w języku C++

2 Przygotował: mgr inż. Maciej Lasota

Sieci komputerowe. Wykład 2: Sieci LAN w technologii Ethernet. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Zastosowanie procesorów AVR firmy ATMEL w cyfrowych pomiarach częstotliwości

Mikroprocesory i Mikrosterowniki Laboratorium

Programowanie Proceduralne

Moduł przełączania temperatury Nr produktu

Opis czytnika TRD-FLAT CLASSIC ver Naścienny czytnik transponderów UNIQUE w płaskiej obudowie

Zastosowanie modułu Wi-Fi ESP-12 (1)

Proste typy zmiennych języka C++ *) Zapis 3.4 e-38 jest równoważny zapisowi 3,

Wstęp do programowania 1

RS-H0-05 (K)* Czytnik RFID MHz Mifare. Karta użytkownika

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

Transkrypt:

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

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ół. 2

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 3

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) 4

nrf24l01 transmisja w trybie Shockburst Przykładowe adresowanie w MultiCeiver 5

nrf24l01 transmisja w trybie Shockburst Biblioteka RF24 https://maniacbug.github.io/rf24/classrf24.html 6

nrf24l01 transmisja w trybie Shockburst Biblioteka RF24 https://maniacbug.github.io/rf24/classrf24.html 7

nrf24l01 transmisja w trybie Shockburst Biblioteka RF24 https://maniacbug.github.io/rf24/classrf24.html 8

nrf24l01 transmisja w trybie Shockburst Biblioteka RF24 https://maniacbug.github.io/rf24/classrf24.html 9

nrf24l01 transmisja w trybie Shockburst Biblioteka RF24 https://maniacbug.github.io/rf24/classrf24.html 10

nrf24l01 transmisja w trybie Shockburst Biblioteka RF24 https://maniacbug.github.io/rf24/classrf24.html 11

nrf24l01 transmisja w trybie Shockburst 12

Szkic Arduino //*************************************************** // Transmisja typu N->O #include <SPI.h> #include nrf24l01.h #include RF24.h #include printf.h #define TXBUF_SIZE #define RXBUF_SIZE 0x20 0x20 unsigned char [TXBUF_SIZE] = { xxxxxximie Nazwisko }; unsigned char[rxbuf_size] = {}; 13

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); 14

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 15

Szkic Arduino // Topologia // Adresy do komunikacji dwukierunkowej const uint64_t pipes[2] = {0xE2E2E2E231LL, 0xE2E2E2E253LL}; 16

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; 17

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]); 18

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ń 19

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]); } 20

Szkic Arduino // Start nasłuchu radio.startlistening(); // Wydruk konfiguracji wybranych rejestrów radio.printdetails(); } // Koniec funkcji setup() 21

Szkic Arduino - funkcja loop() void loop() { // Rola nadajnika if (rola == nadajnik) { // Zatrzymanie nasłuchu radio.stoplistening(); 22

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 23

Szkic Arduino - funkcja loop() // Rola nadajnika skorzystać z funkcji radio.write() 24

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 25

Szkic Arduino - funkcja loop() // Rola odbiornika skorzystać z funkcji radio.read() 26

Dziękuję Zygmunt Kubiak 27 11-201 6