Orodha ya maudhui:

Arduino RF Sensor Decoder: Hatua 5
Arduino RF Sensor Decoder: Hatua 5

Video: Arduino RF Sensor Decoder: Hatua 5

Video: Arduino RF Sensor Decoder: Hatua 5
Video: Lesson 101: Using IR Remote to control TV, AC Bulb with Relay, DC Motor and Servo Motor 2024, Julai
Anonim
Arduino RF sensorer avkodare
Arduino RF sensorer avkodare

Nyumba yangu ya awali ilikuja na mfumo wa usalama uliowekwa tayari ambao ulikuwa na sensorer za mlango, sensa ya mwendo, na jopo la kudhibiti. Kila kitu kilikuwa na waya ngumu kwenye sanduku kubwa la umeme kwenye kabati na kulikuwa na maagizo ya wiring simu ya mezani ili kupiga moja kwa moja ikiwa kuna kengele. Nilipojaribu kucheza nayo niligundua kuwa sensorer moja ya mlango haikuwekwa kabisa na nyingine ilikuwa ya vipindi kwa sababu ya mpangilio usiofaa. Sana kwa usanidi wa kitaalam uliowekwa kwenye kadi ya biashara ya kampuni ya usalama. Suluhisho langu wakati huo lilikuwa kununua kamera kadhaa za usalama wa mtandao na kengele ya usalama isiyo na waya.

Songea mbele leo na hiyo kengele isiyo na waya imekaa ndani ya sanduku kwenye basement yangu. Baada ya kupatikana kwangu kwa mpokeaji wa bei rahisi wa RF niliamua kuona ikiwa ninaweza kuamua ujumbe unaosambazwa na anuwai ya sensorer za kengele na vidokezo ambavyo ninavyo. Nilidhani kuwa kwa kuwa wote walifanya kazi na sanduku la kengele la bei rahisi kwamba lazima wote watumie muundo wa ujumbe huo huo na kitambulisho tofauti tu. Hivi karibuni niligundua kuwa zinafanana tu katika muundo wa jumla wa ujumbe. Kwa hivyo mradi huo ukaenda haraka kutoka kwa kitu kidogo na kupendeza sana.

Hatua ya 1: Moduli za Sensorer

Moduli za Sensorer
Moduli za Sensorer
Moduli za Sensorer
Moduli za Sensorer
Moduli za Sensorer
Moduli za Sensorer
Moduli za Sensorer
Moduli za Sensorer

Kama unavyoona kwenye picha hapo juu viboreshaji ni pamoja na sensorer wazi za milango, vifaa vya kugundua mwendo, vifaa vya mbali vya mkono, na kitufe kisichotumia waya kinachotumiwa kupanga sanduku la kengele. Kama inavyotokea, hakuna vifaa hivi viwili vinavyotumia urefu sawa wa usawazishaji au muda kidogo. Kawaida tu, isipokuwa urefu wa ujumbe, ni muundo wa msingi wa bits. Kila kidogo huchukua muda uliowekwa na tofauti kati ya sifuri na moja kuwa mzunguko wa ushuru wa sehemu za juu / chini.

Fomu nzuri ya mawimbi iliyoonyeshwa hapo juu SIYO niliyopokea kwanza. Kwa sababu kuna trafiki nyingi kwenye bendi ya masafa ya 433-MHz nililazimika kuhakikisha kuamilisha sensor kabla tu ya kuweka wigo wa kufanya kichocheo kimoja. Kwa bahati nzuri sensorer zinaweka nakala kadhaa za ujumbe wa data wakati zinapoamilishwa na viboreshaji na vitufe vinaendelea kutoa ujumbe kwa muda mrefu tu kitufe kinapobanwa. Kwa kutumia upeo niliweza kuamua urefu wa usawazishaji na muda wa data kidogo kwa kila kitu. Kama ilivyotajwa hapo awali, nyakati za usawazishaji ni tofauti na nyakati kidogo ni tofauti lakini muundo wa ujumbe wote una usawazishaji wa kiwango cha chini ikifuatiwa na bits 24 za data na kidogo ya kuacha. Hiyo ilitosha kwangu kuweza kuunda kiboreshaji cha jumla katika programu bila kulazimika kuweka nambari ngumu maelezo yote tofauti kwa kila kifaa.

Hatua ya 2: Vifaa

Vifaa
Vifaa
Vifaa
Vifaa

Awali niliunda kisimbuzi cha sensorer kwa kutumia kinadhibiti cha PIC na lugha ya kusanyiko. Nimekuwa nikicheza na anuwai za Arduino hivi karibuni kwa hivyo nilifikiri nitaona ikiwa ningeweza kuiga. Skimu rahisi imeonyeshwa hapo juu na pia kuna picha ya mfano wangu. Nilichofanya ni kutumia waya tatu za kawaida za kuruka kutoka Arduino Nano kwenda kwa bodi ya kupokea RF. Nguvu na laini moja ya data ndio yote inahitajika.

Ukisoma Agizo langu kwenye "3-in-1 Saa na Maonyesho ya Hali ya Hewa" utaona kuwa ninatumia mpokeaji wa kawaida wa RXB6, 433-MHz. Unaweza kupata wapokeaji wa bei rahisi kufanya kazi kwa anuwai fupi inayohitajika kwa mradi huu lakini bado ninapendekeza utumie mpokeaji wa heterodyne bora.

Hatua ya 3: Programu

Programu inabadilisha bits zilizopokelewa kuwa herufi zinazoonekana za ASCII. Inatoa thamani ya urefu wa usawazishaji, na urefu wa 1 na 0 bits. Kwa sababu tayari nilijua urefu wa usawazishaji na fomati kidogo, ningeweza kuwaandikia programu hiyo haswa. Badala yake, niliamua kuona ikiwa ningeweza kuiandika ili kutatua urefu wa usawazishaji na kubaini kiatomati data. Hiyo inapaswa kufanya iwe rahisi kurekebisha ikiwa ninataka kujaribu kugundua fomati zingine wakati fulani. Ni muhimu kutambua kwamba programu haijui ikiwa kidogo ya ujumbe ni 1 au 0. Inafikiria kuwa ni 1 lakini, ikiwa itafikiria kuwa inapaswa kuwa sifuri, itabadilisha bits kwenye ujumbe uliokamilishwa kabla ya kuipeleka bandari ya serial.

Nyakati za mapigo ya usawazishaji na bits za data zimedhamiriwa kwa kutumia pembejeo ya kukatiza ya nje ya INT0 ili kuchochea kidhibiti. INT0 inaweza kusababisha kuongezeka, kushuka, au kingo zote mbili, au kwa kiwango cha chini cha utulivu. Programu huingiliwa pande zote mbili na hupima muda ambao mapigo hubaki kuwa chini. Hiyo inarahisisha mambo kwa sababu ujumbe unaanza / usawazishaji ni mapigo ya kiwango cha chini na bits zinaweza kuamua kulingana na wakati wao wa kiwango cha chini.

Kidhibiti cha kukatiza huamua kwanza ikiwa hesabu iliyopigwa ni ndefu ya kutosha kuwa mapigo ya kuanza / kusawazisha. Vifaa anuwai ninazo hutumia kunde za usawazishaji wa 4, 9, 10, na 14 milliseconds. Taarifa za kufafanua kwa min / max zinazoruhusiwa kwa viwango vya usawazishaji ziko mbele kwenye programu na kwa sasa zimewekwa kwa milisekunde 3 na 16. Nyakati kidogo pia hutofautiana kati ya sensorer kwa hivyo algorithm ya kusimba bits inahitaji kuzingatia hilo. Wakati kidogo wa kwanza huokolewa kama ilivyo wakati wa biti inayofuata ambayo ina tofauti kubwa kutoka kwa kwanza. Ulinganisho wa moja kwa moja wa nyakati zinazofuata kidogo hauwezekani kwa hivyo "fudge factor" hufafanua ("Tofauti") hutumiwa. Kuamua kidogo huanza kwa kudhani kuwa data ya kwanza hurekodiwa kama mantiki 1. Thamani hiyo imehifadhiwa na kisha kutumiwa kujaribu bits zinazofuata. Ikiwa hesabu inayofuata ya data iko ndani ya dirisha la utofauti la thamani iliyohifadhiwa basi pia imerekodiwa kama mantiki 1. Ikiwa iko nje ya dirisha la utofauti la thamani iliyohifadhiwa basi imeandikwa kama mantiki 0. Ikiwa mantiki 0 wakati kidogo ni mfupi kuliko wakati wa kwanza kidogo basi bendera imewekwa ili kuambia programu kwamba ka inahitaji kugeuzwa kabla ya kuonyesha. Kesi pekee ambapo algorithm hii inashindwa ni wakati bits kwenye ujumbe ni zote za 0. Tunaweza kukubali upungufu huo kwa sababu ujumbe huo hauna maana.

Sensorer ninayovutiwa nazo zote zina urefu wa ujumbe wa bits 24 za data lakini programu haizuiliki kwa urefu huo. Kuna bafa ya hadi baiti saba (zaidi inaweza kuongezwa) na hufafanua urefu wa chini na upeo wa ujumbe katika ka. Programu imewekwa kukusanya bits, kuzibadilisha kuwa ka, kuzihifadhi kwa muda, na kisha kuzitoa kwa muundo wa ASCII kupitia bandari ya serial. Tukio ambalo husababisha pato la ujumbe huo ni kupokea mapigo ya kuanza / kusawazisha mpya.

Hatua ya 4: Uwekaji wa data

Kuingia kwa Takwimu
Kuingia kwa Takwimu

Programu imewekwa ili kutoa data iliyobadilishwa kama herufi za ASCII kupitia pato la serial (TX) la Arduino. Wakati nilifanya toleo la PIC nilihitaji kuunganishwa na programu ya wastaafu kwenye PC ili kuonyesha data. Faida moja ya Arduino IDE ni kwamba ina kazi ya Ufuatiliaji wa serial iliyojengwa ndani. Niliweka kiwango cha bandari ya serial kuwa 115.2k na kisha kuweka dirisha la Serial Monitor kwa kiwango sawa. Picha iliyopigwa hapa inaonyesha onyesho la kawaida na matokeo kutoka kwa sensorer kadhaa ambazo ninazo. Kama unavyoona, wakati mwingine data sio kamili lakini unaweza kuamua kwa urahisi ni nini thamani halisi ya kila sensa inapaswa kuwa.

Hatua ya 5: Programu ya Mpokeaji wa Mfano

Mfano wa Programu ya Mpokeaji
Mfano wa Programu ya Mpokeaji

Nimejumuisha orodha ya programu inayoonyesha jinsi unaweza kutumia habari iliyokusanywa kupokea seti maalum ya nambari za programu yako. Mfano huu umewekwa ili kuiga moja ya maduka yangu ya mbali ya Etekcity. Amri moja inawasha LED iliyojengwa kwenye Nano (D13) na amri nyingine inazima LED. Ikiwa huna taa iliyojengwa kwenye Arduino yako, kisha ongeza kontena na LED kama inavyoonyeshwa kwenye mchoro. Katika programu halisi, kazi hii ingewasha / kuzima umeme kwa duka la umeme (kwa kutumia relay au triac). Nyakati za usawazishaji, nyakati kidogo, na ka data zinazotarajiwa zote zimefafanuliwa mbele kwa urahisi wa urekebishaji. Unaweza kutumia laini yoyote ya data iliyobaki kuwasha / kuzima vitu, n.k kwa programu yako maalum. Ongeza tu nambari inayofaa ya nambari ya amri na ubadilishe mantiki ya kuzima / kuzima kwa "kitanzi" ili kukidhi mahitaji yako.

Ilipendekeza: