Wyświetlacz widmowy RGB sterowany bezprzewodowo

Podobne dokumenty
Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

Obługa czujników do robota śledzącego linie. Michał Wendland czerwca 2011

Programowanie w językach asemblera i C

Politechnika Wrocławska

Architektura komputera. Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt

Elektroniczny systemy prowadzenia statystyk odwiedzin placówek publicznych Opis oprogramowania przeznaczonego do liczników CC-1 oraz CC-2

1.2 Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych

Komunikacja w mikrokontrolerach Laboratorium

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

IIPW_SML3_680 (Z80) przewodnik do ćwiczeń laboratoryjnych

Konfigurator Modbus. Instrukcja obsługi programu Konfigurator Modbus. wyprodukowano dla

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

Wstęp Architektura... 13

Instrukcja do oprogramowania ENAP DEC-1

Projekt MARM. Dokumentacja projektu. Łukasz Wolniak. Stacja pogodowa

Pomoc dla użytkowników systemu asix 6. Strategia buforowa

Sprawozdanie z projektu MARM. Część druga Specyfikacja końcowa. Prowadzący: dr. Mariusz Suchenek. Autor: Dawid Kołcz. Data: r.

SERIA GX HD WYŚWIETLACZE GRAFICZNO - TEKSTOWE (nowy model o podwyższonej rozdzielczości) Oferta ważna od r.

Grafika komputerowa. Dla DSI II

Odczyty 2.0 Spis treści

2.1 Porównanie procesorów

asix5 Podręcznik użytkownika Strategia buforowa

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

o Instalacja środowiska programistycznego (18) o Blink (18) o Zasilanie (21) o Złącza zasilania (22) o Wejścia analogowe (22) o Złącza cyfrowe (22)

KRYPTOGRAFIA I OCHRONA DANYCH PROJEKT

2. Format danych i zaimplementowane funkcje MODBUS

Opis konfiguracji ST do współpracy z kolektorem DENSO BHT 8000

Tablica może zawierad od jednego do pięciu liczników. Każdy z liczników może pracowad w jednym z trybów:

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

SmartOSD Manager Instrukcja obsługi (skrócona)

RSD Uniwersalny rejestrator danych Zaprojektowany do pracy w przemyśle

Organizacja typowego mikroprocesora

Programowanie mikrokontrolerów. 8 listopada 2007

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

PROJECT OF FM TUNER WITH GESTURE CONTROL PROJEKT TUNERA FM STEROWANEGO GESTAMI

STEROWNIK TUBY LED STM-64

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Mikroprocesory i Mikrosterowniki Laboratorium

Instrukcja użytkownika ARSoft-WZ1

Pliki. Operacje na plikach w Pascalu

Metody obsługi zdarzeń

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Commander

Sterowanie multipleksowe 4-cyfrowego wyświetlacza siedmiosegmentowego w oparciu o system przerwao mikrokontrolera ATmega16 w języku Asembler

Sterownik procesorowy S-2 Komunikacja RS485 MODBUS

Arduino dla początkujących. Kolejny krok Autor: Simon Monk. Spis treści

Moduł licznika położenia LP 2.

Instalowanie dodatku Message Broadcasting

2. Architektura mikrokontrolerów PIC16F8x... 13

Komunikacja w mikrokontrolerach Laboratorium

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

PROGRAM TESTOWY LCWIN.EXE OPIS DZIAŁANIA I INSTRUKCJA UŻYTKOWNIKA

MODBUS RTU wersja M1.14 protokół komunikacyjny wyświetlaczy LDN

GRAFIKA RASTROWA. WYKŁAD 1 Wprowadzenie do grafiki rastrowej. Jacek Wiślicki Katedra Informatyki Stosowanej

Szkolenia specjalistyczne

ZASOBY ZMIENNYCH W STEROWNIKACH SAIA-BURGESS

STEROWNIK LAMP LED MS-1 Konwerter sygnału 0-10V. Agropian System

Ćwiczenie 7 Matryca RGB

Grafika Komputerowa Wybrane definicje. Katedra Informatyki i Metod Komputerowych Uniwersytet Pedagogiczny im. KEN w Krakowie apw@up.krakow.

