İçindekiler:

Wi-Fi Üzerinden Saf Verileri Kontrol Etmek için Complex Arts Sensör Kartını Kullanma: 4 Adım (Resimlerle)
Wi-Fi Üzerinden Saf Verileri Kontrol Etmek için Complex Arts Sensör Kartını Kullanma: 4 Adım (Resimlerle)

Video: Wi-Fi Üzerinden Saf Verileri Kontrol Etmek için Complex Arts Sensör Kartını Kullanma: 4 Adım (Resimlerle)

Video: Wi-Fi Üzerinden Saf Verileri Kontrol Etmek için Complex Arts Sensör Kartını Kullanma: 4 Adım (Resimlerle)
Video: PSI ARAŞTIRMASI: İSPANYA'DA PARAPSİKOLOJİ | MANUEL KARBALLAL 2024, Temmuz
Anonim
Saf Verileri WiFi Üzerinden Kontrol Etmek için Complex Arts Sensör Kartını Kullanma
Saf Verileri WiFi Üzerinden Kontrol Etmek için Complex Arts Sensör Kartını Kullanma
Saf Verileri WiFi Üzerinden Kontrol Etmek için Complex Arts Sensör Kartını Kullanma
Saf Verileri WiFi Üzerinden Kontrol Etmek için Complex Arts Sensör Kartını Kullanma

Hiç hareket kontrolü ile deney yapmak istediniz mi? Elinizin bir dalgasıyla işleri hareket ettirmek mi? Bileğinizi çevirerek müziği kontrol etmek mi? Bu Eğitilebilirlik size nasıl olduğunu gösterecek!

Complex Arts Sensör Kartı (complexarts.net), ESP32 WROOM tabanlı çok yönlü bir mikro denetleyicidir. Dahili WiFi ve Bluetooth ve 23 yapılandırılabilir GPIO pini dahil olmak üzere ESP32 platformunun tüm özelliklerine sahiptir. Sensör Kartı ayrıca, yerleşik sensör füzyonu ve dörtlü denklemleri gerçekleştiren, süper hassas yönlendirme, yerçekimi vektörü ve doğrusal hızlanma verileri sağlayan 9 DOF hareket işlemcisi olan BNO_085 IMU'ya sahiptir. Sensör Kartı Arduino, MicroPython veya ESP-IDF kullanılarak programlanabilir, ancak bu ders için kartı Arduino IDE ile programlayacağız. ESP32 modüllerinin Arduino IDE'den yerel olarak programlanamayacağını belirtmek önemlidir, ancak bunu mümkün kılmak çok basittir; burada harika bir öğretici var: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/ tamamlanması yaklaşık 2 dakika sürmeli. İhtiyacımız olan son kurulum parçası, burada bulabileceğiniz Sensör Kartındaki USB'den UART'a çip sürücüsüdür: https://www.silabs.com/products/development-tools/software/usb-to -uart-bridge-vcp-sürücüleri. Sadece işletim sisteminizi seçin ve yaklaşık 2 dakika daha sürmesi gereken yükleyin. Bu bittiğinde, gitmeye hazırız!

[Bu ders, Arduino veya Pure Data ile herhangi bir aşinalık içermez, ancak kurulumlarını kapsamayacaktır. Arduino, aduino.cc'de bulunabilir. Pure Data,puredata.info adresinde bulunabilir. Her iki site de kurulum ve kurulum için takip etmesi kolay talimatlara sahiptir.]

Ayrıca… UDP bağlantılarını kurma, ESP32'yi Arduino ile programlama ve temel Pure Data yama oluşturma gibi bu eğitimde ele alınan kavramlar, sayısız proje için uygulanabilecek yapı taşlarıdır, bu yüzden bir kez burada durmayın. bu kavramları indir!

Gereçler

1. Karmaşık Sanatlar Sensör Kartı

2. Arduino IDE'si

3. Saf Veri

Adım 1: Kodun İncelenmesi:

Kodun İncelenmesi
Kodun İncelenmesi
Kodun İncelenmesi
Kodun İncelenmesi

İlk önce Arduino koduna bakacağız. (Kaynak https://github.com/ComplexArts/SensorBoardArduino adresinde mevcuttur. Devam ederken kodla birlikte takip etmeniz önerilir.) Biri çekirdek Arduino kütüphanesi olmayan bazı kütüphanelere ihtiyacımız var, bu yüzden yüklemeniz gerekebilir. Bu proje SparkFun_BNO080_Arduino_Library.h dosyasına dayanmaktadır, bu nedenle buna sahip değilseniz, Sketch -> Kitaplığı Dahil Et -> Kitaplıkları Yönet'e gitmeniz gerekir. “bno080” yazın, yukarıda belirtilen kütüphane görünecektir. Kuruluma basın.

Kullanılan diğer üç kitaplık, varsayılan olarak Arduino ile birlikte gelmelidir. İlk olarak, BNO ile iletişim kurmak için SPI kütüphanesini kullanacağız. ESP32 ve BNO arasında UART kullanmak da mümkündür, ancak SparkFun'un zaten SPI kullanan bir kitaplığı olduğundan, buna bağlı kalacağız. (Teşekkürler, SparkFun!) SPI.h dosyasını dahil etmek, SPI iletişimi için hangi pinleri ve portları kullanmak istediğimizi seçmemize izin verecektir.

WiFi kitaplığı, kablosuz bir ağa bağlanmamızı sağlayan işlevleri içerir. WiFiUDP, bu ağ üzerinden veri göndermemize ve almamıza izin veren işlevleri içerir. Sonraki iki satır bizi ağa bağlar – ağ adınızı ve şifrenizi girin. Bundan sonraki iki satır, verilerimizi gönderdiğimiz ağ adresini ve bağlantı noktasını belirtir. Bu durumda, sadece yayın yapacağız, bu da onu ağımızdaki dinleyen herkese göndermek anlamına geliyor. Bağlantı noktası numarası, birazdan göreceğimiz gibi, kimin dinlediğini belirler.

Bu sonraki iki satır, ilgili sınıfları için üyeler oluşturur, böylece daha sonra işlevlerine kolayca erişebiliriz.

Ardından, ESP'nin uygun pinlerini BNO'daki ilgili pinlerine atadık.

Şimdi SPI port hızını da ayarlayarak SPI class üyesini kurduk.

Son olarak setup fonksiyonuna geçiyoruz. Burada, istersek çıktımızı bu şekilde izleyebilmemiz için bir seri bağlantı noktası başlatacağız. Ardından WiFi'ye başlıyoruz. Programın devam etmeden önce bir WiFi bağlantısı beklediğine dikkat edin. WiFi bağlandıktan sonra UDP bağlantısını başlatıyoruz, ardından ağ adımızı ve IP adresimizi seri monitöre yazdırıyoruz. Bundan sonra SPI portunu başlatıyoruz ve ESP ile BNO arasındaki iletişimi kontrol ediyoruz. Son olarak, “enableRotationVector(50)” fonksiyonunu çağırıyoruz; çünkü bu ders için sadece döndürme vektörünü kullanacağız.

Adım 2: Kodun Geri Kalanı…

Kodun Geri Kalanı…
Kodun Geri Kalanı…

Ana döngüye () gitmeden önce, “mapFloat” adında bir fonksiyonumuz var.

Bu, değerleri diğer değerlere eşlemek veya ölçeklendirmek için eklediğimiz özel bir işlevdir. Arduino'daki yerleşik harita işlevi yalnızca tamsayı eşlemeye izin verir, ancak BNO'dan gelen tüm başlangıç değerlerimiz -1 ile 1 arasında olacaktır, bu nedenle onları gerçekten istediğimiz değerlere manuel olarak ölçeklendirmemiz gerekecek. Endişelenmeyin - işte bunu yapmak için basit işlev:

Şimdi ana döngüye () geliyoruz. Fark edeceğiniz ilk şey, programı bir ağ bağlantısı için bekleten gibi başka bir engelleme işlevidir. Bu, BNO'dan veri gelene kadar durur. Bu verileri almaya başladığımızda, gelen dördey değerlerini kayan noktalı değişkenlere atar ve bu verileri seri monitöre yazdırırız.

Şimdi bu değerleri haritalandırmamız gerekiyor.

[UDP iletişimi hakkında bir kelime: veriler UDP üzerinden 8 bitlik paketler halinde veya 0-255 arası değerler aktarılır. 255'in üzerindeki herhangi bir şey, değerine eklenerek bir sonraki pakete itilecektir. Bu nedenle, 255'in üzerinde değer olmadığından emin olmamız gerekiyor.]

Daha önce bahsedildiği gibi, -1 – 1 aralığında gelen değerlerimiz var. 0'ın altındaki herhangi bir şey kesileceğinden (veya 0 olarak görüneceğinden) bu bize üzerinde çalışmak için fazla bir şey vermez ve yapamayız. 0 – 1 arasında değerlere sahip bir ton İlk önce haritalanmış değerimizi tutacak yeni bir değişken tanımlamalıyız, sonra bu ilk değişkeni alıp -1 – 1 ile 0 – 255 arasında eşleyerek sonucu adı verilen yeni değişkenimize atayacağız. Nx.

Artık haritalanmış verilerimiz olduğuna göre paketimizi bir araya getirebiliriz. Bunu yapmak için, tüm verilerin sığacağından emin olmak için [50] boyutunda bir paket verisi için bir arabellek bildirmeliyiz. Daha sonra yukarıda belirttiğimiz adres ve port ile pakete başlıyoruz, tamponumuzu ve 3 değeri pakete yazıp paketi sonlandırıyoruz.

Son olarak, eşlenen koordinatlarımızı seri monitöre yazdırıyoruz. Artık Arduino kodu tamamlandı! Kodu Sensör Kartına gönderin ve her şeyin beklendiği gibi çalıştığından emin olmak için seri monitörü kontrol edin. Eşlenen değerlerin yanı sıra kuaterniyon değerlerini de görmelisiniz.

3. Adım: Saf Verilerle Bağlanma…

Saf Verilerle Bağlanmak…
Saf Verilerle Bağlanmak…

Şimdi Saf Veri için! Pure Data'yı açın ve yeni bir yama başlatın (ctrl n). Yaratacağımız yama çok basit, sadece yedi nesneye sahip. İlk oluşturacağımız [netreceive] nesnesidir. Bu, tüm UDP iletişimini yöneten yamamızın ekmek ve tereyağıdır. [netreceive] nesnesi için üç argüman olduğuna dikkat edin; -u UDP'yi, -b ikiliyi belirtir ve 7401 elbette dinlediğimiz bağlantı noktasıdır. Bağlantı noktanızı belirtmek için "listen 7401" mesajını [netreceive]'e de gönderebilirsiniz.

Veriler geldiğinde, paketini açmamız gerekiyor. Bir [print] nesnesini [netrecieve]'e bağlarsak, verilerin başlangıçta bize bir sayı akışı olarak geldiğini görebiliriz, ancak bu sayıları ayrıştırmak ve her birini farklı bir şey için kullanmak istiyoruz. Örneğin, bir osilatörün perdesini kontrol etmek için X ekseni dönüşünü ve hacim için Y eksenini veya herhangi bir sayıda başka olasılığı kullanmak isteyebilirsiniz. Bunu yapmak için, veri akışı, argümanları olan üç kayan nokta (f f f) olan bir [unpack] nesnesinden geçer.

Artık bu kadar uzakta olduğuna göre, dünya senin istiridyen! Pure Data evreninde istediğiniz her şeyi manipüle etmek için kullanabileceğiniz bir kablosuz denetleyiciniz var. Ama orada dur! Döndürme Vektörünün yanı sıra, ivmeölçer veya manyetometreyi deneyin. BNO'nun "çift dokunma" veya "sallama" gibi özel işlevlerini kullanmayı deneyin. Tek gereken, kullanım kılavuzlarında (veya bir sonraki Eğitilebilir Kitapta…) biraz kazmaktır.

4. Adım:

Yukarıda yaptığımız şey, Sensör Kartı ile Pure Data arasındaki iletişimi kurmak. Daha fazla eğlenmeye başlamak istiyorsanız, veri çıkışlarınızı bazı osilatörlere bağlayın! Ses kontrolü ile oynayın! Belki bazı gecikme sürelerini veya yankıları kontrol edin! Dünya senin midyen!

Önerilen: