INHOUDSOPGAWE:

Hoe om die GY511 -module te gebruik met Arduino [Maak 'n digitale kompas]: 11 stappe
Hoe om die GY511 -module te gebruik met Arduino [Maak 'n digitale kompas]: 11 stappe

Video: Hoe om die GY511 -module te gebruik met Arduino [Maak 'n digitale kompas]: 11 stappe

Video: Hoe om die GY511 -module te gebruik met Arduino [Maak 'n digitale kompas]: 11 stappe
Video: Arduino — растровые изображения из I2C EEPROM на OLED-дисплей 128x64 2024, November
Anonim
Hoe om die GY511 -module te gebruik met Arduino [Maak 'n digitale kompas]
Hoe om die GY511 -module te gebruik met Arduino [Maak 'n digitale kompas]

Oorsig

In sommige elektroniese projekte moet ons die geografiese ligging op enige tydstip ken en 'n spesifieke operasie dienooreenkomstig uitvoer. In hierdie handleiding leer u hoe u die LSM303DLHC GY-511 kompasmodule met Arduino kan gebruik om 'n digitale kompas te maak. Eerstens leer u meer oor hierdie module en hoe dit werk, en dan sien u hoe u die LSM303DLHC GY-511-module met Arduino kan koppel.

Wat jy sal leer

  • Watter kompasmodule is?
  • Kompasmodule en Arduino -koppelvlak.
  • Maak 'n digitale kompas met die GY-511-module en Arduino.

Stap 1: Algemene inligting oor kompasmodule

Algemene inligting oor kompasmodule
Algemene inligting oor kompasmodule

GY-511 module bevat 'n 3-as versnellingsmeter en 'n 3-as magnetometer. Hierdie sensor kan die lineêre versnelling meet op volle skale van ± 2 g / ± 4 g / ± 8 g / ± 16 g en magnetiese velde op volle skale van ± 1.3 / ± 1.9 / ± 2.5 / ± 4.0 / ± 4.7 / ± 5.6 / ± 8.1 Gauss.

As hierdie module in 'n magnetiese veld geplaas word, veroorsaak 'n eksitasiestroom in sy mikroskopiese spoel volgens die Lorentz -wet. Die kompasmodule skakel hierdie stroom om in die differensiële spanning vir elke koördinaatrigting. Deur hierdie spannings te gebruik, kan u die magnetiese veld in elke rigting bereken en die geografiese posisie kry.

Wenk

QMC5883L is 'n ander kompasmodule wat gereeld gebruik word. Hierdie module, wat 'n soortgelyke struktuur en toepassing as die LMS303 -module het, verskil effens van mekaar. As u dus die projekte doen, moet u versigtig wees met die tipe module. As u module QMC5882L is, gebruik die toepaslike biblioteek en kodes wat ook in die tutoriaal ingesluit is.

Stap 2: Vereiste komponente

Vereiste komponente
Vereiste komponente

Hardeware komponente

Arduino UNO R3 *1

GY-511 3-as versnellingsmeter + magnetometer *1

TowerPro Servomotor SG-90 *1

1602 LCD -module *1

Springers *1

Sagteware programme

Arduino IDE

Stap 3: Koppelvlak GY-511 kompasmodule met Arduino

Koppelvlak GY-511 kompasmodule met Arduino
Koppelvlak GY-511 kompasmodule met Arduino
Koppelvlak GY-511 kompasmodule met Arduino
Koppelvlak GY-511 kompasmodule met Arduino

GY-511 kompasmodule het 8 penne, maar u benodig slegs 4 daarvan om met Arduino te koppel. Hierdie module kommunikeer met Arduino met behulp van I2C -protokol, dus koppel die SDA (I2C -uitset) en SCK (I2C -klokinvoer) penne van die module aan die I2C -penne op die Arduino -bord.

Opmerking Soos u kan sien, het ons die GY-511-module in hierdie projek gebruik. Maar u kan hierdie instruksie gebruik vir die opstel van ander LMS303 kompasmodules.

Stap 4: GY-511 kompasmodule-kalibrasie

Om te navigeer, moet u eers die module kalibreer, wat beteken dat u die meetbereik van 0 tot 360 grade moet stel. Om dit te doen, koppel die module aan Arduino soos hieronder getoon en laai die volgende kode op u bord op. Nadat u die kode uitgevoer het, kan u die minimum en maksimum waardes van die meetbereik vir die X-, Y- en Z -as in die seriële monitorvenster sien. U sal hierdie getalle in die volgende deel benodig, dus skryf dit neer.

Stap 5: Kringloop

Kring
Kring

Stap 6: Kode

In hierdie kode benodig u die Wire.h -biblioteek vir I2C -kommunikasie en die LMS303.h -biblioteek vir die kompasmodule. U kan hierdie biblioteke vanaf die volgende skakels aflaai.

LMS303.h Biblioteek

Wire.h -biblioteek

Let wel: as u QMC5883 gebruik, benodig u die volgende biblioteek:

MechaQMC5883L.h

Hier verduidelik ons die kode vir LMS303, maar u kan ook die kodes vir die QMC -module aflaai.

Kom ons kyk na 'n paar van die nuwe funksies:

compass.enableDefault ();

Module -inisialisering

kompas.lees ();

Lees die uitsetwaardes van kompasmodule

hardloop_min.z = min (hardloop_min.z, kompas.m.z); running_max.x = max (running_max.x, kompas.m.x);

Bepaling van die minimum en maksimum waardes van die meetbereik deur die gemete waardes te vergelyk.

Stap 7: Maak 'n digitale kompas

Nadat ons die module gekalibreer het, gaan ons 'n kompas bou deur 'n servomotor aan die module te koppel. Sodat die servo -aanwyser ons altyd die noordelike rigting wys, soos die rooi pyltjie op die kompas. Om dit te doen, bereken eers die kompasmodule eers die geografiese rigting en stuur dit na Arduino en dan, deur 'n toepaslike koëffisiënt toe te pas, bereken u die hoek wat die servomotor moet draai sodat die aanwyser na die magnetiese noord wys. Uiteindelik pas ons die hoek op die servomotor toe.

Stap 8: Skakel

Kring
Kring

Stap 9: Kode

Kode
Kode

Vir hierdie deel benodig u ook die Servo.h -biblioteek, wat standaard op u Arduino -sagteware geïnstalleer is.

Kom ons kyk na 'n paar van die nuwe funksies:

Servo Servo1;

Module -inisialisering

kompas.lees ();

Bekendstelling van die servomotorvoorwerp

Servo1.aanheg (servoPin); kompas.init (); compass.enableDefault ();

Initialisering van die kompasmodule en servomotor

Die Servo1.attach () -argument is die nommer van die pen wat aan die servomotor gekoppel is.

compass.m_min = (LSM303:: vektor) { -32767, -32767, -32767}; kompas.m_max = (LSM303:: vektor) { +32767, +32767, +32767};

Met behulp van hierdie lyne definieer u die minimum en maksimum waardes vir die meting van die bereik wat in die vorige deel verkry is.

dryfkop = kompas.opskrif ((LSM303:: vektor) {0, 0, 1});

Die opskrif () -funksie gee die hoek tussen die koördinaatas en 'n vaste as terug. U kan die vaste as definieer met 'n vektor in die funksie -argument. Byvoorbeeld, deur die (LSM303:: vektor) {0, 0, 1} te definieer, word die Z -as as 'n konstante as beskou.

Servo1.skryf (opskrif);

Die funksie Servo1.write () pas die leeswaarde deur die kompasmodule toe op die servomotor.

Let op Let op dat die servomotor 'n magneetveld kan hê, daarom is dit beter om die servomotor op 'n geskikte afstand van die kompasmodule te plaas, sodat dit nie veroorsaak dat die kompasmodule afwyk nie.

Aanbeveel: