Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Bonjour, To jest moja druga "Instrukcja". Ponieważ lubię robić mało przydatne rzeczy, oto mój ostatni projekt:
To radio FM z tekstem radiowym z podstawą ładującą, które można monitorować przez Bluetooth i aplikację na Androida
Dlatego przedstawię wam część Arduino, część Radio Text, a następnie część wynalazcy aplikacji MIT (jest to jedyny sposób, w jaki jestem wystarczająco wykwalifikowany, aby zbudować i aplikację na Androida)
Przy napięciu zasilania 10;8 V z zasilaniem AC i 9,6 z akumulatorem maksymalna moc wynosi 2x 1,5/1,25 W RMS, co jest powszechnie wystarczające
Moc RMS (średnia kwadratowa) to rzeczywista moc, a nie inne duże liczby, które są sprzedawane jako waty muzyczne, moc szczytowa lub cokolwiek innego)
Wydaje mi się, że w niektórych sklepach 1,5 W RMS może być sprzedawane jako 8 W !!!!!!
Najpierw potrzebne składniki:
Zarząd Główny:
1x Arduino Nano
1x moduł radiowy FM SI4703 firmy Sparkfun lub odpowiednik (5 V zasilany i 3,3 V I2C z 3-biegunowym gniazdem Jack, który może być używany jako antena)
1x moduł Bluetooth HC-06 (uwaga nowa wersja oprogramowania 3.0 ma zupełnie inny zestaw komend (umieściłem kilka uwag w kodzie).
1x 4-kanałowy przesuwnik poziomu 3,3 5 V
1x konwerter MC7805 5 v DC;
1x kondensator 2200 µF 25 V
2x 1N5404 3A diody
2 tranzystory 2N2222
Rezystor 1x1Kohm
1x rezystor 47 Ohm
Rezystory 2x 3,3 KOhm (do podciągania magistrali I2C)
Rezystory 3x 330 Ohm (dla diod)
Rezystory 2x 6,8 kΩ
1x rezystor 3,9 KOhm
Przedni panel
1x szyna I2C LCD 20X4
Rezystory 10x 680 Ohm
1x czerwona dioda LED (nie miałam już zielonej!!) dla zasilacza
1x żółta dioda LED dla trybu baterii;
1x niebieska dioda LED do połączenia BT
4x (ON)-OFF-(ON) przełączniki (jak do elektrycznego okna samochodu)
2x przyciski
1x włącznik/wyłącznik
Inne komponenty do radia:
2x 100 W 10 CM 8 Ohm HP
1x 1m wysuwana antena (około 75 cm to dobra długość dla FM w Europie i USA)
1x wtyk telefoniczny, którego użyłem do wykonania styków do bazy ładującej
1x dioda 1N5404 3 Amp (na styku akumulatora, aby uniknąć dymu w przypadku bałaganu z uziemieniem lub stykiem 12V)
1x wzmacniacz mocy 2X20 watów (każdy wzmacniacz stereofoniczny będzie pasował, o ile ma napięcie 12V) oparty na TDA2020 kupionym za 4 euro
1x złącze baterii 8XAA (aby mieć min 9.6V)
Niektóre sklejki 10 mm i 4 mm na pudełko
Baza ładująca:
Zasilanie 1x12 V 3Amp
1x mały 3-cyfrowy woltomierz/3 przewody
3 styki (wykonane z wtyczki telefonicznej)
1x 1N5404 dioda 3 Amp (na styku 12V)
2 przełączniki dźwigniowe (do zasilania AC, gdy radio jest na podstawie ładującej)
1x włącznik/wyłącznik (aby w razie potrzeby wyłączyć bazę ładującą)
Niektóre sklejki 10 mm i 4 mm na podstawę
Razem łącznie ze sklejką to nie więcej niż 70€
Krok 1: Część radiowa 4703
Najpierw modyfikacja:
Moduł ma używać kabla słuchawkowego jako anteny, w moim projekcie nie jest to przydatne, więc najpierw będziemy musieli dokonać małej modyfikacji w celu podłączenia i anteny zewnętrznej
W tym module 3-biegunowe uziemienie jack nie jest połączone bezpośrednio z ziemią, ale poprzez indukcyjność (w celu zatrzymania częstotliwości FM) i kondensator do podłączenia częstotliwości FM do wejścia antenowego SI4703.
Najlepiej więc podłączyć antenę bezpośrednio do bolca uziemienia gniazda i przylutować dwa kable do wyjścia audio
Aby uniknąć jakichkolwiek szumów w dźwięku (zwłaszcza z Bluetooth), umieściłem moduł FM w małym plastikowym pudełku ekranowanym taśmą miedzianą podłączoną do masy
Protokół RDS/Radio Text:
Po pierwsze, pragnę podziękować Nathanowi Seidle, ponieważ w pełni zainspirował mnie jego program „TEST_FM” z czerwca 2011
I, zgodnie z umową, z radością zapłacę mu piwo, jeśli któregoś dnia zgubi się w mojej małej wiosce w głębi Bretanii!!
Dużo korzystałem z jego programu, ponieważ nie chciałem korzystać z istniejących bibliotek, które są trochę za duże jak na ubogą przestrzeń pamięci Nano, a także dlatego, że zawsze lepiej jest zagłębić się w możliwości komponentu, zanurzając się bezpośrednio w rejestry
Główna modyfikacja, którą wprowadziłem, dotyczy odpytywania RDS
Skorzystałem z możliwości wywołania przerwania na pinie GPI02 ustawiając bit RDSIEN i wartość GPIO2 na 01
Spowoduje to przerwanie na pinie 3 nano
Zapobiega to odpytywaniu rejestru RDS, ponieważ uruchomi program Radio Text tylko wtedy, gdy 4-znakowa grupa tekstu radiowego jest dostępna bez błędów (tryb niepełny)
Aby mieć pełny tekst radiowy, musimy zebrać maksymalnie 16 bloków po 4 znaki (rejestry RDSC/RDSB z grupy 2A lub 2B). W programie umieściłem dużo informacji wyjaśniających, co zrobiłem.
Oto opis rejestrów danych dla tekstu radiowego (RDSSA/RDSC)
w rejestrze RDSSB (blok 2)
Wartość 4 w A3/0 wskazuje (grupa tekstowa)
B0 wskazuje tekst A (64 znaki) lub B (32 znaki) (w nigdy nie widziałem tekstu B w użyciu ………..)
PT0 do PT4 to indeks grupy 4 znaków (0 do 15)
PT5 powinien być używany jako wskaźnik tekstu A/B (co oznacza "to jest nowy tekst"), ale nie zawsze jest używany w ten sposób w zależności od stacji radiowej, więc nie można go używać w programie tekstowym radia.
4 znaki tekstu radiowego znajdują się w RDSSC i RDSSD (blok 3 i 4)
Radzę zapoznać się z bardzo ciekawym dokumentem dotyczącym protokołu RDS w SI4703 =>AN243 z Silicon labs
Zresetowałem również bit SKMODE w rejestrze POWERCFG (patrz arkusz danych SI4703), aby pozostać w zakresie częstotliwości podczas wyszukiwania kanałów
Czytanie datashhet bardzo pomoże w zrozumieniu kodu i wszystkich obsługi rejestrów
Krok 2: Baza ładująca
Niewiele rzeczy do dodania
Zdjęcia mogą mówić lepiej.
Właśnie dodałem diodę 1N5404 na styku 12 V
1) aby uniknąć problemów w przypadku, gdy kontakt baterii dotyka styku 12 V podczas umieszczania radia na podstawie (ale nigdy się to nie zdarzyło)
2) obniżyć poziom napięcia do 10,8 V (jest też dioda na płycie głównej), ponieważ MC7805 może się nieco nagrzać przy przejściu z 12 V na 5 V przy prądzie 1 A (przykręciłem kawałek żelaza jako radiator 7805)
Dodałem mały woltomierz 3 x 7 segmentów do wskazania obciążenia akumulatora
To urządzenie posiada 3 przewody w celu zmniejszenia zużycia (powyżej 1 Mega Ohm na przewodzie pomiarowym), co pozwala utrzymać radio na zasilanej bazie przez długi czas bez rozładowywania baterii
2 przełączniki dźwigniowe służą do wyłączania zasilania AC, gdy radio jest poza bazą (aby uniknąć napięcia 12V na stykach)
Pudełko jest wykonane ze sklejki (przed malowaniem na obrazku) Pozwolę sobie wyobrazić jak zrobić piękne pudełeczko bo moje nie jest zbyt seksowne!!!!!
Byłem bardzo zdziwiony, ale stacja ładująca działa dobrze i nigdy nie paliłem podczas lądowania na niej radia………….
Krok 3: Pudełko
Myślę, że każdy powinien robić to, co chce, podążając za swoimi zdolnościami artystycznymi!!!!!
W każdym razie pokrótce wyjaśnię, jak mogłem zbudować coś, co strasznie wygląda jak skrzynka z narzędziami
Przód i tył wycięte w sklejce 4 mm 15x45 cm
góra i dół to sklejka 10 mm 15x45 cm
Boki i 2 przegrody wewnętrzne (2 2 miejsca na HP i komponenty w środkowej) to sklejka 10 mm 13x13 cm
Na przednim panelu zrobiłem otwory 2x10 cm na HP i kwadratowy otwór 14x14 do wstawienia szkła organicznego 15x15 2mm, które pomalowałem na czarno (dodałem po namalowaniu przezroczystą nadrukowaną naklejkę, ale nie jest to tak czytelne ze względu na czerń kolor z tyłu)
Na górze zrobiłem 2 otwory:
jeden dla potencjometru wzmacniacza mocy (do regulacji poziomu w razie potrzeby), a także jako moc cieplna
inny dla anteny
na tylnym panelu zrobiłem 2 otwory:
Jeden do wtyczki USB (bezpośrednio podłącz do nano)
Jeden 16mm do chłodzenia powietrzem (14mm otwór potencjometru wzmacniacza mocy będący górnym wyjściem chłodzenia powietrzem)
uchwyt wykonany z miedzianej rurki 12mm pomalowanej na czarno
Wszystkie elementy z powyższego zdjęcia znajdują się w środkowej komorze (później musiałem włożyć baterie do lewej komory HP, ponieważ znajdowała się za blisko modułu HC06 BT w głównej komorze)
Otóż to
Oczywiście musi być coś bardziej seksownego!!!!!
Krok 4: Część Arduino (schematy i kod)
Starałem się umieścić jak najwięcej informacji w komentarzach do programu.
Więcej informacji
Procedura Decode_TXT jest używana zarówno przez procedurę Bluetooth, jak i procedurę przełączania
niektóre słowa kluczowe są używane przez obie procedury
v+ => aby zwiększyć głośność
v- => do obniżenia
f+ => aby zwiększyć częstotliwość kroku 100 Khz
f- =>zmniejszyć
su+=> wyszukaj
sd-=> szukaj w dół
prefu=> zwiększ wstępnie wybrany numer kanału
prefd=> zmniejsz
cześć => wysłane przez aplikację na androida podczas połączenia bluetooth, kod odsyła status radia;
bye => wysyłane przez aplikację po rozłączeniu BT
pow => wysyłane przez radio do aplikacji w trybie zasilania (na stacji ładującej)
bat => w trybie bateryjnym
lb => wysyłane, gdy poziom naładowania baterii jest zbyt niski (około 8 V)
Komunikacja Bluetooth jest zabezpieczona pętlą kontrolną:
Za każdym razem, gdy radio FM wysyła informację, uruchamiany jest licznik czasu oczekiwania na odpowiedź „ok” przez aplikację na Androida
w przypadku 3 błędów (przeterminowany timer) łącze BT zostaje przerwane przez Radio. (to odcina również link po stronie Androida)
Z drugiej strony
Gdy aplikacja wyśle polecenie, czeka na odpowiedź z radia, aby wysłać kolejne polecenie.
Procedura get_RT jest uruchamiana po ustawieniu flagi RDS (po przerwaniu na pinie 3)
oto kod (link do GITHUB)
Schematy:
Płyta główna radia FM (w rzeczywistości SI4703 jest osobno w ekranowanym pudełku):
Panel przedni:
Baza ładująca:
Linki do plików Fritzing:
Płyta główna FR RADIO
Przedni panel
Baza ładująca
Krok 5: Aplikacja na Androida
Wykonane z wynalazcą APP
oto linki do GitHub
Radio FM aia
APK na Androida
Aplikacja wykorzystuje 2 zegary:
1) dla komunikacji bluetooth (100ms)
2) do migania diody baterii, gdy obciążenie wynosi około 8 v (1000 ms)
Po raz pierwszy będziesz musiał sparować moduł HC06 ze smartfonem lub tabletem.
Używam TinyDB do zapisywania adresu BT modułu HC06, przy pierwszym połączeniu przycisk adresu BT zostanie włączony i będziesz musiał wybrać HC06 z listy (z mojej strony zmieniłem nazwę modułu HC06 w FM_RADIO)
W aplikacji nie zawsze używałem procentu dla rozmiaru elementu, więc w zależności od smartfona mogą wystąpić problemy z wyświetlaniem
Mój to Galaxy Note 3, więc raczej duży ekran……..
Dobrze więc spędziłem czas odkrywając ten mały, ale bardzo wydajny SI4703.
Pisanie tych instrukcji sprawiło mi dużo przyjemności
Do mojego następnego projektu
Do widzenia!!!