Përmbajtje:
- Hapi 1: P THR KIST PROJEKT
- Hapi 2: Kërkohet harduer
- Hapi 3: Qarku & Lidhjet
- Hapi 4: PUNA
- Hapi 5: KODI
- Hapi 6: Demonstrim VIDEO
Video: Kontrollimi i servo duke përdorur MPU6050 midis Arduino dhe ESP8266 me HC-12: 6 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:19
Në këtë projekt, ne po kontrollojmë pozicionin e një servo motori duke përdorur mpu6050 dhe HC-12 për komunikim midis Arduino UNO dhe ESP8266 NodeMCU.
Hapi 1: P THR KIST PROJEKT
Shtë një projekt tjetër IoT i bazuar në modulin HF-12 RF. Këtu, të dhënat imu (mpu6050) nga arduino përdoren për të kontrolluar servo motorin (i lidhur me Nodemcu). Këtu, vizualizimi i të dhënave kryhet gjithashtu në anën arduino ku të dhënat e katranit mpu6050 (rrotullimi rreth boshtit x) vizualizohen me një skicë përpunimi (diskutuar më vonë). Në thelb ky projekt është vetëm pak i ngrohtë për të kujtuar aspekte të ndryshme të kontrollit të Imu & Servo me Arduino dhe ESP8266 nodemcu.
OBJEKTIV
Objektivi i kësaj mjaft të qartë, Ne jemi duke kontrolluar pozicionin e motorit Servo duke përdorur vlerën e katranit të IMU. Dhe të gjitha së bashku ky hap dhe pozicioni i sinkronizuar i motorit vizualizohet me Përpunimin.
Hapi 2: Kërkohet harduer
Moduli NodeMCU ESP8266 12E Wifi
Dërrasë buke pa saldim
Tela bluzë
MPU6050 accelo+xhiro
Modulet HC-12 RF (palë)
Servo motor SG90
Hapi 3: Qarku & Lidhjet
Lidhjet janë drejtpërdrejt përpara. Ju mund ta fuqizoni servo -në me 3.3V të Nodemcu tuaj. Ju gjithashtu mund të përdorni Vin për të fuqizuar servo nëse nodemcu juaj ka aq shumë tension në atë kunj. Por shumica e bordeve Lolin nuk kanë 5V në Vin (varet nga prodhuesi).
Këto diagrame qark janë bërë duke përdorur EasyADA.
Hapi 4: PUNA
Sapo të fillojë skica arduino, ai do të dërgojë këndin e katranit (i cili varion nga -45 në 45) në marrësin hc12 të Nodemcu që hartëzohen me pozicionin Servo nga 0 në 180 gradë. Këtu kemi përdorur këndin e katranit nga -45 në +45 gradë, në mënyrë që të mund ta gjejmë me lehtësi atë në pozicionin Servo.
Tani, ju po mendoni pse mund ta përdorim thjesht metodën e hartës si më poshtë:-
int pos = hartë (val, -45, 45, 0, 180);
Për shkak se këndi negativ i dërguar nga transmetuesi hc12 merret si:
Gjysma e parë: (T) 0 në 45 => 0 në 45 (R)
Gjysma e dytë: (T) -45 në -1 => 255 në 210 (R)
Kështu që ju duhet ta hartoni atë në 0 deri në 180 si
nëse (val> = 0 && val <= 45) pos = (val*2) +90; tjetër pos = (val-210)*2;
Unë jam duke shmangur metodën e hartës për shkak të një gabimi të parëndësishëm. Mund ta provoni dhe komentoni se funksionon me ju
nëse (val> = 0 && val <= 45) pos = hartë (val, 0, 45, 90, 180); tjetër pos = hartë (val, 255, 210, 0, 90); // Argumenti i katërt mund të jetë 2 (mund të kontrolloni)
MPU6050 Llogaritja e këndit të katranit
Unë jam duke përdorur bibliotekën MPU6050_tockn e cila bazohet në dhënien e të dhënave të papërpunuara nga IMU.
int pitchAngle = mpu6050.getAngleX ()
Kjo do të na japë këndin e rrotullimit rreth boshtit x. Siç e shihni në figurë, imu im është vendosur vertikalisht në tryezën e bukës, kështu që mos e ngatërroni me katran dhe rrotull. Në fakt ju gjithmonë duhet të shihni boshtin të shtypur në tabelën e shpërthimit.
Përmes kësaj biblioteke, nuk keni pse të shqetësoheni për elektronikën e brendshme të leximit të regjistrave specifikë për funksionim specifik. ju specifikoni vetëm punën dhe keni mbaruar!
Btw nëse doni të llogaritni këndin vetë. Ju lehtë mund ta bëni atë si më poshtë:
#përfshi
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.endTransmetimi (i vërtetë); Serial.filloj (9600); } void loop () {Wire.beginTransmission (MPU6050_addr); Wire.write (0x3B); Wire.endTransmetimi (i rremë); Tela. Kërkohet Nga (MPU6050_addr, 14, e vërtetë); 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 = hartë (AcX, minVal, maxVal, -90, 90); int yAng = hartë (AcY, minVal, maxVal, -90, 90); int zAng = hartë (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 ="); // Seriali i katranit.println (x); Serial.print ("AngleY ="); // Roll Serial.println (y); Serial.print ("AngleZ ="); // Yaw Serial.println (z); }
Por, nuk është e nevojshme që të shkruani kaq shumë kod për të marrë këndin. Duhet të dini faktet prapa skenës, por përdorimi i bibliotekës së njerëzve të tjerë është shumë efektiv në shumë projekte. Ju mund të lexoni në lidhje me këtë imu dhe përafrime të tjera për të marrë më shumë të dhëna të filtruara nga lidhja e mëposhtme: Explore-mpu6050.
Kodi im arduino në fundin e transmetimit ka vetëm 30 rreshta me ndihmën e bibliotekës MPU6050_tockn kështu që përdorimi i një biblioteke është i mirë nëse nuk keni nevojë për disa ndryshime thelbësore në funksionalitetin e IMU. Një bibliotekë e quajtur I2Cdev nga Jeff Rowberg është shumë e dobishme nëse doni disa të dhëna të filtruara duke përdorur DMP (procesori i lëvizjes dixhitale) të IMU.
Integrimi me Përpunimin
Këtu Përpunimi përdoret për të vizualizuar të dhënat rrotulluese rreth boshtit x të IMU të llogaritura nga të dhënat e papërpunuara që vijnë nga MPU6050. Ne i marrim të dhënat e papërpunuara në SerialEvent në mënyrën e mëposhtme:
void serialEvent (Seriali myPort) {
inString = myPort.readString (); provoni {// Analizoni të dhënat // println (inString); String dataStrings = split (inString, ':'); if (dataStrings.length == 2) {if (dataStrings [0].equals ("RAW")) {for (int i = 0; i <dataStrings.length - 1; i ++) {raw = float (vargjet e të dhënave [i+1]); }} else {println (inString); }}} kap (Përjashtim e) {println ("Përjashtim i kapur"); }}
Këtu mund të shihni vizualizimin në imazhin e bashkangjitur në këtë hap. Të dhënat e pozicionit të marra në fund të nodemcu shihen gjithashtu në monitorin serik siç tregohet në imazh.
Hapi 5: KODI
Unë kam bashkangjitur depo github. Mund ta klononi dhe ta përdorni për ta përdorur në projektet tuaja.
kodi im_
Repoja përfshin 2 skica arduino për transmetuesin (arduino+IMU) dhe marrësin (Nodemcu+Servo).
Dhe një skicë përpunimi. Shënoni repon nëse kjo ju ndihmon në projektin tuaj.
Në këtë udhëzues, R- Marrës & T- Transmetues
Hapi 6: Demonstrim VIDEO
Nesër do ta bashkangjis videon. Më ndiqni për t'u njoftuar.
Ju faleminderit të gjithëve!
Recommended:
Kontrollimi i ekranit të shtatë segmenteve duke përdorur regjistrimin e ndërrimit të Arduino dhe 74HC595: 6 hapa
Kontrolli i shfaqjes së shtatë segmenteve duke përdorur Arduino dhe 74HC595 Shift Register: Hej, çfarë ka, djema! Akarsh këtu nga CETech. Shtatë ekranet e segmenteve janë të mirë për tu parë dhe janë gjithmonë një mjet i dobishëm për të shfaqur të dhëna në formën e shifrave, por ka një pengesë në to, e cila është ajo kur kontrollojmë një ekran me shtatë segmente në të vërtetë
Monitorimi i përshpejtimit duke përdorur Raspberry Pi dhe AIS328DQTR duke përdorur Python: 6 hapa
Monitorimi i përshpejtimit duke përdorur Raspberry Pi dhe AIS328DQTR Duke përdorur Python: Përshpejtimi është i kufizuar, mendoj sipas disa ligjeve të Fizikës.- Terry Riley Një cheetah përdor përshpejtim të mahnitshëm dhe ndryshime të shpejta në shpejtësi kur ndiqni. Krijesa më e shpejtë në breg, herë pas here, përdor ritmin e saj të lartë për të kapur prenë.
Kontrollimi i një LED duke përdorur modulin WiFi NodeMCU dhe aplikacionin Blynk: 7 hapa
Kontrolli i një LED duke përdorur modulin WiFi NodeMCU dhe aplikacionin Blynk: Ky udhëzues do t'ju tregojë se si të kontrolloni një LED duke përdorur modulin WiFi NodeMCU ESP8266 përmes aplikacionit të smartphone Blynk. Nëse jeni fillestar, lexoni. Nëse jeni më me përvojë, mund të jeni të interesuar të kaloni deri në fund, ku unë flas për t
ESP8266 Mësimi NODEMCU BLYNK IOT - Esp8266 IOT Duke përdorur Blunk dhe Arduino IDE - Kontrollimi i LED -ve në internet: 6 hapa
ESP8266 Mësimi NODEMCU BLYNK IOT | Esp8266 IOT Duke përdorur Blunk dhe Arduino IDE | Kontrolli i LED -ve në Internet: Përshëndetje Djema në këtë udhëzues do të mësojmë se si të përdorim IOT me ESP8266 ose Nodemcu. Ne do të përdorim aplikacionin blynk për këtë. Pra, ne do të përdorim esp8266/nodemcu tonë për të kontrolluar LED -të në internet. Pra, aplikacioni Blynk do të lidhet me esp8266 ose Nodemcu
Kontrollimi i shkëlqimit të LED duke përdorur modulin Arduino dhe Bluetooth (HC-05): 4 hapa
Kontrollimi i shkëlqimit të LED duke përdorur modulin Arduino dhe Bluetooth (HC-05): Hyrje Në këtë tutorial, ne do të kontrollojmë shkëlqimin e LED duke përdorur Arduino UNO, Bluetooth Module (HC-05) dhe aplikacionin Android për Bluetooth (Bluetooth Terminal)