Mündəricat:

Simsiz Akselerometr Nəzarətli Rgb-LED: 4 Addım
Simsiz Akselerometr Nəzarətli Rgb-LED: 4 Addım

Video: Simsiz Akselerometr Nəzarətli Rgb-LED: 4 Addım

Video: Simsiz Akselerometr Nəzarətli Rgb-LED: 4 Addım
Video: Introduction to M5Stack Core2 ESP32 2" Display Development Module -Robojax 2024, Iyul
Anonim
Simsiz Accelerometer Nəzarət Rgb-LED
Simsiz Accelerometer Nəzarət Rgb-LED
Simsiz Accelerometer Nəzarət Rgb-LED
Simsiz Accelerometer Nəzarət Rgb-LED

MEMS (Mikroelektromekanik Sistemlər) Accelerometers, cib telefonlarında və kameralarda əyilmə sensoru olaraq geniş istifadə olunur. Sadə akselerometrlər həm ic-çip, həm də ucuz inkişaf pcb lövhələri olaraq mövcuddur.

Simsiz çiplər həm də əlverişli və yığılmış sxemlərdə mövcuddur, onlarda anten şəbəkəsi və göyərtədən ayrılan qapaqlar mövcuddur. Həm simsiz lövhəni, həm də akselerometrini ardıcıl interfeys vasitəsilə bir mikro nəzarətçiyə bağlayın və nintendo-wii funksiyalarına malik simsiz idarəediciniz var. Sonra eyni tip simsiz çip və pwm nəzarətli rgb-LEDləri olan bir alıcı qurun, voila, simsiz, əyilmə ilə idarə olunan rəngli otaq şimşəkləriniz var. Çörək lövhəsi yuxarıya baxmalı və LED soyuq mavi, yalnız mavi LED aktivdirsə, verici lövhəsini eyni səviyyədə saxlayın. Sonra ötürücünü bir istiqamətə əyərək, hansı istiqamətə əydiyinizə görə qırmızı və ya yaşıl rəngdə qarışdırın. 90 dərəcəyə qədər əymək və 90 dərəcə əyilmədə yalnız qırmızı və ya yaşıl aktiv olana qədər bütün qırmızı və mavi və ya yaşıl və mavi qarışıqlarını keçin. Həm x, həm də y istiqamətində bir az əyilməklə bütün rənglərin qarışığını əldə edəcəksiniz. 45 dərəcə bütün istiqamətlərdə işıq, qırmızı, yaşıl və mavi, başqa sözlə ağ işığın bərabər bir qarışığıdır. İstifadə olunan hissələr internet hobbi elektron mağazalarından əldə edilə bilər. Bəzi fotoşəkillərdən müəyyən edilməlidir.

Addım 1: Accelerometer ilə ötürücü

Accelerometer ilə ötürücü
Accelerometer ilə ötürücü
Accelerometer ilə ötürücü
Accelerometer ilə ötürücü
Sürətləndirici ilə ötürücü
Sürətləndirici ilə ötürücü
Accelerometer ilə ötürücü
Accelerometer ilə ötürücü

Verici Atmel avr168 mikro nəzarətçisinə əsaslanır. 168 ilə əlverişli qırmızı lövhə, gərginlik tənzimləyicisi və sıfırlama dövrəsi olan bir arduino lövhəsidir. Akselerometr avr-a bit-banged i2c avtobusu ilə, simsiz lövhə isə SPI (Serial Periferik İnterfeys) aparatı ilə bağlıdır.

Çörək taxtası tamamilə simsizdir, altındakı 4, 8V batareya paketi. Simsiz lövhə və arduino wee, 9 V -ə qədər qəbul edir və onboard xətti gərginlik tənzimləyicisinə malikdir, lakin akselerometrin tənzimlənən dəmir yolundan 3, 3V ehtiyacı var.

Addım 2: RGB-LED ilə alıcı

RGB-LED ilə alıcı
RGB-LED ilə alıcı
RGB-LED ilə alıcı
RGB-LED ilə alıcı
RGB-LED ilə alıcı
RGB-LED ilə alıcı

Alıcı, kəpənək adlı atmel avr169 demoboard -a əsaslanır. Lövhədə bu layihədə istifadə edilməyən bir çox xüsusiyyət var. Simsiz ötürücü PortB-yə, pwm idarə olunan led isə PortD-ə qoşulur. Güc ISP başlığında verilir, 4.5V kifayətdir. Simsiz lövhə, giriş/çıxış pinlərində 5V -a dözə bilər, ancaq təyyarə tənzimləyicisi tərəfindən verilən 3.3V -luq enerjiyə ehtiyac var.

RF ötürücü üçün dəyişdirilmiş başlıq kabeli həqiqətən rahatdır və simsiz lövhəni kəpənəkdəki güc və aparat spi nəzarətçisi ilə birləşdirir. Shiftbright, 4 pinlik bir əmri qəbul edən və sonra çıxış pinlərində bağlanan bir rgb-in pulse width modulation nəzarətçisidir. Həqiqətən seriyaya qoşulmaq asandır. Yalnız bir çox əmr sözünü dəyişdirin və ilk çıxarılan papatya zəncirindəki son bağlı LED-də sona çatacaq.

Addım 3: C proqramlaşdırma

Kod C dilində yazılmışdır, çünki arduinonun əsaslandığı "daha asan" işləmə dilini öyrənməyə əhəmiyyət vermədim. Öyrənmə təcrübəsi üçün SPI və rf tranceiver interfeysini özüm yazdım, lakin avrfreaks.net saytından i2c assembler kodunu götürdüm. Shiftbright interfeysi C kodunda bitbanged olunur. Qarşılaşdığım bir problem, akselerometr çıxışında kiçik irradik dəyişikliklər idi, bu da ledin çox titrəməsinə səbəb oldu. Bunu bir proqram aşağı keçid filtri ilə həll etdim. Accelerometer-dəyərlər üzrə hərəkət edən ağırlıqlı orta. Rf-tranziver hardware crc və ack-ı avtomatik ötürmə ilə dəstəkləyir, lakin bu layihə üçün ledlərin real vaxtda, hamar bir şəkildə yenilənməsi daha vacib idi. Zədələnmiş paketlər atıldığı müddətcə, akselerometr dəyərləri olan hər bir paketin alıcıya çatmasına ehtiyac yoxdur. 20 metrlik görmə xəttində itirilmiş RF paketləri ilə heç bir problemim yox idi. Ancaq uzaqlaşdıqda əlaqə qeyri-sabit oldu və ledlər daim yenilənmədi. Yalan kodda ötürücünün əsas döngəsi: initialize (); while (true) {Values = abs (x, y, z accelerometer dəyərlərini əldə edin)); RF_send (Dəyərlər); gecikmə (20ms);} Alıcının yalan koddakı əsas döngəsi: initialize (); while (true) {newValues = blocking_receiveRF ()); rgbValues = rgbValues + 0.2*(newValues-rgbValues); shiftbrigth üçün rgbValues yazın;}

Addım 4: Nəticə

Nəticə
Nəticə
Nəticə
Nəticə
Nəticə
Nəticə
Nəticə
Nəticə

Nəzarətin nə qədər hamar və dəqiq olduğuna təəccübləndim. Həqiqətən rəngin barmaq ucu dəqiqliyinə nəzarət edirsiniz. Pwm-LED nəzarətçi, hər rəng üçün 10 bit qətnaməyə malikdir ki, bu da milyonlarla mümkün rəng əldə etməyə imkan verir. Təəssüf ki, akselerometrdə nəzəri rənglərin sayını minlərə endirən yalnız 8 bit qətnamə var. Ancaq rəng dəyişikliyində hər hansı bir addımı hiss etmək hələ də mümkün deyil. Alıcını IKEA lampasına qoydum və aşağıda müxtəlif rəngli şəkillər çəkdim. Bir video da var (dəhşətli keyfiyyət olsa da)

Tövsiyə: