Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 18 cze 2018, o 16:14


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 1 ] 
Autor Wiadomość
PostNapisane: 13 mar 2018, o 14:43 
Offline
Użytkownik

Dołączył(a): 13 sty 2016
Posty: 206
Pomógł: 6

Jednymi z częstszych urządzeń budowanych przez elektroników są różnego rodzaju sterowniki oświetlenia, a to przez podczerwień, to WiFi lub też bluetooth. Co mnie zastanawiało w tych projektach? Że bardzo często są one oparte na dużych mikrokontrolerach nie jednokrotnie większość ich zasobów jest marnowana. Chciałem sprawdzić czy można pewne funkcjonalności uzyskać stosując "barci mniejszych" z rodziny AVR? No i tak, udało się. Prezentowany projekcik pozwala na sterowanie za pomocą zarówno przez moduł Bluetooth, podczerwień, jak i klawisz. Co więcej zawiera jedyne 922B pamięci flash i
20B ram.
Funkcjonalnośći:
> Sterowanie dwoma wyjściami z pilota RC5
> Możliwość przypisania dowolnego klawisza do dowolnego kanału
> Sterowanie za pomocą klawisza bistabilnego
> Sterowanie za pomocą aplikacji napisanej(czy raczej ułożonej) pod Android

Tutaj przedstawię pliki programu napisanego dla AtTiny13 dla chcących na szybko przetestować w załączonym folderze znajduje się też program dla AtMegi32

Urządzenie zostało przetestowane na małej płytce PCB, dawcą zasilania, sygnału ze switcha oraz IR jest płytka ATB1.05
Obrazek
Schemat poglądowy dla wersji AtTiny13 dla AtMegi rozkład pinów jest opisany w pliku main.c
Obrazek

Przy pisaniu kodu chciałem jak najwięcej korzystać z dobrodziejstw C w sensie to co Mirek ciągle próbuje nam pokazać, czyli tam gdzie trzeba zastosować struktury, zaś pętla main była czysta i przejrzysta ;) myślę że to mi się udało. Main to trzy zdarzenia i reset watchdoga.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


za obsługę klawisza odpowiada zdarzenie TIMER_EVENT()

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Podczerwień to zdarzenie TINY_IR_EVENT() z biblioteki którą już tutaj pokazywałem

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

plik.h

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


soft uart to ciut uszczuplona biblioteka z tej strony https://github.com/lpodkalicki/attiny13-software-uart-library/blob/master/uart.c

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


soft.h
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Krótko o działaniu. Program po uruchomieniu działa na domyślnych klawiszach pilota o numerach 1 i 2 każde wciśnięcie na przemian zaświeca i gasi diodę przypisaną do tego klawisza. Switch działa w ten sposób że wciśnięcie i przytrzymanie go włącza kolejno diody, kiedy obie diody są zaświecone kliknięcie switcha wygasza je. Aby zmienić kod klawiszy pilota należy posłużyć się aplikacją, o tym później. Pętla główna wykonuje się bez przerwowo sprawdza można powiedzieć że z nudów uspokaja watchdoga ;) Funkcje zdarzeniowe są uruchamiane kiedy:
> TINY_IR_EVENT(); odbierze poprawnie kod z pilota
> SOFT_RX_EVENT(&g_znak); kiedy na pinie RX pojawi się stan niski(ten pin jest non stop sprawdzany), dokona się odbiór znaku i wywołanie funkcji zarejestrowanej
>TIMER_EVENT(); kiedy zmienna ms_licznik jest większa lub równa 10 dopiero wtedy sprawdzany jest stan klawisza

APLIKACJA
Aplikację zbudowałem w kocim appinventorze, niestety nie jest ona pozbawiona wad a to ze względu że pewnych rzeczy chyba w tych puzzlach nieda się zrobić(albo ja nie mam do tego cierpliwości). Nie mniej jednak działa. Po uruchomieniu należy wybrać z listy (sparowanych oczywiście)urządzenie które ma współpracować z naszą Apką, adres MAC zostanie wyświetlony na górze ekranu i włączone zostaną buttony L1 i L2 które sterują wyjściami. Przytrzymanie buttona L1 wyświetla zachętę do wprowadzenia nowego klawisza z pilota RC5 dla tego wyjścia, tak samo jest z Buttonem L2.

MODUŁ BT
Ja w swoim projekcie użyłem modułu XM15B sądzę że z równierz zadziała z HC-05 trzeba jedynie pamiętać o zmianie baudrate dla UART tych modułów a robi się to przez wejście w polecenia AT dokładnie AT+UART=115200,0,0 hasło i nazwę modułu ustalamy wg swojego upodobania.


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 1 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO