Tartalomjegyzék:
Videó: Arduino digitális iránytű projekt: 3 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:42
Helló! Ebben az utasításban látni fogja, hogyan készíthet digitális iránytűt Arduino és a feldolgozó IDE használatával. Ez egy nagyon egyszerű, de érdekes és hűvös megjelenésű Arduino projekt.
Ennek az oktatóanyagnak a demó példáját megnézheti a fenti videón. A YouTube -csatornámon mindig találhat ehhez hasonló érdekesebb videókat, valamint rengeteg elektronikai projektet és oktatóanyagot a webhelyemen, a HowToMechatronics.com webhelyen.
1. lépés: Szükséges alkatrészek
Ehhez a projekthez csak egy Arduino táblára és egy MEMS magnetométerre lesz szüksége a földmágneses mező méréséhez. A GY -80 töréskártyát fogom használni, amely tartalmazza az MC5883L 3 tengelyes magnetométert.
Mielőtt folytatnánk a projekt forráskódját Ha további információra van szüksége a MEMS magnetométer működéséről, valamint arról, hogyan kell csatlakoztatni és használni a GY -80 megszakító kártyát az I2C kommunikáción keresztül, akkor tekintse meg az adott oktatóanyagomat.
2. lépés: Arduino forráskód
Először fel kell töltenünk egy vázlatot az Arduino Boardra, amely kiolvassa a magnetométer adatait, és elküldi azokat a Processing IDE -nek. Íme az Arduino forráskódja:
/ * Arduino Compass * * Dejan Nedelkovski, * www. HowToMechatronics.com * */
#include // I2C Arduino könyvtár
#define Magnetometer_mX0 0x03
#define Magnetometer_mX1 0x04 #define Magnetometer_mZ0 0x05 #define Magnetometer_mZ1 0x06 #define Magnetometer_mY0 0x07 #define Magnetometer_mY1 0x08
int mX0, mX1, mX_out;
int mY0, mY1, mY_out; int mZ0, mZ1, mZ_out;
úszócím, fejlécFokok, fejlécSzűrt, deklináció;
úszó Xm, Ym, Zm;
#define Magnetometer 0x1E // I2C HMC5883 7 bites címe
void setup () {
// Soros és I2C kommunikáció inicializálása Serial.begin (115200); Wire.begin (); késleltetés (100); Wire.beginTransmission (Magnetometer); Wire.write (0x02); // Módválasztó regiszter Wire.write (0x00); // Folyamatos mérési mód Wire.endTransmission (); }
void loop () {
// ---- X-Axis Wire.beginTransmission (Magnetometer); // továbbítás az eszközre Wire.write (Magnetometer_mX1); Wire.endTransmission (); Wire.requestFrom (Magnetometer, 1); if (Wire.available () <= 1) {mX0 = Wire.read (); } Wire.beginTransmission (Magnetometer); // továbbítás az eszközre Wire.write (Magnetometer_mX0); Wire.endTransmission (); Wire.requestFrom (Magnetometer, 1); if (Wire.available () <= 1) {mX1 = Wire.read (); }
// ---- Y-tengely
Wire.beginTransmission (Magnetometer); // továbbítás az eszközre Wire.write (Magnetometer_mY1); Wire.endTransmission (); Wire.requestFrom (Magnetometer, 1); if (Wire.available () <= 1) {mY0 = Wire.read (); } Wire.beginTransmission (Magnetometer); // továbbítás az eszközre Wire.write (Magnetometer_mY0); Wire.endTransmission (); Wire.requestFrom (Magnetometer, 1); if (Wire.available () <= 1) {mY1 = Wire.read (); } // ---- Z-tengelyhuzal.beginTransmission (Magnetometer); // továbbítás az eszközre Wire.write (Magnetometer_mZ1); Wire.endTransmission (); Wire.requestFrom (Magnetometer, 1); if (Wire.available () <= 1) {mZ0 = Wire.read (); } Wire.beginTransmission (Magnetometer); // továbbítás az eszközre Wire.write (Magnetometer_mZ0); Wire.endTransmission (); Wire.requestFrom (Magnetometer, 1); if (Wire.available () <= 1) {mZ1 = Wire.read (); } // ---- X-tengely mX1 = mX1 << 8; mX_out = mX0+mX1; // Nyers adatok // Az adatlapból: 0,92 mG/számjegy Xm = mX_out*0,00092; // Gauss egység //* A Föld mágneses tere 0,25 és 0,65 Gauss között mozog, tehát ezek az értékek, amelyeket hozzávetőlegesen meg kell kapnunk.
// ---- Y-tengely
mY1 = mY1 << 8; mY_out = mY0+mY1; Ym = mY_out*0,00092;
// ---- Z-tengely
mZ1 = mZ1 <0,073 rad deklináció = 0,073; fejléc += deklináció; // Javítás a jelek tisztelete esetén, ha (<0. Fejléc) fejléc += 2*PI;
// Javítás a deklinációs szög hozzáadása miatt
if (fejléc> 2*PI) fejléc -= 2*PI;
headDegrees = fejléc * 180/PI; // A címsor mértékegységben
// A kimeneti szög simítása / Aluláteresztő szűrő
headFiltered = headFiltered*0,85 + headDegrees*0,15;
// A címsor értékének elküldése a soros porton keresztül az IDE feldolgozásához
Serial.println (headFiltered);
késleltetés (50); }
3. lépés: Az IDE forráskód feldolgozása
Miután feltöltöttük az előző Arduino vázlatot, be kell vennünk az adatokat a feldolgozó IDE -be, és meg kell rajzolnunk a digitális iránytűt. Az iránytű háttérképből, rögzített nyílképből és az iránytű testének forgó képéből áll. Tehát az Arduino -val kiszámított földmágneses mező értékeit használják az iránytű forgatására.
Íme a feldolgozó IDE forráskódja:
/ * Arduino Compass * * Dejan Nedelkovski, * www. HowToMechatronics.com * */ import processing.serial. *; import java.awt.event. KeyEvent; import java.io. IOException;
Soros myPort;
PImage imgCompass; PImage imgCompassArrow; PImage háttér;
String adatok = "";
úszófej;
void setup () {
méret (1920, 1080, P3D); sima(); imgCompass = loadImage ("Compass.png"); imgCompassArrow = loadImage ("CompassArrow.png"); background = loadImage ("Background.png"); myPort = új soros (ez, "COM4", 115200); // elindítja a soros kommunikációt myPort.bufferUntil ('\ n'); }
void draw () {
kép (háttér, 0, 0); // Betölti a háttérképet pushMatrix (); fordítás (szélesség/2, magasság/2, 0); // Lefordítja a koordináta-rendszert a képernyő közepére, így a forgatás közvetlenül a rotateZ középső részében történik (radiánok (-fej)); // Az iránytűt Z -tengely köré forgatja (imgCompass, -960, -540); // Betölti az iránytű képét, és a koordinátarendszer áthelyezésekor a képet -960x, -540y (a képernyő méretének fele) értékre kell állítanunk popMatrix (); // A koordináta -rendszer visszaállítása az eredeti pozícióba 0, 0, 0 image (imgCompassArrow, 0, 0); // Betölti a CompassArrow képet, amelyet a rotateZ () függvény nem érint a popMatrix () függvény textSize (30) miatt; szöveg ("Címsor:" + fejléc, 40, 40); // Kinyomtatja a címsor értékét a képernyőn
késleltetés (40);
}
// elkezdi olvasni az adatokat a soros portról
void serialEvent (Soros myPort) {data = myPort.readStringUntil ('\ n'); // beolvassa az adatokat a soros portból, és beilleszti a "data" karakterlánc változóba. fejléc = lebegés (adatok); // A String érték átalakítása Float értékké}
Remélem tetszeni fog ez a projekt. Ha ez így van, látogasson el a webhelyemre további menő projektekért.
Ajánlott:
Digitális iránytű és iránykereső: 6 lépés
Digitális iránytű és iránykereső: Szerzők: Cullan Whelan Andrew Luft Blake Johnson Köszönetnyilvánítás: California Maritime Academy Evan Chang-Siu Ez lehetővé teszi a felhasználó számára, hogy kövesse az irányt hosszú távon
Hogyan kell lebontani a digitális féknyerget és hogyan működik a digitális féknyereg: 4 lépés
Hogyan kell lebontani a digitális féknyerget és hogyan működik a digitális féknyereg: Sokan tudják, hogyan kell a féknyerget használni a méréshez. Ez az oktatóanyag megtanítja, hogyan kell lebontani a digitális féknyerget, és elmagyarázza, hogyan működik a digitális féknyereg
Digitális iránytű Arduino és HMC5883L magnetométer használatával: 6 lépés
Digitális iránytű az Arduino és a HMC5883L magnetométer használatával: Sziasztok, Ez az érzékelő jelezheti a földrajzi északot, délt, keletet és nyugatot, mi emberek is használhatjuk időnként, amikor szükséges. Így. Ebben a cikkben megpróbáljuk megérteni, hogyan működik a magnetométer érzékelő, és hogyan lehet összekötni egy mikrokontrolettel
DIY Arduino iránytű: 6 lépés
DIY Arduino iránytű: Mindannyian tudjuk, mi az iránytű és mire használják. Az iránytű megmondja az irányokat, azaz K-Ny-É-É. A hagyományos iránytű mágneses tűvel dolgozott a közepén. A tű északi pólusa mindig a Föld földrajzi északi pólusa felé mutat
Arduino Nano: gyorsulásmérő giroszkóp iránytű MPU9250 I2C érzékelő Visuino -val: 11 lépés
Arduino Nano: Gyorsulásmérő giroszkóp iránytű MPU9250 I2C érzékelő Visuino -val: Az MPU9250 az egyik legfejlettebb kombinált gyorsulásmérő, giroszkóp és iránytű kis méretű érzékelő. Számos fejlett funkcióval rendelkeznek, beleértve az aluláteresztő szűrést, a mozgásérzékelést és még egy programozható speciális processzort is