Mundarija:
- 1 -qadam: Sensor modullari
- 2 -qadam: Uskuna
- 3 -qadam: dasturiy ta'minot
- 4 -qadam: ma'lumotlarni ro'yxatga olish
- 5 -qadam: namuna oluvchi dasturiy ta'minoti
Video: Arduino RF sensori dekoderi: 5 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
Mening oldingi uyim eshik sensori, harakat sensori va boshqaruv paneli bo'lgan oldindan o'rnatilgan xavfsizlik tizimiga ega edi. Hamma narsa shkafdagi katta elektron qutiga ulangan edi va signal berilganda avtomatik ravishda qo'ng'iroq qilish uchun shahar telefonini ulash bo'yicha ko'rsatmalar bor edi. Men u bilan o'ynashga urinib ko'rganimda, eshik sensorlaridan biri to'liq o'rnatilmagan, ikkinchisi noto'g'ri hizalanish tufayli uzilib qolgan. Xavfsizlik kompaniyasining tashrif qog'ozida yozilgan professional o'rnatish uchun juda ko'p. O'sha paytda mening yechimim bir nechta internet xavfsizlik kameralari va arzon simsiz xavfsizlik signalini sotib olish edi.
Bugungi kunga va simsiz signal mening podvalimdagi qutida o'tiribdi. Arzon chastotali radio qabul qilgichni sotib olgandan so'ng, men signal sensorlar va masofadan boshqarish pultlari orqali uzatiladigan xabarlarni dekodlash mumkinmi yoki yo'qligini aniqlashga qaror qildim. Menimcha, ularning hammasi arzon signal qutisi bilan ishlaganligi uchun, ular bir xil xabarlar formatini boshqa identifikator bilan ishlatishi kerak. Tez orada bildimki, ular faqat xabarlarning umumiy tuzilishida o'xshash. Shunday qilib, loyiha tezda ahamiyatsizdan juda qiziqarli bo'lib ketdi.
1 -qadam: Sensor modullari
Yuqoridagi rasmlarda ko'rib turganingizdek, transmitterlarga eshikni ochish sensori, harakat detektori, qurolni boshqarish pulti va signal qutisini dasturlash uchun ishlatiladigan simsiz klaviatura kiradi. Ma'lum bo'lishicha, ushbu qurilmalarning ikkalasi ham bir xil sinxronizatsiya yoki bit davomiyligini ishlatmaydi. Xabar uzunligidan boshqa yagona umumiylik - bu bitlarning asosiy formati. Har bir bit ma'lum bir vaqt oralig'ini oladi va nol va bittaning farqi yuqori/past qismlarning ish tsikli hisoblanadi.
Yuqorida ko'rsatilgan chiroyli to'lqin shakli men birinchi qabul qilganim emas. 433 MGts chastotali diapazonda trafik juda ko'p bo'lgani uchun, men bitta tetikni ishga tushirish doirasini belgilashdan oldin, sensorni faollashtirishga ishonch hosil qilishim kerak edi. Yaxshiyamki, sensorlar ma'lumotlar xabarining bir nechta nusxasini ishga tushiradi va masofadan boshqarish pultlari va klaviatura tugma bosilganda xabarlarni chiqarishda davom etadi. Maydondan foydalanib, men sinxronizatsiya uzunligini va har bir element uchun ma'lumotlarning bit vaqtini aniqlay oldim. Yuqorida aytib o'tganimizdek, sinxronizatsiya vaqtlari boshqacha va bit vaqtlari boshqacha, lekin xabar formatlari past darajadagi sinxronizatsiyaga ega, so'ngra 24 ta ma'lumotlar biti va bitta to'xtash biti. Bu har bir qurilma uchun har xil tafsilotlarni qattiq kodlamasdan dasturiy ta'minotda umumiy dekoderni yaratishim uchun etarli edi.
2 -qadam: Uskuna
Men dastlab PIC mikrokontroller va yig'ish tili yordamida datchik dekoderini qurdim. Men yaqinda Arduino variantlari bilan o'ynadim, shuning uchun uni takrorlay olamanmi, deb o'yladim. Oddiy sxema yuqorida ko'rsatilgan va mening prototipimning surati ham bor. Men faqat Arduino Nano -dan RF qabul qilish platasiga o'tish uchun uchta oddiy o'tish simini ishlatishim kerak edi. Quvvat va bitta ma'lumot liniyasi kerak.
Agar siz "Mening yo'riqnomam" ni "Vaqt va ob-havoni 3-in-1da" o'qiganingizda, men umumiy RXB6, 433-MGtsli qabul qilgichdan foydalanayotganimni ko'rasiz. Siz haqiqatan ham arzon qabul qiluvchilarni ushbu loyiha uchun zarur bo'lgan qisqa diapazonda ishlashiga olib kelishingiz mumkin, lekin men baribir super heterodinli qabul qilgichdan foydalanishni tavsiya qilaman.
3 -qadam: dasturiy ta'minot
Dastur qabul qilingan bitlarni ko'rsatiladigan ASCII belgilariga o'zgartiradi. U sinxronizatsiya uzunligini va 1 va 0 bit uzunliklarini chiqaradi. Men sinxronizatsiya uzunligini va bit formatlarini allaqachon bilganim uchun dasturiy ta'minotni ular uchun maxsus yozgan bo'lardim. Buning o'rniga, men sinxronizatsiya uzunligini saralash va ma'lumotlar bitlarini avtomatik ravishda aniqlash uchun yozishim mumkinmi, ko'rishga qaror qildim. Agar men boshqa formatlarni aniqlashga harakat qilmoqchi bo'lsam, bu o'zgartirishni osonlashtiradi. Ta'kidlash joizki, dasturiy ta'minot xabarning birinchi biti 1 yoki 0 ekanligini bilmaydi, lekin u 1 deb taxmin qiladi, lekin agar u nol bo'lishi kerakligini aniqlasa, u teskari bo'ladi. bitli xabarni ketma -ket portni yuborishdan oldin.
Sinxronizatsiya pulsining vaqti va ma'lumotlar bitlari INT0 tashqi uzilish usuli yordamida uzilish ishlovchisini ishga tushirish orqali aniqlanadi. INT0 ko'tarilish, tushish yoki har ikki qirrada ham, past darajadagi ham tetik bo'lishi mumkin. Dastur ikkala chekkada ham uzilib qoladi va puls past bo'lgan vaqtni o'lchaydi. Bu ishni soddalashtiradi, chunki xabarni boshlash/sinxronlashtirish past darajadagi pulsdir va bitlarni past darajadagi vaqtiga qarab aniqlash mumkin.
To'xtatish ishlovchisi birinchi navbatda, olingan sonning boshlang'ich/sinxronlash pulsiga etarlicha uzunligini aniqlaydi. Menda mavjud bo'lgan turli xil qurilmalarda 4, 9, 10 va 14 millisekundlik sinxron impulslar ishlatiladi. Sinxronizatsiyaning ruxsat etilgan min/max qiymatlari uchun tavsiflar dasturiy ta'minot oldida joylashgan va hozirda 3 va 16 millisekundlarga o'rnatilgan. Bit vaqtlari ham sensorlar orasida farq qiladi, shuning uchun bitlarni dekodlash algoritmi buni hisobga olishi kerak. Birinchi bitning bit vaqti birinchi bitdan sezilarli farq qiladigan keyingi bitning vaqti kabi saqlanadi. Keyingi bit vaqtlarini to'g'ridan -to'g'ri taqqoslash mumkin emas, shuning uchun "fudge omil" ta'rifi ("Variatsiya") ishlatiladi. Bitni dekodlash birinchi ma'lumotlar biti har doim mantiq sifatida yoziladi deb taxmin qilishdan boshlanadi. Bu qiymat saqlanadi va keyinchalik keyingi bitlarni sinash uchun ishlatiladi. Agar keyingi ma'lumotlar biti saqlangan qiymatning dispersiya oynasida bo'lsa, u ham mantiq 1 sifatida yoziladi. Agar u saqlangan qiymatning dispersiya oynasidan tashqarida bo'lsa, u 0 mantiq sifatida yoziladi. bit vaqti birinchi bit vaqtidan ko'ra qisqaroq, keyin bayroq ko'rsatiladi, bu esa baytni ko'rsatishdan oldin teskari o'girish kerakligini bildiradi. Bu algoritm muvaffaqiyatsizlikka uchragan yagona holat - bu xabardagi bitlarning hammasi 0 bo'lsa. Biz bu cheklovni qabul qila olamiz, chunki bunday xabar ma'nosiz.
Menga qiziqadigan sensorlar 24 bitli xabar uzunligiga ega, lekin dasturiy ta'minot bu uzunlik bilan chegaralanmagan. Etti baytgacha bufer mavjud (ko'proq qo'shilishi mumkin) va baytlarda minimal va maksimal xabar uzunligini belgilaydi. Dastur bitlarni yig'ish, ularni baytlarga aylantirish, vaqtincha saqlash va keyin ketma -ket port orqali ASCII formatida chiqarish uchun mo'ljallangan. Xabarning chiqishiga turtki beradigan voqea - bu yangi boshlash/sinxronlashtirish pulsining olinishi.
4 -qadam: ma'lumotlarni ro'yxatga olish
Dastur Arduino -ning ketma -ket (TX) chiqishi orqali konvertatsiya qilingan ma'lumotlarni ASCII belgilar sifatida chiqarish uchun sozlangan. Men PIC versiyasini yaratganimda, ma'lumotlarni ko'rsatish uchun kompyuterdagi terminal dasturiga ulanishim kerak edi. Arduino IDE -ning bir afzalligi shundaki, u Serial Monitor funktsiyasiga ega. Men ketma -ket port tezligini 115.2k ga o'rnatdim va keyin Serial Monitor oynasini xuddi shu tezlikka qo'ydim. Bu erdagi skrinshotda menda mavjud bo'lgan turli xil sensorlardan chiqadigan odatiy displey ko'rsatilgan. Ko'rib turganingizdek, ma'lumotlar ba'zida mukammal emas, lekin har bir sensorning haqiqiy qiymati qanday bo'lishini osongina aniqlash mumkin.
5 -qadam: namuna oluvchi dasturiy ta'minoti
Men sizning ilovangiz uchun ma'lum kodlar to'plamini olish uchun to'plangan ma'lumotlardan qanday foydalanishingiz mumkinligini ko'rsatadigan namuna dasturiy ta'minot ro'yxatini qo'shdim. Bu misol Etekcity -dagi masofaviy savdo nuqtalarimdan biriga taqlid qilish uchun o'rnatilgan. Bir buyruq nano (D13) ga o'rnatilgan LEDni yoqadi, ikkinchisi esa LEDni o'chiradi. Agar sizda Arduino -ga o'rnatilgan LED bo'lmasa, diagrammada ko'rsatilgan qarshilik va LEDni qo'shing. Haqiqiy dasturda bu funksiya elektr rozetkasining quvvatini yoqadi/o'chiradi (o'rni yoki triak yordamida). O'zgartirish qulayligi uchun sinxronizatsiya vaqtlari, bit vaqtlari va kutilgan ma'lumotlar baytlari oldindan belgilanadi. Qolgan ma'lumotlar liniyalaridan har birini maxsus ilovangiz uchun narsalarni yoqish/o'chirish uchun ishlatishingiz mumkin. O'zingizning ehtiyojlaringizga mos keladigan "halqa" dagi LEDni yoqish/o'chirish mantig'ini belgilaydigan amaldagi buyruq kodini qo'shing.
Tavsiya:
Arduino bilan DIY nafas olish sensori (Supero'tkazuvchilar trikotaj sensori): 7 qadam (rasmlar bilan)
Arduino bilan DIY nafas olish sensori (Supero'tkazuvchilar trikotaj sensori): Bu DIY sensori o'tkazgichli trikotaj cho'zish sensori shaklini oladi. U ko'kragingizni/oshqozoningizni o'rab oladi, va ko'kragingiz/oshqozoningiz kengayib, qisqarganda sensori ham, shuning uchun Arduino -ga uzatiladigan kirish ma'lumotlari ham kengayadi. Shunday qilib
Kutubxonasiz RC5 masofadan boshqarish protokoli dekoderi: 4 qadam
Kutubxonasiz RC5 masofadan boshqarish protokoli dekoderi: rc5 -ni dekodlashdan oldin biz avval rc5 buyrug'i nima va uning tuzilishi nima ekanligini muhokama qilamiz. asosan rc5 buyrug'i televizorlar, cd pleerlar, d2h, uy teatri tizimlarida va boshqalarda ishlatiladigan masofadan boshqarish pultlarida ishlatiladi, u 13 yoki 14 bitli
Mini qamish sensori bilan RaspberryPi 3 magnit sensori: 6 qadam
Mini qamish sensori bilan RaspberryPi 3 magnit sensori: Ushbu yo'riqnomada biz RaspberryPi 3. yordamida IOT magnit sensori yaratamiz. Sensor diodli va signalli signaldan iborat bo'lib, ularning ikkalasi ham magnitni mini qamish sensori sezganda yonadi
Mening eshikimda kim bor? PIR harakat sensori/diapazon sensori loyihasi: 5 qadam
Mening eshikimda kim bor? PIR harakat sensori/diapazon sensori loyihasi: Bizning loyihamiz PIR va masofa sensori orqali harakatni sezishga qaratilgan. Arduino kodi foydalanuvchiga yaqin bo'lganini bildirish uchun vizual va audio signal chiqaradi. MATLAB kodi foydalanuvchiga kimdir yaqinligini bildirish uchun elektron pochta xabarini yuboradi
Basys 3 Morze dekoderi: 11 qadam
Basys 3 Morse Decoder: Bu kollej sinfiga mo'ljallangan loyiha. Bu loyiha VHDLda Vivado deb nomlangan dasturda yozilgan. Basys 3 taxtasi yordamida Morze dekoderini amalga oshirish uchun zarur bo'lgan barcha modullarni yaratish vazifalari. Kengash birdaniga Morse kodini olish uchun ishlatiladi