Kontroler do gier FPS

INSTRUKCJA OBSŁUGI WIELOFUNKCYJNY WZMACNIACZ SYGNAŁU KALER GEN-Q5.

Komunikacja RS485 - MODBUS

Hardware mikrokontrolera X51

ZL9AVR. Płyta bazowa dla modułów ZL7AVR (ATmega128) i ZL1ETH (RTL8019)

Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED

Graficzne rejestratory VM7000A Dużo funkcji przy zachowaniu łatwości obsługi!

EXCEL. Diagramy i wykresy w arkuszu lekcja numer 6. Instrukcja. dla Gimnazjum 36 - Ryszard Rogacz Strona 20

SYSTEM PRZERWAŃ ATmega 32

Przykładowe zagadnienia na sprawdzian z wiedzy ogólnej. Linux to nazwa: A. Programu biurowego. B. Systemu operacyjnego. C. Przeglądarki internetowej.

Krzysztof Leszczyński Adam Sosnowski Michał Winiarski. Projekt UCYF

Spis treści. Wykaz ważniejszych skrótów Wprowadzenie Rdzeń Cortex-M Rodzina mikrokontrolerów XMC

Twoja ulotka instrukcja obsługi programu

Grafika rastrowa (bitmapa)-

KRZYŻE APTECZNE 1-kolorowe i 7-kolorowe. Raster od 10 mm. Sterowanie PC - LAN/PENDRIVE/WiFi/Pilot

Standard transmisji równoległej LPT Centronics

Programowanie mikrokontrolerów - laboratorium

Veronica. Wizyjny system monitorowania obiektów budowlanych. Instrukcja oprogramowania

Program EDYTOR-AS-OUX

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Uproszczony schemat blokowy zespołu 8-bitowego timera przedstawiono na rys.1

Problematyka sieci miejscowej LIN

F&F Filipowski Sp. J Pabianice, ul. Konstantynowska 79/81 tel KARTA KATALOGOWA

SM Wyświetlacz 4x LED, 1x CAN, 1xRS232/485, 2x wejście analogowe

DTR.BPA..01. Manometr cyfrowy BPA. Wydanie LS 15/01

DOKUMENTACJA PROJEKTU

Nowe funkcje w wersji 2 hafciarki PR-650

Kod produktu: MP01611

INSTRUKCJA PANEL STERUJĄCY MT-5

rh-s4l4 Czterokrotny nadajnik dotykowy systemu F&Home RADIO.

Scenariusz lekcji opartej na programie Program nauczania informatyki w gimnazjum DKW /99

Opis procedur asemblera AVR

LICZNIK IMPULSÓW Z WYŚWIETLACZEM LED NA SZYNĘ DIN LIMP-1 ZASILANY 230VAC

Instytut Teleinformatyki

Przerwania, polling, timery - wykład 9

JAZZ OPLC JZ20-R10 i JZ20-R16

Ustawienia ogólne. Ustawienia okólne są dostępne w panelu głównym programu System Sensor, po kliknięciu ikony

3.2. Zegar/kalendarz z pamięcią statyczną RAM 256 x 8

TECHNIKA MIKROPROCESOROWA

Transkrypt:

Projekt zaliczeniowy z przedmiotu Techniki Multimedialne Wyświetlacz widmowy RGB sterowany bezprzewodowo Autor: Opiela Paweł Informatyka III rok gr. 34a

Specyfikacja techniczna: Urządzenie składa się z 32 diod LED RGB które są sterowane za pomocą dwunastu 8 bitowych rejestrów przesuwnych z zatrzaskiem 74HC595. Całością steruje mikrokontroler atmega32 działająca z prędkością 16MHz. W urządzeniu znajduje się także moduł nadajnika i odbiornika fal radiowych 2.4Ghz RFM70 i czujnik hall a służący do synchronizacji wyświetlanego obrazu. Do sterowania wyświetlanym aktualnie obrazkiem odpowiedzialny jest zestaw: Stm32 Hy-Mini z dotykowym wyświetlaczem 3.2 i modułem radiowym RFM70. Założenia projektu: Wirująca z dużą prędkością płytka zamontowana na wentylatorze od komputera (dalej zwana wirnik) z diodami LED i odpowiednim ustawieniem świecenia każdej diody, spowoduje powstanie obrazu. W podstawowej konfiguracji urządzenia z pojedynczej diody będzie można uzyskad 8 podstawowych kolorów. Za pomocą modułu radiowego będzie możliwośd przesłania obrazu do wirnika. Oraz za pomocą dotykowego ekranu będzie można rysowad obrazek który w czasie rzeczywistym pokaże się na wirniku. W pamięci układu stm32 będą zapisane 2 statyczne obrazki. Format wyświetlanego obrazu: Ponieważ wyświetlany obraz jest w kształcie koła, dane reprezentowane są w postaci kątowej, dzięki czemu taki sam obraz zajmuje mniej miejsca w pamięci co jest bardzo pożądane gdyż wybrany mikrokontroler posiada tylko 2KB pamięci SRAM. Reprezentacja kątowa polega na podziale koła na 120 części, każda częśd składa się z 16 bajtów, każdy bajt danych reprezentuje dokładnie kolor 2 diod RGB. Występuje tutaj utrata 2 bitów na każdym bajcie, ponieważ do dyspozycji jest 8 kolorów które zajmują 3 bity. Można było oczywiście zaimplementowad to w sposób w którym każde 2 kolejne bajty reprezentują 3 kolory. Lecz jest to rozwiązanie w którym mikrokontroler potrzebuje dużo więcej czasu na separacje kolorów i wysłanie do zewnętrznych rejestrów.

Powstały obraz jest w generowany z przeplotem oznacza to iż wirnik posiada 32 diody to jego rozdzielczośd wynosi 64, dzieje się tak ponieważ oś wirnika jest przesunięta w jedną stronę. Połowa czyli co drugi piksel obrazu generowany jest przykładowo w pozycji 0º (ciemno niebieskie kropki) druga część pikseli generowana jest gdy wirnik znajdzie się w pozycji o 180º większej, w tym wypadku gdy wirnik oznaczony (jasno niebieskimi kropkami na rysunku kąt 168º od położenia pierwotnego) znajdzie się w pozycji 180º uzupełni wyświetlony obraz. Program do generowania obrazu w formacie kątowym: Na potrzeby projektu napisany został program który konwertuje obraz o rozmiarze 64X64 na postad kątową. Program generuje również mapę odwzorowao, mapa odwzorowao jest potrzebna dla przyspieszenia konwersji obrazu rysowanego na panelu dotykowym na format kątowy. Mapa odwzorowao jest to po prostu tablica jednowymiarowa zawierająca w każdym wierszu tablicę 64 elementową, która przechowuje informacje o konfiguracji kolorów diod dla danego położenia, dane położenie kątowe określone jest jako indeks tablicy. Przykład mapy odwzorowania: Indeks tablicy (kąt) Odwzorowania tablica 64 bajtowa 3 12,23,14,25,16,7 Oznacza to iż pierwsza dioda dla kąta wirnika o pozycji 3º, pobiera kolor z piksela grafiki (64x64) o współrzędnych (12,23), Druga dioda pobiera kolor piksela ze współrzędnych (14,25), I tak dalej, dal każdej diody.

Format danych przesyłanych do wirnika Moduł RFM70, jest podłączony do mikrokontrolera za pomocą magistrali SPI, maksymalna ramka danych jaka może byd wysłana w jednym pakiecie wynosi 32 bajty, pomijając nagłówek który jest wysyłany automatycznie przez moduł. W projekcie ramka składa się z 17 bajtów. Pierwszy bajt jest to numer fragmentu obrazu, pozostałe 16 bajtów zawierają gotowe fragmenty obrazu. Odbiornik fal radiowych zawsze ustawiony jest w tryb odbioru z konfiguracją generowania przerwania dla nadchodzących danych. Wyjście przerwania IRQ modułu podłączone jest do wejścia INT2 mikrokontrolera. Obsługa przerwania od nadchodzących danych sprowadza się do jednej linii kodu która ustawia flagę pakiet. SIGNAL(INT2_vect ) pakiet=1; Następnie w głównej pętli programu zapisany jest warunek jeżeli flaga pakiet jest ustawiona to należy rozpocząd procedurę odczytu danych z modułu radiowego. if (pakiet==1) RFM70_receive_packet_abit(); pakiet=0; Schemat podłączenia modułu radiowego do mikrokontrolera:

Czujnik Hall a Zainstalowany czujnik hall a (TLE4905) na wirniku podłączony jest do wejścia INT1 mikrokontrolera, służy on do określenia położenia 0, czyli od którego miejsca ma byd wyświetlany obraz. Czujnik znajduje się na koocu wirnika, do nieruchomej części wiatraka komputerowego przymocowany jest magnes neodymowy w kształcie walca o średnicy 4mm i wysokości 4mm. Poniżej znajduje się schemat połączenia czujnika do mikrokontrolera, oraz rysunek poglądowy usytuowania czujnika i magnesu. Czujnik Hall a Magnes

Opis kodu wirnika i synchronizacji obrazu Częśd 1 wyznaczenie czasu (XTim) potrzebnego na wyświetlanie 1 z 120 fragmentów obrazu. Kod obsługa przerwania od czujnika hall a, funkcja wywoływana w momencie przelotu sensora nad magnesem. ISR(SIG_INTERRUPT1) TCNT0=0; index=0; XTim=XTim_tmp+TCNT1/7680; TCNT1=0; TIMER1_ON; XTim_tmp=0; TCNT0=255-XTim+TCNT0; if (XTim>18) TIMER0_ON; if (XTim>240) TIMER0_OFF; //7680 = preksaler(64) * 120 czesci obrazu Po wywołaniu funkcji następują instrukcje, wyzerowania licznika Timer a 0, ustawienie zmiennej index na 0 odpowiadającej za numer aktualnego wyświetlanego fragmentu obrazu, następnie liczony jest czas co jaki ma się zmieniad fragment obrazu na następny. TCNT0=0; index=0; XTim=XTim_tmp+TCNT1/7680; //7680 = preksaler(64) * 120 czesci obrazu W ostatnim wierszu pojawia się zmienna XTim_tmp która wymaga komentarza. Timer 1 jest 16 bitowy, aby uzyskad dużą dokładnośd czasu podziałów koła, Timer1 działa bez preskalera oznacza to iż Timer1 działa z prędkością 16MHz. Timer1 generuje przerwanie po przepełnieniu licznika czyli gdy TCNT1 > 65535. Timer 1 w obecnej konfiguracji generuje przerwanie co ok 4ms, oczywiście występuje to przerwanie kilkanaście razy na pełen obrót, dlatego każde wygenerowane przerwanie zwiększa wartośd zmiennej XTim_tmp o wartośd stałej full_per_steps. Wartośd stałej full_per_steps jest równa wyrażeniu 65535 / 120 / 64 po zaokrągleniu w dół full_per_steps=8. 65535 maksymalna wartośd licznika Timer a 1, 120 ilośd części koła, 64 preskaler Timer a 0. Koocowo zmienna XTim jest równa XTim_tmp + (wartośd licznika Timer a 0) / 7680. 7680 = (preskaler Timer a 0) 64 * (ilośd części koła )120. Kolejna częśd fragmentu kodu: TCNT1=0; TIMER1_ON; XTim_tmp=0; TCNT0=255-XTim+TCNT0; Zerowanie licznika 0, włączenie Timer a 1, wyzerowanie zmiennej XTim_tmp. Następnie ustawiana jest wartośd licznika (8 bitowego) Timer a 0, odpowiedzialnego za wyświetlanie kolejnych fragmentów obrazu, czyli aby przerwanie było generowane co czas zapisany w zmiennej XTim należy do zmiennej licznika wpisad wyrażenie 255 Xtim, dodatkowo dodana jest obecna

wartośd tego licznika (licznik Timer a 0 został wyzerowany na początku przerwania ) dzięki czemu zostaje zniwelowany błąd czasu spowodowany obliczeniami (dokładniej dzielenie które zajmuje sporo czasu procesora). Ostatni fragment kodu obsługi przerwania od czujnika Hall a zawiera warunek kiedy Timer 0 ma zostad włączony i wyłączony w praktyce jeżeli wirnik kręci się za wolno lub za szybko to należy wyłączyd tworzenie obrazu. if (XTim>18) TIMER0_ON; if (XTim>240) TIMER0_OFF; Częśd 2 opis procedury dokładnego wyświetlania fragmentów obrazu. Kod funkcji obsługi przerwania generowanego co określony czas zapisany w zmiennej XTim, zawierającej czas co jaki należy zmienid wyświetlany fragment obrazu na kolejny. ISR(TIMER0_OVF_vect) TCNT0=255-XTim; RCLK_OFF; RCLK_ON; RCLK_OFF; index++; senddata=1; Po wywołaniu funkcji należy ustawid licznik Timer a 0 tak aby generował następne przerwanie po upływie czasu XTim. Kolejne 3 linie kodu odpowiadają za przesłanie taktu RCLK do wszystkich rejestrów 74HC595, takt ten odpowiedzialny jest na przesłanie danych wcześniej zbuforowanych w rejestrach do ich wyjścia które jest zatrzaskiem, dzięki temu podczas wyświetlania danego fragmentu obrazu, można do tych rejestrów przesład kolejne dane bez obawy że aktualny fragment obrazu ulegnie zmianie. Następnie zwiększana jest wartośd zmiennej index, mówiącej który fragment ma zostad aktualnie wysłany do zewnętrznych rejestrów. Ostatnia linia kody to ustawienie flagi senddata=1. W pętli głównej znajduje się warunek: if (senddata ==1) sendlight(index); senddata =0; Dzięki temu warunkowi jeżeli flaga senddata jest ustawiona to wysyłany jest odpowiedni fragment (index) obrazu do buforów, dzięki takiemu zabiegowi operacja wysłania danych do rejestrów która zajmuje sporo czasu mikrokontrolera, jest wykonywana poza przerwaniem.

Opis algorytmu przetwarzania obrazu rysowanego na dotykowym wyświetlaczu. Program w mikrokontrolerze STM32 oparty jest na darmowym systemie operacyjnym FreeRTOS, dzięki niemu nie trzeba martwid się o wielozadaniowośd operacji, w tym wypadku: odczytu informacji od panelu dotykowego, wysyłania danych do wirnika, przetwarzanie narysowanej grafiki na postad kątową. Każda z wymienionych czynności, stanowi osobny wątek. Obraz rysowany na wyświetlaczy jest zapisywany w zmiennej tablicowej img o rozmiarze 64x64, następnie przeglądana jest tablica odwzorowao, wygenerowana w programie pomocniczym. Każe odwzorowanie posiada współrzędne punktu z którego powinien zostad pobrany kolor ze zmiennej img, dla danego fragmentu kątowego obrazka, gotowe przekształcenie zapisywane jest do tablicy abit. Dane wysyłane są ciągle do wirnika, co 3 ms wysyłana jest kolejna porcja obrazka. Podsumowanie: Projekt stanowił wyzwanie polegające na opracowaniu metody pozwalającej na stabilne wyświetlanie obrazu, dodatkowa trudnośd polegała na występowaniu przerwao od odbiornika fal radiowych, przez co wyświetlany obraz tracił stabilnośd, występowały skoki obrazu. Jednakże udało się ten efekt zniwelowad niestety kosztem transmisji danych, jednakże obecna postad stanowi kompromis pomiędzy stabilnością a prędkością. Wykonanie tego projektu sprawiło mi dużą satysfakcję, dodatkowo efekt koocowy przeszedł moje najśmielsze oczekiwania. W załączniku znajduje się filmik z pracy urządzenia. Bibliografia : Dokumentacja mikrokontrolera ATMEGA 32 Dokumentacja rejestrów 74HC595 Dokumentacja modułu radiowego RFM70 Dokumentacja STM32F103VC Załączniki: Folder [wirnik] zawiera kod programu wirnika wraz z wszystkimi bibliotekami Folder [stm] zawiera kod programu urządzenia nadawczego wraz ze wszystkimi bibliotekami. Folder [konwerter] zawiera program służący do konwersji obrazu na postad kątową oraz do tworzenia mapy odwzorowao.