Სარჩევი:

კომპლექსური ხელოვნების სენსორული დაფის გამოყენება WiFi– ზე სუფთა მონაცემების გასაკონტროლებლად: 4 ნაბიჯი (სურათებით)
კომპლექსური ხელოვნების სენსორული დაფის გამოყენება WiFi– ზე სუფთა მონაცემების გასაკონტროლებლად: 4 ნაბიჯი (სურათებით)

ვიდეო: კომპლექსური ხელოვნების სენსორული დაფის გამოყენება WiFi– ზე სუფთა მონაცემების გასაკონტროლებლად: 4 ნაბიჯი (სურათებით)

ვიდეო: კომპლექსური ხელოვნების სენსორული დაფის გამოყენება WiFi– ზე სუფთა მონაცემების გასაკონტროლებლად: 4 ნაბიჯი (სურათებით)
ვიდეო: მისტიური მოგზაურობა: ინტუიციისა და გავლენის შესწავლა 2024, ნოემბერი
Anonim
კომპლექსური ხელოვნების სენსორული დაფის გამოყენება WiFi– ზე სუფთა მონაცემების გასაკონტროლებლად
კომპლექსური ხელოვნების სენსორული დაფის გამოყენება WiFi– ზე სუფთა მონაცემების გასაკონტროლებლად
კომპლექსური ხელოვნების სენსორული დაფის გამოყენება WiFi– ზე სუფთა მონაცემების გასაკონტროლებლად
კომპლექსური ხელოვნების სენსორული დაფის გამოყენება WiFi– ზე სუფთა მონაცემების გასაკონტროლებლად

ოდესმე გსურდათ ექსპერიმენტი ჟესტების კონტროლით? ხელის მოძრაობით აძალებ რამეს? აკონტროლებ მუსიკას მაჯის ირონია? ეს ინსტრუქცია გაჩვენებთ როგორ!

კომპლექსური ხელოვნების სენსორული დაფა (complexarts.net) არის მრავალმხრივი მიკროკონტროლერი, რომელიც დაფუძნებულია ESP32 WROOM– ზე. მას აქვს ESP32 პლატფორმის ყველა მახასიათებელი, მათ შორის ჩაშენებული WiFi და Bluetooth, და 23 კონფიგურირებადი GPIO ქინძისთავები. სენსორული დაფა ასევე აღჭურვილია BNO_085 IMU - 9 DOF მოძრაობის პროცესორით, რომელიც ასრულებს სენსორის შერწყმისა და მეოთხეულის განტოლებებს, უზრუნველყოფს სუპერ ზუსტ ორიენტაციას, სიმძიმის ვექტორს და ხაზოვანი აჩქარების მონაცემებს. სენსორული დაფის დაპროგრამება შესაძლებელია Arduino- ს, MicroPython- ის ან ESP-IDF- ის გამოყენებით, მაგრამ ამ გაკვეთილისთვის ჩვენ დავპროგრამებთ დაფას Arduino IDE- ით. მნიშვნელოვანია აღინიშნოს, რომ ESP32 მოდულები არ არის პროგრამირებადი Arduino IDE– დან, მაგრამ ამის გაკეთება ძალზედ მარტივია; აქ არის დიდი სამეურვეო პროგრამა: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/ რომლის დასრულებას დაახლოებით 2 წუთი დასჭირდება. კონფიგურაციის ბოლო ნაწილი, რომელიც გვჭირდება არის დრაივერი USB-to-UART ჩიპისთვის სენსორულ დაფაზე, რომელიც შეგიძლიათ იხილოთ აქ: https://www.silabs.com/products/development-tools/software/usb-to -uart-bridge-vcp-drivers. უბრალოდ შეარჩიეთ თქვენი ოპერაციული სისტემა და დააინსტალირეთ, რასაც დაახლოებით 2 წუთი დასჭირდება. როგორც კი ეს კეთდება, ჩვენ კარგად წავალთ!

[ეს გაკვეთილი არ გულისხმობს არც Arduino– ს, არც Pure Data– ს გაცნობას, თუმცა ის არ მოიცავს მათ ინსტალაციას. Arduino შეგიძლიათ იხილოთ aduino.cc– ზე. სუფთა მონაცემები შეგიძლიათ იხილოთ puredata.info– ზე. ორივე საიტს აქვს მარტივი ინსტრუქცია ინსტალაციისა და დაყენებისათვის.]

ასევე… ამ სახელმძღვანელოში მოხსენიებული კონცეფციები, როგორიცაა UDP კავშირების დაყენება, ESP32– ის პროგრამირება Arduino– ით და ძირითადი Pure Data patch building - არის სამშენებლო ბლოკები, რომელთა გამოყენებაც შესაძლებელია უამრავ პროექტში, ასე რომ არ დაიხუროთ აქ ერთხელ ჩამოაგდო ეს კონცეფციები!

მარაგები

1. კომპლექსური ხელოვნების სენსორული დაფა

2. Arduino IDE

3. სუფთა მონაცემები

ნაბიჯი 1: კოდის შესწავლა:

კოდის შესწავლა
კოდის შესწავლა
კოდის შესწავლა
კოდის შესწავლა

პირველი, ჩვენ გადავხედავთ არდუინოს კოდს.. შეიძლება დაგჭირდეთ მისი დაყენება. ეს პროექტი ეყრდნობა SparkFun_BNO080_Arduino_Library.h ფაილს, ასე რომ, თუ ეს არ გაქვთ, თქვენ უნდა გადახვიდეთ Sketch -> ბიბლიოთეკის ჩართვა -> ბიბლიოთეკების მართვა. ჩაწერეთ "bno080" და გამოჩნდება ზემოთ ნახსენები ბიბლიოთეკა. დააჭირეთ ინსტალაციას.

დანარჩენი სამი ბიბლიოთეკა, რომლებიც გამოიყენება, სტანდარტულად უნდა მოყვეს არდუინოს. პირველ რიგში, ჩვენ გამოვიყენებთ SPI ბიბლიოთეკას BNO– სთან კომუნიკაციისთვის. ასევე შესაძლებელია UART– ის გამოყენება ESP32– სა და BNO– ს შორის, მაგრამ რადგან SparkFun– ს უკვე აქვს ბიბლიოთეკა, რომელიც იყენებს SPI– ს, ჩვენ ამას დავრჩებით. (მადლობა, SparkFun!) SPI.h ფაილის ჩათვლით მოგვცემს საშუალებას ავირჩიოთ რომელი პინები და პორტები გვინდა გამოვიყენოთ SPI კომუნიკაციისთვის.

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

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

შემდეგი, ჩვენ ვაძლევთ ESP– ის შესაბამის ქინძისთავებს მათ შესაბამის ქინძისთავებზე BNO– ზე.

ახლა ჩვენ შევქმენით SPI კლასის წევრი, ასევე დავაყენეთ SPI პორტის სიჩქარე.

დაბოლოს, ჩვენ მივდივართ კონფიგურაციის ფუნქციაზე. აქ ჩვენ დავიწყებთ სერიულ პორტს, ასე რომ, თუ ჩვენ გვსურს, ჩვენ შეგვიძლია გავაკონტროლოთ ჩვენი გამომუშავება. შემდეგ ჩვენ ვიწყებთ WiFi- ს. გაითვალისწინეთ, რომ პროგრამა ელოდება WiFi კავშირს გაგრძელებამდე. მას შემდეგ რაც WiFi დაკავშირებულია, ჩვენ ვიწყებთ UDP კავშირს, შემდეგ ვბეჭდავთ ჩვენი ქსელის სახელს და ჩვენს IP მისამართს სერიულ მონიტორზე. ამის შემდეგ ჩვენ ვიწყებთ SPI პორტს და ვამოწმებთ კომუნიკაციას ESP- სა და BNO- ს შორის. და ბოლოს, ჩვენ ვუწოდებთ ფუნქციას "enableRotationVector (50);" რადგან ამ გაკვეთილზე ჩვენ მხოლოდ ბრუნვის ვექტორს გამოვიყენებთ.

ნაბიჯი 2: დანარჩენი კოდი…

დანარჩენი კოდი …
დანარჩენი კოდი …

სანამ მთავარ მარყუჟზე () მივდივართ, ჩვენ გვაქვს ფუნქცია სახელწოდებით "mapFloat".

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

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

ახლა ჩვენ უნდა დავხატოთ ეს ღირებულებები.

[სიტყვა UDP კომუნიკაციის შესახებ: მონაცემები გადაეცემა UDP– ს 8 ბიტიან პაკეტებში, ან მნიშვნელობები 0-255 – დან. 255 -ზე მეტი ყველაფერი გადავა შემდეგ პაკეტზე და დაამატებთ მის ღირებულებას. ამიტომ, ჩვენ უნდა დავრწმუნდეთ, რომ არ არსებობს ღირებულებები 255 -ზე მეტი.]

როგორც უკვე აღვნიშნეთ, ჩვენ გვაქვს შემომავალი მნიშვნელობები -1 -1. დიაპაზონში, ეს არ გვაძლევს ბევრს სამუშაოს, რადგან 0 – ზე ქვემოთ ყველაფერი გათიშული იქნება (ან გამოჩნდება როგორც 0) და ჩვენ არ შეგვიძლია გავაკეთოთ ტონა 0 -დან 1 – მდე მნიშვნელობით. ჩვენ ჯერ უნდა გამოვაცხადოთ ახალი ცვლადი, რათა შევინარჩუნოთ ჩვენი რუქა, შემდეგ ავიღოთ საწყისი ცვლადი და დავხატოთ -1 -1 – დან 0 -255 – მდე, მივაკუთვნოთ შედეგი ჩვენს ახალ ცვლადს ე.წ. Nx

ახლა, როდესაც ჩვენ გვაქვს ჩვენი რუქული მონაცემები, შეგვიძლია შევაჯამოთ ჩვენი პაკეტი. ამის გასაკეთებლად, ჩვენ უნდა გამოვაცხადოთ ბუფერი პაკეტის მონაცემებისთვის, რაც მას აძლევს [50] ზომას, რათა დარწმუნდეს, რომ ყველა მონაცემი ჯდება. ჩვენ ვიწყებთ პაკეტს ზემოთ მითითებული მისამართით და პორტით, ვწერთ ჩვენს ბუფერს და 3 მნიშვნელობას to პაკეტზე, შემდეგ ვამთავრებთ პაკეტს.

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

ნაბიჯი 3: სუფთა მონაცემებთან დაკავშირება…

სუფთა მონაცემებთან დაკავშირება…
სუფთა მონაცემებთან დაკავშირება…

ახლა რაც შეეხება სუფთა მონაცემებს! გახსენით სუფთა მონაცემები და დაიწყეთ ახალი პაჩი (ctrl n). პატჩი, რომელსაც ჩვენ შევქმნით, ძალიან მარტივია, შეიცავს მხოლოდ შვიდი ობიექტს. პირველი, რასაც ჩვენ ვაპირებთ შევქმნათ არის [netreceive] ობიექტი. ეს არის ჩვენი პატჩის პური და კარაქი, რომელიც ახორციელებს ყველა UDP კომუნიკაციას. გაითვალისწინეთ, რომ [netreceive] ობიექტის სამი არგუმენტია; -u განსაზღვრავს UDP- ს, -b განსაზღვრავს ორობითი და 7401 რა თქმა უნდა არის პორტი, რომელსაც ჩვენ ვუსმენთ. თქვენ ასევე შეგიძლიათ გაგზავნოთ შეტყობინება "მოუსმინეთ 7401" [netreceive] - ს თქვენი პორტის დასაზუსტებლად.

მას შემდეგ რაც ჩვენ გვაქვს მონაცემები, ჩვენ უნდა გავხსნათ იგი. თუ ჩვენ [ბეჭდვის] ობიექტს ვუკავშირებთ [netrecieve] - ს, ჩვენ ვხედავთ, რომ მონაცემები თავდაპირველად ჩვენთან მოდის, როგორც რიცხვების ნაკადი, მაგრამ ჩვენ გვსურს გავაანალიზოთ ეს რიცხვები და თითოეული გამოვიყენოთ რაღაცისთვის. მაგალითად, შეიძლება დაგჭირდეთ გამოიყენოთ X ღერძის ბრუნვა ოსცილატორის საფეხურის გასაკონტროლებლად, ხოლო Y ღერძი მოცულობისთვის, ან ნებისმიერი სხვა შესაძლებლობა. ამის გასაკეთებლად, მონაცემთა ნაკადი გადის [ამოხსნას] ობიექტს, რომელსაც აქვს სამი მცურავი (f f f) არის მისი არგუმენტები.

ახლა, როცა ასე შორს ხარ, სამყარო შენი ხელთაა! თქვენ გაქვთ უკაბელო კონტროლერი, რომლის საშუალებითაც შეგიძლიათ მანიპულირება მოახდინოთ რაც გსურთ სუფთა მონაცემების სამყაროში. მაგრამ გაჩერდი აქ! გარდა ბრუნვის ვექტორისა, სცადეთ ამაჩქარებელი ან მაგნიტომეტრი. სცადეთ გამოიყენოთ BNO– ს სპეციალური ფუნქციები, როგორიცაა „ორმაგი შეხება“ან „შერყევა“. ყველაფერი რაც საჭიროა, არის მცირეოდენი შესწავლა მომხმარებლის სახელმძღვანელოებში (ან მომდევნო ინსტრუქციებში…).

ნაბიჯი 4:

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

გირჩევთ: