Мазмуну:
- 1 -кадам: Бул проект жөнүндө
- 2 -кадам: Аппараттык камсыздоо талап кылынат
- 3 -кадам: Circuit & Connections
- 4 -кадам: ЭМГЕК
- 5 -кадам: КОД
- 6 -кадам: ВИДЕО КӨРСӨТҮҮ
Video: HC-12 менен Arduino жана ESP8266 ортосунда MPU6050 колдонуу менен Servo көзөмөлдөө: 6 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
Бул долбоордо биз Arduino UNO менен ESP8266 NodeMCU ортосундагы байланыш үчүн mpu6050 жана HC-12ди колдонгон servo мотордун абалын көзөмөлдөп жатабыз.
1 -кадам: Бул проект жөнүндө
Бул HC-12 RF-модулуна негизделген дагы бир IoT долбоору. Бул жерде arduino -дан imu (mpu6050) маалыматтары серво моторун башкаруу үчүн колдонулат (Nodemcu менен байланышкан). Бул жерде маалыматтарды визуалдаштыруу arduino тарабында да аткарылат, мында mpu6050 чайыр маалыматы (x огу боюнча айлануу) иштетүүчү эскиз менен элестетилет (кийинчерээк талкууланат). Негизинен бул проект Arduino жана ESP8266 nodemcu менен Imu & Servo көзөмөлүнүн ар кандай аспектилерин эстөө үчүн бир аз жылуу.
МАКСАТ
Бул абдан ачык -айкын максатыбыз, биз ӨМУнун кадамын баалоо менен Servo моторунун абалын көзөмөлдөп жатабыз. Жана бул кадам жана синхрондуу мотор позициясы кайра иштетүү менен элестетилет.
2 -кадам: Аппараттык камсыздоо талап кылынат
NodeMCU ESP8266 12E Wifi модулу
Лансыз нан
Jumper зымы
MPU6050 accelo+гиро
HC-12 RF модулдары (жуп)
SG90 Servo мотору
3 -кадам: Circuit & Connections
Байланыштар түз эле. Сиз Nodemcu'ңуздун 3.3V менен сервону иштете аласыз. Эгерде сиз nodemcuңузда ошончо чыңалуу болсо, анда Винди сервону иштетүү үчүн колдонсоңуз болот. Бирок көпчүлүк Лолин такталарында Винде 5В жок (өндүрүүчүгө көз каранды).
Бул схемалар EasyADAнын жардамы менен жасалган.
4 -кадам: ЭМГЕК
Ардуино эскизи башталары менен, ал кадамдын бурчун (-45тен 45ке чейин) Nodemcu hc12 алуучусуна жөнөтөт, алар 0 ден 180 градуска чейин Servo позициясы менен картага түшүшөт. Бул жерде биз бурчту -45тен +45 градуска чейин колдондук, ошондуктан биз муну Servo абалына оңой эле карта кыла алабыз.
Эми сиз эмне үчүн биз картаны төмөнкүчө колдоно алабыз деп ойлонуп жатасыз:-
int pos = карта (вал, -45, 45, 0, 180);
Анткени hc12 жибергич тарабынан жиберилген терс бурч төмөнкүдөй кабыл алынат:
1 -тайм: (T) 0дон 45ке чейин>> 0дон 45ке чейин (R)
2 -жарым: (T) -45 to -1 => 255 to 210 (R)
Демек, сиз аны 0дон 180ге чейин картага түшүрүшүңүз керек
if (val> = 0 && val <= 45) pos = (val*2) +90; else pos = (val-210)*2;
Мен тиешеси жок катадан улам карта ыкмасынан качып жатам. Сиз муну сынап көрүңүз жана ал сиз менен иштээрин комментарийлесеңиз болот
if (val> = 0 && val <= 45) pos = map (val, 0, 45, 90, 180); else pos = карта (val, 255, 210, 0, 90); // 4 -аргумент 2 болушу мүмкүн (текшере аласыз)
MPU6050 Pitch Angle эсептөө
Мен IMUнын чийки маалыматтарын берүүгө негизделген MPU6050_tockn китепканасын колдонуп жатам.
int pitchAngle = mpu6050.getAngleX ()
Бул бизге х огу боюнча айлануу бурчун алат. Сүрөттө көрүнүп тургандай, менин иму вертикалдуу түрдө нан тактасына жайгаштырылган, андыктан чайыр жана ролл менен чаташтырбаңыз. Чындыгында, сиз дайыма огунун үзүлүү тактасында басылганын көрүшүңүз керек.
Бул китепкана аркылуу, белгилүү бир операция үчүн атайын регистрлерди окуудагы ички электроника жөнүндө убара болбоңуз. сиз жумушту гана көрсөтөсүз жана сиз бүттү!
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 (жалган); Wire.requestFrom (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); }
Бирок, бурчту алуу үчүн бул көп кодду жазуунун кажети жок. Сиз сахнадагы фактыларды билишиңиз керек, бирок башка адамдардын китепканасын колдонуу көптөгөн долбоорлордо абдан эффективдүү. Төмөнкү шилтемеден дагы чыпкаланган маалыматтарды алуу үчүн бул иму жана башка жактыруулар жөнүндө окуй аласыз: Explore-mpu6050.
Менин arduino коду өткөргүчтүн аягында MPU6050_tockn китепканасынын жардамы менен 30 гана саптан турат, андыктан IMUнун функционалдуулугуна кандайдыр бир негизги өзгөртүүлөрдүн кереги жок болсо, китепкананы колдонуу жакшы. JeF Rowberg тарабынан I2Cdev аттуу китепкана, эгер сиз ӨИКтин DMP (Санариптик кыймыл процессору) аркылуу чыпкаланган маалыматтарды кааласаңыз абдан пайдалуу.
Кайра иштетүү менен интеграция
Бул жерде иштетүү MPU6050дөн келген чийки маалыматтарга ылайык эсептелген IMU х огу жөнүндө айлануу маалыматын элестетүү үчүн колдонулат. Биз SerialEventке келген чийки маалыматтарды төмөнкүчө алабыз:
жараксыз serialEvent (Serial myPort) {
inString = myPort.readString (); аракет {// Дайындарды талдоо // println (inString); String 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]); }} башка {println (inString); }}} catch (Exception e) {println ("Caught Exception"); }}
Бул жерде сиз бул кадамга тиркелген сүрөттө визуализацияны көрө аласыз. Nodemcu аягында алынган позиция маалыматтары сүрөттө көрсөтүлгөндөй сериялык монитордо да көрүнөт.
5 -кадам: КОД
Мен github репозиторийин тиркеп койдум. Долбоорлоруңузда колдонуу үчүн клондоштуруп, бөлүп койсоңуз болот.
my_code
Репо өткөргүч үчүн 2 arduino эскизин камтыйт (arduino+IMU) жана алуучу (Nodemcu+Servo).
Жана бир иштетүүчү эскиз. Бул сиздин долбоорго жардам берсе, репо жылдызчасын коюңуз.
Бул көрсөтмөдө, R- Алуучу жана Т- Бергич
6 -кадам: ВИДЕО КӨРСӨТҮҮ
Эртең видеону тиркейм. Билдирүү үчүн мени ээрчиңиз.
Баарыңарга рахмат!
Сунушталууда:
NODE MCU ЖАНА BLYNK колдонуу менен температура жана нымдуулукту көзөмөлдөө: 5 кадам
NODE MCU ЖАНА BLYNK колдонуу менен температура жана нымдуулукту көзөмөлдөө: Саламатсыздарбы, бул көрсөтмө бизге DHT11-Температура жана нымдуулук сенсорунун жардамы менен Node MCU жана BLYNK тиркемесин колдонуп, атмосферанын температурасын жана нымдуулугун кантип алууну үйрөнөлү
DHT ESP8266 жана AskSensors IoT платформасын колдонуу менен температура жана нымдуулукту көзөмөлдөө: 8 кадам
DHT ESP8266 жана AskSensors IoT Платформасын колдонуп, температураны жана нымдуулукту көзөмөлдөө: Мурунку көрсөтмөлөрдө мен ESP8266 nodeMCU жана AskSensors IoT платформасын баштоо үчүн этап -этабы менен көрсөтмө бергем. MCU түйүнүнө. DHT11 - бул көбүнчө температура жана нымдуу
ESP8266 NODEMCU BLYNK IOT үйрөткүчү - Esp8266 IOT Blunk жана Arduino IDE колдонуу - Жарык диоддорун Интернет аркылуу көзөмөлдөө: 6 кадам
ESP8266 NODEMCU BLYNK IOT үйрөткүчү | Esp8266 IOT Blunk жана Arduino IDE колдонуу | Жарык диоддорду Интернет аркылуу көзөмөлдөө: Салам балдар, бул көрсөтмөлөрдө биз ISPти ESP8266 же Nodemcu менен кантип колдонууну үйрөнөбүз. Бул үчүн биз blynk колдонмосун колдонобуз. Ошентип, биз esp8266/nodemcu аркылуу интернет аркылуу LEDди көзөмөлдөп турабыз. Ошентип, Blynk колдонмосу биздин esp8266 же Nodemcu менен туташат
SHT25 жана Raspberry Pi колдонуу менен температура жана нымдуулукту көзөмөлдөө: 5 кадам
SHT25 жана Raspberry Pi менен температураны жана нымдуулукту көзөмөлдөө: Биз жакында температуранын жана нымдуулуктун мониторингин талап кылган ар кандай долбоорлордун үстүндө иштедик, анан бул эки параметр системанын иштөө эффективдүүлүгүн баалоодо негизги ролду ойной турганын түшүндүк. Экөө тең
Xbox Controller тарабынан жүздү көзөмөлдөө жана көзөмөлдөө менен кайыр суроочу робот - Arduino: 9 кадам (сүрөттөр менен)
Xbox Controller тарабынан жүздү көзөмөлдөө жана көзөмөлдөө менен кайыр суроочу робот - Arduino: Биз кайыр суроочу робот кылабыз. Бул робот кыжырдантууга же өтүп бара жаткан адамдардын көңүлүн бурууга аракет кылат. Бул алардын жүздөрүн аныктап, аларга лазер менен атууга аракет кылат. Эгер роботко тыйын берсеңиз, ал ыр ырдайт жана бийлейт. Роботко керек болот