Სარჩევი:
- ნაბიჯი 1: სენსორული მოდულები
- ნაბიჯი 2: აპარატურა
- ნაბიჯი 3: პროგრამული უზრუნველყოფა
- ნაბიჯი 4: მონაცემთა აღრიცხვა
- ნაბიჯი 5: მიმღების პროგრამული უზრუნველყოფის ნიმუში
ვიდეო: Arduino RF სენსორის დეკოდირება: 5 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:17
ჩემს წინა სახლს გააჩნდა წინასწარ დაყენებული უსაფრთხოების სისტემა, რომელსაც ჰქონდა კარის სენსორები, მოძრაობის სენსორი და მართვის პანელი. ყველაფერი მჭიდროდ იყო შეკერილი კარადაში განთავსებულ ელექტრონიკის დიდ ყუთში და იყო მითითებები სახმელეთო ტელეფონის გაყვანილობის შესახებ, რომ სიგნალიზაციის შემთხვევაში ავტომატურად დარეკა. როდესაც ვცადე თამაში, აღმოვაჩინე, რომ კარის ერთ -ერთი სენსორი არასრულად იყო დამონტაჟებული, მეორე კი წყვეტილი იყო არასწორი განლაგების გამო. იმდენად პროფესიონალური ინსტალაცია, რომელიც დაცულია უსაფრთხოების კომპანიის სავიზიტო ბარათზე. იმ დროს ჩემი გამოსავალი იყო ინტერნეტ უსაფრთხოების რამდენიმე კამერის შეძენა და იაფი უკაბელო უსაფრთხოების სიგნალიზაცია.
დღევანდელი დღის წინ და ის უკაბელო სიგნალიზაცია ზის ჩემს სარდაფში. მას შემდეგ, რაც შევიძინე იაფი RF მიმღები, გადავწყვიტე ვნახო, შემიძლია თუ არა განგაშის სენსორებისა და დისტანციური მართვის საშუალებების მიერ გადაცემული შეტყობინებების გაშიფვრა. მე მივხვდი, რომ რადგან ისინი ყველა მუშაობდნენ იაფი სიგნალიზაციის ყუთთან, რომ მათ ყველამ უნდა გამოიყენოს ერთი და იგივე შეტყობინების ფორმატი მხოლოდ განსხვავებული პირადობის მოწმობით. მალევე აღმოვაჩინე, რომ ისინი მსგავსია მხოლოდ შეტყობინებების ზოგად სტრუქტურაში. ასე რომ, პროექტი სწრაფად ტრივიალურიდან ძალიან საინტერესო გახდა.
ნაბიჯი 1: სენსორული მოდულები
როგორც ხედავთ ზემოთ მოცემულ სურათებში გადამცემები მოიცავს კარის ღია სენსორებს, მოძრაობის დეტექტორებს, შეიარაღების პულტებს და უკაბელო კლავიატურას, რომელიც გამოიყენება სიგნალიზაციის ყუთის დასაპროგრამებლად. როგორც ირკვევა, ამ მოწყობილობებიდან ორი არ იყენებს სინქრონიზაციის ერთსა და იმავე სიგრძეს ან ბიტის ხანგრძლივობას. ერთადერთი საერთო, შეტყობინების სიგრძის გარდა, არის ბიტების ძირითადი ფორმატი. თითოეული ბიტი იკავებს განსაზღვრულ პერიოდს, განსხვავება ნულსა და ერთს შორის არის მაღალი/დაბალი ნაწილის სამუშაო ციკლი.
ზემოთ ნაჩვენები საკმაოდ ტალღოვანი ფორმა არ არის ის, რაც პირველად მივიღე. იმის გამო, რომ 433 MHz სიხშირის დიაპაზონში იმდენად დიდი ტრაფიკია, მე უნდა დავრწმუნდე, რომ გავააქტიურო სენსორი, სანამ არ შევძლებდი ერთი ტრიგერის გაკეთებას. საბედნიეროდ, სენსორები აგზავნიან მონაცემთა შეტყობინების რამდენიმე ასლს, როდესაც გააქტიურებულია და დისტანციური მართვის პულტი და კლავიატურა აგრძელებენ შეტყობინებების გამოშვებას მანამ, სანამ ღილაკს დააჭერთ. დიაპაზონის გამოყენებით შევძელი განვსაზღვრო სინქრონიზაციის სიგრძე და მონაცემთა ბიტის ხანგრძლივობა თითოეული ერთეულისთვის. როგორც უკვე აღვნიშნეთ, სინქრონიზაციის დრო განსხვავებულია და ბიტის დრო განსხვავებულია, მაგრამ შეტყობინების ფორმატებს აქვთ დაბალი დონის სინქრონიზაცია, რასაც მოყვება მონაცემთა 24 ბიტი და ერთი გაჩერების ბიტი. ეს ჩემთვის საკმარისი იყო იმისთვის, რომ შემეძლო გენერირებული პროგრამული უზრუნველყოფის დეკოდერის შექმნა პროგრამული უზრუნველყოფის გარეშე, თითოეული მოწყობილობის სხვადასხვა დეტალების მყარი კოდის გარეშე.
ნაბიჯი 2: აპარატურა
მე თავდაპირველად შევქმენი სენსორული დეკოდიორი PIC მიკროკონტროლერისა და ასამბლეის ენის გამოყენებით. მე არდუინოს ვარიანტებით ვთამაშობ ბოლო დროს, ასე მეგონა ვნახავდი თუ არა მისი გამეორება. მარტივი სქემატური ნაჩვენებია ზემოთ და ასევე არის ჩემი პროტოტიპის სურათი. ერთადერთი რაც მე გავაკეთე იყო სამი საერთო ჯამპერის მავთულის გამოყენება Arduino Nano– დან RF მიმღების დაფაზე გადასასვლელად. ძალა და ერთი მონაცემთა ხაზი არის ყველაფერი რაც საჭიროა.
თუ წაიკითხავთ ჩემს ინსტრუქციას "3-in-1 დროისა და ამინდის ჩვენებაზე" ნახავთ, რომ მე ვიყენებ საერთო RXB6, 433-MHz მიმღებს. თქვენ შეიძლება შეძლოთ მართლაც იაფი მიმღებები იმუშაოთ ამ პროექტისათვის საჭირო მცირე მანძილზე, მაგრამ მე მაინც გირჩევთ გამოიყენოთ სუპერ-ჰეტეროდინული მიმღები.
ნაბიჯი 3: პროგრამული უზრუნველყოფა
პროგრამული უზრუნველყოფა გარდაქმნის მიღებულ ბიტებს გადასატანი ASCII სიმბოლოებად. ის გამოაქვს სინქრონიზაციის სიგრძის მნიშვნელობა და 1 და 0 ბიტის სიგრძე. რადგან მე უკვე ვიცოდი სინქრონიზაციის სიგრძე და ბიტის ფორმატები, შემეძლო პროგრამული უზრუნველყოფა სპეციალურად მათთვის დამეწერა. სამაგიეროდ, მე გადავწყვიტე დამეწერა თუ არა ამის დაწერა სინქრონიზაციის სიგრძეების დასალაგებლად და მონაცემთა ბიტების ავტომატურად გასარკვევად. ამან უნდა გაადვილოს მოდიფიკაცია იმ შემთხვევაში, თუ მსურს სხვა ფორმატის გამოვლენა. მნიშვნელოვანია აღინიშნოს, რომ პროგრამულმა პროგრამამ არ იცის შეტყობინების პირველი ბიტი არის 1 თუ 0. ის ვარაუდობს, რომ ის არის 1, მაგრამ, თუ გაარკვევს, რომ ის უნდა ყოფილიყო ნული, ის გადაატრიალებს ბიტი დასრულებულ შეტყობინებაში სერიული პორტის გაგზავნამდე.
სინქრონიზაციის პულსის დრო და მონაცემთა ბიტი განისაზღვრება INT0 გარე შეწყვეტის შეყვანის გამოყენებით, რათა გამოიწვიოს შეფერხების დამმუშავებელი. INT0 შეიძლება გამოიწვიოს ასვლა, დაცემა ან ორივე კიდე, ან სტაბილურ დაბალ დონეზე. პროგრამული უზრუნველყოფა წყდება ორივე კიდეზე და ზომავს იმ დროს, როდესაც პულსი დაბალი რჩება. ეს ამარტივებს ნივთებს, რადგან შეტყობინების დაწყება/სინქრონიზაცია არის დაბალი დონის პულსი და ბიტების განსაზღვრა შესაძლებელია მათი დაბალი დონის მიხედვით.
შეფერხების დამმუშავებელი ჯერ განსაზღვრავს, არის თუ არა დაკავებული რაოდენობა საკმარისად გრძელი, რომ იყოს საწყისი/სინქრონიზებული პულსი. სხვადასხვა მოწყობილობები, რომლებიც მე მაქვს სინქრონიზაციის პულსი 4, 9, 10 და 14 მილიწამი. Min/max ნებადართული სინქრონიზაციის მნიშვნელობების განსაზღვრება წინაა პროგრამულ უზრუნველყოფაში და ამჟამად დადგენილია 3 და 16 მილიწამი. ცოტა დრო ასევე განსხვავდება სენსორებს შორის, ამიტომ ბიტების დეკოდირების ალგორითმმა უნდა გაითვალისწინოს ეს. პირველი ბიტის ბიტის დრო ინახება ისევე როგორც მომდევნო ბიტის დრო, რომელსაც აქვს მნიშვნელოვანი განსხვავება პირველი ბიტისგან. მომდევნო ბიტ -დროის პირდაპირი შედარება შეუძლებელია, ამიტომ გამოიყენება "fudge factor" ("ვარიაცია"). ბიტის გაშიფვრა იწყება იმის დაშვებით, რომ პირველი მონაცემთა ბიტი ყოველთვის ჩაწერილია როგორც ლოგიკა 1. ეს მნიშვნელობა ინახება და შემდეგ გამოიყენება შემდგომი ბიტების შესამოწმებლად. თუ შემდგომი მონაცემების ბიტების რაოდენობა შენახული მნიშვნელობის ვარიაციის ფანჯარაშია, ის ასევე ჩაწერილია როგორც ლოგიკა 1. თუ ის შენახული მნიშვნელობის ვარიაციის ფანჯრის მიღმაა, მაშინ ის ჩაწერილია როგორც ლოგიკა 0. თუ ლოგიკა 0 ბიტის დრო უფრო მოკლეა, ვიდრე პირველი ბიტი, შემდეგ დროშა არის მითითებული, რომ უთხრას პროგრამულ უზრუნველყოფას, რომ ჩვენების დაწყებამდე საჭიროა ბაიტების გადაბრუნება. ერთადერთი შემთხვევა, როდესაც ეს ალგორითმი ვერ ხერხდება არის, როდესაც შეტყობინების ბიტები 0 -ია. ჩვენ შეგვიძლია მივიღოთ ეს შეზღუდვა, რადგან ამგვარი შეტყობინება უაზროა.
სენსორები, რომლებიც მაინტერესებს, ყველას აქვს შეტყობინების სიგრძე 24 მონაცემთა ბიტი, მაგრამ პროგრამული უზრუნველყოფა არ შემოიფარგლება მხოლოდ ამ სიგრძით. არის ბუფერი შვიდ ბაიტამდე (შეიძლება დაემატოს მეტი) და განსაზღვრავს შეტყობინების მინიმალურ და მაქსიმალურ სიგრძეს ბაიტებში. პროგრამული უზრუნველყოფა შექმნილია იმისათვის, რომ შეაგროვოს ბიტები, გადააკეთოს ისინი ბაიტებად, შეინახოს დროებით და შემდეგ გამოიტანოს ASCII ფორმატში სერიული პორტის საშუალებით. მოვლენა, რომელიც იწვევს შეტყობინების გამომუშავებას, არის ახალი დაწყების/სინქრონიზაციის პულსის მიღება.
ნაბიჯი 4: მონაცემთა აღრიცხვა
პროგრამული უზრუნველყოფა შექმნილია მოაქციოს მონაცემები ASCII სიმბოლოების სახით Arduino– ს სერიული (TX) გამოყვანის საშუალებით. როდესაც გავაკეთე PIC ვერსია, მე მჭირდებოდა კომპიუტერთან დაკავშირება ტერმინალურ პროგრამასთან, მონაცემების ჩვენების მიზნით. Arduino IDE- ს ერთ -ერთი უპირატესობა ის არის, რომ მას აქვს სერიული მონიტორის ფუნქცია ჩაშენებული. მე სერიული პორტის მაჩვენებელი 115.2k- ზე დავაყენე და შემდეგ იმავე მაჩვენებლით სერიული მონიტორის ფანჯარა დავაყენე. აქ გადაღებული ეკრანი აჩვენებს ტიპურ ჩვენებას სხვადასხვა სენსორებიდან, რომლებიც მე მაქვს. როგორც ხედავთ, მონაცემები ზოგჯერ არ არის სრულყოფილი, მაგრამ თქვენ მარტივად შეგიძლიათ განსაზღვროთ რა უნდა იყოს თითოეული სენსორის რეალური მნიშვნელობა.
ნაბიჯი 5: მიმღების პროგრამული უზრუნველყოფის ნიმუში
მე შევიტანე პროგრამული უზრუნველყოფის ჩამონათვალი, რომელიც აჩვენებს, თუ როგორ შეგიძლიათ გამოიყენოთ შეგროვებული ინფორმაცია თქვენი პროგრამისთვის კოდების კონკრეტული ნაკრების მისაღებად. ეს მაგალითი შექმნილია ჩემი ერთ -ერთი Etekcity დისტანციური განყოფილების იმიტირებისთვის. ერთი ბრძანება ჩართავს ნანოში ჩაშენებულ LED- ს (D13) და მეორე ბრძანება გამორთავს LED- ს. თუ თქვენს არდუინოში არ არის ჩაშენებული LED, მაშინ დაამატეთ რეზისტორი და LED, როგორც ეს მოცემულია დიაგრამაში. რეალურ აპლიკაციაში ეს ფუნქცია ჩართავს/გამორთავს ელექტროსადენს (რელეს ან ტრიაკის გამოყენებით). სინქრონიზაციის დრო, ცოტა დრო და მონაცემების მოსალოდნელი ბაიტი წინასწარ არის განსაზღვრული მოდიფიკაციის გასაადვილებლად. თქვენ შეგიძლიათ გამოიყენოთ ნებისმიერი დარჩენილი მონაცემთა ხაზი, რომ ჩართოთ/გამორთოთ და ა.შ. თქვენი კონკრეტული პროგრამისთვის. უბრალოდ დაამატეთ მოქმედი ბრძანების კოდი და შეცვალეთ LED ჩართვის/გამორთვის ლოგიკა "მარყუჟში" თქვენი საჭიროებების შესაბამისად.
გირჩევთ:
LabDroid: მორსის კოდის კოდირება/დეკოდირება: 4 ნაბიჯი
LabDroid: მორსის კოდის კოდირება/დეკოდირება: შენიშვნა: ეს ინსტრუქცია არ შეიძლება განხორციელდეს 1: 1 LabDroid– ის უახლეს ვერსიაში. მე მას მალე განვაახლებ. ეს პროექტი გაჩვენებთ რისი გაკეთება შეგიძლიათ LabDroid– ით. ვინაიდან Hello World ჩვეულებრივ მზადდება ტექსტის, სინათლის ან ხმის საფუძველზე, მე ვიფიქრე LabDr– ისთვის
ორობითი ხე მორსის დეკოდირება: 7 ნაბიჯი (სურათებით)
ორობითი ხე მორსის დეკოდირება: a.articles {font-size: 110.0%; font-weight: bold; შრიფტის სტილი: დახრილი; ტექსტი-გაფორმება: არცერთი; background-color: red;} a.articles: hover {background-color: black;} ეს გასაგები განმარტავს, თუ როგორ უნდა გაიშიფროთ მორსის კოდი Arduino Uno R3.T გამოყენებით
როგორ გავაკეთოთ მარტივი DTMF (ტონი) ტელეფონის ხაზის დეკოდირება: 3 ნაბიჯი
როგორ გააკეთოთ მარტივი DTMF (ტონი) სატელეფონო ხაზის დეკოდირება: ეს არის მარტივი პროექტი, რომლის საშუალებითაც შეგიძლიათ გაშიფროთ DTMF სიგნალები ძირითადად ნებისმიერ სატელეფონო ხაზზე. ამ გაკვეთილში ჩვენ ვიყენებთ დეკოდერს MT8870D. ჩვენ ვიყენებთ წინასწარ აგებულ ტონის დეკოდერს, რადგან დამიჯერეთ, ეს არის ტკივილი უკანა ნაწილში, როდესაც ცდილობთ ამის გაკეთებას
RC5 დისტანციური მართვის პროტოკოლის დეკოდირება ბიბლიოთეკის გარეშე: 4 ნაბიჯი
RC5 დისტანციური მართვის პროტოკოლის დეკოდირება ბიბლიოთეკის გარეშე: rc5- ის დეკოდირებამდე ჯერ განვიხილავთ რა არის rc5 ბრძანება და როგორია მისი სტრუქტურა. ასე რომ, ძირითადად rc5 ბრძანება გამოიყენება დისტანციურ კონტროლში, რომლებიც გამოიყენება ტელევიზიებში, cd პლეერებში, d2h, სახლის კინოთეატრის სისტემებში და ა.შ. მას აქვს 13 ან 14 ბიტი მოწყობილი
IR დისტანციური დეკოდირება ARDUINO– ს გამოყენებით .: 4 ნაბიჯი (სურათებით)
IR დისტანციური დეკოდირება ARDUINO– ს გამოყენებით: ეს არის კიდევ ერთი მოსახერხებელი სახელმძღვანელო, რომელიც ქმნის ძალიან მარტივ IR დისტანციურ დეკოდერს Arduino და IR მიმღების გამოყენებით. ეს გაკვეთილი მოიცავს ყველაფერს პროგრამული უზრუნველყოფის დაყენებიდან IR მიმღების გამოყენებამდე და სიგნალების გაშიფვრით. ეს