Turinys:
- 1 veiksmas: 1 skyrius: „RaspberryPI“nustatymas ir konfigūravimas
- 2 veiksmas: 1-1: atsisiųskite būtinus failus
- 3 veiksmas: 1-2: Raspbian sistemos konfigūravimas
- 4 veiksmas: 1–3: komandinės eilutės naudojimas nustatant Rpi nustatymus
- 5 veiksmas: 2 skyrius: RTC modulio montavimas, konfigūravimas ir naudojimas
- 6 veiksmas: 2-1: modulio sąranka
- 7 žingsnis: 2-2: I2C sąsaja
- 8 veiksmas: 2-3: RTC testavimas
- 9 veiksmas: 3 skyrius: „Azan“aliarmo programos sukūrimas
- 10 veiksmas: 3-1: paleiskime garsą
- 11 žingsnis: 3-2: gaukite maldos laiką
- 12 veiksmas: 3-3: galutinio Azano pavojaus kodo sudarymas
- 13 veiksmas: 4 skyrius: stebėjimo veidų diegimas
- 14 žingsnis: 5 skyrius: Vartotojo sąsajos diegimas
- 15 veiksmas: (neprivaloma): garsiakalbio jungiklio pridėjimas
Video: „RaspberryPi“islamo maldų laikrodis ir žadintuvas: 15 žingsnių (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:44
Viso pasaulio musulmonai kasdien turi penkias maldas, ir kiekviena malda turi būti tam tikru paros metu. dėl elipsinio mūsų planetos judėjimo aplink saulę, todėl saulė kyla ir leidžiasi skirtingais metų laikais, todėl maldos laikas yra nepastovus, todėl mums reikia islamo laikrodžio, kuris primintų musulmonams kiekvieną maldos laiką dieną.
Kiekvienas musulmonas turi prieigą prie kasdienio maldos oro per islamo interneto svetaines, vietinius islamo kalendorius ar net per televiziją, o dauguma iš mūsų turi islamo laikrodžius, kurie suteikia mums maldos laiką, taip pat maldos signalus. Bet kas būtų, jei mes patys sukurtume maldos laikrodį ir žadintuvą!
Prieš pradėdami dirbti su projektu, yra keletas aplinkybių, kurios jums gali būti naudingos skaitant šią instrukciją. Aš gyvenu Saudo Arabijoje, todėl kai kurie mano žingsniai ir vertybės skirsis nuo jūsų, ir aš juos aiškiai nurodysiu darbo metu. Yra žingsnių ir paveikslėlių, kuriuose gali būti arabiškų žodžių, nes sąsają sukūriau arabiškai, tačiau taip pat nurodysiu, kaip tai padaryti angliškai, todėl neleiskite, kad paveikslėliuose esantys arabiški žodžiai jus jaudintų, šis projektas gali būti Atlikta bet kuria kalba (tai nuostabu!: D) Taip pat atsiprašau už klaidas, nes anglų kalba nėra mano pirmoji kalba.
Į mūsų projektą! Šis projektas bus suskirstytas į X pagrindinius žingsnius, kurie iki X -ojo žingsnio pabaigos turėsime savo projektą gražų ir paruoštą! Žingsniai bus tokie:
1-RaspberryPi konfigūravimas ir paruošimas
2-RTC modulio montavimas
3-„Azan Alarm“programos kūrimas
4-Laikrodžių veidų diegimas
5-vartotojo sąsajos kūrimas ir
Kaip ir kiekvienas projektas, pirmiausia turime paruošti reikalingas dalis. dalys, kurių mums reikia šiam projektui:
1-RaspberryPi Kompiuterių rinkinys „Amazon US“|| „Amazon KSA“
Galite naudoti bet kurią Rpi versiją, tik įsitikinkite, kad ji turi „Wifi“. Aš naudoju Rpi3B+
2-RTC realaus laiko laikrodžio modulis „Amazon US“|| „Amazon KSA“
Galite naudoti bet kurį RTC modulio modelį, tik įsitikinkite, kad jis turi I2C
3 LCD monitorius
Tiks bet koks LCD ekranas
4 pelės ir klaviatūra
Štai ir viskas!! Tai viskas, ko jums reikia norint sukurti savo „Azan“laikrodį ir žadintuvą
1 veiksmas: 1 skyrius: „RaspberryPI“nustatymas ir konfigūravimas
Visų pirmą! Turime paruošti „Raspberry pi“, kad galėtume su juo dirbti.
„Raspberry pi“yra tik kompiuteris, jis turi RAM ir ROM, turi procesorių, GPU, įvestį/išvestį ……. Kompiuteris! kaip ir tas, kuriame žaidžiame žaidimus ir naršome internete, tik svarbiausia, kad jis yra labai mažas! todėl avietė yra labai geras pasirinkimas kuriant ir įgyvendinant projektus. Kadangi „Raspberry pi“yra mažas, jo specifikacijos yra labai ribotos, todėl jis negali valdyti didelės sudėtingos OS, tokios kaip „Windows“ar „MacOS“, vietoj to, norėdami naudoti įrenginį, ketiname naudoti „Linux“kaip operacinę sistemą. Yra tūkstančiai, jei ne dešimtys tūkstančių „Linux“distribucijų, kurias galėtume naudoti, tačiau vienas tobulas platinimas yra puikiai optimizuotas būtent „Raspbianpi“, kurį ketiname naudoti.
2 veiksmas: 1-1: atsisiųskite būtinus failus
-Eikite į oficialų „Rasbian“atsisiuntimo puslapį adresu https://www.raspberrypi.org/software/operating-sy… ir atsisiųskite „Raspberry Pi“OS su darbalaukio failu
-Kol atsisiunčiama, eikite į https://win32diskimager.org/ ir atsisiųskite bei įdiekite „win32DiskImager“, galite naudoti bet kokią jums patinkančią vaizdo įrašymo programinę įrangą
Kai atsisiuntimas bus baigtas, turėsite.img failą, kuriame yra „RaspberryPi“OS. tada prijunkite SD atminties kortelę prie kompiuterio (dažniausiai su USB kortelių skaitytuvu) ir paleiskite „win32diskimager“programinę įrangą. Vaizdo įrašymo į SD atmintį veiksmai yra labai paprasti, jums tereikia 1- Pasirinkite atminties raidę 2-pasirinkite atsisiųstus OS failus ir 3-paspauskite rašyti! Įsitikinkite, kad iš sąrašo pasirinkote tinkamą įrenginio raidę, o atmintis tuščia, nes paspaudus „rašyti“būsite paaukštintas įspėjimu, nurodančiu, kad viskas, kas yra įrenginyje, bus ištrinta! Paspauskite taip, kad patvirtintumėte įrašymą, ir palaukite, kol jis bus baigtas. tai gali užtrukti iki 20 minučių.
Kai tai bus padaryta, atmintyje turėsite visą „Rapbian“OS, galėsite eiti į priekį ir įdėti ją į „Rapberry Pi“, prijungti „Raspberry Pi“prie monitoriaus per HDMI, prijunkite pelę ir klaviatūrą per USB ir galiausiai prijunkite galia.
3 veiksmas: 1-2: Raspbian sistemos konfigūravimas
Prijungę kabelius ir maitinimą pamatysite, kad OS įjungta, ji automatiškai bus paleista iš naujo ir tada bus rodoma „Raspbian“vartotojo sąsaja (kuri atrodo panaši į „Windows“). pirmas dalykas, kurį pamatysite, yra pasveikinimo langas, kuriame pirmą kartą bus sukonfigūruoti „RaspberryPi“. langai ir žingsniai bus tokie:
1-Pirmajame „Sveiki atvykę“lange paspauskite kitą
2-Kitas langas bus sukonfigūruoti jūsų buvimo vietą. pasirinkite savo šalį, kalbą ir laiko juostą. po to labai rekomenduojama patikrinti „Naudoti anglų kalbą“, nes tai bus operacinės sistemos sąsajos kalba. TURITE PATIKRINTI „JAV ANGLIJŲ KLAVIATORIAUS DĖŽUTĖS DĖŽUTĘ“, DARBUI REIKIA ANGLŲ KLAVIKOS!
3-Toliau jūsų bus paprašyta įvesti savo aviečių slaptažodį, tai svarbu saugumui, tačiau mes paliksime jį nepakeistą šiam projektui. atminkite, kad numatytasis vartotojo vardas ir slaptažodis yra:
vartotojo vardas: pi
slaptažodis: avietė
4-Kitas langas bus prijungtas prie raspberryPi prie jūsų „WiFi“tinklo. pasirinkite savo „wifi“pavadinimą ir įveskite „wifi“slaptažodį
Toliau jūsų bus paprašyta atnaujinti „Raspberry pi“bibliotekas ir sistemos failus. šis žingsnis užtruks labai daug laiko (galbūt valandomis), tačiau tai yra labai svarbus žingsnis kiekvieną kartą, kai nustatomas naujas aviečių pi.
6-kai atnaujinimas bus baigtas, jūsų bus paprašyta iš naujo paleisti sistemą. padaryk tai dabar.
Puikus darbas! Dabar mes turime atnaujintą sistemą, vis tiek turime padaryti daugiau, kad sukonfigūruotume sistemą, bet dabar pradėsime naudoti „LinuxCommand Line“.
4 veiksmas: 1–3: komandinės eilutės naudojimas nustatant Rpi nustatymus
Kai baigsite perkrovimą iš sistemos naujinimo, sistema parodys vartotojo darbalaukį, kai jis bus paleistas. Dabar, jei pažvelgsite į viršutinį kairįjį ekrano kampą, rasite keletą mygtukų, mygtuką su raspberryPi logotipu, kuris yra „Rpi“meniu mygtukas, rutulio formos, kuri yra interneto naršyklė, aplankų mygtuką, kuris yra ….. aplankai ir galiausiai mygtukas su juodu ekrano langu, kuris yra svarbiausias bet kurios „Linux“sistemos mygtukas - komandų eilutė. pirmyn ir paspauskite tą mygtuką, pamatysite juodą langą.
Komandinė eilutė yra tai, kaip visi sąveikauja ir naudoja „Linux“sistemą, kaip ir „Windows“turi savo komandų eilutę tik našlėms, kurių mums nereikia naudoti labai dažnai. „Linux“sistemoje tai yra pagrindinis dalykas, kurį turi išmokti ir įvaldyti kiekvienas „Linux“vartotojas. komandinę eilutę gali naudoti…. KOMANDOS! tai, ką matote juodame lange, yra komandų eilutė, laukianti, kol vartotojas parašys komandą ir ją įvykdys. šiame vadove mes suteiksime visas komandas, kurių jums reikia šiam projektui atlikti, todėl nesijaudinkite.
pati pirmoji „Linux“komanda, kurią naudosime, yra dar viena konfigūravimo komanda, atkreipkite dėmesį, kad visos komandos nuo šiol bus dedamos į kodo laukelį, kad galėtumėte atskirti ją nuo įprastų veiksmų. Atsineškite klaviatūrą ir įveskite toliau pateiktą informaciją ir paspauskite „Enter“:
sudo raspi-config
Jei tai padarysite teisingai, pamatysite, kad ekranas tapo mėlynas, o viduryje yra pilka maža dėžutė (žr. Paveikslėlį). tai panaudosime galutinei konfigūracijai prieš pradėdami koduoti.
dabar, norėdami naršyti šiame meniu, turėsite naudoti klaviatūros rodyklių klavišus.
1-Eikite į sąsajos parinktis >> I2C >> TAIP >> paspauskite „Enter“. tai įgalina I2c ryšio protokolą, kad galėtume naudoti RTC
2-Eikite į Išplėstinės parinktys >> Išplėsti failų sistemą.
ir tai yra visa konfigūracija, kurios jums reikia šiame lange. pagrindiniame puslapyje eikite žemyn ir paspauskite „Enter“, kad užbaigtumėte ir „YES“, kad iš naujo paleistumėte sistemą.
Kai sistema baigs iš naujo paleisti, mes baigsime konfigūruoti! prietaisas paruoštas dideliems žingsniams! Kitas žingsnis bus įdiegti RTC modulį ir naudoti jį su sistema.
5 veiksmas: 2 skyrius: RTC modulio montavimas, konfigūravimas ir naudojimas
RTC (arba realaus laiko laikrodis) modulis yra mažas įrenginys, kuriame yra mažai baterijos, jis daro tai, ką reiškia pavadinimas, „Clocking“! taigi, atjungus jį nuo maitinimo, laikrodis ir toliau veikia ir nesustoja. kam mums to reikia? Na, „Raspberry pi“iš tikrųjų neturi jokio būdo saugoti laikrodžio duomenis, kai jis yra išjungtas, jis priklauso nuo prisijungimo prie interneto paleidžiant, kad atnaujintų datą ir laiką, tačiau problema yra ta, kad mes ne visada turime prieigą prie interneto, ir tai todėl mums reikia RTC modulio. RTC veiks kaip „aviečių pi“laikrodis, todėl paleidus „Rpi“, data ir laikas bus paimti iš RTC, todėl „RaspberryPi“laikas bus nuolat atnaujinamas.
yra keli modeliai ir ieškoma RTC, yra DS1307 ir DS3231. galite naudoti bet kurį RTC modulį, kurį rasite, jei jis turi I2C protokolo ryšį (galite nurodyti, kad ant modulio kaiščių galite rasti SDA ir SCL kaiščius.
kaip ir viskas šiame vadove, aš naudoju kitus vadovus, kad pasiekčiau savo projekto tikslą, šis nurodymas padės jums ir tiksliai pasakys, ką daryti, kad šis projektas būtų sukurtas, bet jei jums reikia pakeisti ar jums reikia daugiau informacijos žingsnius, kiekvieno žingsnio pabaigoje susieju vaisingesnį vadovą.
Kai paruošite RTC modulį (lituokite antraštės kaiščius ir įdėkite bateriją), galite jį prijungti prie „RapberryPi“kaiščių taip:
RTC PIN kodas ---------------- Rpi kaištis
GND ===========> PIN 6 (GND)
Vcc ============> PIN 1 (3.3V)
SDA ===========> PIN 3 (SDA)
SCL ===========> PIN 5 (SCL)
arba priklausomai nuo to, kokį RTC modulį gavote, galite jį pritvirtinti tiesiai prie „RaspberryPi“(įsitikinkite, kad kaiščiai yra teisingi !!!, jei ne, galite sugadinti „Rpi/RTC“)
Kai prijungsite RTC, sukonfigūruosime „Raspberry“.
6 veiksmas: 2-1: modulio sąranka
Prieš pradėdami eikite į komandų eilutę ir įveskite:
data
Tai grąžins dabartinę Raspberry datą ir laiką, atsižvelgs į šią labai naudingą komandą ir pažymės dabartinę datą ir laiką, kad galėtume patikrinti, ar modulis veikia, ar ne.
dabar, pradėkime sąranką, įveskite taip, kad atnaujintumėte Rpi bibliotekas, vieną eilutę vienu metu:
sudo apt-get atnaujinimas
sudo apt -get -y atnaujinimas
kai tai bus padaryta, turime modifikuoti sistemos failus, kad įjungtume „i2c“modulį, ir pridėti RTC, kad pakeistume failų sistemą, kurioje ketiname naudoti programinę įrangą, vadinamą „Nano“. „nano“yra lengva įmontuota programinė įranga, kuri iš esmės yra teksto redaktorius, kaip ir našlių. taigi bet kuri komanda, prasidedanti nano, o po to - failo pavadinimas, atidarys tą failą nano teksto rengyklėje. pastebėjote, kad mes taip pat naudojome tai, kas vadinama „Sudo“, trumpai tariant, „sudo“veikia kaip „Linux“sistemos užtikrinimas, nurodantis sistemai, kad tą komandą atlikęs vartotojas yra įrenginio savininkas, o ne kas nors kitas, ir suteikia tokias privilegijas kaip redagavimas/ ištrinti vartotojui. pavyzdžiui, jei atidarytume nano failą be sudo, galėtume peržiūrėti tą failą, bet negalime jo redaguoti ar ištrinti.
Dabar turime modifikuoti modulių failą, tai galime padaryti įvesdami:
sudo nano /etc /modules
Kai tai padarysite, rasite to failo turinį (žr. rodyklių klavišais perkelkite žymeklį į teksto pabaigą ir pridėkite:
snd-bcm2835
i2c-bcm2835 i2c-dev rtc-ds1307
paspauskite CTRL+S, kad išsaugotumėte, ir CTRL+X, kad išeitumėte
7 žingsnis: 2-2: I2C sąsaja
Dabar mes prijungėme RTC ir įgalinome „i2c“, sujunkime viską kartu.
į komandų eilutę įveskite:
i2cdetect -y 1
jums bus pateiktas tuščių tuščių rinkinys, tačiau pastebėsite, kad kažkur yra skaičius, tas skaičius yra jūsų RTC modulio adresas. mano atveju tai 68. įsidėmėkite tą skaičių. jei nematote to dviejų skaitmenų skaičiaus, tai reiškia, kad tikriausiai neteisingai prijungėte RTC.
Dabar turime pakeisti rc.local failą, kad galėtume įjungti RTC modulį įkrovos metu ir leisti jam išsaugoti datą ir laiką sistemoje. pirmiausia atidarykite rc.local failą:
sudo nano /etc/rc.local
Prieš exit0 eilutę pridėkite:
echo ds1307 0x68>/sys/class/i2c-adapter/i2c-1/new_device
hwclock -s
kur 0x68 yra jūsų įrenginio „i2c“adresas. Baigę paspauskite CTRL+S CTRL+X, tada iš naujo paleiskite sistemą:
sudo perkraukite
8 veiksmas: 2-3: RTC testavimas
Kai sistema bus paleista iš naujo, galime patikrinti, ar RTC veikia, ar ne. pirma, paleisk:
sudo hwclock -r
jums bus grąžinta data ir laikas RTC modulyje. jei jums duota kita, įsitikinkite, kad teisingai atlikote veiksmus.
dabar, norėdami pakeisti RTC laiką ir datą, pirmiausia turime pakeisti sistemos datą ir laiką, tada - RTC pakeitimus. Norėdami tai padaryti, paleiskite:
sudo data -s "1997 m. rugpjūčio 29 d. 13:00:00"
ir, žinoma, prieš paspausdami „Enter“, pakeiskite datą ir laiką pagal vietinį laiką ir datą. kai gausite laiką dešinėje Rpi, atlikite šiuos veiksmus, kad išsaugotumėte datą ir laiką RTC:
sudo hwclock -w
aaaa ir tiek! galite patikrinti, ar jis veikia iki hwclock -r ir pamatyti, ar RTC data yra teisinga, ar ne, tada atjunkite RPI nuo interneto ir kurį laiką išjunkite, tada vėl įjunkite ir pažiūrėkite, ar jis teisingas laikas ir data. Jūs baigėte!
Visą RTC modulio nustatymo vadovą rasite čia
www.raspberrypi-spy.co.uk/2015/05/adding-a-ds3231-real-time-clock-to-the-raspberry-pi/
9 veiksmas: 3 skyrius: „Azan“aliarmo programos sukūrimas
laikrodžio gamyba yra vienas dalykas, be abejo, mes galime pažvelgti į laikrodį ir maldos laikus ir pamatyti, kada ateis laikas, bet ar nebūtų dar GERIAU, jei galėtume pridėti garsinį žadintuvą, kuris praneštų mums apie maldos laikus? Dar GERIAU, mes tą žadintuvą skleidžiame kaip AZAN garsą! pažiūrėkime, kaip tai galime padaryti.
mūsų programavimui mes naudosime „python“kaip pageidaujamą programavimo kalbą, nes „python“puikiai tinka „RaspberryPi“. norėdami sukurti kodo failą „python“, mes darome tą patį, kaip atidaryti teksto failą, bet dabar išsaugome jį kaip.py. Norėdami paleisti programą, mums reikia „raspbery“įdiegtos „python“aplinkos, laimei, „Raspbian“yra iš anksto įdiegta „python“ir „python3“! todėl mums belieka tik programuoti. Šiame vadove mes nekalbėsime apie kalbą ir nemokysime jos veikimo bei funkcijų, bet duosiu jums reikiamus kodus, kad galėtumėte sukurti projektą.
Norėdami pradėti, mums reikia mūsų pageidaujamo azano garso garso failo (. Kai tik tai suprasite, įdėkite jį į atminties kortelę ir nukopijuokite ją į raspberrypi darbalaukį.
dabar mes turime failus, aš ieškojau būdo, kaip paleisti garso garso įrašą „RaspberryPi“ir, mano nuostabai, nebuvo daug būdų, kaip galėtume tai padaryti, bet radau šį atsakymą „stackoverflow“, kuris man davė tai, ko man reikėjo
stackoverflow.com/questions/20021457/playi…
Aš išbandžiau šį metodą ir jis veikė! Taigi pažiūrėkime, kaip galime įgyvendinti šį metodą savo projekte …
10 veiksmas: 3-1: paleiskime garsą
pirmiausia eikite į darbalaukį naudodami:
cd darbalaukis
tada sukurkite naują „Python“kodo failą:
sudo nano AzanPlay.py
tai padarys naują failą „AzanPlay“su plėtiniu „python“faile.py, turėsime tuščią juodą ekraną, kad galėtume parašyti savo kodą. tiesiog užsirašykite šias eilutes (būkite atsargūs, kad nepakeistumėte jokių įbrėžimų ar tarpų, nes tai Ypač svarbu „Python“):
iš „Pygame“importo maišytuvo
mixer.init () mixer.music.load ('/home/pi/Desktop/Adhan-Makkah.wav') mixer.music.play (), o mixer.music.get_busy () == Tiesa: tęsti
Kur / darbalaukyje / yra garso įrašų failai, o „Adhan-Makkah.wav“yra mano garso failas, kuris yra Azano garso įrašas makkah kalba.
dabar norėdami išbandyti savo kodą, paleisime jį naudodami „python“, įvesdami:
python AzanPlay.py
ir garsas skambės iš jūsų HDMI LCD arba AUX prievado, esančio „Raspberrypi“. jei negirdite to iš LCD garsiakalbių, prijunkite ausines prie AUX ir patikrinkite.
11 žingsnis: 3-2: gaukite maldos laiką
Kaip žinome, maldos laikas įvairiose žemės vietose skiriasi, ir net konkrečioje vietoje jis skiriasi per metus, tai reiškia, kad turime rasti būdą, kaip nuolat atnaujinti maldos laiką sistemoje, ir tam mums reikia specifinių ir labai sudėtingų funkcijų ir skaičiavimų, kad tai būtų teisinga. Laimei, mūsų brolis Hamidas Zarrabi-Zadehas visas funkcijas, kurių mums reikia, sujungė į vieną funkciją, kurią galime lengvai naudoti norėdami gauti laiko, priklausomai nuo mūsų buvimo vietos ir dabartinio laiko, NUOSTABU! biblioteką ir šaltinio failus galite rasti adresu
praytimes.org/
Taigi, mes naudosime šiuos nuostabius failus, kad gautume maldos laiką ir įdiegtume jį sistemoje. pirmiausia atsisiųskite kodus iš svetainės ir įdėkite juos į / adhan / aplanką (mums reikia ir JS, ir „Python“kodų).
Dabar eikime į tą aplanką ir išbandykime biblioteką ir ką ji gali padaryti:
cd adhan
ten turime sukurti naują bandomąjį failą „python“, kad galėtume išbandyti funkciją:
sudo nano testAd.py
viduje parašykite šį kodą:
importo maldos laikas
nuo datos ir laiko importo datos tmm = praytimes. PrayTimes (). getTimes (date.today (), [LONGTITUDE, LATITUDE], GMT) spausdinti (tmm)
Prieš išsaugodami failą, turite pakeisti LATITUDE pagal savo vietovės platumą, tą patį su LONGTITUDE ir pakeisti GMT į savo laiko juostą. mano atveju bus taip:
tmm = praytimes. PrayTimes (). getTimes (date.today (), [21.3236, 39.1022], 3)
spausdinti (tmm)
Galiausiai, CTRL-S ir CTRL-X, tada paleiskite kodą:
python testAd.py
pagaliau jums bus grąžintas šiandienos maldos laikas už jūsų vietą.
{'isha': '18: 58 ',' asr ': '15: 22', 'saulėlydis': '17: 43 ',' dhuhr ': '12: 17', 'maghrib': '17: 43 ', 'imsak': '05: 23 ',' midnight ': '00: 17', 'sunrise': '06: 52 ',' fajr ': '05: 33'}
Puiku! dabar, kai turime maldos laiką ir dabar žinome, kaip groti garsus, sujungkime šiuos du kodus į vieną pagrindinį kodą.
12 veiksmas: 3-3: galutinio Azano pavojaus kodo sudarymas
baigę du ankstesnius kodus, mes sužinojome, kaip tiksliai nustatyti maldos laiką pagal mūsų vietą ir kaip groti azano garsą. Dabar mes sujungsime šiuos du kodus į vieną kodą, kurį naudosime kaip galutinį projektą, ir šis kodas veiks fone, nes kai ateis Azano laikas, jis paleis Azano garsą.
Aš parašiau visą kodą, galite jį nukopijuoti ir įklijuoti bei atlikti pakeitimus, kaip jums atrodo tinkama. Kodas yra:
importo laikas
iš „pygame“importo maišytuvo importo eilutės importavimo praytimes nuo datos ir laiko importo datos, o (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 (), o mixer.music.get_busy () == Tiesa: tęskite, jei currTime == DHUHR: mixer.init () mixer.music.load ('/home/pi/Desktop/Adhan- Makkah.wav ') mixer.music.play (), o mixer.music.get_busy () == Tiesa: tęskite, jei currTime == ASR: mixer.init () mixer.music.load ('/home/pi/Desktop/ Adhan-Makkah.wav ') mixer.music.play (), o mixer.music.get_busy () == Tiesa: tęskite, jei currTime == MAGHRIB: mixer.init () mixer.music.load ('/home/pi/ Desktop/Adhan-Makkah.wav ') mixer.music.play (), o mixer.music.get_busy () == Tiesa: tęskite, jei currTime == ISHA: mixer.init () mixer.music.load ('/home/pi/Desktop/Adhan-Makkah.wav') mixer.music.play (), o mixer.music.get_busy () == Tiesa: tęsti
Jei pažvelgsite į kodą ir palyginsite jį su tuo, ką mes padarėme anksčiau, pamatysite, kad nieko daug naujo nepadarėme, iš pradžių įtraukėme reikalingas bibliotekas, o paskui atidarėme begalinę ciklą. cikle mes nuolat skaičiuojame maldų laiką pagal savo vietą ir laiko juostą, o visą rezultatą saugome kintamu tmm. tada mes išsaugome kiekvieną maldos laiką nuo tmm iki nepriklausomo kintamojo. tai leis mums palyginti laikus. Tada mes paimame sistemos laiką ir išsaugome jį nepriklausomame kintamajame. galiausiai mes nuolat lyginame sistemos laiką su maldos laikais, jei sistemos laikas sutampa su bet kuriuo maldos laiku, jis atkuria azano garsą.
13 veiksmas: 4 skyrius: stebėjimo veidų diegimas
Kad projektas atrodytų geriau, turėjau idėją prie LCD pridėti laikrodžio veidus, todėl vartotojui atrodo gražiai (bent jau geriau nei komandinė eilutė), todėl pasamdžiau dizainerį, kuris suprojektuos kelis veidus laikrodis, jis turėtų būti tuščias be jokių duomenų, nes duomenys turėtų būti pridėti per HTML, todėl laikrodžio dizainas bus fonas, o kiti duomenys, pvz., maldos laikas, gali būti pridėti kaip HTML elementai fono viršuje.
Deja, kol parašiau šią instrukciją, mano žinios ir patirtis HTML srityje yra labai ribotos, todėl daug detalių nediskutuosiu, nes žinau, kad viską darysiu ne taip, kaip aš nori suklaidinti žmones. bet jei turite net nedidelę patirtį JS ir HTML, turėtumėte žinoti, kaip tęsti nuo šio momento. iki šiol padariau vieną veidą (mėlyną). planas yra padaryti 14 laikrodžių veidų! 7 savaitės kasdieniai veidai, o dar 7 - kita tema. kaip pirmoji tema turėtų būti su „Azkar“riedėjimu, o kita tema turėtų turėti islamo GIF, o ne „Azkar“. Nepaisant to, į šį nurodymą įtraukiu visus dizainus, kad galėtumėte jį atsisiųsti.
14 žingsnis: 5 skyrius: Vartotojo sąsajos diegimas
Paskutiniame mūsų kelionės skyriuje atliksime keletą pasirinktinių pakeitimų, kad projektas taptų net patogus vartotojui, jei norime projektą įgyvendinti mečetėje ar bet kurioje viešoje vietoje. kaip minėjome anksčiau, kiekvienas miestas turi savo maldų laiką ir, kad šis projektas būtų prieinamas platesnei žmonių daliai, mes sukursime vartotojo sąsają, kad galėtume pasirinkti norimą miestą ir temą, kai įjungsime projektą.
Norėdami tai padaryti, mes naudosime „python“GUI biblioteką „TKinter“.
Tai kodas, kurį įdiegiau, kad galėčiau pasirinkti iš penkių Saudo Arabijos miestų, įskaitant Meką:
importuoti tkinter kaip tk
iš „tkinter import“* iš „tkinter import“ttk importo kodekų importas os klasės karl (kadras): def _init _ (self): tk. Frame._ init _ (self) self.pack () self.master.title („Azan Time“) self. button1 = Mygtukas (self, text = "Jeddah", height = 5, width = 80, command = self.open_jeddah1) self.button2 = Button (self, text = "Makkah", height = 5, width = 80, command = self.open_makkah1) self.button3 = Mygtukas (self, text = "Riyadh", height = 5, width = 80, command = self.open_riyadh1) self.button4 = Button (self, text = "Madina", height = 5, plotis = 80, komanda = self.open_madina1) self.button5 = Mygtukas (self, text = "Qasim", height = 5, width = 80, command = self.open_qasaim1) self.button1.grid (eilutė = 0, stulpelis = 1, stulpelių plotas = 2, lipnus = W+E+N+S) self.button2.grid (eilutė = 1, stulpelis = 1, stulpelių plotas = 2, lipnus = W+E+N+S) self.button3.grid (eilutė = 2, stulpelis = 1, stulpelių plotas = 2, lipnus = W+E+N+S) self.button4.grid (eilutė = 3, stulpelis = 1, stulpelių plotas = 2, lipnus = W+E+N+S) self.button5.grid (eilutė = 4, stulpelis = 1, stulpelių plotas = 2, lipnus = 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 ()
Kodas gali atrodyti didelis, tačiau jį redaguoti labai paprasta. mes iš esmės sukūrėme naują langą, įdėjome penkis vardų mygtukus ir nustatėme penkias funkcijas, kurios turi būti iškviestos kiekvieną kartą paspaudus mygtuką. kai tik paspausite mygtuką, programa atidarys atitinkamą HTML failą aplanke Miestai, kurį kiekvienas miesto HTML turi miesto koordinates, kai gauna laiko iš praytimes (). kai paspausite mygtuką, „Python“kodas parodys „Linux“kodą, kuriame jis atidarys HTML failą naudodami „chromium“naršyklę, ir turėsite paruoštą rodyti laikrodžio ekraną, įjungę viso ekrano parinktį.
15 veiksmas: (neprivaloma): garsiakalbio jungiklio pridėjimas
Kaip matėme, kai ateina maldos laikas, skamba „Azan“garsas, o garsas sklinda iš numatytojo garso išvesties (HDMI arba AV išvesties), ir kadangi mes jį įdedame į HDMI išvestį, garsas sklinda iš LCD. bet kas, jei mūsų LCD garso nepakanka? Pavyzdžiui, ką daryti, jei norime tai įgyvendinti tikroje mečetėje? su plačiais išoriniais garsiakalbiais? tada mes galime pridėti dar vieną LABAI paprastą žingsnį tam pasiekti. jau sukurtai garsiakalbių garso sistemai mums tereikia ją įjungti ir išjungti, paimti jau esamą mikrofoną ir pastatyti šalia LCD garsiakalbių.
Tai padaryti lengva. mes naudosime jau esantį mečetės mikrofoną, prijungtą prie garsiakalbio, mums tereikės „raspberryPi“, kad valdytume maitinimą, kuris įjungia ir išjungia visą garso sistemą. Norėdami tai padaryti, turėsime naudoti SSR: SOLID STATE RELAY. Šio tipo relės gali veikti kaip jungiklis, panašiai kaip vidutinė mėlyna relė, skirtumas yra tas, kad SSR gali atlaikyti didelį kintamosios srovės srovės stiprį, o tai netaikoma mėlynoms (paprastai ne daugiau kaip 10 A), o SSR reikia tik du laidai vietoj 3: DC+ ir DC- ir viskas! kitame SSR gale galime prijungti garsiakalbių sistemos maitinimo kabelį, tokiu būdu, kai SSR suteiksime įtampą, jis uždarys garsiakalbių sistemos kintamosios srovės grandinę arba išjungsime įtampą, kad sukurtume atvirą grandinę, išjungti garsiakalbius.
Yra vienas laimikis, „RaspberryPi“kaiščiai išleidžia 3.3v, o ne 5v, kuriuos turime valdyti SSR. todėl mums reikia tranzistoriaus, kad signalas būtų paimtas iš RPi kaiščio, ir 5V iš RPi 5v kaiščio. tam mums reikia:
1 kietojo kūno relė (viskas virš 25A yra gerai)
2-2n2222 npn tranzistorius
3-220 omų rezistorius
prijunkite prie fritavimo grandinės.
dabar į kodą pridėsime tam tikrų dalykų, dėl kurių tai veikia. pirma, prieš ciklo ciklą, pridėsime keletą eilučių GPIO kaiščiams inicijuoti:
Importavimo skiltyje pridėkite:
importuoti RPi. GPIO kaip GPIO
Prieš ciklo „ciklas“pridėkite:
GPIO.setmode (GPIO. BOARD) GPIO.setwarnings (False) relė = 40 GPIO.setup (ledPin, GPIO. OUT)
Dabar, kai ciklo metu, kiekvienai „Azan“komandai, turime įjungti relę, palaukti 10 sekundžių, baigti „Azan“grojimą ir tada išjungti relę. mums reikia pridėti tik dvi eilutes, pirmoji:
GPIO išėjimas (ledPin, GPIO. HIGH)
laikas. miegas (10)
tai turėtų būti pridėta po kiekvieno, jei teiginys (IDENTACIJA SVARBU!), kita eilutė:
GPIO išvestis (ledPin, GPIO. LOW)
Tai turėtų būti pridėta po eilutės „tęsti“. tai turėtų atrodyti kiekvieną kartą Azanui:
jei currTime == FAJR:
GPIO.output (ledPin, GPIO. HIGH) time.sleep (10) mixer.init () mixer.music.load ('/home/pi/Desktop/Adhan-fajr.wav') mixer.music.play () o mixer.music.get_busy () == Tiesa: tęsti GPIO.output (ledPin, GPIO. LOW)
Rekomenduojamas:
Groundhog Day žadintuvas: 12 žingsnių (su nuotraukomis)
„Groundhog Day“žadintuvas: „Groundhog Day“žadintuvą sudaro „Panasonic RC-6025“apverstas laikrodis, pakeistas taip, kad būtų paleistas garso įrašas iš filmo „Groundhog Day“, kai suskamba žadintuvas. Priežastis, kodėl sukūriau šį įrenginį, yra ta, kad „Groundhog Day“(tiek dieną ir filmas) surengė specifikacijas
Viskas viename skaitmeninis chronometras (laikrodis, laikmatis, žadintuvas, temperatūra): 10 žingsnių (su nuotraukomis)
Viskas viename skaitmeninis chronometras (laikrodis, laikmatis, žadintuvas, temperatūra): planavome sukurti laikmatį kitoms varžyboms, tačiau vėliau įdiegėme laikrodį (be RTC). Pradėję programavimą, susidomėjome įrenginiu pritaikydami daugiau funkcijų ir galiausiai pridėjome DS3231 RTC, kaip
Išmanusis žadintuvas: išmanusis žadintuvas, pagamintas naudojant „Raspberry Pi“: 10 žingsnių (su nuotraukomis)
Išmanusis žadintuvas: išmanusis žadintuvas, pagamintas naudojant „Raspberry Pi“: ar kada nors norėjote išmaniojo laikrodžio? Jei taip, tai yra sprendimas jums! Aš sukūriau išmanųjį žadintuvą, tai laikrodis, kuriuo galite pakeisti žadintuvo laiką pagal svetainę. Kai žadintuvas išsijungs, pasigirs garsas (švilpukas) ir 2 lemputės
„Vortex“laikrodis: „Infinity Mirror“rankinis laikrodis: 10 žingsnių (su nuotraukomis)
„Vortex Watch“: begalybės veidrodinis laikrodis: Šio projekto tikslas buvo sukurti nešiojamą begalybės veidrodžio laikrodžio versiją. Jis naudoja savo RGB šviesos diodus, norėdamas nurodyti laiką, priskirdamas valandas, minutes ir sekundes atitinkamai raudonai, žaliai ir mėlynai šviesai ir sutampa su šiais atspalviais
C51 4 bitų elektroninis laikrodis - medinis laikrodis: 15 žingsnių (su nuotraukomis)
C51 4 bitų elektroninis laikrodis - medinis laikrodis: šį savaitgalį turėjote šiek tiek laisvo laiko, todėl surinko šį 2,40 USD vertės 4 bitų „pasidaryk pats“elektroninį skaitmeninį laikrodį, kurį prieš kurį laiką nusipirkau iš „AliExpress“