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



Teraz jest 12 kwi 2026, o 16:49


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 19 cze 2016, o 12:15 
Offline
Użytkownik

Dołączył(a): 01 sie 2015
Posty: 40
Pomógł: 0

Mam dwie Atmegi 8: jedna SMD na nowej płytce (schemat poniżej) zasilana z ładowarki od telefonu +5V, druga DPIP zasilana +5V z ATB-USBASP polutowana na pająka z NRF'em +3,3V ze stabilizatora bez kondensatorów. Oba procki taktowane wewnętzrnym oscylatorem 8MHz

Obrazek

Układ testowy działa w ten sposób: at8 SMD co 1s wysyła komendy "włącz" i "wyłącz" a druga w zależności od odebranej komendy steruje diodą LED.
Biblioteki mam prawdopodobnie z tego forum, nie pamiętam bo to było już jakiś czas temu, wiem jednak że coś musiałem delikatnie przerobić jeśli chodzi o INT0 dla atmegi8- może to tu jest problem.

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


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


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


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


Wszystko niby działa z tym, że czytałem na forach że takie NRF'y w tej tańszej wersji mają zasięg 100 a nawet do 200m na otwartej przestrzeni a w budynkach to nawet przez trzy płyty zbrojone jest zasięg. Moje dzieło daje radę na max 18m na otwartej przestrzeni w słoneczny dzień, biorąc pod uwagę że mieszkam przy lesie z daleka od zabudowań więc nie powinno być problemu z zakłóceniami.

Proszę więc o sugestię w czym tkwi problem tak słabego zasięgu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2016, o 13:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Myślę, że problem jest w tym, że nie masz konwersji napięć. Atmege zasilasz napięciem 5V, a nrf'a 3.3V.
Zobacz jak to rozwiązać:
http://mirekk36.blogspot.co.uk/2015/05/konwerter-poziomow-33v-ttl.html

------------------------ [ Dodano po: 19 minutach ]

Oczywiście NRF24L01 akceptuje 5V i wiele osób twierdzi, że dodatkowa konwersja napięć jak wyżej, czy użycie jakiegoś bufora jest zbędne. Ja bym jednak spróbował użyć konwersji napięć lub zasilić Atmege8 również napięciem 3.3V i przetestował.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2016, o 13:29 
Offline
Użytkownik

Dołączył(a): 01 sie 2015
Posty: 40
Pomógł: 0

Jeszcze przed projektowaniem płytki sprawdziłem pdf dla NRF24L01 i znalazłem informację że moduł toleruje napięcia wejściowe do +5.25V więc chcąc zminiaturyzować płytkę nie zastosowałem konwersji napięć.

Obrazek

Chyba mam atmegi z napięciem zasilania 5v więc chyba się nie da spróbować...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2016, o 18:46 
Offline
Użytkownik

Dołączył(a): 01 sie 2015
Posty: 40
Pomógł: 0

Zmieniłem kanał na 1. Myśląc o utracie ramek zmniejszyłem odstępy czasowe pomiędzy wysyłanymi komendami z 1s na 10ms- taka moja teoria że jak wyśle więcej ramek w tym samym czasie to i więcej odbierze :) W rezultacie zasięg na otwartej przestrzeni zwiększył się myślę trzykrotnie, przez jedną ścianę może dwukrotnie. Sprawdzałem tak trochę "na oko" idąc z prockiem zasilanym z laptopa i patrząc czy dioda się miga w rytm wysyłanych komend.
Cały projekt miał być przeznaczony do prostego sterowania oświetleniem ON/OFF więc mogę nawet 100tys razy na sek. wysyłać komendę włącz/wyłącz ale najważniejsze żeby ta komenda dotarła :p I tutaj moje pytanie, skoro wiem że z zasięgiem będzie ciężko to jak mogę zrobić taką obsługę auto-ack informującą procek że ramka na pewno poprawnie została odebrana przez układ wykonawczy? Kolejna sprawa to czy mi się tak tylko wydaje czy zasięg modułów jest zależny od ustawienia kierunku anten PCB względem siebie i wysokości na jakich się znajdują?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2016, o 19:31 
Offline
Użytkownik

Dołączył(a): 01 sie 2015
Posty: 40
Pomógł: 0

A można prosić więcej informacji o tym przerwaniu? To będzie któraś z tych funkcji z biblioteki:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Zakładając że układ wykonawczy będzie zamontowany w obudowie lampy pod sufitem to na jakiej wysokości najlepiej zamontować drugi moduł? Jest jakaś zasada np: nadajnik wyżej a odbiornik niżej?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2016, o 20:04 
Offline
Użytkownik

Dołączył(a): 30 paź 2014
Posty: 92
Lokalizacja: Mikołów
Pomógł: 1

Ja zakupiłem jeden NRF24L01 z antenką do testów i podłączyłem go do atmegi która odbierała z dwóch nadajników nie pamiętam jaki był zasięg dokładnie ale dużo się poprawił przez dwie ściany bez problemu bez gubienia pakietów ,nawet gdy odbiornik był w domu na 2-gim piętrze a z nadajnikiem poszedłem na podwórko to w obrębie całego podwórka działało bez gubienia pakietów .a wcześniej gdy komunikowałem na modułach z antenką na PCB to miałem problem z komunikacją przez jedną ścianę ,i jeszcze jedna sugestia lepiej jest testować przesyłając jakiś text a nie patrząc czy dioda miga przy odbiorze bo to czasem kłamie dałem się tak podczas testów nabrać dioda migała cały dzień a żaden pakiet nie dotarł takie moje małe doświadczenia.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2016, o 20:37 
Offline
Użytkownik

Dołączył(a): 10 lip 2015
Posty: 334
Pomógł: 32

Zmień "RF_PWR_18dB " w funkcji inicjalizacyjnej na "RF_PWR_0dB". Dodatkowo wstaw kondensatory i rezystor jak tu: topic11377-90.html#p149703 jeszcze mnie to nie zawiodło.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2016, o 23:04 
Offline
Użytkownik

Dołączył(a): 01 sie 2015
Posty: 40
Pomógł: 0

Znalazłem u siebie to przerwanie i dodałem w nim swoją flagę SEND_flag:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


Do modułów przylutowałem kon. 100nF i 1uF w obudowach SMD gdyż takie miałem, przylutowałem też rezystory 10K podciągające CSN.
Zmieniłem w funkcji init NRF'a RF_PWR_0dB.
Efekt jest dla mnie zadowalający, zasięg się poprawił. Nie jestem do końca pewny czy te moje sprawdzanie flagi w pętli głównej jest ok i czy spełnia swoje zadanie-wysyłanie ciągle tej samej komendy do puki układ wykonawczy poprawnie ją odbierze. Proszę więc o komentarz.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 cze 2016, o 00:25 
Offline
Użytkownik

Dołączył(a): 01 sie 2015
Posty: 40
Pomógł: 0

Przetestowałem wstępnie sprawdzanie flagi poprawnego wysłania danych i chyba dobrze działa bo zatrzymuje program dopiero gdy układ wykonawczy nie odbierze ramki bo np dla testów jest odłączony od zasilania.
Mam jeszcze pytanie, czy użycie tych modułów determinuje konieczność używania takich samych częstotliwości taktowania wszystkich procesorów komunikujących się?
Proszę również o opinię czy da się wykorzystać przerwanie INT0 zawarte w bibliotekach do wybudzania procka ze stanu uśpienia po nadejściu ramki danych?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lip 2016, o 12:26 
Offline
Użytkownik

Dołączył(a): 01 sie 2015
Posty: 40
Pomógł: 0

Powracam do tematu ponieważ mam pytanie, czy biblioteka dla NRF24L01, którą przedstawiłem w powyższych postach, daje mi możliwość komunikacji z wieloma takimi urządzeniami?
Potrzebne mi to będzie do bezprzewodowego sterowania urządzeniami w domu + ewentualne czujniki np. temperatury. Założeniem jest min. 10 układów wykonawczych/czujników (NRF+atmega8) oraz jedna centralka(NRF+atmega32+ATNEL WIFI232). Jak na razie jedna centralka i jeden układ wykonawczy pracują bez problemu :)

Znalazłem w internetach bibliotekę http://www.insidegadgets.com/2013/06/09/nrf24-multi-network-allowing-for-255-addresses/ pozwalającą na komunikację z 255 adresami ale niestety od dwóch dni nie mogę sobie poradzić aby Eclipse mi ją poprawnie skompilował a w dodatku nie zauważyłem tam obsługi przerwania do np. wybudzenia procka gdy nadejdzie jakaś ramka.



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: 10 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO