Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Nietypowy mówiący termometr

Simon79 15 Apr 2017 14:23 11088 25
Optex
  • Nietypowy mówiący termometrNietypowy mówiący termometr

    Opisany poniżej "nietypowy mówiący termometr" dla większości osób może się wydać zupełnie niepotrzebnym, zbędnym gadżetem. Jednak dla osób starszych, słabowidzących itd. może okazać się pomocny. Typowe, tanie termometry, nie zawsze posiadają duży i czytelny wyświetlacz. Właśnie z taką myślą powstał termometr, który mówi.

    Założeniem była prostota układu. Stąd zastosowanie DS18B20, ATMEGA8 (ATMEGA88) oraz ciekawego modułu do odtwarzania dźwięku z karty microSD. Wybór padł na DFPlayer Mini, nie tylko za śmiesznie niską cenę, poniżej $2.
    Nietypowy mówiący termometr

    Układ zasilany jest napięciem stabilizowanym 5V pochodzącym z zasilacza wtyczkowego, dlatego na płytce brak stabilizatora, zastosowano tylko dodatkowe kondensatory filtrujące. Do pomiaru temperatury użyto czujnika temperatury DS18B20. Z założenia prezentowany układ miał być termometrem pokojowym, ale ostatecznie zakres temperatury wynosi -55°C do +99,9°C (ograniczenie górnego zakresu wynika z prostoty programu). Wartość odczytanej temperatury zostaje w odpowiedni sposób przetworzona na dziesiątki, jednostki oraz dziesiętne części stopni Celsjusza. Dla poszczególnych liczb i cyfr przyporządkowany jest plik mp3 (może być też wave) z odpowiednim numerem – nazwą tego pliku. Atmega przesyła do modułu ramki z instrukcjami, który plik ma być odczytany, co ostatecznie daje wartość temperatury z czujnika. Oczywiście dodatkowo mówiony jest znak "minus" dla temperatur ujemnych, słowo "przecinek" oraz informacja o "brak czujnika" lub "temperatura poza zakresem termometru" dla temperatur 100°C i wyższych. Celowo zrezygnowałem z mówienia "stopni Celsjusza", gdyż oczywiste jest, że nie w Kelwinach :D . Czujnik temperatury można wlutować bezpośrednio na płytkę lub na przewodzie. Jeśli będzie umieszczony na zewnątrz powinien być dobrze zabezpieczony przed warunkami atmosferycznymi.

    Aby skłonić termometr do powiedzenia temperatury, należy podać na chwilę stan wysoki na PORTC.5 (gniazdo "wejście") np. za pomocą przycisku, lub tak jak to jest w prezentowanym modelu, z wykorzystaniem popularnego czujnika ruchu typu HC-SR501. Właśnie wymiary płytki termometru odpowiadają wymiarom płytce tego czujnika. Potencjometrami należy ustawić minimalną czułość oraz czas trwania sygnału na wyjściu. W przeciwnym wypadku termometr może zostać uaktywniony w sposób przypadkowy a nie poprzez zbliżenie ręki blisko czujnika. Może okazać się konieczne ograniczenie pola widzenia czujnika poprzez jego częściowe zasłonięcie. Po podłączeniu zasilania do termometru wysyłane są instrukcję "startowe" inicjujące moduł do pracy, stąd termometr gotowy jest do działania po kilku sekundach od włączenia.

    Według noty katalogowej modułu DFplayer rezystor 1k ta wejściu Rx jest potrzebny, ze względu na szumy i zakłócenia w wygłaszaniu komunikatów przy zasilaniu 5V, co zresztą jest prawdą. Zarówno czujnik temperatury jak i moduł mogą być zasilane napięciem 3,3V, ale tego nie sprawdzałem.
    Moduł DFplayer mini posiada wewnętrzny wzmacniacz mocy, który w połączeniu z badziewnym głośniczkiem 8Ω i 0,5W z komputera, wydawał niezbyt głośne i kiepskie dźwięki, natomiast z małym głośnikiem od kina domowego dźwięk był przyzwoity i nawet zbyt głośny.

    Dla osób które chciałyby wykonać taki termometr, klika informacji. Zmiana fusebitów dla Atmega8 w stosunku do ustawień fabrycznych polega na zmianie wewnętrznego kwarcu z 1MHz na wewnętrzny 8MHz (low: 0xE4, high: 0xD9). Dla Atmega88 należy pozostawić wewnętrzny kwarc 8MHz ale wyłączyć podział przez 8 (low: 0xE2, high: 0xDF, extended: F9).
    Na płytce ze względu na brak miejsca nie ma gniazda programowania, procesor należy zaprogramować przed wlutowaniem. Gniazdo "wejście" należy wlutować od strony druku, jeśli będzie użyty czujnik ruchu do załączenia termometru. Szczegóły na zdjęciach.

    Nietypowy mówiący termometr Nietypowy mówiący termometr

    Komunikaty głosowe zostały przygotowane w darmowym programie BALABOLKA. Jednak sam program nie zawiera głosów. Jedynym jest systemowy angielski Microsoftu. Należy je zainstalować dodatkowo np. głosy IVONA : EWA, JACEK, MAJA, JAN (wszystkie płatne) czy głos PAULINA (nie mam windows 10 ale chyba jest w nim zainstalowany ten głos). Ponieważ wiąże się to z postanowieniami licencyjnymi, plików dźwiękowych nie udostępniam, należy je wykonać we własnym zakresie. Jest też syntezator mowy polskiej dla środowiska LINUX o nazwie MILENA, pojawiła się też wersja dla windows.
    W ostateczności można nagrać swój własny głos np. w darmowym AUDACITY i mieć swój własny "spersonalizowany" termometr.

    Pliki dźwiękowe powinny posiadać nazwy i treść tak jak poniżej:
    nazwa pliku mp3 / treść komunikatu
    0001 jeden
    0002 dwa
    itd.
    0019 dziewiętnaście
    kolejne pliki to dziesiątki od 20-90
    0020 dwadzieścia
    0021 trzydzieści
    0022 czterdzieści
    itd
    0027 dziewięćdziesiąt
    oraz
    0028 zero
    0029 przecinek
    0030 minus
    0031 brak czujnika
    0032 temperatura poza zakresem termometru

    Pliki najlepiej przenosić na kartę (bezpośrednio bez żadnych podkatalogów) pojedynczo po kolei od 0001 do 0032. Karta sformatowana w FAT32. Wówczas na pewno nie będzie problemów z odtwarzaniem.





    W załączniku znajdują się :
    -plik hex z programem dla Atmega8
    -plik hex z programem dla Atmega88
    -pliki eagle: .sch i .brd
    Attachments:

    Cool? Ranking DIY
    About Author
    Simon79
    Level 20  
    Offline 
    Simon79 wrote 380 posts with rating 299, helped 28 times. Been with us since 2007 year.
  • Optex
  • #4
    krzysiekdg
    Level 13  
    Dodaj wymowe stopnia celcjusza. Wchodzacy goscie do domu oszaleja slyszac jaka jest temperatura :)
  • #5
    M. S.
    Level 34  
    Popełniłem taki termometr do auta. Jedna Mega8 mierzy temperaturę i gada PWM'em odczytując w czasie rzeczywistym kartę SD. Nie trzeba do tego modułów wspomagających. Oprogramowanie w Bascomie ze wstawką asemblerową do obsługi karty. Zajętość pamięci 62%.
  • Optex
  • #6
    japko1024
    Level 18  
    Moi koledzy korzystają z jakiegoś darmowego syntezatora mowy z językiem polskim - użyli go w programie na Raspberry Pi (oczywiście z Linuxem) czytającym suchary ze strony internetowej :D. Niestety nie pamiętam, jak się nazywa, ale w każdym razie coś takiego istnieje.
  • #7
    Simon79
    Level 20  
    M. S. wrote:
    Popełniłem taki termometr do auta. Jedna Mega8 mierzy temperaturę i gada PWM'em odczytując w czasie rzeczywistym kartę SD. Nie trzeba do tego modułów wspomagających. Oprogramowanie w Bascomie ze wstawką asemblerową do obsługi karty. Zajętość pamięci 62%.

    Jeśli dysponujesz odpowiednią wiedzą, to owszem, PWM może gadać. Ja, póki co , używam modułu :)
  • #8
    SylwekK
    Level 32  
    Bardzo ciekawy układ. Czy przypadkiem użyty moduł nie potrzebuje plików o mało popularnych parametrach? Ostatnio do mojego nowego projektu też szukałem czegoś gadającego i ten moduł właśnie z powodu nietypowych plików wejściowych odrzuciłem, a kupiłem równie mały na GPD2846A za 0.79$ akceptujący popularne mp3.
  • #11
    kowal011
    Level 21  
    Zmieniłbym "przecinek" na "i".
  • #12
    Simon79
    Level 20  
    W pierwotnej wersji miałem "i" zamiast "przecinek", ale zasugerowałem się pewnym rozwiązaniem komercyjnym termometru, gdzie mówił "przecinek".
    Chętnie zobaczyłbym program (najlepiej w Bascom), w którym gada się przez pwm. Do tej pory pwm używałem do zmiany jasności świecenia led i jako przetwornik c/a.
  • #13
    george2002

    Level 21  
    Simon79 wrote:
    W pierwotnej wersji miałem "i" zamiast "przecinek", ale zasugerowałem się pewnym rozwiązaniem komercyjnym termometru, gdzie mówił "przecinek".
    Chętnie zobaczyłbym program (najlepiej w Bascom), w którym gada się przez pwm. Do tej pory pwm używałem do zmiany jasności świecenia led i jako przetwornik c/a.


    Proszę bardzo tak na szybko chociaż gdzieś widziałem wyciągane większe jakości dźwięku na Atmega8 z SD w Bascomie ale nie pamiętam czy to było na Polskim czy Zagranicznym gdzieś forum :) ten jest też ciekawie zrobiony bo można w czasie odtwarzania dźwięków normalnie wykonywać inne czynności :)

    Bascom SD wav player
  • #15
    PEPE64
    Level 16  
    @george2002, rzeczywiście, ładnie czyta i mówi ,,i". A ja proponuję, zamiast ,,i" lub ,,przecinek", ,,koma". Fajnie brzmi:)
  • #17
    george2002

    Level 21  
    PEPE64 wrote:
    @george2002, rzeczywiście, ładnie czyta i mówi ,,i". A ja proponuję, zamiast ,,i" lub ,,przecinek", ,,koma". Fajnie brzmi:)


    Teraz sprawdziłem i tak brzmi najlepiej: "temperatura 23 i jedna dziesiąta stopnia". Taki tekst sobie wpiszcie i sprawdzcie, według mnie najlepiej ;).
  • #19
    Simon79
    Level 20  
    W załączniku "idea" działania programu.
    Pisałem to rok temu, nie pamiętam dlaczego tak to zrobiłem a nie inaczej :D. Nie pamiętam z jakich materiałów korzystałem, poza pdf modułu. Z pewnością można napisać go lepiej, optymalnej, ale dla mnie wystarczy, że działa.
  • #20
    japko1024
    Level 18  
    Dałoby się zapisać dźwięki na karcie pamięci bez używania jakiegokolwiek systemu plików, żeby po prostu każdy kolejny zapisany na niej bajt (lub kilka bajtów) odpowiadał następnej próbce dźwięku? Chodzi mi o coś podobnego do nagrań na kasecie magnetofonowej (na której też nie ma zapisanych plików, tylko po prostu sygnał dźwiękowy), tylko oczywiście w formie cyfrowej. Wtedy nie trzeba byłoby kupować dodatkowego modułu ani implementować obsługi systemu plików, jedynie odczyt danych z karty. Gdyby było konieczne nagranie wielu dźwięków, wystarczyłoby zapisać w programie mikrokontrolera ich kolejność i długości, aby mógł odczytywać odpowiednie adresy pamięci.
  • #22
    Simon79
    Level 20  
    Mówienie temperatury aktywowane jest stanem wysokim na wejściu PC.5 (+5V). Są moduły rozpoznawania mowy np. LD3320, EasyVR Shield, Moduł Elechouse Voice Recognition Module, nie wiem dokładnie czy posiadają jakieś wyjście, bo się tym nie interesowałem, ale myślę że tak.
  • #23
    akr18
    Level 10  
    Czy wsad .hex będzie działał z Atmega 328P ?
  • #25
    akr18
    Level 10  
    Ja mam BASCOM'a mógłbym skompilować jak by trzeba.