Mündəricat:

WiFi üzərindən təmiz məlumatları idarə etmək üçün Kompleks İncəsənət Sensor Panelindən istifadə: 4 Addım (Şəkillərlə)
WiFi üzərindən təmiz məlumatları idarə etmək üçün Kompleks İncəsənət Sensor Panelindən istifadə: 4 Addım (Şəkillərlə)

Video: WiFi üzərindən təmiz məlumatları idarə etmək üçün Kompleks İncəsənət Sensor Panelindən istifadə: 4 Addım (Şəkillərlə)

Video: WiFi üzərindən təmiz məlumatları idarə etmək üçün Kompleks İncəsənət Sensor Panelindən istifadə: 4 Addım (Şəkillərlə)
Video: CS50 2015 - Week 6 2024, Noyabr
Anonim
WiFi üzərindən təmiz məlumatları idarə etmək üçün Kompleks İncəsənət Sensor Panelindən istifadə
WiFi üzərindən təmiz məlumatları idarə etmək üçün Kompleks İncəsənət Sensor Panelindən istifadə
WiFi üzərindən təmiz məlumatları idarə etmək üçün Kompleks İncəsənət Sensor Panelindən istifadə
WiFi üzərindən təmiz məlumatları idarə etmək üçün Kompleks İncəsənət Sensor Panelindən istifadə

Heç jest nəzarəti ilə təcrübə etmək istəmisinizmi? Əllərinizlə bir şeyi hərəkət etdirin? Biləyinizi bükərək musiqiyə nəzarət edirsiniz? Bu Təlimat sizə necə göstərəcək!

The Complex Arts Sensor Board (complexarts.net), ESP32 WROOM -a əsaslanan çox yönlü bir mikro nəzarətçidir. Daxili WiFi və Bluetooth və 23 konfiqurasiya edilə bilən GPIO pinləri də daxil olmaqla ESP32 platformasının bütün xüsusiyyətlərinə malikdir. Sensor lövhəsi, BNO_085 IMU - 9 DOF hərəkət prosessoruna malikdir ki, bu da sensoru birləşdirmə və dördlülük tənliklərini yerinə yetirir, çox dəqiq oriyentasiya, cazibə vektoru və xətti sürətlənmə məlumatları verir. Sensor Board Arduino, MicroPython və ya ESP-IDF istifadə edərək proqramlaşdırıla bilər, ancaq bu dərs üçün Arduino IDE ilə lövhəni proqramlaşdıracağıq. Qeyd etmək vacibdir ki, ESP32 modulları yerli olaraq Arduino IDE -dən proqramlaşdırıla bilməz, lakin bunu mümkün etmək çox sadədir; burada böyük bir dərs var: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/ tamamlanması təxminən 2 dəqiqə çəkəcək. Ehtiyac duyduğumuz son qurğu, Sensor lövhəsindəki USB-UART çipinin sürücüsüdür və burada tapa bilərsiniz: https://www.silabs.com/products/development-tools/software/usb-to -uart-körpü-vcp sürücüləri. Əməliyyat sisteminizi seçin və təxminən 2 dəqiqə çəkməlidir. Bu tamamlandıqda, yola davam edirik!

[Bu dərs nə Arduino, nə də Saf Məlumatla tanışlıq nəzərdə tutmur, lakin onların quraşdırılmasını əhatə etməyəcək. Arduino aduino.cc saytında tapa bilərsiniz. Saf Məlumatları puredata.info saytında tapa bilərsiniz. Hər iki saytda da quraşdırma və quraşdırma üçün asan izlənilən təlimatlar var.]

Həm də … UDP əlaqələrinin qurulması, ESP32 -nin Arduino ilə proqramlaşdırılması və əsas Pure Data patch binası kimi bu təlimatda əhatə olunan anlayışlar - saysız -hesabsız layihələr üçün tətbiq oluna bilən tikinti bloklarıdır, ona görə də bura əyilməyin. bu anlayışları başa düşdü!

Təchizat

1. Kompleks İncəsənət Sensor lövhəsi

2. Arduino IDE

3. Saf məlumatlar

Addım 1: Kodu araşdırın:

Məcəllənin araşdırılması
Məcəllənin araşdırılması
Məcəllənin araşdırılması
Məcəllənin araşdırılması

Əvvəlcə Arduino koduna baxacağıq. (Mənbə https://github.com/ComplexArts/SensorBoardArduino saytında mövcuddur. Gedərkən kodla birlikdə izləməyiniz tövsiyə olunur.) Biri əsas Arduino kitabxanası olmayan bəzi kitabxanalara ehtiyacımız var. quraşdırılması lazım ola bilər. Bu layihə SparkFun_BNO080_Arduino_Library.h faylına əsaslanır, buna görə də bunu etməsəniz, Sketch -> Kitabxanaya Daxil Et -> Kitabxanaları İdarə etməyə keçməlisiniz. "Bno080" yazın və yuxarıda göstərilən kitabxana görünəcək. Quraşdırma düyməsini basın.

İstifadə olunan digər üç kitabxana, standart olaraq Arduino ilə birlikdə gəlməlidir. Birincisi, BNO ilə ünsiyyət qurmaq üçün SPI kitabxanasından istifadə edəcəyik. ESP32 ilə BNO arasında UART istifadə etmək də mümkündür, ancaq SparkFun -da SPI -dən istifadə edən bir kitabxana olduğu üçün buna əməl edəcəyik. (Təşəkkürlər, SparkFun!) SPI.h faylı daxil olmaqla, SPI ünsiyyəti üçün hansı pin və portlardan istifadə etmək istədiyimizi seçə bilərik.

WiFi kitabxanasında simsiz şəbəkəyə keçməyimizə imkan verən funksiyalar var. WiFiUDP, bu şəbəkə üzərindən məlumat göndərməyimizə və qəbul etməyimizə imkan verən funksiyaları ehtiva edir. Növbəti iki sətir bizi şəbəkəyə aparır - şəbəkə adınızı və şifrənizi daxil edin. Bundan sonra iki sətir, məlumatlarımızı göndərdiyimiz şəbəkə ünvanını və portu göstərir. Bu vəziyyətdə, yalnız yayımlayacağıq, yəni onu dinləyən hər kəsə şəbəkəmizdən göndərin. Liman nömrəsi, kimin dinlədiyini müəyyən edəcək, bir az sonra görəcəyik.

Bu sonrakı iki sətir, öz sinifləri üçün üzvlər yaradır ki, funksiyalarına sonradan asanlıqla daxil ola bilək.

Sonra, ESP -nin müvafiq pinlərini BNO -dakı müvafiq pinlərinə təyin edirik.

İndi SPI sinif üzvünü qururuq, eyni zamanda SPI port sürətini təyin edirik.

Nəhayət, quraşdırma funksiyasına daxil oluruq. Burada serial portuna başlayacağıq ki, istəsək çıxışımızı bu şəkildə izləyə bilək. Sonra WiFi -yə başlayırıq. Proqramın davam etməzdən əvvəl WiFi bağlantısı gözlədiyinə diqqət yetirin. WiFi bağlandıqdan sonra UDP bağlantısına başlayırıq, sonra şəbəkə adımızı və IP ünvanımızı serial monitora yazdırırıq. Bundan sonra SPI limanını işə salırıq və ESP ilə BNO arasındakı əlaqəni yoxlayırıq. Nəhayət, funksiyanı "enableRotationVector (50);" adlandırırıq. çünki bu dərs üçün yalnız fırlanma vektorundan istifadə edəcəyik.

Addım 2: Kodun qalan hissəsi …

Kodun qalan hissəsi …
Kodun qalan hissəsi …

Əsas döngəyə () getməzdən əvvəl "mapFloat" adlı bir funksiyamız var.

Bu, dəyərləri digər dəyərlərə uyğunlaşdırmaq və ya ölçeklendirmek üçün əlavə etdiyimiz xüsusi bir funksiyadır. Arduino'da quraşdırılmış xəritə funksiyası yalnız tam ədədlərin xəritələnməsinə imkan verir, lakin BNO -dan bütün başlanğıc dəyərlərimiz -1 ilə 1 arasında olacaq, buna görə də onları həqiqətən istədiyimiz dəyərlərə əl ilə ölçməli olacağıq. Ancaq narahat olmayın - bunu etmək üçün sadə bir funksiya var:

İndi əsas döngəyə gəlirik (). Diqqət yetirdiyiniz ilk şey, proqramı şəbəkə bağlantısı gözləməyə məcbur edən başqa bir bloklama funksiyasıdır. Bu, BNO -dan məlumatlar gələnə qədər dayanır. Bu məlumatları almağa başlayanda, daxil olan quaternion dəyərlərini üzən nöqtə dəyişənlərinə təyin edirik və bu məlumatları serial monitoruna çap edirik.

İndi bu dəyərləri xəritəyə salmalıyıq.

[UDP ünsiyyəti haqqında bir söz: məlumatlar UDP üzərindən 8 bitlik paketlərdə və ya 0-255 arası dəyərlərdə ötürülür. 255 -dən yuxarı olan hər şey dəyərini artıraraq növbəti paketə göndəriləcək. Bu səbəbdən 255 -dən yuxarı dəyərlərin olmadığından əmin olmalıyıq.]

Daha əvvəl də qeyd edildiyi kimi, -1 -1 aralığında daxil olan dəyərlərimiz var. Bu, işləmək üçün çox şey vermir, çünki 0 -dan aşağı olan hər şey kəsiləcək (və ya 0 olaraq görünəcək) və edə bilmərik. 0 -1 arasında dəyərləri olan bir ton əvvəlcə xəritələnmiş dəyərimizi tutmaq üçün yeni bir dəyişən elan etməliyik, sonra bu ilkin dəyişəni götürüb -1 -1 ilə 0 -255 arasında xəritələndiririk və nəticəni yeni dəyişənimizə təyin edirik. Nx.

İndi xəritələnmiş məlumatlarımıza sahib olduqdan sonra paketimizi bir araya gətirə bilərik. Bunu etmək üçün, bütün məlumatların uyğun olacağından əmin olmaq üçün [50] ölçüsündə verərək paket məlumatları üçün bufer elan etməliyik. Daha sonra paketi yuxarıda göstərdiyimiz ünvandan və portdan başlayırıq, buferimizi və 3 dəyərimizi to to packetə yazırıq, sonra paketi bitiririk.

Nəhayət, xəritələnmiş koordinatlarımızı serial monitora çap edirik. İndi Arduino kodu hazırdır! Kodu Sensor Board -a yandırın və hər şeyin gözlənildiyi kimi işlədiyinə əmin olmaq üçün serial monitorunu yoxlayın. Quaternion dəyərlərini və eşlenen dəyərləri görməlisiniz.

Addım 3: Saf Məlumatlara Bağlanın…

Təmiz Məlumatla Bağlanır…
Təmiz Məlumatla Bağlanır…

İndi Saf Məlumatlar üçün! Saf Məlumatları açın və yeni bir yamaya başlayın (ctrl n). Yaratacağımız yamaq çox sadədir, yalnız yeddi obyektdən ibarətdir. Yaratacağımız ilk şey [netreceive] obyektidir. Bu, bütün UDP ünsiyyətini idarə edən yamamızın çörəyi və yağıdır. [Netreceive] obyekti üçün üç arqument olduğuna diqqət yetirin; -u UDP, -b ikili və 7401 əlbəttə ki, dinlədiyimiz portdur. Limanızı təyin etmək üçün "dinlə 7401" mesajını [netreceive] ünvanına da göndərə bilərsiniz.

Məlumat daxil olduqdan sonra onu açmalıyıq. Bir [çap] obyektini [netrecieve] -ə bağlasaq, məlumatların əvvəlcə bizə rəqəmlər axını olaraq gəldiyini görə bilərik, ancaq bu ədədləri təhlil etmək və hər birini fərqli bir şey üçün istifadə etmək istəyirik. Məsələn, bir osilatörün addımını, həcmi üçün Y oxunu və ya hər hansı digər ehtimalları idarə etmək üçün X oxu fırlanmasını istifadə etmək istəyə bilərsiniz. Bunu etmək üçün, məlumat axını arqumentləri olan üç üzən (f f f) olan [açmaq] obyektindən keçir.

İndi bu qədər uzağa getdiyinizə görə dünya sizin istiridyənizdir! Təmiz Məlumat kainatında istədiyiniz hər şeyi manipulyasiya etmək üçün istifadə edə biləcəyiniz simsiz idarəediciniz var. Ancaq orada dayan! Rotation Vector -dan başqa, akselerometr və ya maqnitometrdən istifadə edin. BNO -nun "ikiqat vur" və ya "silkələmək" kimi xüsusi funksiyalarından istifadə etməyə çalışın. İstifadəçi təlimatlarını (və ya növbəti Təlimatlandırıcı…) bir az qazmaq kifayətdir.

Addım 4:

Yuxarıda etdiklərimiz Sensor Board və Saf Data arasında əlaqə qurmaqdır. Daha çox əylənməyə başlamaq istəyirsinizsə, məlumatlarınızı bəzi osilatorlara bağlayın! Səs səviyyəsinə nəzarət ilə oynayın! Bəlkə bəzi gecikmə vaxtlarını idarə edin və ya əksinə! dünya sizin istiridyənizdir!

Tövsiyə: