Spisu treści:

Islamski zegarek i alarm RaspberryPi: 15 kroków (ze zdjęciami)
Islamski zegarek i alarm RaspberryPi: 15 kroków (ze zdjęciami)

Wideo: Islamski zegarek i alarm RaspberryPi: 15 kroków (ze zdjęciami)

Wideo: Islamski zegarek i alarm RaspberryPi: 15 kroków (ze zdjęciami)
Wideo: Часы Al Harameen 2024, Listopad
Anonim
Islamski zegarek i alarm z modlitwą RaspberryPi
Islamski zegarek i alarm z modlitwą RaspberryPi
Islamski zegarek i alarm z modlitwą RaspberryPi
Islamski zegarek i alarm z modlitwą RaspberryPi

Muzułmanie na całym świecie odmawiają pięć modlitw dziennie, a każda modlitwa musi odbyć się o określonej porze dnia. ze względu na eliptyczny sposób, w jaki nasza planeta porusza się wokół Słońca, co sprawia, że godziny wschodu i zachodu słońca są różne w ciągu roku, co powoduje również niestałość czasu modlitwy, dlatego potrzebujemy islamskiego zegarka, który przypominałby nam muzułmanom o czasie naszej modlitwy dzień.

Każdy muzułmanin ma sposób na dostęp do codziennej pogody w godzinach modlitwy za pośrednictwem islamskich witryn internetowych, lokalnych kalendarzy islamskich, a nawet telewizji, a większość z nas ma islamskie zegarki, które mają funkcję informowania nas o godzinach modlitwy, a także alarmy modlitewne. Ale co by było, gdybyśmy stworzyli własne urządzenie do obserwacji i alarmu modlitwy!

Przed rozpoczęciem pracy nad projektem należy wziąć pod uwagę kilka kwestii, które mogą być przydatne podczas czytania tej instrukcji. Mieszkam w Arabii Saudyjskiej, więc niektóre z moich kroków i wartości będą się różnić od twoich, a ja wyraźnie na nie wskażę podczas pracy. Istnieją kroki i zdjęcia, które mogą zawierać arabskie słowa, odkąd stworzyłem interfejs w języku arabskim, ale wskażę również, jak zrobić to po angielsku, więc nie pozwól, aby arabskie słowa na zdjęciach w ogóle Cię niepokoiły, ten projekt może być zrobione w dowolnym języku (co jest niesamowite!:D) Proszę również wybaczyć moje literówki, ponieważ angielski nie jest moim językiem ojczystym.

Do naszego projektu! Ten projekt zostanie podzielony na X głównych kroków, z których do końca X kroku będziemy mieć nasz projekt gotowy! Kroki będą następujące:

1-Konfiguracja i przygotowanie RaspberryPi

2-Instalacja modułu RTC

3-Tworzenie programu alarmowego Azan

4-wdrażanie tarcz zegarka

5-Tworzenie interfejsu użytkownika i…

Jak każdy projekt, najpierw musimy przygotować potrzebne nam części. części, których potrzebujemy do tego projektu to:

1-RaspberryPi Zestaw komputerowy Amazon US || Amazon KSA

Możesz użyć dowolnej wersji Rpi, po prostu upewnij się, że ma Wifi. Użyłem Rpi3B+

Moduł zegara czasu rzeczywistego 2-RTC Amazon US || Amazon KSA

Możesz użyć dowolnego modelu modułu RTC, po prostu upewnij się, że ma I2C

3-monitor LCD

Dowolny wyświetlacz LCD zrobi

4-mysz i klawiatura

i to wszystko!! To wszystko, czego potrzebujesz, aby stworzyć własny zegar i alarm Azan

Krok 1: Rozdział 1: Konfiguracja i konfiguracja RaspberryPI

Rozdział 1: Konfiguracja i konfiguracja RaspberryPI
Rozdział 1: Konfiguracja i konfiguracja RaspberryPI

Pierwsze rzeczy Po pierwsze! Aby z nim pracować, musimy przygotować Raspberry pi.

Raspberry pi to nic innego jak komputer, ma RAM i ROM, ma CPU, GPU, I/O……. Komputer! tak jak ten, w którym gramy w gry i przeglądamy sieć, ale najważniejsze jest to, że jest bardzo mały! co sprawia, że malina jest bardzo dobrym wyborem do tworzenia i realizacji projektów. ponieważ raspberry pi jest mały, ma bardzo ograniczone specyfikacje, które nie mogą obsługiwać dużego wymagającego systemu operacyjnego, takiego jak Windows lub macOS, zamiast tego użyjemy Linuksa jako systemu operacyjnego, aby korzystać z urządzenia. istnieją tysiące, jeśli nie dziesiątki tysięcy dystrybucji Linuksa, których moglibyśmy użyć, ale jedna idealna dystrybucja jest doskonale zoptymalizowana specjalnie dla raspberrypi, z której będziemy korzystać, o nazwie Raspbian.

Krok 2: 1-1: Pobierz niezbędne pliki

1-1: Pobierz niezbędne pliki
1-1: Pobierz niezbędne pliki
1-1: Pobierz niezbędne pliki
1-1: Pobierz niezbędne pliki
1-1: Pobierz niezbędne pliki
1-1: Pobierz niezbędne pliki

-Przejdź do oficjalnej strony pobierania Rasbian pod adresem https://www.raspberrypi.org/software/operating-sy… i pobierz Raspberry Pi OS z plikiem Desktop

-Podczas pobierania przejdź do https://win32diskimager.org/ i pobierz i zainstaluj win32DiskImager, możesz użyć dowolnego oprogramowania do nagrywania obrazów

po zakończeniu pobierania będziesz mieć plik.img zawierający system operacyjny RaspberryPi. następnie podłącz kartę pamięci SD do komputera (zwykle z czytnikiem kart USB) i uruchom oprogramowanie win32diskimager. kroki do wypalenia obrazu w pamięci SD są bardzo proste, wystarczy: 1- Wybierz literę pamięci 2-wybierz pobrane pliki systemu operacyjnego i 3-kliknij napisz! Upewnij się, że wybrałeś właściwą literę urządzenia z listy, a Twoja pamięć jest pusta, ponieważ naciskając write zostaniesz awansowany z ostrzeżeniem, że wszystko na urządzeniu zostanie skasowane! Naciśnij tak, aby potwierdzić zapis i poczekaj na zakończenie. może to potrwać do 20 minut.

Gdy to zrobisz, będziesz mieć w pamięci pełny system operacyjny Rapbian, możesz iść dalej i umieścić go w Rapberry Pi, podłączyć Raspberry Pi do monitora przez HDMI, podłączyć mysz i klawiaturę przez USB i na koniec podłączyć moc.

Krok 3: 1-2: Konfiguracja systemu Raspbian

Po podłączeniu kabli i zasilania zobaczysz, że system operacyjny jest włączony, automatycznie uruchomi się ponownie, a następnie wyświetli interfejs użytkownika Raspbian (który wygląda podobnie do systemu Windows). pierwszą rzeczą, którą zobaczysz, jest okno powitalne, które poprowadzi Cię przez kroki konfiguracji RaspberryPi po raz pierwszy. okna i kroki będą wyglądać następująco:

1-Naciśnij przycisk Dalej w pierwszym oknie „Witamy”

2-Następnym oknem będzie konfiguracja Twojej lokalizacji. wybierz swój kraj, język i strefę czasową. następnie zdecydowanie zaleca się sprawdzenie opcji „Użyj języka angielskiego”, ponieważ będzie to język interfejsu systemu operacyjnego. MUSISZ SPRAWDZIĆ „UKŁAD ANGIELSKIEJ KLAWIATURY” MUSIMY SPRAWDZIĆ KLAWIATURA ANGIELSKA DO DZIAŁANIA!

3-Następnie zostaniesz poproszony o podanie hasła do swojej maliny, jest to ważne ze względów bezpieczeństwa, ale zostawimy je bez zmian dla tego projektu. zwróć uwagę, że domyślna nazwa użytkownika i hasło to:

nazwa użytkownika:pi

hasło: malina

4-Następne okno będzie łączyć raspberryPi z siecią Wi-Fi. wybierz swoją nazwę Wi-Fi i wprowadź hasło Wi-Fi

5-następnie zostaniesz poproszony o aktualizację bibliotek raspberry pi i plików systemowych. Ten krok zajmie dużo czasu (może w godzinach), ale jest to bardzo ważny krok przy każdej konfiguracji nowego Raspberry Pi.

6-po zakończeniu aktualizacji zostaniesz poproszony o ponowne uruchomienie systemu. zrób to teraz.

Świetna robota! Teraz mamy zaktualizowany system, nadal musimy zrobić kilka rzeczy, aby skonfigurować system do pracy, ale teraz zaczniemy używać Linuksa Command Line.

Krok 4: 1-3: Używanie wiersza poleceń do konfigurowania ustawień Rpi

1-3:Korzystanie z wiersza poleceń do konfiguracji ustawień Rpi
1-3:Korzystanie z wiersza poleceń do konfiguracji ustawień Rpi
1-3:Korzystanie z wiersza poleceń do konfiguracji ustawień Rpi
1-3:Korzystanie z wiersza poleceń do konfiguracji ustawień Rpi
1-3:Korzystanie z wiersza poleceń do konfiguracji ustawień Rpi
1-3:Korzystanie z wiersza poleceń do konfiguracji ustawień Rpi

Po zakończeniu ponownego uruchamiania z aktualizacji systemu system wyświetli pulpit użytkownika po zakończeniu uruchamiania. teraz, jeśli spojrzysz na lewy górny róg ekranu, znajdziesz kilka przycisków, przycisk z logo raspberryPi, który jest przyciskiem menu Rpi, kształt kuli ziemskiej, który jest przeglądarką internetową, przycisk folderów, który jest… folderami i wreszcie przycisk z czarnym oknem ekranu, który jest najważniejszym przyciskiem w każdym systemie linuksowym, wiersz poleceń. Śmiało i naciśnij ten przycisk, zobaczysz czarne okno wyskakujące.

Linia poleceń jest sposobem, w jaki wszyscy wchodzą w interakcję i używają systemu linux, tak jak Windows ma własną linię poleceń, tylko w przypadku wdów nie musimy jej używać zbyt często. w Linuksie jest to podstawowa rzecz, którą każdy użytkownik Linuksa musi nauczyć się i opanować. wiersz poleceń może być używany przez…. POLECENIA! to, co widzisz w czarnym oknie, to wiersz polecenia oczekujący na napisanie i wykonanie polecenia przez użytkownika. w tym przewodniku podamy wszystkie polecenia potrzebne do wykonania tego projektu, więc nie martw się.

pierwsze polecenie Linuksa, którego będziemy używać, to kolejne polecenie konfiguracyjne, zauważ, że wszystkie polecenia od teraz zostaną umieszczone w polu kodu, dzięki czemu można je odróżnić od zwykłych kroków. Przynieś klawiaturę i wpisz następujące polecenie i naciśnij Enter:

sudo raspi-config

Jeśli zrobisz to poprawnie, zobaczysz, że ekran zmienił kolor na niebieski, z szarym małym polem pośrodku (patrz obrazek). użyjemy tego do wykonania ostatecznej konfiguracji przed rozpoczęciem kodowania.

teraz do poruszania się po tym menu musisz używać klawiszy strzałek na klawiaturze.

1-Przejdź do opcji interfejsu >> I2C >> TAK >> naciśnij enter. jest to włączenie protokołu komunikacyjnego I2c, dzięki czemu możemy korzystać z RTC

2-Idź do Opcje zaawansowane >> Rozwiń system plików.

i to jest cała konfiguracja, której potrzebujesz z tego okna. na stronie głównej zejdź w dół i naciśnij enter na „zakończ” i „TAK”, aby ponownie uruchomić system.

Po ponownym uruchomieniu systemu zakończymy konfigurację! urządzenie jest gotowe na wielkie kroki! Kolejnym krokiem będzie zainstalowanie modułu RTC i używanie go z systemem.

Krok 5: Rozdział 2: Montaż, konfiguracja i użytkowanie modułu RTC

Rozdział 2: Montaż, konfiguracja i użytkowanie modułu RTC
Rozdział 2: Montaż, konfiguracja i użytkowanie modułu RTC
Rozdział 2: Montaż, konfiguracja i użytkowanie modułu RTC
Rozdział 2: Montaż, konfiguracja i użytkowanie modułu RTC
Rozdział 2: Montaż, konfiguracja i użytkowanie modułu RTC
Rozdział 2: Montaż, konfiguracja i użytkowanie modułu RTC
Rozdział 2: Montaż, konfiguracja i użytkowanie modułu RTC
Rozdział 2: Montaż, konfiguracja i użytkowanie modułu RTC

Moduł RTC (lub zegar czasu rzeczywistego) to małe urządzenie, które ma małą baterię, robi to, co sugeruje nazwa, taktowanie! więc po odłączeniu go do zasilania zegar nadal działa i nie zatrzymuje się. Dlaczego tego potrzebujemy? cóż, raspberry pi naprawdę nie ma sposobu na przechowywanie danych zegara po wyłączeniu, polega na połączeniu się z Internetem po uruchomieniu, aby zaktualizować datę i godzinę, ale problem polega na tym, że nie zawsze mamy dostęp do Internetu, a to dlatego potrzebujemy modułu RTC. RTC będzie działał jako zegar dla RaspberryPi, więc po uruchomieniu Rpi pobierze datę i godzinę z RTC, dzięki czemu czas RaspberryPi będzie cały czas aktualizowany.

istnieje wiele modeli i wygląda na RTC, są DS1307 i DS3231. możesz użyć dowolnego modułu RTC, który znajdziesz, o ile ma komunikację za pomocą protokołu I2C (możesz wskazać, że możesz znaleźć piny SDA i SCL na pinach modułu.

jak wszystko w tym przewodniku, korzystałem z innych przewodników, aby osiągnąć mój cel w projekcie, ta instrukcja poprowadzi Cię i powie dokładnie, co zrobić, aby zrobić ten projekt, ale jeśli potrzebujesz zmodyfikować lub potrzebujesz więcej głębi w którymkolwiek z kroki, na końcu każdego kroku podam link do bardziej owocnego przewodnika.

Po przygotowaniu modułu RTC (przylutuj piny nagłówka i włóż baterię), możesz podłączyć go do pinów RapberryPi w następujący sposób:

PIN RTC ---------------- PIN Rpi

GND====> PIN 6 (GND)

Vcc============> PIN 1 (3.3V)

SDA====> PIN 3(SDA)

SCL====> PIN 5(SCL)

lub w zależności od posiadanego modułu RTC można go zamontować bezpośrednio na RaspberryPi (upewnij się, że piny są prawidłowe!!!, ponieważ możesz uszkodzić Rpi/RTC, jeśli nie)

Po podłączeniu RTC skonfigurujmy Raspberry.

Krok 6: 2-1: Konfiguracja modułu

2-1: Konfiguracja modułu
2-1: Konfiguracja modułu
2-1: Konfiguracja modułu
2-1: Konfiguracja modułu

Przed rozpoczęciem przejdź do wiersza poleceń i wpisz:

Data

Spowoduje to zwrócenie aktualnej daty i godziny na Raspberry, zanotuje to bardzo przydatne polecenie i zanotuje aktualną datę i godzinę, abyśmy mogli sprawdzić, kiedy moduł działa, czy nie.

teraz zacznijmy konfigurację, wpisz następujące polecenie, aby zaktualizować biblioteki Rpi, jeden wiersz na raz:

aktualizacja sudo apt-get

sudo apt-get -y uaktualnienie

kiedy to zrobimy, musimy zmodyfikować pliki systemowe, aby włączyć moduł i2c i dodać RTC, aby zmodyfikować system plików, użyjemy oprogramowania o nazwie Nano. nano to lekkie, wbudowane oprogramowanie, które jest w zasadzie edytorem tekstu, podobnie jak w przypadku wdów. więc każde polecenie, które zaczyna się od nano, po którym następuje nazwa pliku, otworzy ten plik w edytorze tekstu nano. zauważyłeś, że użyliśmy również czegoś, co nazywa się Sudo, w skrócie sudo działa jak gwarancja systemu linux, która informuje system, że użytkownik, który wykonał to polecenie, jest właścicielem urządzenia, a nie kimś innym, i daje uprawnienia, takie jak edycja/ usuwanie do użytkownika. na przykład, gdybyśmy otworzyli plik nano bez sudo, moglibyśmy go wyświetlić, ale nie możemy go edytować ani usunąć.

teraz musimy zmodyfikować plik modułów, możemy to zrobić wpisując:

sudo nano /etc/moduły

kiedy to zrobisz, znajdziesz zawartość tego pliku (patrz zdjęcie). użyj klawiszy strzałek, aby umieścić kursor na końcu tekstu i dodaj następujące elementy:

snd-bcm2835

i2c-bcm2835 i2c-dev rtc-ds1307

naciśnij CTRL+S, aby zapisać, i CTRL+X, aby wyjść

Krok 7: 2-2: Interfejs I2C

2-2: Interfejs I2C
2-2: Interfejs I2C

Teraz podłączyliśmy RTC i włączyliśmy i2c, połączmy wszystko razem.

wpisz następujące polecenie w wierszu polecenia:

i2cdetect -y 1

otrzymasz tablicę spacji, ale zauważysz, że gdzieś jest liczba, która jest adresem twojego modułu RTC. w moim przypadku to 68. zwróć uwagę na ten numer. jeśli nie widzisz tego dwucyfrowego numeru, oznacza to, że prawdopodobnie masz źle podłączony RTC.

teraz musimy zmodyfikować plik rc.local, abyśmy mogli włączyć moduł RTC podczas startu i pozwolić mu zapisać datę i godzinę w systemie. najpierw otwórz plik rc.local:

sudo nano /etc/rc.local

Przed wierszem exit0 dodaj:

echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/nowe_urządzenie

hwclock -s

gdzie 0x68 to adres i2c twojego urządzenia. kiedy skończysz, naciśnij CTRL+S CTRL+X, a następnie uruchom ponownie system:

ponowne uruchomienie sudo

Krok 8: 2-3: Testowanie zegara czasu rzeczywistego

2-3: Testowanie zegara czasu rzeczywistego
2-3: Testowanie zegara czasu rzeczywistego

Po ponownym uruchomieniu systemu możemy sprawdzić, czy RTC działa, czy nie. pierwszy bieg:

sudo hwclock -r

otrzymasz z powrotem datę i godzinę w module RTC. jeśli dostaniesz coś innego, upewnij się, że kroki zostały wykonane poprawnie.

teraz, aby zmodyfikować czas i datę w RTC, musimy najpierw zmodyfikować datę i godzinę w systemie, a następnie wprowadzić modyfikacje w RTC. w tym celu uruchom:

data sudo -s "29 sierpnia 1997 13:00:00"

i oczywiście zmień datę i godzinę zgodnie z lokalnym czasem i datą, zanim naciśniesz Enter. gdy uzyskasz czas po prawej stronie Rpi, uruchom następujące polecenie, aby zapisać datę i godzinę w RTC:

sudo hwclock -w

aaaa i to wszystko! możesz sprawdzić, czy działa przez hwclock -r i zobaczyć, czy data na RTC jest poprawna, czy nie, następnie odłącz rpi od internetu, a następnie wyłącz na jakiś czas, a następnie włącz ponownie i zobacz, czy ma poprawną czas i data. Jesteś skończony!

Pełny przewodnik dotyczący konfiguracji modułu RTC można znaleźć tutaj

www.raspberrypi-spy.co.uk/2015/05/adding-a-ds3231-zegar-czasu-rzeczywistego-do-malin/

Krok 9: Rozdział 3: Tworzenie programu alarmowego Azan

Rozdział 3: Tworzenie programu alarmowego Azan
Rozdział 3: Tworzenie programu alarmowego Azan

zrobienie zegarka to jedno, jasne, możemy spojrzeć na zegar i godziny modlitwy i zobaczyć, kiedy nadejdzie czas, ale czy nie byłoby nawet DUŻO lepiej, gdybyśmy mogli dodać alarm dźwiękowy, aby powiadomić nas o godzinach modlitwy? JESZCZE LEPIEJ, robimy ten alarm jako dźwięk AZAN! zobaczmy, jak możemy to osiągnąć.

do naszego programowania użyjemy Pythona jako naszego preferowanego języka programowania, ponieważ python idealnie pasuje do RaspberryPi. aby utworzyć plik kodu w pythonie, robimy to samo, co otwieranie pliku tekstowego, ale teraz zapisujemy go jako.py. aby uruchomić program, potrzebujemy zainstalowanego środowiska python z raspbery, na szczęście Raspbian jest dostarczany z preinstalowanymi pythonami i python3! więc wszystko, co musimy zrobić, to programować. w tym przewodniku nie będziemy rozmawiać o języku i uczyć, jak działa i jakie funkcje, ale podam Ci niezbędne kody, abyś mógł wykonać projekt.

na początek potrzebujemy pliku dźwiękowego naszego preferowanego dźwięku azan (w. WAV) potrzebujemy dwóch plików, jednego dla al-fajr azan i drugiego dla zwykłego azan. kiedy to otrzymasz, umieść go na dysku i skopiuj na pulpicie raspberrypi.

teraz mamy pliki, szukałem sposobu na odtwarzanie dźwięków audio na raspberryPi i ku mojemu zdziwieniu nie było wielu sposobów, aby to zrobić, ale znalazłem tę odpowiedź na stackoverflow, która dała mi to, czego potrzebowałem

stackoverflow.com/questions/20021457/playi…

przetestowałem tę metodę i zadziałało! zobaczmy więc, jak możemy wdrożyć tę metodę w naszym projekcie…

Krok 10: 3-1: Odtwórzmy dźwięk

3-1: Zagrajmy dźwięk!
3-1: Zagrajmy dźwięk!

najpierw przejdź do pulpitu przez:

cd Pulpit

następnie utwórz nowy plik kodu Pythona przez:

sudo nano AzanPlay.py

to utworzy nowy plik o nazwie AzanPlay z rozszerzeniem w pliku Pythona.py, będziemy mieli pusty czarny ekran, abyśmy mogli napisać nasz kod. po prostu zapisz te wiersze (uważaj, aby nie zmienić żadnych wcięć ani spacji, ponieważ jest to BARDZO ważne w Pythonie):

z miksera importu pygame

mixer.init() mixer.music.load('/home/pi/Desktop/Adhan-Makkah.wav') mixer.music.play() podczas gdy mixer.music.get_busy() == Prawda: kontynuuj

Gdzie /Desktop/ to miejsce, w którym umieszczasz swoje pliki dźwiękowe, a „Adhan-Makkah.wav” to mój plik audio, który jest nagraniem dźwiękowym Azan w Mekce.

teraz, aby przetestować nasz kod, uruchamiamy go w Pythonie wpisując:

pyton AzanPlay.py

i będziesz miał dźwięk odtwarzany z wyświetlacza HDMI LCD lub portu AUX, który jest na Raspberrypi. jeśli nie słyszysz tego z głośników LCD, podłącz słuchawki do AUX i sprawdź.

Krok 11: 3-2: Uzyskaj godziny modlitwy

3-2: Uzyskaj czasy modlitwy
3-2: Uzyskaj czasy modlitwy

Jak wiemy, czasy modlitwy różnią się w zależności od miejsca na ziemi, a nawet w konkretnym miejscu zmienia się na przestrzeni lat, co oznacza, że musimy znaleźć sposób, aby nasze godziny modlitwy w systemie były stale aktualizowane i do tego potrzebujemy konkretnych i bardzo złożonych funkcji i obliczeń, aby to zrobić dobrze. Na szczęście nasz brat Hamid Zarrabi-Zadeh utworzył wszystkie potrzebne funkcje w jedną funkcję, z której możemy łatwo korzystać, aby uzyskać czas w zależności od naszej lokalizacji i aktualnego czasu, NIESAMOWITE! możesz znaleźć bibliotekę i pliki źródłowe na

praytimes.org/

Tak więc, użyjemy tych niesamowitych plików, aby uzyskać czasy modlitwy i zaimplementować je w systemie. najpierw pobierz kody ze strony i umieść je w folderze /adhan/ (potrzebujemy zarówno kodu JS, jak i Pythona).

teraz przejdźmy do tego folderu i przetestuj bibliotekę oraz jej możliwości:

cd adhan

tam musimy utworzyć nowy plik testowy w pythonie, abyśmy mogli przetestować funkcję:

sudo nano testAd.py

w środku zapisz ten kod:

importuj czasy modlitw

from datetime import date tmm = praytimes. PrayTimes().getTimes(date.today(), [LONGTITUDE, LATITUDE], GMT) print(tmm)

Przed zapisaniem pliku musisz zmienić LATITUDE na szerokość geograficzną lokalizacji, to samo na LONGTITUDE, a także zmienić GMT na swoją strefę czasową. w moim przypadku będzie to:

tmm = praytimes. PrayTimes().getTimes(data.dzisiaj(), [21.3236, 39.1022], 3)

drukuj (tmm)

Na koniec CTRL-S i CTRL-X, a następnie uruchom kod:

python testAd.py

w końcu otrzymasz z powrotem czasy modlitwy na dzisiaj, za swoją lokalizację.

{'isha': '18:58', 'asr': '15:22', 'zachód słońca': '17:43', 'dhuhr': '12:17', 'maghrib': '17:43', 'imsak': '05:23', 'północ': '00:17', 'wschód słońca': '06:52', 'fajr': '05:33'}

Świetny! teraz, gdy mamy czas na modlitwę i wiemy, jak odtwarzać dźwięki, połączmy te dwa kody w jeden kod główny.

Krok 12: 3-3: Tworzenie ostatecznego kodu alarmowego Azan

kończąc poprzednie dwa kody, nauczyliśmy się, jak uzyskać dokładne godziny modlitwy zgodnie z naszą lokalizacją i jak odtwarzać dźwięk Azan. teraz połączymy te dwa kody w jeden kod, którego użyjemy jako nasz ostateczny projekt, a ten kod będzie działał w tle, ponieważ gdy nadejdzie czas Azan, odtworzy dźwięk Azan.

Napisałem cały kod, możesz go skopiować i wkleić oraz wprowadzić własne zmiany według własnego uznania. Kod to:

czas importu

z pygame import mixer import string import modlitwy z datetime import date while (1): tmm = praytimes. PrayTimes().getTimes(date.today(), [21.3236, 39.1022], 3) FAJR=tmm['fajr'] DHUHR =tmm['dhuhr'] ASR=tmm['asr'] MAGHRIB=tmm['maghrib'] ISHA=tmm['isha'] tempT= time.strftime(str('%H')) currTime= tempT tempT= time.strftime(str('%M')) currTime= currTime +':'+ tempT if currTime == FAJR: mixer.init() mixer.music.load('/home/pi/Desktop/Adhan-fajr. wav') mixer.music.play() while mixer.music.get_busy() == True: Continue if currTime == DHUHR: mixer.init() mixer.music.load('/home/pi/Desktop/Adhan- Makkah.wav') mixer.music.play() while mixer.music.get_busy() == True: kontynuuj jeśli currTime == ASR: mixer.init() mixer.music.load('/home/pi/Desktop/ Adhan-Makkah.wav') mixer.music.play() while mixer.music.get_busy() == True: kontynuuj, jeśli currTime == MAGHRIB: mixer.init() mixer.music.load('/home/pi/ Desktop/Adhan-Makkah.wav') mixer.music.play() podczas mixer.music.get_busy() == Prawda: kontynuuj, jeśli currTime == ISHA: mixer.init() mixer.music.load('/home/pi/Desktop/Adhan-Makkah.wav') mixer.music.play() podczas gdy mixer.music.get_busy() == Prawda: kontynuuj

Jeśli spojrzysz na kod i porównasz go z tym, co zrobiliśmy wcześniej, zobaczysz, że nie zrobiliśmy nic nowego, najpierw dodaliśmy potrzebne biblioteki, a potem otworzyliśmy nieskończoną pętlę. w pętli stale obliczamy czas modlitwy z naszą lokalizacją i strefą czasową i przechowujemy cały wynik w zmiennej tmm. następnie przechowujemy czas każdej modlitwy od tmm do zmiennej niezależnej. co pozwoli nam porównać czasy. następnie bierzemy czas systemowy i przechowujemy go w zmiennej niezależnej. na koniec porównujemy czas systemowy z godzinami modlitwy, jeśli czas systemowy pasuje do któregokolwiek z godzin modlitwy, odtworzy dźwięk Azan.

Krok 13: Rozdział 4: Implementacja tarcz zegarka

Rozdział 4: Implementacja tarcz zegarka
Rozdział 4: Implementacja tarcz zegarka
Rozdział 4: Implementacja tarcz zegarka
Rozdział 4: Implementacja tarcz zegarka
Rozdział 4: Implementacja tarcz zegarka
Rozdział 4: Implementacja tarcz zegarka
Rozdział 4: Implementacja tarcz zegarka
Rozdział 4: Implementacja tarcz zegarka

Aby projekt wyglądał lepiej, wpadłem na pomysł dodania tarcz zegarka do wyświetlacza LCD, aby wyglądał ładnie dla użytkownika (no cóż, przynajmniej lepiej niż wiersz poleceń), więc zatrudniłem projektanta, aby zaprojektował wiele twarzy do zegarek, powinien być pusty bez żadnych danych, ponieważ dane powinny być dodane przez HTML, dzięki czemu projekty zegarka będą tłem, a inne dane, takie jak godziny modlitwy, mogą być dodane jako elementy HTML na górze tła.

Niestety, w chwili pisania tej instrukcji moja wiedza i doświadczenie w HTML są bardzo ograniczone, więc nie będę omawiał zbyt wielu szczegółów, ponieważ wiem, że będę robił rzeczy w zły sposób, a nie chcą zmylić ludzi. ale jeśli masz chociaż niewielkie doświadczenie w JS i HTML, powinieneś wiedzieć, jak kontynuować od tego momentu. do tej pory zrobiłem jedną twarz (niebieską). w planach jest wykonanie 14 tarcz zegarka! 7 twarzy na każdy dzień tygodnia i kolejne 7 jako kolejny motyw. ponieważ pierwszy motyw ma być z toczącym się Azkarem, a drugi motyw ma mieć islamskie GIF-y zamiast Azkar. niezależnie od tego uwzględnię wszystkie projekty w tej instrukcji, abyś mógł ją pobrać.

Krok 14: Rozdział 5: Implementacja interfejsu użytkownika

Rozdział 5: Implementacja interfejsu użytkownika
Rozdział 5: Implementacja interfejsu użytkownika

W ostatnim rozdziale naszej podróży dokonamy kilku opcjonalnych modyfikacji, aby projekt był jeszcze przyjazny dla użytkownika, na wypadek, gdybyśmy chcieli zrealizować projekt w meczecie lub innym miejscu publicznym. jak powiedzieliśmy wcześniej, każde miasto ma swój własny czas na modlitwy i aby ten projekt był dostępny dla szerszej liczby ludzi, stworzymy interfejs użytkownika, dzięki któremu będziemy mogli wybrać pożądane miasto i motyw po uruchomieniu projektu.

Aby to zrobić, użyjemy biblioteki GUI Pythona o nazwie "TKinter".

Oto kod, który zaimplementowałem, aby dać mi wybór między pięcioma miastami w Arabii Saudyjskiej, w tym Mekką:

importuj tkintera jako tk

z tkinter import * z tkinter import ttk import kodeki import os class karl(Frame): def _init_(self): tk. Frame._init_(self) self.pack() self.master.title("Czas Azan") self. button1 = Przycisk(self, tekst = "Jeddah", wysokość=5, szerokość = 80, polecenie = self.open_jeddah1) self.button2 = Przycisk(self, tekst = "Mekka", wysokość=5, szerokość = 80, polecenie = self.open_makkah1) self.button3 = Przycisk(self, tekst = "Riyadh", wysokość=5, szerokość = 80, polecenie = self.open_riyadh1) self.button4 = Przycisk(self, tekst = "Madina", wysokość=5, szerokość = 80, polecenie = self.open_madina1) self.button5 = Przycisk(self, tekst = "Qasim", wysokość=5, szerokość = 80, polecenie = self.open_qasaim1) self.button1.grid(wiersz = 0, kolumna = 1, columnpan = 2, sticky = W+E+N+S) self.button2.grid(wiersz = 1, kolumna = 1, columnpan = 2, sticky = W+E+N+S) self.button3.grid(wiersz = 2, kolumna = 1, kolumna = 2, sticky = W+E+N+S) self.button4.grid(wiersz = 3, kolumna = 1, kolumna = 2, sticky = W+E+N+S) self.button5.grid(wiersz = 4, kolumna = 1, rozstaw kolumn = 2, sticky = W+E+N+S) def open_jeddah1(self): order = "sudo chromium-browser /home/pi/Desktop/Cities/jeddah/Sunday1.html --start-fullscreen --no-sandbox " os.system(order) def open_makkah1(self): order = "sudo chromium-browser /home/pi/Desktop/Cities/makkah/Sunday1.html --start-fullscreen --no-sandbox -test-type " os.system (order) def open_riyadh1(self): order = "sudo chromium-browser /home/pi/Desktop/Cities/riyadh/Sunday1.html --start-fullscreen --no-sandbox -test-type " os.system(order) def open_madina1(self): order = "sudo chromium-browser /home/pi/Desktop/Cities/madina/Sunday1.html --start-fullscreen --no-sandbox -test-type " os.system(order) def open_qasaim1(self): order = "sudo chromium-browser /home/pi/Desktop/Cities/qasaim/Sunday1.html --start-fullscreen --no-sandbox -test-type " os.system(order) def main(): karl().mainloop() if _name_ == '_main_': main()

Kod może wyglądać na duży, ale jego edycja jest bardzo łatwa. zasadniczo stworzyliśmy nowe okno, umieściliśmy pięć nazw przycisków i zdefiniowaliśmy pięć funkcji, które mają być wywołane po każdym naciśnięciu przycisku. po naciśnięciu przycisku program otworzy odpowiedni plik HTML w folderze Cities, w którym każdy HTML miasta ma współrzędne miasta, gdy otrzyma czas z praytimes(). po naciśnięciu przycisku kod Pythona wykona kod linux, w którym otworzy plik HTML za pomocą przeglądarki chromu, a tarcza zegarka będzie gotowa do wyświetlenia z włączoną opcją pełnego ekranu.

Krok 15: (Opcjonalnie): Dodawanie przełącznika głośników

(Opcjonalnie): Dodawanie przełącznika głośnikowego
(Opcjonalnie): Dodawanie przełącznika głośnikowego
(Opcjonalnie): Dodawanie przełącznika głośnikowego
(Opcjonalnie): Dodawanie przełącznika głośnikowego

Jak widzieliśmy, kiedy nadchodzi czas modlitwy, dźwięk Azan jest odtwarzany, a dźwięk wychodzi z domyślnego wyjścia dźwięku (wyjście HDMI lub AV), a ponieważ podłączamy go do wyjścia HDMI, dźwięk będzie pochodził z wyświetlacza LCD. ale co, jeśli dźwięk naszego LCD nie wystarczy? na przykład, co jeśli chcemy to zaimplementować w prawdziwym meczecie? z szerokimi głośnikami zewnętrznymi? wtedy możemy dodać jeszcze jeden BARDZO łatwy krok, aby to osiągnąć. w przypadku już zbudowanego nagłośnienia głośnikowego, wystarczy go włączyć i wyłączyć, a następnie wziąć już istniejący mikrofon i umieścić go obok głośników LCD.

Zrobienie tego jest łatwe. użyjemy istniejącego wcześniej mikrofonu meczetu, który jest podłączony do głośnika, będziemy potrzebować tylko raspberryPi do sterowania mocą, która włącza i wyłącza cały system dźwiękowy. aby to zrobić, będziemy musieli użyć SSR: SOLID STATE RELAY. tego typu przekaźniki mogą działać jako przełącznik, podobnie jak przeciętny niebieski przekaźnik, różnica polega na tym, że SSR mogą wytrzymać przez niego dużą ilość prądu AC, co nie ma zastosowania w niebieskich (zwykle max 10A), a SSR potrzebuje tylko dwa przewody zamiast 3: DC+ i DC- i to wszystko! na drugim końcu SSR możemy podłączyć kabel zasilający zestawu głośnikowego, w ten sposób, gdy podamy napięcie do SSR, zamknie on obwód AC zestawu głośnikowego lub wyłączymy napięcie, aby zrobić obwód otwarty, wyłączenie głośników.

jest jednak jeden haczyk, piny RaspberryPi wyprowadzają 3,3 V, a nie 5 V, których potrzebujemy do sterowania SSR. więc potrzebujemy tranzystora, aby pobrać sygnał z pinu RPi, a 5V z pinu RPi 5v. w tym celu potrzebujemy:

1-Solid State Relay (wszystko powyżej 25A jest dobre)

Tranzystor npn 2-2n2222

Rezystor 3-220 omów, postępuj zgodnie z obwodem spiekania, aby uzyskać połączenie.

teraz w kodzie dodamy kilka rzeczy, które sprawią, że to zadziała. najpierw przed pętlą while dodamy kilka linii inicjujących piny GPIO:

W sekcji importu dodaj:

importuj RPi. GPIO jako GPIO

Przed pętlą while dodaj:

GPIO.setmode(GPIO. BOARD)GPIO.setwarnings(False) relay = 40 GPIO.setup(ledPin, GPIO. OUT)

Teraz w pętli while dla każdej komendy play Azan musimy włączyć przekaźnik, odczekać 10 sekund, zakończyć odtwarzanie Azana, a następnie wyłączyć przekaźnik. musimy tylko dodać dwie linie, pierwsza to:

GPIO.wyjście(ledPin, GPIO. HIGH)

czas.sen(10)

ten powinien być dodany po każdej instrukcji if (IDENTACJA JEST WAŻNA!), druga linia to:

GPIO.output(ledPin, GPIO. LOW)

Ten należy dodać po wierszu „kontynuuj”. powinno to wyglądać tak za każdym razem w Azan:

jeśli aktualna godzina == FAJR:

GPIO.output(ledPin, GPIO. HIGH) time.sleep(10) mixer.init() mixer.music.load('/home/pi/Desktop/Adhan-fajr.wav') mixer.music.play() while mixer.music.get_busy() == Prawda: kontynuuj GPIO.output(ledPin, GPIO. LOW)

Zalecana: