Taula de continguts:
- Pas 1: SOBRE AQUEST PROJECTE
- Pas 2: es requereix maquinari
- Pas 3: Circuit i connexions
- Pas 4: TREBALLAR
- Pas 5: CODI
- Pas 6: DEMOSTRACIÓ DE VÍDEO
Vídeo: Control del servidor mitjançant MPU6050 entre Arduino i ESP8266 amb HC-12: 6 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
En aquest projecte, estem controlant la posició d’un servomotor mitjançant el mpu6050 i l’HC-12 per a la comunicació entre Arduino UNO i ESP8266 NodeMCU.
Pas 1: SOBRE AQUEST PROJECTE
És un altre projecte IoT basat en el mòdul RF HC-12. Aquí, les dades imu (mpu6050) d'arduino s'utilitzen per controlar el servomotor (connectat amb Nodemcu). Aquí, la visualització de dades també es realitza al costat d’arduino, on es visualitzen les dades de tonalitat mpu6050 (rotació sobre l’eix x) amb un esbós de processament (que es parlarà més endavant). Bàsicament, aquest projecte és una mica de calor per recordar diferents aspectes del control Imu & Servo amb Arduino i ESP8266 nodemcu.
OBJECTIU
L'objectiu d'això és clar: controlem la posició del servomotor mitjançant el valor de pas de l'IMU. I, junts, aquesta posició del motor sincronitzada i de pas es visualitza amb Processament.
Pas 2: es requereix maquinari
Mòdul Wifi NodeMCU ESP8266 12E
Taula de pa sense soldar
Filferro de pont
MPU6050 accelo + giroscopi
Mòduls RF HC-12 (parell)
Servomotor SG90
Pas 3: Circuit i connexions
Les connexions són directes. Podeu alimentar el servo amb 3,3 V del vostre Nodemcu. També podeu utilitzar Vin per alimentar el servo si el vostre nodemcu té tanta tensió en aquest pin. Però la majoria de taules Lolin no tenen 5V a Vin (depèn del fabricant).
Aquests diagrames de circuits es fan mitjançant EasyADA.
Pas 4: TREBALLAR
Tan bon punt comenci l'esbós arduino, enviarà l'angle de to (que oscil·la entre -45 i 45) al receptor hc12 de Nodemcu que es mapeja amb una posició de servo de 0 a 180 graus. Aquí hem utilitzat l’angle de pas de -45 a +45 graus per poder mapar-lo fàcilment a la posició Servo.
Ara, esteu pensant per què podem utilitzar el mètode del mapa de la manera següent: -
int pos = mapa (val, -45, 45, 0, 180);
Com que l'angle negatiu enviat pel transmissor hc12 es rep com:
1a meitat: (T) 0 a 45 => 0 a 45 (R)
2a meitat: (T) -45 a -1 => 255 a 210 (R)
Per tant, haureu de mapear-lo de 0 a 180 com
if (val> = 0 && val <= 45) pos = (val * 2) +90; else pos = (val-210) * 2;
Evito el mètode del mapa a causa d'un error irrellevant. Podeu provar-ho i comentar que funciona amb vosaltres
if (val> = 0 && val <= 45) pos = map (val, 0, 45, 90, 180); else pos = mapa (val, 255, 210, 0, 90); // El quart argument pot ser 2 (podeu comprovar-ho)
MPU6050 Càlcul de l’angle de pas
Estic fent servir la biblioteca MPU6050_tockn, que es basa en donar dades brutes de l’IMU.
int pitchAngle = mpu6050.getAngleX ()
Això ens obtindrà l’angle de rotació al voltant de l’eix x. Com heu vist a la figura, el meu imu es col·loca verticalment a la taula de treball, de manera que no us confongueu amb el pitch and roll. De fet, sempre heu de veure l'eix imprès al tauler de ruptura.
Mitjançant aquesta biblioteca, no us heu de preocupar de l'electrònica interna de lectura de registres específics per a un funcionament específic. només especifiqueu la feina i heu acabat.
Per contra, si voleu calcular l'angle per vosaltres mateixos. Podeu fer-ho fàcilment de la següent manera:
#incloure
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 (true); Serial.begin (9600); } void loop () {Wire.beginTransmission (MPU6050_addr); Wire.write (0x3B); Wire.endTransmission (fals); Wire.requestFrom (MPU6050_addr, 14, true); 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 = mapa (AcX, minVal, maxVal, -90, 90); int yAng = mapa (AcY, minVal, maxVal, -90, 90); int zAng = mapa (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); }
Però no és necessari que escriviu tant codi per obtenir l'angle. Hauríeu de conèixer els fets que hi ha darrere de l'escena, però l'ús de la biblioteca d'altres persones és molt eficaç en molts projectes. Podeu llegir sobre aquest imu i altres aplicacions per obtenir més dades filtrades al següent enllaç: Explore-mpu6050.
El meu codi arduino a l'extrem transmissor només té 30 línies amb l'ajuda de la biblioteca MPU6050_tockn, de manera que utilitzar una biblioteca és bo tret que no necessiteu alguns canvis bàsics a la funcionalitat de l'IMU. Una biblioteca anomenada I2Cdev de Jeff Rowberg és molt útil si voleu filtrar dades mitjançant el DMP (processador de moviment digital) de l’IMU.
Integració amb el processament
Aquí el processament s’utilitza per visualitzar les dades de rotació sobre l’eix x de l’IMU tal com es calculen amb les dades brutes procedents de MPU6050. Rebem les dades brutes entrants a SerialEvent de la manera següent:
void serialEvent (Serial myPort) {
inString = myPort.readString (); prova {// Analitza les dades // 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]); }} else {println (inString); }}} catch (Excepció e) {println ("Excepció capturada"); }}
Aquí podeu veure la visualització a la imatge adjunta en aquest pas. Les dades de posició rebudes a l'extrem nodemcu també es poden veure al monitor sèrie tal com es mostra a la imatge.
Pas 5: CODI
He adjuntat el repositori de github. Podeu clonar-lo i bifurcar-lo per utilitzar-lo als vostres projectes.
el meu_codi
El repo inclou 2 croquis arduino per a transmissor (arduino + IMU) i receptor (Nodemcu + Servo).
I un esbós de processament. Destaca la reposició si això ajuda al teu projecte.
En aquest instructiu, R- Receptor i transmissor T-
Pas 6: DEMOSTRACIÓ DE VÍDEO
Adjuntaré el vídeo demà. Segueix-me per rebre notificacions.
Gràcies a tots!
Recomanat:
Control de ràdio RF 433MHZ mitjançant HT12D HT12E - Fer un control remot RF mitjançant HT12E i HT12D amb 433mhz: 5 passos
Control de ràdio RF 433MHZ mitjançant HT12D HT12E | Fer un control remot RF mitjançant HT12E i HT12D amb 433 mhz: en aquest instructiu us mostraré com fer un control remot RÀDIO mitjançant un mòdul receptor de transmissor 433 mhz amb codificació HT12E i amp; IC descodificador HT12D. En aquest instructiu, podeu enviar i rebre dades mitjançant COMPONENTS molt econòmics COM: HT
Control de la pantalla LED de 7 segments mitjançant el servidor web ESP8266: 8 passos (amb imatges)
Control de la pantalla LED de 7 segments mitjançant el servidor web ESP8266: el meu projecte té un Nodemcu ESP8266 que controla una visualització de 7 segments a través del servidor http mitjançant el formulari html
Cotxe de control de gestos mitjançant Mpu6050 i Arduino: 7 passos (amb imatges)
Cotxe de control de gestos mitjançant Mpu6050 i Arduino: aquí teniu un cotxe de control de gestos de control manual, fet amb mpu6050 i arduino. Faig servir el mòdul RF per a la connexió sense fils
Encapsulació del motor servo pas amb control sèrie mitjançant Arduino mitjançant una impressora 3D - Pt4: 8 passos
Encapsulació del servomotor Step amb control serial mitjançant Arduino mitjançant una impressora 3D - Pt4: en aquest quart vídeo de la sèrie Motor Step, farem servir el que hem après anteriorment per construir un servomotor pas a pas amb control via comunicació serial i real retroalimentació de la posició mitjançant un codificador resistiu monitoritzat per un Arduino. A
Circumvenció del servidor de tallafoc / servidor intermediari: 3 passos
Firewall / Servidor intermediari: Eludir molts altres estudiants i em van preguntar com passar pels tallafocs i els proxies. Les persones de TI a l’escola són cada cop més intel·ligents quant als estudiants que fan servir proxies. Vaig pensar en aquest tema durant un temps i tinc una solució. Per què no creeu les vostres pròpies pàgines web