INHOUDSOPGAWE:
- Stap 1: OOR HIERDIE PROJEK
- Stap 2: hardeware benodig
- Stap 3: Kring en verbindings
- Stap 4: WERK
- Stap 5: KODE
- Stap 6: VIDEODEMONSTRASIE
Video: Servo beheer met behulp van MPU6050 tussen Arduino en ESP8266 met HC-12: 6 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:25
In hierdie projek beheer ons die posisie van 'n servomotor met behulp van die mpu6050 en HC-12 vir kommunikasie tussen Arduino UNO en ESP8266 NodeMCU.
Stap 1: OOR HIERDIE PROJEK
Dit is nog 'n IoT-projek gebaseer op HC-12 RF-module. Hier word die imu (mpu6050) data van arduino gebruik om die servomotor (verbind met Nodemcu) te beheer. Hier word die data-visualisering ook aan die arduino-kant uitgevoer, waar die mpu6050 toonhoogte-data (rotasie om x-as) met 'n verwerkingskets (later bespreek) visualiseer word. Hierdie projek is eintlik net 'n bietjie opwarming om die verskillende aspekte van Imu & Servo -beheer met Arduino en ESP8266 nodemcu te onthou.
DOEL
Die doel hiervan is duidelik: ons beheer die posisie van servomotor met behulp van die toonhoogte van IMU. En saam word hierdie toonhoogte en gesinkroniseerde motorposisie gevisualiseer met verwerking.
Stap 2: hardeware benodig
NodeMCU ESP8266 12E Wifi -module
Soldeerlose broodbord
Springdraad
MPU6050 accelo+gyro
HC-12 RF-modules (paar)
SG90 servomotor
Stap 3: Kring en verbindings
Verbindings is reguit vorentoe. U kan die servo met 3.3V van u Nodemcu voed. U kan Vin ook gebruik om die servo aan te dryf as u nodemcu soveel spanning op die pen het. Maar die meeste Lolin -borde het nie 5V by Vin nie (hang af van die vervaardiger).
Hierdie stroombaandiagramme word gemaak met EasyADA.
Stap 4: WERK
Sodra die arduino -skets begin het, stuur dit die toonhoogte (wat wissel van -45 tot 45) na die hc12 -ontvanger van Nodemcu wat gekarteer word met 0 tot 180 grade Servo -posisie. Hier het ons die toonhoogte van -45 tot +45 grade gebruik, sodat ons dit maklik na die Servo -posisie kan toewys.
U dink nou waarom ons die kaartmetode eenvoudig soos volg kan gebruik:-
int pos = kaart (val, -45, 45, 0, 180);
Omdat die negatiewe hoek wat deur die hc12 -sender gestuur word, ontvang word as:
1ste helfte: (T) 0 tot 45 => 0 tot 45 (R)
2de helfte: (T) -45 tot -1 => 255 tot 210 (R)
U moet dit dus toewys van 0 tot 180 as
as (val> = 0 && val <= 45) pos = (val*2) +90; anders pos = (val-210)*2;
Ek vermy die kaartmetode as gevolg van 'n irrelevante fout. U kan dit probeer en kommentaar lewer dat dit met u werk
as (val> = 0 && val <= 45) pos = map (val, 0, 45, 90, 180); anders pos = kaart (val, 255, 210, 0, 90); // 4de argument kan 2 wees (u kan kyk)
MPU6050 Pitch Hoekberekening
Ek gebruik die MPU6050_tockn -biblioteek wat gebaseer is op die gee van rou data van die IMU.
int pitchAngle = mpu6050.getAngleX ()
Dit sal ons die draaihoek om die x-as kry. Soos u in die figuur gesien het, is my imu vertikaal op die broodbord geplaas, so moenie verwar met pik en rol nie. Eintlik moet u altyd die as op die uitbreekbord sien.
Deur hierdie biblioteek hoef u nie te pla oor die interne elektronika van die lees van spesifieke registers vir spesifieke operasies nie. jy spesifiseer slegs die werk en jy is klaar!
Btw as u die hoek self wil bereken. U kan dit maklik soos volg doen:
#insluit
const int MPU6050_addr = 0x68; int16_t AcX, AcY, AcZ, Temp, GyroX, GyroY, GyroZ; ongeldige opstelling () {Wire.begin (); Wire.begin Transmissie (MPU6050_addr); Wire.write (0x6B); Wire.write (0); Wire.endTransmission (waar); Serial.begin (9600); } leemte -lus () {Wire.beginTransmission (MPU6050_addr); Wire.write (0x3B); Wire.endTransmission (vals); Wire.requestFrom (MPU6050_addr, 14, waar); 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 = kaart (AcX, minVal, maxVal, -90, 90); int yAng = kaart (AcY, minVal, maxVal, -90, 90); int zAng = kaart (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 ="); // Rol Serial.println (y); Serial.print ("AngleZ ="); // Yaw Serial.println (z); }
Maar dit is nie nodig dat u soveel kode skryf om die hoek te kry nie. U behoort die feite agter die skerm te ken, maar die gebruik van biblioteke van ander mense is baie effektief in baie projekte. U kan meer lees oor hierdie imu en ander benaderings om meer gefilterde data van die volgende skakel af te kry: Explore-mpu6050.
My arduino -kode aan die einde van die sender het slegs 30 reëls met behulp van die MPU6050_tockn -biblioteek, dus dit is goed om 'n biblioteek te gebruik, tensy u nie 'n paar kernveranderings aan die funksie van IMU nodig het nie. 'N Biblioteek met die naam I2Cdev deur Jeff Rowberg is baie nuttig as u gefiltreerde data wil hê met behulp van die DMP (Digital motion processor) van die IMU.
Integrasie met verwerking
Hier word verwerking gebruik om die rotasie data oor die x-as van IMU te visualiseer, bereken deur die rou data van MPU6050. Ons ontvang die inkomende rou data in SerialEvent op die volgende manier:
ongeldig serialEvent (Serial myPort) {
inString = myPort.readString (); probeer {// Ontleed die data // 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 (dataStrings [i+1]); }} anders {println (inString); }}} catch (Uitsondering e) {println ("Gevang uitsondering"); }}
Hier kan u visualisering sien in die prentjie wat in hierdie stap aangeheg is. Die posisiesdata wat aan die einde van die nodemcu ontvang is, word ook op die seriële monitor gesien, soos in die prentjie getoon.
Stap 5: KODE
Ek het die github -bewaarplek aangeheg. U kan dit kloon en vurk om dit in u projekte te gebruik.
my_kode
Die repo bevat 2 arduino -sketse vir sender (arduino+IMU) en ontvanger (Nodemcu+Servo).
En een verwerkingsskets. Ster die repo as dit u projek help.
In hierdie opdragbare, R- Ontvanger & T- Sender
Stap 6: VIDEODEMONSTRASIE
Ek sal môre die video aanheg. Volg my om in kennis gestel te word.
Dankie almal!
Aanbeveel:
Beheer van ESP8266 met behulp van die Telegram -app: 7 stappe
Beheer ESP8266 met behulp van die Telegram -app: Hey, wat gaan aan, ouens! Akarsh hier van CETech af. Het u al ooit daaroor gewonder om met u toestelle te gesels oor 'n boodskapprogram? Klink vreemd, reg. Maar vandag gaan ons iets soortgelyk aan dit doen. Moenie bekommerd wees nie, u hoef nie selfone te koop nie
Beheer oor die hele wêreld met behulp van internet met behulp van Arduino: 4 stappe
Beheer oor die hele wêreld met behulp van internet met behulp van Arduino: Hallo, ek is Rithik. Ons gaan 'n internetbeheerde LED maak met u telefoon. Ons gaan sagteware soos Arduino IDE en Blynk gebruik. Dit is eenvoudig, en as u daarin geslaag het, kan u soveel elektroniese komponente beheer as wat u wil
Beheer van 7-segment LED-skerm met behulp van ESP8266-webbediener: 8 stappe (met foto's)
Beheer van 7-segment LED-skerm met behulp van ESP8266-webbediener: My projek het 'n Nodemcu ESP8266 wat 'n 7-segment-skerm deur die http-bediener beheer met behulp van html-vorm
Die beheer van DC -motors met die L298N met behulp van CloudX -mikrobeheerder: 3 stappe
Die beheer van DC-motors met die L298N met behulp van CloudX-mikrobeheerder: In hierdie projek sal ons verduidelik hoe ons ons L298N H-brug kan gebruik om die spoed van die DC-motor te verhoog en te verlaag. Die L298N H-brugmodule kan gebruik word met motors met 'n spanning tussen 5 en 35V DC. Daar is ook 'n ingeboude 5V-reguleerder, so as u
LED-beheer met behulp van ESP8266 WiFi-module- Internet van dinge: 6 stappe
LED-beheer met behulp van ESP8266 WiFi-module-Internet of Things: Die ESP8266 is 'n goedkoop Wi-Fi-chip met volledige TCP/IP-stapel en MCU (mikrobeheereenheid) -vermoë wat deur die Sjinese vervaardiger in Sjanghai, Espressif Systems vervaardig word. het in Augustus 2014 onder die aandag van westerse vervaardigers gekom met