Სარჩევი:

გატეხეთ თქვენი ავტოფარეხის კარი: 5 ნაბიჯი
გატეხეთ თქვენი ავტოფარეხის კარი: 5 ნაბიჯი

ვიდეო: გატეხეთ თქვენი ავტოფარეხის კარი: 5 ნაბიჯი

ვიდეო: გატეხეთ თქვენი ავტოფარეხის კარი: 5 ნაბიჯი
ვიდეო: შეიტყვეთ ლანდშაფტის მხატვრობის ყველა საიდუმლოება. 2024, ივლისი
Anonim
გატეხე შენი ავტოფარეხის კარი
გატეხე შენი ავტოფარეხის კარი
გატეხე შენი ავტოფარეხის კარი
გატეხე შენი ავტოფარეხის კარი
გატეხე შენი ავტოფარეხის კარი
გატეხე შენი ავტოფარეხის კარი

ვინ არასოდეს ოცნებობდა სახლში წასულიყო მხოლოდ ტელეფონის აპლიკაციით, ან შეძლებოდა მონაცემების ტრამვაის მოსმენა და გადაწერა? ბედნიერი ვარ, რომ შემიძლია გაგიზიაროთ ის, რაც მივხვდი და როგორ მოვიქეცი. მე დავიწყე ეს პროექტი მას შემდეგ, რაც მეორედ დამავიწყდა ჩემი გასაღებები…

რა თქმა უნდა, კოდირება, მოდულაციის ტიპი, ოპერატორის სიხშირე, bluetooth კავშირის ინფორმაცია და მონაცემები, რომლებიც მე ვაჩვენებ მაგალითში, არ არის ორიგინალები, მირჩევნია არ მყავდეს ვიზიტორები;-).

ეს პროგრამა ვრცელდება ნებისმიერ ობიექტზე, რომელსაც შეუძლია მიიღოს ციფრული ინფორმაცია ელექტრომაგნიტური ტალღებით (ავტოფარეხის კარი, მანქანა, რამდენიმე საკეტი…). მთელი სისტემა შედგება ობიექტისგან, რომელიც დაკავშირებულია Bluetooth– ით ტელეფონთან, ამ ობიექტს შეუძლია გაგზავნოს იგივე ჩარჩოები, როგორც დისტანციური, რომელიც დაკავშირებულია იმასთან, რისი გატეხვაც გვინდა. მე მოვათავსე ეს ობიექტი ჩემს ავტოფარეხში და შემიძლია მასთან დაკავშირება გარედან.

ნაბიჯი 1: აღჭურვილობა

აღჭურვილობა
აღჭურვილობა
აღჭურვილობა
აღჭურვილობა

გამოყენებული ენები: C ++, MATLAB, Typescript, C, html.

ციფრული ელექტრონიკისა და ტელეკომუნიკაციის/სიგნალის დამუშავების ძირითადი ცოდნა.

ღირებულება: 35 დოლარზე ნაკლები.

ტექნიკის მოთხოვნები:

- NooELEC NESDR: მონაცემების გადასაღებად. ეს ძალიან იაფი მოდული ასრულებს ციფრულ დემოდულაციას, შესაბამისად მისი მაღალი პორტაბელურობა. ეს მოდელი თავსებადია MATLAB– თან. ($ 18.95)

www.nooelec.com/store/sdr/sdr-receivers/nes…

- Wemos Lolin32 lite: ეს esp32 არის იაფი მიკროკონტროლი, აღჭურვილი Wifi და Bluetooth. ჩვენ არ გამოვიყენებთ Wifi- ს ამ აპლიკაციაში, მაგრამ ეს დიდწილად წარმოსადგენია. ($ 4.74)

wiki.wemos.cc/products:lolin32:lolin32_lit…

- CDSENET cc1101: ეს რადიო გადამცემი გვაძლევს უკიდურეს მოქნილობას, არჩეული გადამზიდავი სიხშირიდან მოდულაციის ტიპამდე. ($ 2.63)

www.aliexpress.com/item/2PC-Lot-E07-868MS1…

- მავთულები, სათაურები, შედუღების მოწყობილობა, 3.7V ლიპო ბატარეა ავტონომიისთვის, შესაძლოა ოსცილოსკოპი და/ან ლოგიკური ანალიზატორი გამართვისთვის და სხვათა შორის, სმარტფონი…

პროგრამული უზრუნველყოფის მოთხოვნები:

- MATLAB/Simulink: მონაცემების გადასაღებად. შეიძლება გამოყენებულ იქნას სხვა უფასო ალტერნატიული პროგრამები, როგორიცაა Audacity მონაცემთა ვიზუალიზაციისთვის. (ლიცენზია)

fr.mathworks.com/products.html?s_tid=gn_ps

- esp-idf ინსტრუმენტთა ქსელი: ეს იქნება გამოყენებული esp32 პროგრამირებისთვის. არდუინოს იდეის გამოყენებაც შესაძლებელია, მაგრამ ის არ იძლევა იმდენ თავისუფლებას, რამდენსაც ჩვენ გამოვიყენებთ. (უფასო)

esp-idf.readthedocs.io/ka/latest/get-starte…

- TI SmartRF Studio: ეს დაგვეხმარება cc1101 რეგისტრების კონფიგურაციაში, ჩვენი სპეციფიკაციების შესაბამისად. (უფასო)

www.ti.com/tool/SMARTRFTM-STUDIO

- იონური: აპლიკაციის შესაქმნელად. თქვენ შეგიძლიათ აირჩიოთ მშობლიური პროგრამების შექმნის არჩევანი, მაგრამ Ionic გვაძლევს საშუალებას გავუშვათ ჩვენი აპლიკაცია როგორც Android, ასევე IOS მოწყობილობებზე, მხოლოდ კოდით. ჩვენს შემთხვევაში წარმოდგენა არ იძებნება. (უფასო)

ionicframework.com/

- შენი საყვარელი იდეა …

ნაბიჯი 2: დისტანციური მართვის ჯაშუშობა

დისტანციური მართვის ჯაშუშობა
დისტანციური მართვის ჯაშუშობა
დისტანციური მართვის ჯაშუშობა
დისტანციური მართვის ჯაშუშობა
დისტანციური მართვის ჯაშუშობა
დისტანციური მართვის ჯაშუშობა

ჩვენ დავიწყებთ მონაცემების დაკვირვებით, რასაც დისტანციური მართვის ბრძანებები აწარმოებს. ამისათვის ჩვენ გამოვიყენებთ rtl-sdr დონგლს და ანტენას:

fr.mathworks.com/hardware-support/rtl-sdr….

ამ ბმულის შემდეგ თქვენ ნახავთ MATLAB პაკეტს, ასევე უფასო წიგნს, რომელიც განმარტავს ყველა პრინციპს მათი ახსნით. რომ შევაჯამოთ ის რაც გვაწუხებს, სატრანზიტო მონაცემები არის IQ სიგნალის სახით: "მე" ფაზის მონაცემები, კომბინირებული "Q" კვადრატული მონაცემებით. ეს მეთოდი ხელს უწყობს ტელეკომუნიკაციას. ჩვენ მხოლოდ დაინტერესებული ვიქნებით სიგნალის ეტაპობრივი მიღებით. ჩვენ ახლა შევაგროვებთ ფიზიკურ და ციფრულ ინფორმაციას დისტანციურ კონტროლზე. თუ მასზე რაიმე დოკუმენტაციის პოვნას შეძლებთ, უფრო ადვილი იქნება. არცერთი არ ვიპოვე. სიგნალის დროებით დაკვირვების მიზნით, ჩვენ ჯერ უნდა ვიცოდეთ რა არის გამოსხივებული სიგნალის სიხშირის მატარებელი. ჩვენ გამოვიყენებთ მაგალითს, რომელიც მოყვება პაკეტის დოკუმენტაციას "სპექტრული ანალიზი RTL-SDR რადიოთი", რომ ზუსტად ვიცოდეთ, რა სიხშირით ვაკვირდებით პიკის სიმძლავრეს ბრძანების გაგზავნისას. ჩემს შემთხვევაში ეს არის 868.22 MHz. ამ ტიპის პროგრამების "სტანდარტული" სიხშირეა დაახლოებით 868 MHz.

ამ მითითებებით, ჩვენ შევძლებთ დავწეროთ MATLAB კოდი მონაცემების აღსადგენად. ეს მიმაგრებულია ფოტოში და არის კომენტარი. შედეგი საშუალებას გვაძლევს ვიპოვოთ მოდულაციის ტიპი: ნედლი ინფორმაციის მოძიებით, შედეგის ჩვენებით სიგნალის რეალური ნაწილის აღდგენის შემდეგ, შეგვიძლია დავასკვნათ, რომ ეს არის ASK / OOK მოდულაცია მართლაც, ჩვენ ვაკვირდებით, რომ სიხშირე უცვლელია, თუმცა, სიგნალს აქვს მხოლოდ ორი ამპლიტუდა: ნულოვანი და ფიქსირებული. დანარჩენი კოდი საშუალებას გვაძლევს აღვადგინოთ მიღებული სიგნალის კონვერტი, რომლის წაკითხვაც გაუადვილდა ტრამვის ცოდნას. ჩვენების შემდეგ ჩვენ შეგვიძლია განვსაზღვროთ საბაზისო ზოლის მოდულაცია: ეს არის მანჩესტერის კოდირება (იხ. თანდართული ფოტო). ჩვენ ასევე შეგვიძლია გამოვიტანოთ ბოდის მაჩვენებელი (სიმბოლოები წამში). მთელი ეს ინფორმაცია გროვდება, ჩვენ შეგვიძლია ვიცოდეთ მონაცემთა ჩარჩო. ჩემს შემთხვევაში, ნაპოვნი ბაიტებია: 249, 39, 75, 178, 45, 200 და რამდენჯერმე განმეორდა, რათა უზრუნველყოს ბრძანების კარგად მიღება. საბედნიეროდ, კოდი არ მოძრაობს, მონაცემთა ჩარჩო ყოველთვის იგივეა.

ნაბიჯი 3: გაგზავნეთ იგივე მონაცემთა ჩარჩოები

გაგზავნეთ იგივე მონაცემთა ჩარჩოები
გაგზავნეთ იგივე მონაცემთა ჩარჩოები
გაგზავნეთ იგივე მონაცემთა ჩარჩოები
გაგზავნეთ იგივე მონაცემთა ჩარჩოები
გაგზავნეთ იგივე მონაცემთა ჩარჩოები
გაგზავნეთ იგივე მონაცემთა ჩარჩოები

Texas Instruments cc1101 იმდენად მოქნილია, რომ თქვენ მაინც მიაღწევთ თქვენს მიზანს, მაშინაც კი, თუ წინა საფეხურზე ნაპოვნი პარამეტრები სრულიად განსხვავდება ჩემგან. მართლაც, თქვენ იხილავთ დოკუმენტაციაში, გვერდი 2 (https://www.ti.com/lit/ds/symlink/cc1101.pdf), რომ ის საშუალებას გაძლევთ შეასრულოთ NRZ, Manchester, FSK, ASK/OOK მოდულაცია, მიაღწიოთ სიხშირეები დაახლოებით 433 MHz ან 868 MHz და ბევრი სხვა რამ. გირჩევთ წაიკითხოთ დოკუმენტაცია ამ მოდულის გასაცნობად.

ამ ბმულზე თქვენ იხილავთ მაგალითს ლობორისის მუშაობას ამ მოდულის გამოყენებით ფუნქციების მშენებლობის შესახებ:

github.com/loboris/ESP32_CC1101/tree/maste…

ჩვენ ვაპირებთ დავწეროთ ჩვენი კოდი ჩვენი esp32– ისთვის esp-idf ინსტრუმენტებით (იხილეთ პირველი ნაბიჯის ბმულები). თქვენ შეგიძლიათ დაამატოთ ბმულის ფაილები თქვენი პროექტის კომპონენტების ქვე დირექტორიაში. ჩვენი cc1101 სწორად კონფიგურაციისთვის, ჩვენ გვჭირდება მისი რეგისტრების დაფიქსირება. Texas Instruments გვაძლევს პროგრამულ უზრუნველყოფას, რომელიც გვაძლევს რეგისტრების მნიშვნელობას ჩვენი კონფიგურაციის მიხედვით: SmartRF Studio.

რაც შეეხება მე, მე ვაჩვენებ პროგრამულ უზრუნველყოფას, რომ მსურს მანჩესტერის კოდირება, რომ ჩემი გადამყვანი სიხშირეა 868.22 MHz, რომ ჩემი ტიპის მოდულაცია არის ASK / OOK … მე გაძლევთ უფლებას შეიყვანოთ თქვენი პარამეტრები. იმ შემთხვევაში, როდესაც თქვენი ბაზის კოდირება მიუწვდომელია, შეგიძლიათ განიხილოთ NRZ კოდირება, ბოდის სიჩქარის სწორად გაზრდით და მონაცემთა ადაპტირებით.

მას შემდეგ რაც განსაზღვრეთ თქვენი ღირებულებები, თქვენ გაქვთ რამოდენიმე არჩევანი მოდულის გამოყენებასთან დაკავშირებით: შეგიძლიათ გამოიყენოთ ის ფუნქციები, რომლებიც მე დაგიკავშირეთ, ან რაც მე გავაკეთე, მხოლოდ შთაგონება მიიღოთ ამ კოდისგან, რათა ყველაფერი უფრო კონფიგურირებული იყოს სასტიკი გზა (იხილეთ თანდართული ფოტოები) და გამოიყენეთ მხოლოდ ის, რაც ჩვენ გვჭირდება.

როგორც cc1101 ჩიპი კომუნიკაციას ახდენს SPI– ით, თქვენ იპოვით მაგალითის კოდის ბმულს „spi_master_lobo.h“სათაურის ფაილს, რომელიც შეიცავს SPI– ის გამოყენების უფრო მარტივ ფუნქციებს, ვიდრე მისი გამოყენება მხოლოდ ინსტრუმენტთა ქსელთან ერთად. მე შემოგიერთდებით ფოტოში CC1101 კომუნიკაციის სქემა SPI– ში, ფოტო გადაღებულია CC1101 მონაცემთა ცხრილის 30 – ე გვერდიდან. წარმოდგენილი ოთხი მავთული არის: CS (ჩიპის არჩევა, ან SS: Slave Select, ან აქ CSn), CLK (ან SCLK, საათი, მოწოდებულია ოსტატის მიერ), MISO (ან SO, Master In Slave Out) და MOSI (ან SI, Master Out Slave In). ჩვენს შემთხვევაში, ოსტატი არის ESP32, ხოლო მონა არის CC1101. კომუნიკაცია იწყება, როდესაც CS pin დაბალია, ზოგადად.

ნუ დაგავიწყდებათ მენიუს შემდგენელის პარამეტრების ჩართვა C ++ გამონაკლისის შედგენისათვის.

ნაბიჯი 4: დაუკავშირდით სისტემას

დაკავშირება სისტემასთან
დაკავშირება სისტემასთან
დაკავშირება სისტემასთან
დაკავშირება სისტემასთან
დაკავშირება სისტემასთან
დაკავშირება სისტემასთან

თუ თქვენი კოდი მუშაობს, თქვენ გააკეთეთ აუცილებელი. ამ ნაწილში ჩვენ ყურადღებას გავამახვილებთ იმაზე, თუ როგორ შევქმნათ ტელეფონის აპლიკაცია სისტემასთან დაკავშირებული. ყველაზე საინტერესო გამოსავალი არის Bluetooth– ით დაკავშირება, რადგან ის იძლევა დაბალი ენერგიის პროტოკოლის გამოყენების საშუალებას: Bluetooth Low Energy (BLE). იერარქიის პროფილი ნაჩვენებია თანდართულ ნახაზში: ჩვენ ვკითხულობთ და დავწერთ ბრძანებას მომსახურების მახასიათებელში. და რა თქმა უნდა, ჩვენი esp32 და ჩვენი სმარტფონი აღჭურვილია bluetooth- ით.

ეს ნაბიჯი იყოფა ორ ნაწილად: esp32 ნაწილი და აპლიკაციის ნაწილი. თანდართული ფოტო გვიჩვენებს და განმარტავს კოდების ძირითად ნაწილებს.

თქვენ შეგიძლიათ შექმნათ თქვენი UUID– ები ამ ბმულის მიხედვით:

www.uuidgenerator.net/

ეს არის იდენტიფიკატორი, რომელიც უზრუნველყოფს წვდომას ჩვენი BLE პროფილის სერვისებსა და მახასიათებლებზე.

Esp32 BLE კოდის შესახებ, კოლბანმა შესანიშნავად იმუშავა, რომ ყველა ეს მაღალი დონის C ++ ფუნქციები თავსებადი ყოფილიყო:

github.com/nkolban/esp32-snippets/tree/mas…

თქვენ შეგიძლიათ განათავსოთ ეს ფაილები კომპონენტების ქვე დირექტორიაში. წინააღმდეგ შემთხვევაში, თქვენ დაგჭირდებათ მეტი დრო იმის გასაგებად, თუ როგორ გამოიყენოთ BLE esp-idf ინსტრუმენტთა ქსელთან ერთად.

იმის შეჯამებით, რაც თქვენ იხილავთ კოდში, ჩვენ ვქმნით სერვერს, სერვისს და მახასიათებელს, ასოცირებული UUID– ით და ვამატებთ ხელახლა განსაზღვრულ უკუკავშირის კლასს, ჩაწერის ასოცირებული მეთოდით: როდესაც ჩვენ ვიღებთ "O" - ს ხასიათი, ჩვენ ვუგზავნით ჩაწერის ბრძანებას cc1101.

რა თქმა უნდა, არ დაგავიწყდეთ Bluetooth ჩართვა Menuconfig კომპონენტის კონფიგურაციაში.

აპლიკაციის ნაწილის შესახებ, ჩვენ გამოვიყენებთ Framework Ionic- ს. თქვენ შეგიძლიათ იპოვოთ მეტი ინფორმაცია ამის შესახებ პირველ ეტაპზე წარმოდგენილ ბმულზე და უფრო დეტალური ინფორმაციისათვის, თუ როგორ გამოიყენოთ BLE იონიკთან ერთად:

ionicframework.com/docs/native/ble/

და მაგალითები, დონის მიერ დაწერილი:

github.com/don/ionic-ble-examples/tree/mas…

თქვენ შეგიძლიათ შეცვალოთ მაგალითად "დაკავშირება". ჩვენ ვამოწმებთ მოწყობილობებს პირველ გვერდზე და მივაღწევთ მეორე გვერდს, თუ ჩვენ ვირჩევთ ჩვენს მოწყობილობას. ჩვენ შემდეგ შევდივართ ინტერფეისში, სადაც შეგიძლიათ დაამატოთ ღილაკი ფოტოში წარმოდგენილი მეთოდით: ის აგზავნის ჩვენს ბრძანებას "O" შესაბამისი UUID– ით. თქვენ ასევე შეგიძლიათ დაამატოთ პირველი გვერდის კონსტრუქტორი მეთოდი "ჩართვა", რომელიც ითხოვს Bluetooth– ის გააქტიურებას პროგრამის დასაწყისში.

მე გირჩევთ შეისწავლოთ Ionic ვებსაიტი და აღმოაჩინოთ ყველა კომპონენტი (ღილაკები, სიგნალები, ჩამრთველები …) თქვენი აპლიკაციის გასაუმჯობესებლად:

ionicframework.com/docs/components/#overvi…

ნაბიჯი 5: ენერგიის მოხმარების ოპტიმიზაცია

ენერგიის მოხმარების ოპტიმიზაცია
ენერგიის მოხმარების ოპტიმიზაცია
ენერგიის მოხმარების ოპტიმიზაცია
ენერგიის მოხმარების ოპტიმიზაცია

ჩვენ დავიწყეთ მუშაობა დაბალ მოხმარებაზე, ასე რომ მოდით გავაგრძელოთ.

Esp-idf ინსტრუმენტთა ქსელი საშუალებას გვაძლევს გამოვიყენოთ კონფიგურაციის GUI, მენიუკონფიგურაცია: ბევრ პარამეტრს შეუძლია შეამციროს esp32 მოხმარება. უპირველეს ყოვლისა, რადგან ჩვენ არ გვჭირდება Wifi, ჩვენ შეგვიძლია მისი გამორთვა კომპონენტის კონფიგურაციაში. იმავე საქაღალდეში, FreeRTOS- ში, შეგიძლიათ აირჩიოთ "გაუშვით FreeRTOS მხოლოდ პირველ ბირთვზე. შემდეგ, ESP- სპეციფიკურად, შეგიძლიათ შეამციროთ პროცესორის სიხშირე 80 მჰც-მდე. ყველა ფუნქცია კვლავ მუშაობს ამ საათის სიჩქარით. საბოლოოდ, შეგიძლიათ შეამოწმეთ "ჩართეთ ულტრა დაბალი სიმძლავრის (ULP) კოპროცესორი. ეს კონფიგურაცია ახორციელებს მიმდინარე მოხმარებას ასი mA– დან ოცდაათ mA– მდე. ეს ჯერ კიდევ ზედმეტია…

ESP32 შეუძლია გაუძლოს ღრმა ძილს. მხოლოდ დაბალი ენერგიის ბირთვია ჩართული და ელოდება გაღვიძებას.

იხილეთ ქვემოთ მოცემული ბმული უფრო დეტალურად:

esp-idf.readthedocs.io/ka/latest/api-refere…

სამწუხაროდ, esp-idf ინსტრუმენტთა ქსელის ბოლო ვერსიაში (3.0), მხოლოდ გაღვიძება შესაძლებელია ქრონომეტრებით და GPIO– ს დარღვევებით. საბედნიეროდ, Espressif გვპირდება BLE გაღვიძებას შემდეგ ვერსიაში (3.1).

თქვენ ასევე შეგიძლიათ განათავსოთ CC1101 ძილის რეჟიმში, SPI– ში გაგზავნით შესაბამისი ბრძანება მოწყობილობის გამორთვისთვის (იხ. Cc1101 მონაცემთა ცხრილი, SPWD ბრძანება, გვერდი 51). მოწყობილობის ძილის რეჟიმში ან გაღვიძებისთვის, შეგიძლიათ დაბალ და შემდეგ მაღალ დონეზე დააყენოთ SPI ქინძის Chip Select (მეტი ინფორმაცია მონაცემთა ცხრილში).

ამ უკანასკნელ კონფიგურაციებს უნდა შეეძლოთ სისტემის მოხმარება მილიამპერიანი ქვემოთ …

დაბოლოს, იმისათვის, რომ სისტემა გაგრძელდეს რაც შეიძლება დიდხანს დატენვის გარეშე, ან თუნდაც მიაღწიოს ავტონომიის ერთ თვეს, შეარჩიეთ 3.7 ვ ბატარეა ყველაზე მილი მილი ამპერი საათში. თქვენი სისტემის ენერგიის მოხმარების გაზომვით, გენერატორის ან ამმეტრის ჩვენებით, რომელიც დაკავშირებულია სერიულად თქვენი სისტემის + პოლუსამდე, შეგიძლიათ შეაფასოთ თქვენი სისტემის გამძლეობის დრო!

გირჩევთ: