Witam wszystkich po raz kolejny.
Jako że odwiedził mnie listonosz z długo i niecierpliwie wyczekiwaną żółtą kopertą, to postaram się dzisiaj opisać Wam tutaj pokrótce gadżet, który to był w środku - moduł cyfrowego radia FM zrobiony na układzie TEA5767 firmy NXP. Moduł ten to …. powiedziałbym, że to kompletne radio, choć by wydobyć z niego dźwięk, potrzebne będzie kilka dodatkowych elementów.
Wymiary tego modułu to 11x11x2mm – czyli dosłownie maleństwo, uważajcie, żeby go nie zgubić podczas zabawy z nim.
Ceny za moduł zaczynają się od $0,72 wraz z przesyłką na Aliexpress, na Allegro trzeba zapałacie wraz z przesyłką ok. 12zł, choć można znaleźć i oferty kilkukrotnie droższe - nie wiem, czym różnią się one od tych tańszych.
Ja swój „odbiornik” zakupiłem z Chin i nie było z nim żadnych problemów – „ruszył od pierwszego strzała”.
Dzięki temu maleństwu możemy odbierać fale radiowe w stereo w zakresie od 87,5MHz do 108MHz.
Napięcie zasilania to 2,5V do 5VDC. Pobór prądu po ustawieniu stacji radiowej to ok. 13mA przy zasilaniu modułu z 5V.
Poniżej rysunek z wyprowadzeniami naszego układu.
1 – SDA
2 – SCL
3 – BUS MODE
4 – WRITE/WRITE
5 – VCC
6 – GND
7 – Wyjście audio kanał lewy
8 – Wyjście audio kanał lewy
9 – MPXO
10 – antena
Moduł ten jest sterowany za pomocą komunikacji I2C, więc potrzebny nam będzie jakiś mikroprocesor, by ustawić nasza ulubiona stację. Ponadto wyjście audio jest na tyle słabe, że nie „uciągnie” nawet słuchawek, więc potrzebny będzie wzmacniacz. Ja użyłem małego taniego gotowego wzmacniacza w klasie D opartego o układ PAM8610 - napisałem małego, ale porównując go do modułu radia, to nie można powiedzieć, że jest mały. Potrzebować jeszcze będziemy dwóch rezystorów (ja użyłem 10k, można też dać 4,7k) do podciągnięcia linii komunikacyjnych SDA i SCL do plusa - w zasadzie to wszystko co potrzeba nie licząc źródła zasilania, kilku przewodów i jakiegoś głośniczka.
Poniżej rysunek, jak to ma wyglądać.
BUS MODE zwieramy do masy, by działała komunikacja poprzez I2C.
Jako że moduł jest naprawdę mały, a jego raster nie jest standardowy tylko 2mm, więc trzeba było sobie jakoś poradzić, no i wyszła taka „hybryda” jak na zaprezentowanych zdjęciach poniżej.
Chodzi tu o przetestowanie modułu, a nie o walory estetyczne, więc wybaczcie – zrobiłem to na McaGyver`a i ważne, że działa, następnym razem postaram się bardziej, by prócz uszy i oczy mogły się nacieszyć.
Do sterowania radyjka użyłem zestawu uruchomieniowego ZL2AVR, choć wystarczy tu płytka stykowa i jakiś mikroprocesor, który będzie wysyłał kilka bajtów za pomocą I2C – np. AVR czy PIC lub popularne Arduino.
Ok, wiemy już jak podłączyć nasz moduł, więc przejdźmy do opisu, jak rozkazać radiu „grać” wybraną przez nas częstotliwość.
Musimy wysłać do naszego radia 5 bajtów, a przed tym wysłać jeszcze adres naszego odbiornika radiowego.
Oczywiście z pomocą przychodzi dokumentacja.
Adres naszego radia wedle dokumentacji to: 110 000b
Moduł może działać w dwóch różnych trybach pracy – zapisu i odczytu, co należy podać w adresie.
0 - tryb zapisu
1 - tryb odczytu
Stąd też będziemy używać adresu &B1100 0000 (w zapisie dwójkowym lub &HC0 w zapisie szesnastkowym), gdyż wybieramy tryb zapisu.
Fragment dokumentacji dla opisu adresu:
Dalej należy wysłać 5 bajtów, których opis znajdziemy w dokumentacji.
W pierwszych dwóch bajtach podajemy częstotliwość naszej radiostacji - PLL, jest to 14 bitów.
Fragment dokumentacji dla opisu pierwszych dwóch bajtów dla pracy w trybie zapisu:
PLL możemy wyliczyć ze wzoru:
gdzie RMF to częstotliwość naszej stacji w MHz.
Weźcie pod uwagę że w mianowniku mamy częstotliwość kwarcu, który jest w tym module. Przy użyciu samego układu TEA5767 można zastosować tam inny kwarc, ale trzeba jego wartość wziąć pod uwagę w tym wzorze oraz wziąć go pod uwagę w ustawieniach dla bajtu czwartego i piątego - chodzi o bity XTAL w bajcie czwartym oraz PLLREF w bajcie piątym.
Np. dla częstotliwości stacji 98MHz i kwarcu 32,768kHz, który jest zastosowany w tym module ze wzoru wyjdzie nam 11990,3564453125, z czego jako PLL przyjmujemy część całkowitą tej liczby czyli PLL=11990, co daje nam w zapisie binarnym 10111011010110.
Bajt pierwszy w tym przypadku to: MUTE SM PLL13-PLL8, gdzie bit MUTE ustawiamy na 0 a bit SM też na 0, co daje nam kompletny bajt w formie &B00101110.
Drugi bajt to PLL7-PLL0, czyli &B11010110
Kolejne bajty to ustawienia, których nie będę tutaj opisywał – mamy je opisane w dokumentacji.
Fragment dokumentacji dla opisu kolejnych trzech bajtów dla pracy w trybie zapisu:
Ja wysyłam tutaj &B00010000 jako bajt 3
&B00010000 jako bajt 4
&B00000000 jako bit 5
Czyli by wydobyć dźwięk naszej wybranej stacji radiowej (przykład 98MHz), wysyłamy kolejno:
&B11000000 lub &HC0 – zapis dwójkowy lub szesnastkowy
&B00101110 lub &H2E
&B11010110 lub &HD6
&B00010000 lub &H10
&B00010000 lub &H10
&B00000000 lub &H0
Na początku mojej zabawy wysyłałem do modułu te dane co 100ms - proponuję tego nie robić, gdyż wprowadza to pewne zakłócenia w pracy radia. Powoduje to przerwanie dźwięku na ułamek sekundy - tak jakby na pilocie od TV co chwilę naciskać guzik od wyboru tego samego kanału.
Poniżej kod napisany w Basomie dla ATmega8 do obsługi tego radia. Zajmuje on ok. 25% pamięci, po zrezygnowaniu z wyliczania przez program bajtów, a wpisaniu ich na stałe możemy zejść do 6% pamięci, ale nie wiem, czy uda się to odpalić na ATtiny13 z powodu braku sprzętowego I2C.
Dla mniej wtajemniczonych wyjaśnię może, skąd się wzięła w kodzie poniższa część, bo pisałem o wysłaniu adresu i pięciu bajtów, a widać, że wysyłam tylko adres i trzy bajty.
Jako że ustawienia dla każdej stacji w trzech ostatnich bajtach są identyczne, więc te bajty wpisane w program są na stałe. Pierwsze dwa zmieniają się w zależności od wybranej częstotliwości i żeby tego nie robić samemu - żeby uprościć sobie, to program jest tak napisany, że wystarczy mu wpisać wybraną częstotliwość w zmienną PLL, a ten sam sobie wyliczy pierwsze dwa bajty do wysłania. Chcąc wpisać swoje częstotliwości do programu, wpisujemy częstotliwość w MHz w zmienną PLL, a program sam wyliczy sobie dwa pierwsze bajty.
Przy uruchomieniu tego małego radyjka obyło się bez kłopotów – z głośnika wydobył się dźwięk zaraz po wgraniu programu do procesora i naciśnięciu guzika. Największym problemem w tym wszystkim było tylko polutowanie tej „hybrydy”, ale myślę, że nie będzie to problemem, by z użyciem Google znaleźć bibliotekę np. w Eaglu pod to maleństwo.
Jak widać ze zdjęć - użyłem jako anteny kawałka drutu długości ok. 10cm i jak można usłyszeć na załączonych nagraniach - radio gra dość dobrze
Radio posiada funkcję automatycznego szukania stacji z możliwością ustawienia jej czułości - 3 stopnie czułości. Nie miałem zbytnio czasu, by ją dokładnie przetestować. Myślę, że pomocny byłby tutaj odczyt aktualnej częstotliwości z radia, gdyż podczas automatycznego szukania radio zatrzymywało się na czymś, co uważało za stację radiową, a ja nie byłem w stanie uzyskać informacji, jaka to częstotliwość, przez co błądziłem po omacku w gąszczu rożnego rodzaju szumów i ciszy, gdzie czasem udało się natrafić na stacje, ale nie zająć jej częstotliwości.
Być może ktoś podzieli się tutaj wiedzą na temat odczytu informacji z tego modułu - mi nie udało się uzyskać żadnych informacji z modułu w trybie odczytu, być może robię to niepoprawnie.
W załącznikach dokumentacja do opisywanego modułu radia oraz dwa nagrania dźwięku, jaki to wytwarza to radyjko by można było samemu ocenić czy można się spodziewać czegoś miłego po module za niespełna dolara, czy raczej można się tylko rozczarować, jak to zazwyczaj bywa w przypadku chińskich gadżetów.
Mam nadzieję, że ten opis zachęci Was do zabawy z tym modułem radia i opisywaniu tutaj swoich zmagań z nim i osiągnięć, co pozwoli rozwinąć ten temat i pomóc innym przy poznawaniu tego maleństwa.
Poniżej link do kolejnej części opisującej moduł TEA5767
https://www.elektroda.pl/rtvforum/topic3451947.html#17161950
Jako że odwiedził mnie listonosz z długo i niecierpliwie wyczekiwaną żółtą kopertą, to postaram się dzisiaj opisać Wam tutaj pokrótce gadżet, który to był w środku - moduł cyfrowego radia FM zrobiony na układzie TEA5767 firmy NXP. Moduł ten to …. powiedziałbym, że to kompletne radio, choć by wydobyć z niego dźwięk, potrzebne będzie kilka dodatkowych elementów.
Wymiary tego modułu to 11x11x2mm – czyli dosłownie maleństwo, uważajcie, żeby go nie zgubić podczas zabawy z nim.
Ceny za moduł zaczynają się od $0,72 wraz z przesyłką na Aliexpress, na Allegro trzeba zapałacie wraz z przesyłką ok. 12zł, choć można znaleźć i oferty kilkukrotnie droższe - nie wiem, czym różnią się one od tych tańszych.
Ja swój „odbiornik” zakupiłem z Chin i nie było z nim żadnych problemów – „ruszył od pierwszego strzała”.
Dzięki temu maleństwu możemy odbierać fale radiowe w stereo w zakresie od 87,5MHz do 108MHz.
Napięcie zasilania to 2,5V do 5VDC. Pobór prądu po ustawieniu stacji radiowej to ok. 13mA przy zasilaniu modułu z 5V.
Poniżej rysunek z wyprowadzeniami naszego układu.
1 – SDA
2 – SCL
3 – BUS MODE
4 – WRITE/WRITE
5 – VCC
6 – GND
7 – Wyjście audio kanał lewy
8 – Wyjście audio kanał lewy
9 – MPXO
10 – antena
Moduł ten jest sterowany za pomocą komunikacji I2C, więc potrzebny nam będzie jakiś mikroprocesor, by ustawić nasza ulubiona stację. Ponadto wyjście audio jest na tyle słabe, że nie „uciągnie” nawet słuchawek, więc potrzebny będzie wzmacniacz. Ja użyłem małego taniego gotowego wzmacniacza w klasie D opartego o układ PAM8610 - napisałem małego, ale porównując go do modułu radia, to nie można powiedzieć, że jest mały. Potrzebować jeszcze będziemy dwóch rezystorów (ja użyłem 10k, można też dać 4,7k) do podciągnięcia linii komunikacyjnych SDA i SCL do plusa - w zasadzie to wszystko co potrzeba nie licząc źródła zasilania, kilku przewodów i jakiegoś głośniczka.
Poniżej rysunek, jak to ma wyglądać.
BUS MODE zwieramy do masy, by działała komunikacja poprzez I2C.
Jako że moduł jest naprawdę mały, a jego raster nie jest standardowy tylko 2mm, więc trzeba było sobie jakoś poradzić, no i wyszła taka „hybryda” jak na zaprezentowanych zdjęciach poniżej.
Chodzi tu o przetestowanie modułu, a nie o walory estetyczne, więc wybaczcie – zrobiłem to na McaGyver`a i ważne, że działa, następnym razem postaram się bardziej, by prócz uszy i oczy mogły się nacieszyć.
Do sterowania radyjka użyłem zestawu uruchomieniowego ZL2AVR, choć wystarczy tu płytka stykowa i jakiś mikroprocesor, który będzie wysyłał kilka bajtów za pomocą I2C – np. AVR czy PIC lub popularne Arduino.
Ok, wiemy już jak podłączyć nasz moduł, więc przejdźmy do opisu, jak rozkazać radiu „grać” wybraną przez nas częstotliwość.
Musimy wysłać do naszego radia 5 bajtów, a przed tym wysłać jeszcze adres naszego odbiornika radiowego.
Oczywiście z pomocą przychodzi dokumentacja.
Adres naszego radia wedle dokumentacji to: 110 000b
Moduł może działać w dwóch różnych trybach pracy – zapisu i odczytu, co należy podać w adresie.
0 - tryb zapisu
1 - tryb odczytu
Stąd też będziemy używać adresu &B1100 0000 (w zapisie dwójkowym lub &HC0 w zapisie szesnastkowym), gdyż wybieramy tryb zapisu.
Fragment dokumentacji dla opisu adresu:
Dalej należy wysłać 5 bajtów, których opis znajdziemy w dokumentacji.
W pierwszych dwóch bajtach podajemy częstotliwość naszej radiostacji - PLL, jest to 14 bitów.
Fragment dokumentacji dla opisu pierwszych dwóch bajtów dla pracy w trybie zapisu:
PLL możemy wyliczyć ze wzoru:
gdzie RMF to częstotliwość naszej stacji w MHz.
Weźcie pod uwagę że w mianowniku mamy częstotliwość kwarcu, który jest w tym module. Przy użyciu samego układu TEA5767 można zastosować tam inny kwarc, ale trzeba jego wartość wziąć pod uwagę w tym wzorze oraz wziąć go pod uwagę w ustawieniach dla bajtu czwartego i piątego - chodzi o bity XTAL w bajcie czwartym oraz PLLREF w bajcie piątym.
Np. dla częstotliwości stacji 98MHz i kwarcu 32,768kHz, który jest zastosowany w tym module ze wzoru wyjdzie nam 11990,3564453125, z czego jako PLL przyjmujemy część całkowitą tej liczby czyli PLL=11990, co daje nam w zapisie binarnym 10111011010110.
Bajt pierwszy w tym przypadku to: MUTE SM PLL13-PLL8, gdzie bit MUTE ustawiamy na 0 a bit SM też na 0, co daje nam kompletny bajt w formie &B00101110.
Drugi bajt to PLL7-PLL0, czyli &B11010110
Kolejne bajty to ustawienia, których nie będę tutaj opisywał – mamy je opisane w dokumentacji.
Fragment dokumentacji dla opisu kolejnych trzech bajtów dla pracy w trybie zapisu:
Ja wysyłam tutaj &B00010000 jako bajt 3
&B00010000 jako bajt 4
&B00000000 jako bit 5
Czyli by wydobyć dźwięk naszej wybranej stacji radiowej (przykład 98MHz), wysyłamy kolejno:
&B11000000 lub &HC0 – zapis dwójkowy lub szesnastkowy
&B00101110 lub &H2E
&B11010110 lub &HD6
&B00010000 lub &H10
&B00010000 lub &H10
&B00000000 lub &H0
Na początku mojej zabawy wysyłałem do modułu te dane co 100ms - proponuję tego nie robić, gdyż wprowadza to pewne zakłócenia w pracy radia. Powoduje to przerwanie dźwięku na ułamek sekundy - tak jakby na pilocie od TV co chwilę naciskać guzik od wyboru tego samego kanału.
Poniżej kod napisany w Basomie dla ATmega8 do obsługi tego radia. Zajmuje on ok. 25% pamięci, po zrezygnowaniu z wyliczania przez program bajtów, a wpisaniu ich na stałe możemy zejść do 6% pamięci, ale nie wiem, czy uda się to odpalić na ATtiny13 z powodu braku sprzętowego I2C.
Kod: VB.net
Dla mniej wtajemniczonych wyjaśnię może, skąd się wzięła w kodzie poniższa część, bo pisałem o wysłaniu adresu i pięciu bajtów, a widać, że wysyłam tylko adres i trzy bajty.
Kod: VB.net
Jako że ustawienia dla każdej stacji w trzech ostatnich bajtach są identyczne, więc te bajty wpisane w program są na stałe. Pierwsze dwa zmieniają się w zależności od wybranej częstotliwości i żeby tego nie robić samemu - żeby uprościć sobie, to program jest tak napisany, że wystarczy mu wpisać wybraną częstotliwość w zmienną PLL, a ten sam sobie wyliczy pierwsze dwa bajty do wysłania. Chcąc wpisać swoje częstotliwości do programu, wpisujemy częstotliwość w MHz w zmienną PLL, a program sam wyliczy sobie dwa pierwsze bajty.
Przy uruchomieniu tego małego radyjka obyło się bez kłopotów – z głośnika wydobył się dźwięk zaraz po wgraniu programu do procesora i naciśnięciu guzika. Największym problemem w tym wszystkim było tylko polutowanie tej „hybrydy”, ale myślę, że nie będzie to problemem, by z użyciem Google znaleźć bibliotekę np. w Eaglu pod to maleństwo.
Jak widać ze zdjęć - użyłem jako anteny kawałka drutu długości ok. 10cm i jak można usłyszeć na załączonych nagraniach - radio gra dość dobrze
Radio posiada funkcję automatycznego szukania stacji z możliwością ustawienia jej czułości - 3 stopnie czułości. Nie miałem zbytnio czasu, by ją dokładnie przetestować. Myślę, że pomocny byłby tutaj odczyt aktualnej częstotliwości z radia, gdyż podczas automatycznego szukania radio zatrzymywało się na czymś, co uważało za stację radiową, a ja nie byłem w stanie uzyskać informacji, jaka to częstotliwość, przez co błądziłem po omacku w gąszczu rożnego rodzaju szumów i ciszy, gdzie czasem udało się natrafić na stacje, ale nie zająć jej częstotliwości.
Być może ktoś podzieli się tutaj wiedzą na temat odczytu informacji z tego modułu - mi nie udało się uzyskać żadnych informacji z modułu w trybie odczytu, być może robię to niepoprawnie.
W załącznikach dokumentacja do opisywanego modułu radia oraz dwa nagrania dźwięku, jaki to wytwarza to radyjko by można było samemu ocenić czy można się spodziewać czegoś miłego po module za niespełna dolara, czy raczej można się tylko rozczarować, jak to zazwyczaj bywa w przypadku chińskich gadżetów.
Mam nadzieję, że ten opis zachęci Was do zabawy z tym modułem radia i opisywaniu tutaj swoich zmagań z nim i osiągnięć, co pozwoli rozwinąć ten temat i pomóc innym przy poznawaniu tego maleństwa.
Poniżej link do kolejnej części opisującej moduł TEA5767
https://www.elektroda.pl/rtvforum/topic3451947.html#17161950
Fajne? Ranking DIY
