Мазмұны:

HC-12 көмегімен Arduino мен ESP8266 арасындағы MPU6050 көмегімен сервисті басқару: 6 қадам
HC-12 көмегімен Arduino мен ESP8266 арасындағы MPU6050 көмегімен сервисті басқару: 6 қадам

Бейне: HC-12 көмегімен Arduino мен ESP8266 арасындағы MPU6050 көмегімен сервисті басқару: 6 қадам

Бейне: HC-12 көмегімен Arduino мен ESP8266 арасындағы MPU6050 көмегімен сервисті басқару: 6 қадам
Бейне: Как использовать твердотельное реле Fotek SSR-40 с Arduino и без Arduino 2024, Қараша
Anonim
HC-12 көмегімен Arduino мен ESP8266 арасындағы MPU6050 көмегімен сервисті басқару
HC-12 көмегімен Arduino мен ESP8266 арасындағы MPU6050 көмегімен сервисті басқару

Бұл жобада біз Arduino UNO мен ESP8266 NodeMCU арасындағы байланыс үшін mpu6050 және HC-12 көмегімен сервоқозғалтқыштың орнын басқарамыз.

1 -қадам: БҰЛ ЖОБА ТУРАЛЫ

Бұл HC-12 RF-модуліне негізделген басқа IoT жобасы. Мұнда arduino -дан imu (mpu6050) деректері сервоприводты басқару үшін қолданылады (Nodemcu -мен байланысты). Мұнда деректерді визуализация mpu6050 қадамдық деректері (x осі бойынша айналу) өңделетін эскизбен бейнеленетін arduino жағында орындалады (кейінірек талқыланады). Негізінен бұл жоба Arduino және ESP8266 nodemcu көмегімен Imu & Servo басқарудың әр түрлі аспектілерін еске түсіру үшін аздап қыздырады.

МАҚСАТТЫ

Мұның айқын мақсаты - біз IMO қадамдық мәнін қолдана отырып, Servo қозғалтқышының жағдайын басқарамыз. Бұл қадам мен синхронды қозғалтқыштың позициясы бірге өңделеді.

2 -қадам: Жабдық қажет

NodeMCU ESP8266 12E Wifi модулі

Піспейтін нан тақтасы

Өткізгіш сым

MPU6050 accelo+гиро

HC-12 RF модульдері (жұп)

SG90 Servo қозғалтқышы

3 -қадам: Тізбек және қосылыстар

Схема және қосылыстар
Схема және қосылыстар
Схема және қосылыстар
Схема және қосылыстар

Қосылымдар тікелей. Сервоға Nodemcu 3,3 В кернеуін қосуға болады. Сондай -ақ, егер сіздің түйініңізде түйреуіштің кернеуі соншалықты көп болса, сіз сервоға қуат беру үшін Vin қолдана аласыз. Бірақ Lolin тақталарының көпшілігінде Винде 5В болмайды (өндірушіге байланысты).

Бұл схемалар EasyADA көмегімен жасалған.

4 -қадам: ЖҰМЫС

ЖҰМЫС
ЖҰМЫС

Ардуино эскизі бастала салысымен, ол бұрыштың бұрышын (-45 -тен 45 -ке дейін) Nodemcu -дің hc12 қабылдағышына жібереді, олар 0 -ден 180 градусқа дейін Servo позициясымен салыстырылады. Мұнда біз бұрыштың бұрышын -45 -тен +45 градусқа дейін қолдандық, осылайша оны сервистік позицияға оңай салыстыруға болады.

Енді сіз неге біз карта әдісін келесідей қолдана аламыз деп ойлайсыз:-

int pos = map (val, -45, 45, 0, 180);

Hc12 таратқышы жіберетін теріс бұрыш келесі түрде қабылданады:

1 -тайм: (T) 0 -ден 45 -ке дейін> 0 -ден 45 -ке дейін (R)

Екінші тайм: (T) -45 --1 => 255 -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 = map (val, 255, 210, 0, 90); // 4 -аргумент 2 болуы мүмкін (тексере аласыз)

MPU6050 қадамының бұрышын есептеу

Мен MPU6050_tockn кітапханасын қолданамын, ол IMU -дан шикі деректерді беруге негізделген.

int pitchAngle = mpu6050.getAngleX ()

Бұл бізге x осінің айналу бұрышын береді. Сіз суретте көріп тұрғандай, менің иму нан тақтасында тігінен орналасқан, сондықтан қадам мен роллмен шатастырмаңыз. Іс жүзінде сіз әрқашан осьтің үзіліс тақтасында басылғанын көруіңіз керек.

Бұл кітапхана арқылы сізге белгілі бір жұмыс үшін арнайы регистрлерді оқудың ішкі электроникасы туралы алаңдаудың қажеті жоқ. сіз тек жұмысты көрсетесіз және сіз аяқталды!

Егер сіз бұрышты өзіңіз есептегіңіз келсе, 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); }

Бұрышты алу үшін сізге көп кодты жазудың қажеті жоқ. Сіз сахнадағы фактілерді білуіңіз керек, бірақ басқа адамдардың кітапханасын пайдалану көптеген жобаларда өте тиімді. Сіз келесі сілтеме бойынша сүзілген деректерді алу үшін осы imu және басқа келісімдер туралы оқи аласыз: Explore-mpu6050.

Менің arduino коды MPU6050_tockn кітапханасының көмегімен тек 30 жолдан тұрады, сондықтан IMU функционалдығына маңызды өзгерістер қажет болмаса, кітапхананы пайдалану жақсы. Джефф Роугбергтің I2Cdev атты кітапханасы, егер сіз IMU DMP (цифрлық қозғалыс процессоры) көмегімен кейбір сүзгіленген деректерді алғыңыз келсе, өте пайдалы болады.

Өңдеумен интеграция

Мұнда Өңдеу MPU6050-ден келетін шикізат деректері бойынша есептелген IMU х осі туралы айналмалы деректерді визуализациялау үшін қолданылады. Біз SerialEvent ішіндегі кіріс деректерді келесі түрде аламыз:

жарамсыз serialEvent (Serial myPort) {

inString = myPort.readString (); көріңіз {// Деректерді талдау // println (inString); Жол dataStrings = бөліну (inString, ':'); if (dataStrings.length == 2) {if (dataStrings [0]. teng («RAW»)) {for (int i = 0; i <dataStrings.length - 1; i ++) {raw = float (dataStrings [i+1]); }} басқа {println (inString); }}} catch (Ерекше д) {println («Ұсталған ерекшелік»); }}

Мұнда сіз осы қадамда бекітілген суретте визуализацияны көре аласыз. Nodemcu соңында алынған позиция деректері суретте көрсетілгендей сериялық мониторда да көрінеді.

5 -қадам: КОД

Мен github репозиторийін тіркедім. Сіз оны жобаларыңызда пайдалану үшін клондап, айыра аласыз.

my_code

Репода таратқышқа (arduino+IMU) және қабылдағышқа (Nodemcu+Servo) арналған 2 arduino эскизі бар.

Және бір өңдеу нобайы. Егер бұл сіздің жобаңызға көмектессе, репоға жұлдызша қойыңыз.

Бұл нұсқаулықта, R- қабылдағыш және Т- таратқыш

6 -қадам: ВИДЕО КӨРСЕТУ

Видеоны ертең тіркеймін. Хабарлама алу үшін мені қадағалаңыз.

Баршаңызға рахмет!

Ұсынылған: