Բովանդակություն:
- Քայլ 1: Այս նախագծի մասին
- Քայլ 2: Պահանջվում է սարքավորում
- Քայլ 3: Շղթա և միացումներ
- Քայլ 4: ԱՇԽԱՏԱՆՔ
- Քայլ 5: ԿՈԴ
- Քայլ 6. ՏԵՍԱՆՅՈԹ ՈEMԱԴՐՈԹՅՈՆ
Video: Servo- ի վերահսկում MPU6050- ի միջոցով Arduino- ի և ESP8266- ի միջև HC-12: 6 քայլով
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:48
Այս նախագծում մենք վերահսկում ենք servo շարժիչի դիրքը ՝ օգտագործելով mpu6050 և HC-12 Arduino UNO- ի և ESP8266 NodeMCU- ի միջև հաղորդակցության համար:
Քայլ 1: Այս նախագծի մասին
Դա ևս մեկ IoT նախագիծ է, որը հիմնված է HC-12 ՌԴ մոդուլի վրա: Այստեղ arduino- ի imu (mpu6050) տվյալները օգտագործվում են servo շարժիչը կառավարելու համար (կապված է Nodemcu- ի հետ): Այստեղ տվյալների արտացոլումը կատարվում է նաև arduino- ի այն կողմում, որտեղ mpu6050 սկիպիդարի տվյալները (պտտումը x առանցքի շուրջ) տեսանելի են դառնում մշակման ուրվագծով (որը կքննարկվի ավելի ուշ): Հիմնականում այս նախագիծը մի փոքր տաքանում է `հիշելու Imu & Servo- ի կառավարման տարբեր ասպեկտները Arduino- ի և ESP8266 nodemcu- ի միջոցով:
ՆՊԱՏԱԿ
Այս բավականին պարզ նպատակը. Մենք վերահսկում ենք Servo շարժիչի դիրքը `օգտագործելով IMU- ի սկիպիդար արժեքը: Եվ բոլորը միասին այս սկիպիդարը և համաժամանակացված շարժիչի դիրքը պատկերավոր է մշակման միջոցով:
Քայլ 2: Պահանջվում է սարքավորում
NodeMCU ESP8266 12E Wifi մոդուլ
Առանց զոդման տախտակ
Jumper մետաղալար
MPU6050 accelo+գիրո
HC-12 ՌԴ մոդուլներ (զույգ)
SG90 սերվո շարժիչ
Քայլ 3: Շղթա և միացումներ
Կապերը ուղիղ են: Դուք կարող եք servo- ն սնուցել ձեր Nodemcu- ի 3.3 Վ -ով: Դուք կարող եք նաև օգտագործել Vin- ը ՝ սերվոն միացնելու համար, եթե ձեր nodemcu- ն այդքան լարվածություն ունի այդ կապում: Բայց Lolin- ի տախտակների մեծ մասը Vin- ում 5V չունի (կախված արտադրողից):
Այս սխեմաները կազմված են EasyADA- ի միջոցով:
Քայլ 4: ԱՇԽԱՏԱՆՔ
Արդուինոյի ուրվագիծը սկսելուն պես այն կուղարկի թեքության անկյունը (որը տատանվում է -45 -ից 45 -ի սահմաններում) Nodemcu- ի hc12 ընդունիչին, որը քարտեզագրվում է 0 -ից 180 աստիճանի Servo դիրքով: Այստեղ մենք օգտագործեցինք թեքության անկյունը -45 -ից +45 աստիճանի սահմաններում, որպեսզի կարողանանք հեշտությամբ քարտեզագրել այն Սերվոյի դիրքին:
Այժմ դուք մտածում եք, թե ինչու մենք կարող ենք պարզապես օգտագործել քարտեզի մեթոդը հետևյալ կերպ.
int pos = քարտեզ (val, -45, 45, 0, 180);
Քանի որ hc12 հաղորդիչի ուղարկած բացասական անկյունը ստացվում է հետևյալ կերպ.
1 -ին կես. (Տ) 0 -ից 45 => 0 -ից 45 (Շ)
2 -րդ կես. (T) -45 -ից -1 => 255 -ից 210 (R)
Այսպիսով, դուք պետք է այն քարտեզագրեք 0 -ից 180 -ի վրա
եթե (val> = 0 && val <= 45) pos = (val*2) +90; այլապես pos = (val-210)*2;
Ես խուսափում եմ քարտեզի մեթոդից որոշ անկապ սխալի պատճառով: Դուք կարող եք փորձել դա և մեկնաբանել, որ այն աշխատում է ձեզ հետ
եթե (val> = 0 && val <= 45) pos = քարտեզ (val, 0, 45, 90, 180); else pos = քարտեզ (val, 255, 210, 0, 90); // 4 -րդ փաստարկը կարող է լինել 2 (կարող եք ստուգել)
MPU6050 սկիպիդար անկյունի հաշվարկ
Ես օգտագործում եմ MPU6050_tockn գրադարանը, որը հիմնված է IMU- ից հում տվյալներ տրամադրելու վրա:
int pitchAngle = mpu6050.getAngleX ()
Սա մեզ կստանա x- առանցքի շուրջ պտտման անկյունը: Ինչպես տեսաք նկարում, իմ իմուն ուղղահայաց տեղադրված է տախտակի վրա, այնպես որ մի շփոթեք սկիպիդարով և գլորումով: Իրականում դուք միշտ պետք է տեսնեք առանցքը տպված բեկման տախտակի վրա:
Այս գրադարանի միջոցով դուք չպետք է անհանգստանաք հատուկ գործողությունների համար հատուկ գրանցամատյաններ կարդալու ներքին էլեկտրոնիկայի վերաբերյալ: Դուք միայն նշում եք աշխատանքը և ավարտված եք:
Btw, եթե ցանկանում եք ինքնուրույն հաշվարկել անկյունը: Դուք հեշտությամբ կարող եք դա անել հետևյալ կերպ.
#ներառում
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 (ճշմարիտ); Serial.begin (9600); } void loop () {Wire.beginTransmission (MPU6050_addr); Wire.write (0x3B); Wire.endTransmission (կեղծ); Մետաղալար. Խնդրում ենք (MPU6050_addr, 14, ճշմարիտ); 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 = քարտեզ (AcX, minVal, maxVal, -90, 90); int yAng = քարտեզ (AcY, minVal, maxVal, -90, 90); int zAng = քարտեզ (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); }
Բայց, պարտադիր չէ, որ դուք այսքան կոդ գրեք ՝ անկյունը ստանալու համար: Դուք պետք է իմանաք կուլիսային փաստերը, բայց այլ մարդկանց գրադարան օգտագործելը շատ արդյունավետ է շատ նախագծերում: Այս imu- ի և այլ մոտավորությունների մասին կարող եք կարդալ ՝ հետևյալ հղումից ավելի շատ ֆիլտրացված տվյալներ ստանալու համար: Explore-mpu6050:
Փոխանցման վերջում գտնվող իմ arduino ծածկագիրը MPU6050_tockn գրադարանի օգնությամբ ունի ընդամենը 30 տող, այնպես որ գրադարանից օգտվելը լավ է, եթե IMU- ի ֆունկցիոնալության մեջ անհրաժեշտ չեն որոշ փոփոխություններ: Jeff Rowberg- ի I2Cdev անունով գրադարանը շատ օգտակար է, եթե ցանկանում եք որոշ ֆիլտրացված տվյալներ օգտագործել IMU- ի DMP (Թվային շարժման պրոցեսոր) միջոցով:
Մշակման հետ ինտեգրում
Այստեղ Մշակումն օգտագործվում է IMU- ի x առանցքի շուրջ պտտվող տվյալների պատկերացման համար `հաշվարկված MPU6050- ից ստացվող հումքի տվյալներով: Մենք ստանում ենք մուտքային հումքային տվյալները SerialEvent- ում հետևյալ եղանակով.
void serialEvent (Սերիական myPort) {
inString = myPort.readString (); փորձեք {// վերլուծել տվյալները // println (inString); Լար dataStrings = պառակտում (inString, ':'); if (dataStrings.length == 2) {if (dataStrings [0].equals ("RAW")) {for (int i = 0; i <dataStrings.length - 1; i ++) {raw = float (dataStrings [i+1]); }} else {println (inString); }}} բռնել (բացառություն ե) {println («Բռնված բացառություն»); }}
Այստեղ դուք կարող եք տեսնել արտացոլումը այս քայլին կցված պատկերում: Նոդեմկուի վերջում ստացված դիրքորոշման տվյալները տեսանելի են նաև սերիական մոնիտորի վրա, ինչպես ցույց է տրված նկարում:
Քայլ 5: ԿՈԴ
Ես կցել եմ github պահոցը: Դուք կարող եք այն կլոնավորել և պատառաքաղ օգտագործել ՝ ձեր նախագծերում օգտագործելու համար:
my_code
Ռեպոն ներառում է 2 arduino էսքիզ հաղորդիչի (arduino+IMU) և ընդունիչի (Nodemcu+Servo) համար:
Եվ մեկ մշակման ուրվագիծ: Աստղանշեք ռեպոն, եթե դա օգնում է ձեր նախագծին:
Այս ուսանելի, R- ընդունիչ & T- հաղորդիչ
Քայլ 6. ՏԵՍԱՆՅՈԹ ՈEMԱԴՐՈԹՅՈՆ
Տեսանյութը կցեմ վաղը: Հետևեք ինձ ծանուցվելու համար:
Շնորհակալություն բոլորին!
Խորհուրդ ենք տալիս:
ESP8266- ի վերահսկում Telegram հավելվածի միջոցով. 7 քայլ
ESP8266- ի վերահսկում Telegram հավելվածի միջոցով. Այ, ինչ կա, տղերք: Akarsh այստեղ CETech- ից: Երբևէ մտածե՞լ եք, որ ձեր սարքերի հետ զրուցեք հաղորդագրությունների ծրագրի միջոցով: Տարօրինակ է հնչում, ճիշտ է: Բայց այսօր մենք պատրաստվում ենք նման բան անել: Մի անհանգստացեք, որ կարիք չկա բջջային հեռախոսներ գնել
Դարպասների վերահսկում Google Օգնականի միջոցով ESP8266 NodeMCU- ի միջոցով ՝ 6 քայլ
ESP8266 NodeMCU- ի միջոցով Gate Control- ը Google Assistent- ի միջոցով. Սա իմ առաջին նախագիծն է հրահանգների վերաբերյալ, այնպես որ խնդրում եմ մեկնաբանել ստորև, եթե հնարավոր են բարելավումներ: Գաղափարն այն է, որ google- ի օգնականը ազդանշան ուղարկի դարպասի կառավարման տախտակին: Այսպիսով, հրաման ուղարկելով, կլինի փոխանցում, որը կփակի
ESP8266 վեբ սերվերի միջոցով 7-հատվածի LED ցուցադրման վերահսկում. 8 քայլ (նկարներով)
ESP8266 վեբ սերվերի միջոցով 7 հատվածի LED ցուցադրման վերահսկում. Իմ նախագիծն ունի Nodemcu ESP8266, որը վերահսկում է 7 հատվածի ցուցադրումը http սերվերի միջոցով ՝ օգտագործելով html ձև
Amazon Alexa- ն վերահսկում է 433 մՀց հեռակառավարման խելացի վարդակներ ESP8266: 4 քայլով
Amazon Alexa- ն վերահսկում է 433 մՀց հեռակառավարման խելացի վարդակներ ESP8266- ով: Այս ուսանելի ծրագրում ես ձեզ ցույց կտամ, թե ինչպես կատարել ձեր Amazon Echo հսկողությունը 433 մՀց հեռակառավարվող վարդակներ ESP8266- ի օգնությամբ: Այն, ինչ ձեզ հարկավոր է. 433 մՀց հեռակառավարվող վարդակներ DIP անջատիչներով ESP8266 (ամենահեշտը ճանապարհը NodeMCU վարազն է
Arduino- ի վերահսկում Node-RED- ից ՝ որոնվածը Firmata IoT#: 7 քայլով
Կառավարելով Arduino- ն Node-RED- ից ՝ որոնվածը Firmata IoT#: Այս հնարավորության դեպքում մենք կօգտագործենք Node-RED- ը ՝ վերահսկելու և Arduino MEGA 2560 R3- ը, Absolutely Automation- ի գործընկերոջ համագործակցության շնորհիվ ես նշեցի այս մեթոդը, որը թույլ է տալիս հեշտությամբ կառավարել Arduino- ն, եթե բարդություններ: Նաև մեկում