Mündəricat:
- Addım 1: BU PROJE HAQQINDA
- Addım 2: Avadanlıq tələb olunur
- Addım 3: Dövrə və Bağlantılar
- Addım 4: İŞLƏ
- Addım 5: KOD
- Addım 6: VİDEO NAMONSTRASİYASI
Video: HC-12 ilə Arduino və ESP8266 arasındakı MPU6050-dən istifadə edərək servoya nəzarət: 6 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
Bu layihədə, Arduino UNO və ESP8266 NodeMCU arasında əlaqə üçün mpu6050 və HC-12 istifadə edərək bir servo motorun vəziyyətini idarə edirik.
Addım 1: BU PROJE HAQQINDA
HC-12 RF moduluna əsaslanan başqa bir IoT layihəsidir. Burada arduinodan imu (mpu6050) məlumatları servo motoru idarə etmək üçün istifadə olunur (Nodemcu ilə əlaqəlidir). Burada, məlumatların vizuallaşdırılması, mpu6050 pitch məlumatlarının (x oxu ətrafında fırlanma) emal eskizi ilə görüntüləndiyi arduino tərəfində də aparılır (daha sonra müzakirə ediləcək). Əsasən bu layihə Arduino və ESP8266 nodemcu ilə Imu & Servo nəzarətinin fərqli cəhətlərini xatırlamaq üçün bir az istiləşmədir.
MƏQSƏD
Bunun olduqca aydın məqsədi, IMU -nun addım dəyərindən istifadə edərək Servo motorun mövqeyini idarə edirik. Və hamısı birlikdə bu meydança və sinxron motor mövqeyi Qenerasiya ilə görüntülənir.
Addım 2: Avadanlıq tələb olunur
NodeMCU ESP8266 12E Wifi modulu
Lehimsiz çörək taxtası
Jumper teli
MPU6050 accelo+girro
HC-12 RF modulları (cüt)
SG90 Servo motor
Addım 3: Dövrə və Bağlantılar
Əlaqələr düzdür. Nodemcu'nun 3.3V ilə servoya güc verə bilərsiniz. Nodemcu'nun bu pində bu qədər gərginlik varsa, Vindən istifadə edərək servoya güc verə bilərsiniz. Lakin əksər Lolin lövhələrində Vin -də 5V yoxdur (istehsalçıdan asılıdır).
Bu sxemlər EasyADA istifadə edərək hazırlanmışdır.
Addım 4: İŞLƏ
Arduino eskizi işə başlayan kimi, 0 -180 dərəcə Servo mövqeyi ilə eşlenen Nodemcu hc12 qəbuledicisinə (-45 ilə 45 arasında dəyişir) addım açısını göndərəcək. Burada -45 -dən +45 dərəcəyə qədər olan bucaqdan istifadə etdik ki, onu Servo mövqeyinə asanlıqla görə bilək.
İndi düşünürsünüz ki, niyə sadəcə xəritədən istifadə edə bilərik:
int pos = xəritə (val, -45, 45, 0, 180);
Çünki hc12 vericisi tərəfindən göndərilən mənfi açı belə alınır:
1. yarı: (T) 0-45 => 0-45 (R)
İkinci yarı: (T) -45 ilə -1 => 255 ilə 210 (R)
Buna görə 0 -dan 180 -ə qədər xəritələşdirməlisiniz
əgər (val> = 0 && val <= 45) pos = (val*2) +90; başqa pos = (val-210)*2;
Mənasız bir səhv səbəbiylə xəritə metodundan qaçıram. Bunu sınaya və sizinlə işlədiyini şərh edə bilərsiniz
if (val> = 0 && val <= 45) pos = map (val, 0, 45, 90, 180); else pos = xəritə (val, 255, 210, 0, 90); // 4 -cü arqument 2 ola bilər (yoxlaya bilərsiniz)
MPU6050 Pitch açısının hesablanması
IMU -dan xam məlumatların verilməsinə əsaslanan MPU6050_tockn kitabxanasından istifadə edirəm.
int pitchAngle = mpu6050.getAngleX ()
Bu bizə x oxu ətrafında fırlanma bucağı verəcək. Şəkildə gördüyünüz kimi, imu çörək taxtasına dikey şəkildə yerləşdirilib, buna görə meydança və rulonla qarışdırmayın. Əslində həmişə oxun qırılma lövhəsində yazıldığını görməlisiniz.
Bu kitabxana vasitəsi ilə, xüsusi əməliyyat üçün xüsusi qeydləri oxumağın daxili elektronikası haqqında narahat olmaq lazım deyil. yalnız işi təyin edirsiniz və bitirdiniz!
Btw, bucağı özünüz hesablamaq istəyirsinizsə. Bunu asanlıqla aşağıdakı kimi edə bilərsiniz:
#daxil edin
const int MPU6050_addr = 0x68; int16_t AcX, AcY, AcZ, Temp, GyroX, GyroY, GyroZ; void setup () {Wire.begin (); Wire.beginTransmission (MPU6050_addr); Wire.write (0x6B); Wire.write (0); Wire.endTransmission (doğru); Serial.begin (9600); } void loop () {Wire.beginTransmission (MPU6050_addr); Wire.write (0x3B); Wire.endTransmission (yanlış); Wire.requestFrom (MPU6050_addr, 14, doğru); AcX = Wire.read () << 8 | Wire.read (); AcY = Wire.read () << 8 | Wire.read (); AcZ = Wire.read () << 8 | Wire.read (); Temp = Wire.read () << 8 | Wire.read (); GyroX = Wire.read () << 8 | Wire.read (); GyroY = Wire.read () << 8 | Wire.read (); GyroZ = Wire.read () << 8 | Wire.read ();
int xAng = xəritə (AcX, minVal, maxVal, -90, 90); int yAng = xəritə (AcY, minVal, maxVal, -90, 90); int zAng = xəritə (AcZ, minVal, maxVal, -90, 90); x = RAD_TO_DEG * (atan2 (-yAng, -zAng)+PI); y = RAD_TO_DEG * (atan2 (-xAng, -zAng)+PI); z = RAD_TO_DEG * (atan2 (-yAng, -xAng)+PI); Serial.print ("AngleX ="); // Pitch Serial.println (x); Serial.print ("AngleY ="); // Roll Serial.println (y); Serial.print ("AngleZ ="); // Yaw Serial.println (z); }
Ancaq bucağı əldə etmək üçün bu qədər kodu yazmağınız lazım deyil. Səhnənin arxasındakı faktları bilməlisiniz, ancaq digər insanların kitabxanasından istifadə etmək bir çox layihədə çox təsirlidir. Aşağıdakı linkdən daha çox süzülmüş məlumat əldə etmək üçün bu imu və digər təsdiqləmələr haqqında oxuya bilərsiniz: Explore-mpu6050.
Verici ucundakı arduino kodum MPU6050_tockn kitabxanasının köməyi ilə cəmi 30 sətirdən ibarətdir, buna görə də IMU -nun funksionallığında bəzi əsas dəyişikliklərə ehtiyacınız olmadığı halda kitabxanadan istifadə etmək yaxşıdır. İMU -nun DMP (Rəqəmsal hərəkət prosessoru) istifadə edərək bəzi süzülmüş məlumatları istəsəniz Jeff Rowberg tərəfindən I2Cdev adlı bir kitabxana çox faydalıdır.
Qenerasiya ilə inteqrasiya
Burada Emal, MPU6050-dən gələn xam məlumatlarla hesablandığı kimi IMU-nun x oxu ilə bağlı fırlanma məlumatlarının görüntülənməsi üçün istifadə olunur. SerialEvent -ə daxil olan xam məlumatları aşağıdakı şəkildə alırıq:
boş serialEvent (Serial myPort) {
inString = myPort.readString (); cəhd edin {// Veriləri təhlil edin // println (inString); String dataStrings = split (inString, ':'); if (dataStrings.length == 2) {if (dataStrings [0]. bərabərdir ("RAW")) {for (int i = 0; i <dataStrings.length - 1; i ++) {raw = float (dataStrings [i+1]); }} başqa {println (inString); }}} tutmaq (İstisna e) {println ("Tutulan İstisna"); }}
Burada, bu addımda əlavə olunan görüntüdə görselleştirmeyi görə bilərsiniz. Nodemcu ucunda alınan mövqe məlumatları görüntüdə göstərildiyi kimi serial monitorda da görünür.
Addım 5: KOD
Github anbarını əlavə etdim. Layihələrinizdə istifadə etmək üçün klonlaşdıra bilərsiniz.
my_code
Repoya ötürücü (arduino+IMU) və alıcı (Nodemcu+Servo) üçün 2 arduino eskizi daxildir.
Və bir emal eskizi. Layihənizdə kömək edərsə repo ulduzlayın.
Bu təlimatlandırmada, R- Alıcı və T- Verici
Addım 6: VİDEO NAMONSTRASİYASI
Videonu sabah əlavə edəcəm. Xəbərdar olmaq üçün məni izləyin.
Hamınıza təşəkkür edirəm!
Tövsiyə:
Analog Joystick istifadə edərək 2 servoya nəzarət: 5 addım (şəkillərlə)
Analog Joystick istifadə edərək 2 servoya nəzarət etmək: salam uşaqlar, bu mənim ilk təlimatımdır və bu yazıda Arduino UNO istifadə edərək servoları idarə etmək üçün Analog Joystickdən necə istifadə edəcəyimi paylaşıram. İstədiyiniz qədər sadə izah etməyə çalışacağam. o
Arduino istifadə edərək Google köməkçisi ilə nəzarət evi işıqları: 7 addım
Arduino istifadə edərək Google köməkçisi ilə Nəzarət Evi İşıqlandırır: (22 Avqust 2020 tarixindən etibarən yeniləyin: Bu təlimat 2 yaşındadır və bəzi üçüncü tərəf tətbiqlərinə əsaslanır. Onların tərəfindəki hər hansı bir dəyişiklik bu layihəni işləməyə bilər. Ola bilər və ya olmaya bilər. İndi işləyin, ancaq bir istinad olaraq izləyə və buna uyğun olaraq dəyişdirə bilərsiniz
HT12D HT12E istifadə edərək RF 433MHZ Radio İdarəetmə - 433mhz ilə HT12E və HT12D istifadə edərək Rf Uzaqdan İdarəetmə edilməsi: 5 addım
HT12D HT12E istifadə edərək RF 433MHZ Radio İdarəetmə | HT12E və HT12D -dən 433mhz istifadə edərək Rf Uzaqdan İdarəetmə edilməsi: Bu təlimatda sizə HT12E kodlu 433mhz ötürücü qəbuledici modulu istifadə edərək RADIO uzaqdan idarə etməyi göstərəcəyəm. HT12D kod deşifratoru IC. Bu təlimatda çox ucuz komponentləri istifadə edərək məlumat göndərə və ala bilərsiniz: HT
NodeMCU istifadə edərək səs əmri ilə cihazlara nəzarət: 7 addım (şəkillərlə)
NodeMCU istifadə edərək Səs Komandası ilə Cihazlara Nəzarət: Hamıya salam demək istəyirəm, ilk dəfə təlimatlı bir layihə yazıram. İngilis dili mənim ana dilim deyil, buna görə də mümkün qədər qısa və aydınlaşdırmağa çalışacağam. Cihazları səsli komanda ilə idarə etmək heç də qəribə deyil
Bir Smartfondan və ya Səs Çıxışlı İstənilən Cihazdan İstifadə edərək 4 Servoya qədər İdarə Edin: 3 Addım
Bir Smartfondan və ya Səs Çıxışlı İstənilən Cihazdan İstifadə Edilən 4 Servoya qədər Nəzarət: Burada audio faylını oxuya bilən hər hansı bir cihazla dörd servoya qədər idarə etmək üçün sadə bir elektron montaj təqdim edirəm