Სარჩევი:
- მარაგები
- ნაბიჯი 1: კოდის შესწავლა:
- ნაბიჯი 2: დანარჩენი კოდი…
- ნაბიჯი 3: სუფთა მონაცემებთან დაკავშირება…
- ნაბიჯი 4:
ვიდეო: კომპლექსური ხელოვნების სენსორული დაფის გამოყენება WiFi– ზე სუფთა მონაცემების გასაკონტროლებლად: 4 ნაბიჯი (სურათებით)
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:17
ოდესმე გსურდათ ექსპერიმენტი ჟესტების კონტროლით? ხელის მოძრაობით აძალებ რამეს? აკონტროლებ მუსიკას მაჯის ირონია? ეს ინსტრუქცია გაჩვენებთ როგორ!
კომპლექსური ხელოვნების სენსორული დაფა (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:
რაც ჩვენ ზემოთ გავაკეთეთ არის კომუნიკაციის დამყარება სენსორულ დაფასა და სუფთა მონაცემებს შორის. თუ გსურთ დაიწყოთ მეტი გართობა, შეაერთეთ თქვენი მონაცემების შედეგები ზოგიერთ ოსცილატორთან! ითამაშეთ ხმის კონტროლით! შესაძლოა გააკონტროლო დაგვიანების დრო ან აითვისო! სამყარო შენს ხელთაა!
გირჩევთ:
გიტარის გმირის გამოყენება გიტარის მასშტაბის გასაკონტროლებლად (მხოლოდ Windows): 9 ნაბიჯი
გიტარის გმირის გიტარის გამოყენება მასშტაბირების გასაკონტროლებლად (მხოლოდ Windows): ვინაიდან ჩვენ გლობალური პანდემიის შუაგულში ვართ, ბევრი ჩვენგანი დავრჩით სახლის წმენდაში და ვუერთდებით შეხვედრებს ზუმზე. გარკვეული პერიოდის შემდეგ, ეს შეიძლება გახდეს ძალიან ბნელი და დამღლელი. ჩემი სახლის გაწმენდისას ვიპოვე ძველი გიტარის გმირის გიტარა, რომელიც ჩააგდეს
მიკროპითონი კომპლექსური ხელოვნების სენსორულ დაფაზე: 3 ნაბიჯი
MicroPython კომპლექსური ხელოვნების სენსორების დაფაზე: ESP32 მიკროკონტროლერის ერთ -ერთი ყველაზე გასაოცარი ასპექტია მისი შესაძლებლობა MicroPython– ის გაშვებისა. ეს შეიძლება გაკეთდეს ორი გზით: სრული პითონის პროგრამების გაშვება, ან ინტერაქტიული კონსოლის პროგრამის საშუალებით. ეს ინსტრუქცია აჩვენებს, თუ როგორ გამოიყენოთ
ძველი ლეპტოპის სენსორული პანელის ხელახალი გამოყენება სტეპერიანი ძრავის გასაკონტროლებლად: 11 ნაბიჯი (სურათებით)
გამოიყენეთ ძველი ლეპტოპის სენსორული სტეპერი ძრავის გასაკონტროლებლად: მე ეს პროექტი გავაკეთე რამდენიმე თვის წინ. რამდენიმე დღის უკან, მე გამოვაქვეყნე პროექტის პროექტი r/Arduino– ზე Reddit– ზე. როდესაც დავინახე, რომ ხალხი დაინტერესდა პროექტით, მე გადავწყვიტე გამეკეთებინა ეს ინსტრუქცია, სადაც შევიტანე ცვლილებები Arduino კოდში და
გამოიყენეთ ძველი ლეპტოპის სენსორული პანელი კომპიუტერის გასაკონტროლებლად!: 11 ნაბიჯი (სურათებით)
გამოიყენეთ ძველი ლეპტოპის სენსორული პანელი კომპიუტერის გასაკონტროლებლად! მოცურების და თითის თითების ჟესტები შეიძლება დაამტკიცოს, რომ მაკონტროლებელი პერსონალი საკმაოდ მარტივი და სახალისო გზით ხდება. ამ ინსტრუქციებში, მოდით გავაერთიანოთ ერთი
ნიმუშის ბალიშ კონტროლერი სუფთა მონაცემების გამოყენებით: 4 ნაბიჯი
Sample Pad Controller გამოყენებით Pure Data: ამ ინსტრუქციულად მე შევქმნი კონტროლერს, რომელიც საშუალებას მისცემს ძველი Roland ელექტრონული დრამის ნაკრების ბალიშებს გამოიწვიოს ბგერები ნაკრებიდან მოტანილი ორიგინალური დრამის მოდულის გარეშე. მე გამოვიყენებ Pure Data- ს, რათა შევქმნა პატჩი ჩატვირთვისათვის რამდენიმე wav ფაილი და შემდეგ p