Orodha ya maudhui:
- Hatua ya 1: KUHUSU MRADI HUU
- Hatua ya 2: Vifaa vya vifaa vinahitajika
- Hatua ya 3: Mzunguko na Muunganisho
- Hatua ya 4: KUFANYA KAZI
- Hatua ya 5: CODE
- Hatua ya 6: MAONYESHO YA VIDEO
Video: Kudhibiti Servo Kutumia MPU6050 Kati ya Arduino na ESP8266 Pamoja na HC-12: Hatua 6
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:52
Katika mradi huu, tunadhibiti msimamo wa motor servo kutumia mpu6050 na HC-12 kwa mawasiliano kati ya Arduino UNO na ESP8266 NodeMCU.
Hatua ya 1: KUHUSU MRADI HUU
Ni mradi mwingine wa IoT kulingana na moduli ya HC-12 RF. Hapa, data ya imu (mpu6050) kutoka arduino hutumiwa kudhibiti injini ya servo (iliyounganishwa na Nodemcu). Hapa, taswira ya data pia inafanywa kwa upande wa arduino ambapo data ya lami ya mpu6050 (mzunguko juu ya mhimili wa x) inaonyeshwa na mchoro wa usindikaji (uliojadiliwa baadaye). Kimsingi mradi huu ni joto kidogo tu kwa kukumbuka hali tofauti za udhibiti wa Imu & Servo na Arduino na ESP8266 nodemcu.
LENGO
Lengo la hii wazi kabisa, Tunadhibiti msimamo wa motor Servo kutumia kiwango cha lami cha IMU. Na wote kwa pamoja nafasi hii ya gari na iliyolandanishwa inaonyeshwa na Usindikaji.
Hatua ya 2: Vifaa vya vifaa vinahitajika
NodeMCU ESP8266 12E moduli ya Wifi
Bodi ya mkate isiyo na waya
Waya wa jumper
MPU6050 accelo + gyro
Moduli za HC-12 RF (jozi)
SG90 Servo motor
Hatua ya 3: Mzunguko na Muunganisho
Uunganisho ni sawa mbele. Unaweza nguvu servo na 3.3V ya Nodemcu yako. Unaweza pia kutumia Vin kuwezesha servo ikiwa nodemcu yako ina voltage nyingi kwenye pini hiyo. Lakini bodi nyingi za Lolin hazina 5V kwenye Vin (inategemea mtengenezaji).
Michoro hii ya mzunguko imetengenezwa kwa kutumia EasyADA.
Hatua ya 4: KUFANYA KAZI
Mara tu mchoro wa arduino ulipoanza, itatuma pembe ya lami (ambayo ni kati ya -45 hadi 45) kwa mpokeaji wa hc12 wa Nodemcu ambaye amepangwa na 0 hadi 180 nafasi ya Servo. Hapa tulitumia pembe ya lami kutoka -45 hadi +45 digrii ili tuweze kuiweka ramani hiyo kwa nafasi ya Servo.
Sasa, unafikiria kwanini tunaweza kutumia tu njia ya ramani kama ifuatavyo: -
int pos = ramani (val, -45, 45, 0, 180);
Kwa sababu pembe hasi iliyotumwa na transmitter ya hc12 inapokelewa kama:
Nusu ya 1: (T) 0 hadi 45 => 0 hadi 45 (R)
Nusu ya 2: (T) -45 hadi -1 => 255 hadi 210 (R)
Kwa hivyo lazima uipange kwa 0 hadi 180 kama
ikiwa (val> = 0 && val <= 45) pos = (val * 2) +90; mwingine pos = (val-210) * 2;
Ninaepuka njia ya ramani kwa sababu ya hitilafu isiyo na maana. Unaweza kujaribu hiyo na kutoa maoni inafanya kazi na wewe
ikiwa (val> = 0 && val <= 45) pos = ramani (val, 0, 45, 90, 180); mwingine pos = ramani (val, 255, 210, 0, 90); // hoja ya 4 inaweza kuwa 2 (unaweza kuangalia)
Hesabu ya Pembe ya Angle ya MPU6050
Ninatumia maktaba ya MPU6050_tockn ambayo inategemea kutoa data ghafi kutoka kwa IMU.
int pitchAngle = mpu6050.getAngleX ()
Hii itatupatia pembe ya mzunguko juu ya mhimili wa x. Kama unavyoona kwenye takwimu, imu yangu imewekwa wima kwenye ubao wa mkate kwa hivyo usichanganye na lami na roll. Kweli unapaswa kuona kila wakati mhimili umechapishwa kwenye bodi ya kuzuka.
Kupitia maktaba hii, sio lazima ujisumbue juu ya umeme wa ndani wa kusoma rejista maalum za operesheni maalum. wewe taja kazi tu na umemaliza!
Btw ikiwa unataka kuhesabu pembe na wewe mwenyewe. Unaweza kuifanya kwa urahisi kama ifuatavyo:
# pamoja
const int MPU6050_addr = 0x68; int16_t AcX, AcY, AcZ, Temp, GyroX, GyroY, GyroZ; kuanzisha batili () {Wire.begin (); Uwasilishaji wa waya (MPU6050_addr); Andika waya (0x6B); Andika waya (0); Uwasilishaji wa waya (kweli); Kuanzia Serial (9600); } kitanzi batili () {Wire.beginTransmission (MPU6050_addr); Andika waya (0x3B); Uwasilishaji wa waya (uwongo); Ombi la Wire. From (MPU6050_addr, 14, kweli); 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 = waya.soma () << 8 | Wire.read (); GyroZ = Wire.read () << 8 | Wire.read ();
int xAng = ramani (AcX, minVal, maxVal, -90, 90); int yAng = ramani (AcY, minVal, maxVal, -90, 90); int zAng = ramani (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); }
Lakini, sio lazima kwamba utaandika nambari hii nyingi kupata pembe. Unapaswa kujua ukweli nyuma ya eneo lakini kutumia maktaba ya watu wengine ni bora sana katika miradi mingi. Unaweza kusoma juu ya imu hii na viboreshaji vingine kupata data iliyochujwa zaidi kutoka kwa kiunga kifuatacho: Chunguza-mpu6050.
Nambari yangu ya arduino mwisho wa kupitisha ina laini 30 tu kwa msaada wa maktaba ya MPU6050_tockn kwa hivyo kutumia maktaba ni nzuri isipokuwa hauitaji mabadiliko ya msingi kwa utendaji wa IMU. Maktaba inayoitwa I2Cdev na Jeff Rowberg inasaidia sana ikiwa unataka data fulani iliyochujwa kwa kutumia DMP (processor ya mwendo wa dijiti) ya IMU.
Ujumuishaji na Usindikaji
Hapa Usindikaji hutumiwa kutazama data ya mzunguko kuhusu x-axis ya IMU kama ilivyohesabiwa na data ghafi inayotoka MPU6050. Tunapokea data mbichi inayoingia katika SerialEvent kwa njia ifuatayo:
tupu serialEvent (Serial myPort) {
inString = myPort.readString (); jaribu {// Changanua data // println (inString); Kamba dataStrings = split (inString, ':'); ikiwa (dataStrings.length == 2) {if (dataStrings [0].sawa ("RAW")) {for (int i = 0; i <dataStrings.length - 1; i ++) {raw = kuelea (dataStrings [i + 1]); }} mwingine {println (inString); }}}} kukamata (Isipokuwa e) {println ("Ukamataji wa Kushikwa"); }}
Hapa unaweza kuona taswira kwenye picha iliyoambatishwa katika hatua hii. Takwimu za msimamo zilizopokelewa mwishoni mwa nodemcu pia zinaonekana kwenye mfuatiliaji wa serial kama inavyoonyeshwa kwenye picha.
Hatua ya 5: CODE
Nimeambatanisha hifadhi ya github. Unaweza kuibamba na kuitumia katika miradi yako.
nambari_yangu
Repo ni pamoja na mchoro wa arduino 2 wa transmitter (arduino + IMU) & mpokeaji (Nodemcu + Servo).
Na mchoro mmoja wa usindikaji. Weka nyota repo ikiwa hii inasaidia katika mradi wako.
Katika hii kufundisha, R- Mpokeaji na T- Transmitter
Hatua ya 6: MAONYESHO YA VIDEO
Nitaambatanisha video hiyo kesho. Nifuate ili ujulishwe.
Asanteni nyote!
Ilipendekeza:
Kudhibiti Arduino Kudhibiti Sensor nyingi za P.I.R kwenye Bord Sawa: Hatua 3
Kudhibiti Arduino Kudhibiti Sensor nyingi za PIR kwenye Bord Sawa: Leo nitakuambia jinsi ya kuunganisha Sensorer nyingi za PIR na Arduino Bord moja > hapa nimetumia moduli 4 ya kupeleka njia kwa utendakazi wa ziada. (AU Unaweza kutumia pini nyingi kwako
Kudhibiti Redio ya RF 433MHZ Kutumia HT12D HT12E - Kufanya Rf Remote Control Kutumia HT12E & HT12D Pamoja na 433mhz: Hatua 5
Kudhibiti Redio ya RF 433MHZ Kutumia HT12D HT12E | Kufanya Udhibiti wa Kijijini wa Rf Kutumia HT12E & HT12D Ukiwa na 433mhz: Katika hii nitafundishwa nitakuonyesha jinsi ya kutengeneza RADIO kijijini kudhibiti ukitumia moduli ya mpokeaji wa mpitishaji wa 433mhz na encode ya HT12E & Kiambatisho cha HT12D IC.Kwa kufundisha hii utatuma na kupokea data ukitumia VITENGO vya bei rahisi sana kama: HT
3 kati ya 1 Kichwa cha kichwa / Kishikilia Laptop Pamoja na Taa: Hatua 8 (na Picha)
3 kati ya 1 Kichwa cha kichwa / Kishikilia Laptop Pamoja na Taa: Katika hii inayoweza kufundishwa, nilisimamisha kichwa cha kichwa. Hili limekuwa ombi kubwa kwenye idhaa yangu ya YouTube. Kwa hivyo, nilidhani ni wakati wa kuangalia hii kwenye orodha ya kazi. Stendi hiyo ilitengenezwa kwa mbao chakavu za mahogany. Msingi wake una taa ya LED ambayo inakaa
Kudhibiti DC Motors Pamoja na L298N Kutumia CloudX Microcontroller: 3 Hatua
Kudhibiti DC Motors na L298N Kutumia CloudX Microcontroller: Katika mradi huu tutaelezea jinsi ya kutumia L298N H-daraja yetu kuongeza na kupunguza kasi ya motor DC. Moduli ya daraja la L298N H inaweza kutumika na motors ambazo zina voltage ya kati ya 5 na 35V DC. Kuna pia mdhibiti wa 5V, kwa hivyo ikiwa yako
Gari la Kudhibiti Ishara Kutumia Mpu6050 na Arduino: Hatua 7 (na Picha)
Gari ya Udhibiti wa Ishara Kutumia Mpu6050 na Arduino: hapa kuna gari ya kudhibiti ishara ya mkono, iliyotengenezwa kwa kutumia mpu6050 na arduino. Ninatumia moduli ya rf kwa unganisho la waya