Mündəricat:

3D AIR Mouse - Arduino + İşləmə: 5 addım
3D AIR Mouse - Arduino + İşləmə: 5 addım

Video: 3D AIR Mouse - Arduino + İşləmə: 5 addım

Video: 3D AIR Mouse - Arduino + İşləmə: 5 addım
Video: Управляем адресными светодиодами на ESP32, прошивка WLED, применение в Home Assistant 2024, Noyabr
Anonim
3D AIR Mouse | Arduino + Qenerasiya
3D AIR Mouse | Arduino + Qenerasiya

3D AIR siçan | Sənaye dizayn tələbəsiyəm və keçən il "RAW materiel kimi texnologiya" adlı bir kursun bir hissəsi olaraq bu layihəni son işim olaraq hazırladım. Çox vaxt dizayn və mühəndislik üçün CAD proqramı olan SolidWorks ilə işləyirəm.. Möhkəm bir cismi ekranda fırlatmaq siçanın orta düyməsini istifadə etməklə aparılır. Daha intuitiv bir şey axtarırdım. Necə başa gəldim, 3D hava siçanını düzəltdim, burada cismin həqiqi fırlanması siçanı hər 3 oxun ortasında havada hərəkət etdirməklə aparılır - eyni şəkildə əlinizdə tutsanız obyekti döndərərsiniz. Arduinodan, bir neçə sensordan və İşləmə eskizindən istifadə etdim. Qeyd:- Hal-hazırda bu konsepsiyanın yalnız bir nümayişidir, çünki SolidWork ilə işləmək üçün heç bir plug-in yoxdur (amma əlbəttə ki, Necə bilirsinizsə yazın:) Özünüz sınamaq və qurmaq istəyirsinizsə, bəzi fikirlər … Zövq alın … (İlk təlimatımdır) İşdə bitmiş layihənin video demosu.

Addım 1: Avadanlıq və Əşyalar

Avadanlıq və Əşyalar
Avadanlıq və Əşyalar
Avadanlıq və Əşyalar
Avadanlıq və Əşyalar
Avadanlıq və Əşyalar
Avadanlıq və Əşyalar
Avadanlıq və Əşyalar
Avadanlıq və Əşyalar

3 oxlu akselerometr + kompas sensoru əsasında qurulduğu üçün ən ucuz Təlimat deyil. Ehtiyacınız olan şeylər:* Siçan - istifadə olunan daha yaxşıdır (yalnız istifadə edildiyinə və ucuz olduğuna görə), hər hansı bir siçan bunu etməlidir. Sensorları və bəzi əlavə telləri yerləşdirmək üçün bir az yerə ehtiyacınız var, buna görə əlavə incə / əlavə kiçik siçanlara müraciət etməyin. $ 149* Məntiq Səviyyə Dönüştürücüsü - MÜTLƏQ! Arduino 5V və 3 oxlu sensor 3.3V olduğundan, 5V -ni 3.3V -ə çevirmək üçün bunlardan birinə ehtiyacınız var. Böyük bir adı var, ancaq SpurkFun -da yalnız 1.95 dollara başa gəlir.* Böyük Optik Dedektör / Fototransistor - Bu layihədə siçanın iş səthindən qaldırıldığını aşkar etmək üçün istifadə olunan sadə bir optik sensordur. SpurkFun -dan 2,25 dollara alınıb, seçdiyiniz siçanın içərisində saxlamaq üçün kifayət qədər yeriniz yoxdursa, daha kiçik və daha ucuz istifadə edə bilərsiniz. * Bir (1) LED - rəngə əhəmiyyət verməyin, ultra parlaq daha yaxşı işləyəcək.* 2 Rezistor - Bir (1) x 100Ω və Bir (1) x 100KΩ (Optik sensor üçün)* Arduino lövhəsi - DA! Diecimila modelindən istifadə etdim. Daha yeni bir Duemilanove, SpurkFun -da təxminən 29.95 dollara satıla bilər (Həm də işləməlidir) + Arduino proqramı quraşdırılmışdır.* Proqram təminatı quraşdırılmışdır.* Layihənin mənbə kodu (narahat olmayın, bir saniyədə yükləyə bilərsiniz.) Üstəlik: Bəziləri isti yapışqan (hər şeyi yerində düzəltmək üçün) Bir neçə kiçik vint. 6 sm -lik (diametrli) 10 sm -ə yaxın taxta lövbər. Bəzi əlavə tellər Formalaşdırmaq üçün). ("Tamam, bu addımıma görə nifrət etmə, ingilis dili mənim 2 -ci dilimdir, əgər bunu səhv başa düşmüşəmsə, üzr istəyirəm, əminəm ki, nə etdiyimi bir saniyədə başa düşəcəksən. bunu şəkillərdə görəcəksiniz ")

Addım 2: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika

Hər şey birlikdə lehimlənməlidir … Bir şəkildə … DİQQƏT: 3 eksenli sensor, hər şeyi işə salmadan əvvəl naqilləri iki dəfə yoxlayın. yalnız mənim etdiyim pin nömrələrini istifadə etsəniz işləyə bilər, ancaq koddakı uyğun nömrələri dəyişdirdiyiniz müddətdə əlaqə qurarkən çəkinməyin. 3 eksenli sensoru məntiq səviyyəsi çeviricisinə bağlamaq: Sensor VCC -> Arduino 3V3Sensor GND -> Arduino GndSensor SDA -> TXI çeviricisi (Chan1) TXO (Chan1) -> Arduino ANALOG IN 4Sensor SCL -> TXI (Chan2) çeviricisi TXO (Chan2) -> 5Converter GND -də Arduino ANALOG (ən azı onlardan biri) -> Arduino GndConverter HV -> Arduino 5VConverter LV -> Arduino 3V3 Arduino üçün optik sensor: Əlavə edilmiş şəklə baxın ArduinoLED -də = Pin 11 -də Pin 11 GND (optik sensorlardan birini istifadə etdim)+ Arduino PIN 13-ə qədər (Bu pin artıq bortda bir rezistora malik olduğu üçün edildi, başqa birindən istifadə edirsinizsə, LED-i yandırmamaq üçün bir rezistor istifadə etdiyinizə əmin olun)

Addım 3: Siçanın hazırlanması

Siçanın hazırlanması
Siçanın hazırlanması
Siçanın hazırlanması
Siçanın hazırlanması
Siçanın hazırlanması
Siçanın hazırlanması

Sensorların siçan yuvası içərisində yer tapdıqları yerdir. 3 oxlu sensoru düzəltmək üçün ən yaxşı yeri tapın. Düzəldildiyinə əmin olun və oriyentasiyanı nəzərə alın (Əlinizdəki sensoru nə vaxt əldə edəcəyinizi biləcəksiniz) İstədiyiniz kimi düzəldə bilərsiniz, 2 kiçik vintləri qəbul etmək üçün qazılmış 2 ədəd taxta ankerdən istifadə etdim. və siçanın əsas lövhəsinə isti şəkildə yapışdırılır. Optik sensor üçün siçanın altındakı düzbucaqlı bir çuxur düzəldin, fikrin sensorun masaya hər zaman "baxmasını" istəyin. Siçan qaldırıldıqda və sensor vəziyyəti "açıq" olduqda (görmək üçün heç bir masa yoxdur) siçan 3D rejiminə keçir (İşləmə eskizini işə salır) Əlavə telləri (sensorlardan Arduino -ya) çıxarmaq üçün başqa bir çuxur düzəldin. plastik korpus. Mina siçanın sağ tərəfində yerləşdi. LED -in göstəriləcəyi yeri düzəldin. Bu layihədə LED 3D rejiminin göstəricisidir. Silikon siçan təkərinin yanına mənimki qoyuram. Siçan qaldırıldıqda təkərdə gözəl mavi parıltı vardı.

Addım 4: Mənbə Kodu

Arduino kodu müəllimim Shachar Geiger tərəfindən yazılmışdır və bu layihə üçün mənim tərəfimdən dəyişdirilmişdir. Kodda bu hissə sensordan gələn xam məlumatları (adətən -180 ilə 180 x 10) 0-255 getHeading () -ə çevirir; Serial.write ('x'); x = (x +1800) / 14; Serial.write (x); Serial.write ('y'); y = (y+1800) / 14; Serial.write (y); Serial.write ('z'); z = (z+1800) / 14; Serial.write (z); Sensordan və Arduinodan gələn məlumatlar hər bir ayrı ox üçün İşlənmə eskizinə gedir, lakin əvvəlki ox hərfi ilə (exp X12 Y200 Z130 üçün), aşağıdakı kod məktubu buraxır və yalnız COM -a göndəriləcək dəyərləri buraxır. port while (port.available () == 0) {} char oxu = 0; while (reading! = 'x') {while (port.available () == 0) {} reading = (char) port.read ();} X = port.read (); while (reading! = 'Y') {while (port.available () == 0) {} reading = (char) port.read ();} Y = port.read (); while (oxu! = 'z') {while (port.available () == 0) {} reading = (char) port.read ();} Z = port.read (); Bu kod parçası bütün mənfi dəyərləri aşağı salır … əgər ((X! = -1) && (Y! = -1) && (Z! = -1)) {rotateZ (-(float) Y/25.0); rotateX ((float) X/25.0); rotateY ((float) Z/25.0); pX = X; pY = Y; pZ = Z;} başqa {rotateZ (-(float) pY/25.0); rotateX ((float) pX /25.0);rotateY((float)pZ/25.0);} Əlavə edilmiş ZIP faylında həm Arduino, həm də Qenerasiya kodu var

Addım 5: Video

Budur … Bu, bir videoda bitmiş layihədir. Kiçik bir qüsur var (görürsən ki, kub bəzən videoda "tullanır"), bunun səbəbi Z oxuna görə sənin başına gələ bilməz …

Tövsiyə: