Sisällysluettelo:
Video: Langaton kellojärjestelmä: 6 vaihetta (kuvilla)
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Projektin korjaava ongelma on seuraava: lukiossa, jossa työskentelen, luokanvaihtokello ei kuulosta tarpeeksi kovalta kaikkialla ja joskus se aiheuttaa ongelmia. Asenna uudet langalliset luokanvaihtokellot tai osta langaton kellojärjestelmä. Tällä hetkellä se ei ole mahdollista.
Tämä projekti voi olla hyödyllinen myös kaikille, joiden on toistettava pääkello laajalla alueella ilman, että asennetaan langallinen tai langaton järjestelmäkello, joka ei kuluta paljon rahaa ja tietysti itse.
Kun mietin ratkaisua ja etsin samanlaisia projekteja, löysin seuraavat ohjeet täältä: Langaton ovikellolähetin ja Langaton ovivastaanotin. Siellä oli mitä tarvitsin, mutta PIC -mikrokontrollerien käytön sijaan olen päättänyt käyttää Arduinon mikro -ohjaimia ja sen komponentteja.
Joten ehdotin lukion rehtorille yksinkertaista ja helppoa ratkaisua: rakentaa langaton luokanvaihtosoitin. Ratkaisu on asentaa luokanmuutoskelloon suljettu laite, jossa on äänentunnistin, jota ohjaa mikro-ohjain, joka lähettää signaalin muille kelloilla oleville vastaanottimille, kun luokanvaihtokello soi. Se on helppoa ja halpaa.
Katso alta ratkaisu, jolla se toteutettiin ja miten se toimii.
Vaihe 1: Materiaaliluettelo
Toteutettu ratkaisu perustuu isäntä/orja -malliin, jossa isäntäasema tai lähetinasema on asennettu lähelle pääluokan muutettua kelloa ja orjat tai vastaanottimet on asennettu eri paikkoihin. Tässä projektissa olemme määrittäneet äänianturiaseman ja vain yhden kellon toistimen, mutta on mahdollista määrittää lisää. Aluksi järjestelmä on konfiguroitu viidelle vastaanotinasemalle, mutta voit muokata sitä.
Lähetysaseman materiaali on siis seuraava:
- NANO -levy
- NANO -laajennuslevy
- NRF24L01 -sovitin
- NRF24L01 + antenni
- Äänianturin ilmaisin
- 5V, 3W virtalähde
ja kunkin vastaanottimen asema:
- NANO -levy
- NANO -laajennuslevy
- NRF24L01 -sovitin
- NRF24L01 + antenni
- Rele
- Bell
- 5V, 3W virtalähde
Vaihe 2: Vastaanotinaseman liittäminen ja ohjelmointi
Vastaanotin kuuntelee jatkuvasti langatonta verkkoa odottaen lähettimen lähettämää aktivointisignaalia manuaalisesti tai automaattisesti pääkellon soidessa. Kun signaali vastaanotetaan, se aktivoi releen toissijaisen kellon kytkemiseksi.
Vaihe 3: Lähettimen liittäminen ja ohjelmointi
Lähetinasema mittaa jatkuvasti äänitasoa käyttämällä pääkellon lähelle asennettua äänianturia havaitakseen, milloin se soi. Pääkellon soidessa se lähettää aktivointisignaalin kaikille vastaanottimille. Lisäksi olen asentanut painikkeen, joka lähettää aktivointisignaalin manuaalisesti, jos pääkello on poissa käytöstä. Kun painiketta painetaan, asema lähettää sen.
Vaihe 4: Lähettimen aseman määrittäminen
Kuten kuvasta 2 näkyy, mitat ennen ja jälkeen pääkellon soiton ovat vakaat (150, 149, 151, 149, …), mutta kun pääkello soi, analogiset mittaukset muuttuvat välillä 95 ja 281. Luonnos Olen ohjelmoinut (katso kuvat 2 ja 3) havaitsee automaattisesti vakaan mittausmittarin ja lähettää signaalin vastaanottoasemille, kun vakaan arvon ja nykyisen mittauksen välinen ero absoluuttisessa arvossa ylittää kiinteän kynnyksen ja pysyy useita lukemia.
Tässä projektissa tämä arvo on kiinteä 4 (4% korkeampi tai pienempi vakaa arvo), kuten alla olevasta koodista näkyy.
Voit määrittää tämän arvon seuraavasti:
- Sinun on rakennettava lähetinasema äänianturilla ja asennettava se postikellon lähelle (kuva 1 tai kuva 4)
- Lataa ja lataa luonnos "lähetin.ino" (katso edellinen vaihe)
-
Testaa, palaako merkkivalo kellon soidessa.
- Jos merkkivalo ei pala, sinun on muutettava kynnystä ("min_threshold_to_send_signal" alla olevassa koodissa) säätääksesi äänianturin kellosi mukaan ja toista testi..
- Jos merkkivalo palaa useiden kokeilujen jälkeen, kun kello soi, ja sammuu, kun se ei soi, olet määrittänyt asetukset.
Voit tarvittaessa muuttaa kahden mittauksen välistä viiveaikaa ("delay_between_reads") tai maksimitason äänikynnystä huomioidaksesi saman tason äänen ("max_threshold_to_consider_same_value").
#define delay_between_reads 200
float min_threshold_to_send_signal = 4.0; float max_threshold_to_consider_same_value = 1.0;