Obsah:
Video: Projekt digitálneho kompasu Arduino: 3 kroky
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:59
Ahoj! V tomto návode uvidíte, ako si môžete vytvoriť digitálny kompas pomocou Arduina a IDE pre spracovanie. Je to celkom jednoduchý, ale zaujímavý a chladne vyzerajúci projekt Arduino.
Demo ukážku tohto tutoriálu si môžete pozrieť vo videu vyššie. Vždy môžete nájsť ďalšie zaujímavé videá, ako je toto, na mojom kanáli YouTube, ako aj veľa elektronických projektov a návodov na mojom webe HowToMechatronics.com
Krok 1: Potrebné diely
Na tento projekt budete potrebovať iba dosku Arduino a magnetometer MEMS na meranie magnetického poľa Zeme. Budem používať oddeľovaciu dosku GY - 80, ktorá obsahuje 3 -osový magnetometer MC5883L.
Predtým, ako budeme pokračovať so zdrojovým kódom projektu Ak potrebujete ďalšie podrobnosti o tom, ako funguje magnetometer MEMS, ako aj o tom, ako pripojiť a používať oddeľovaciu dosku GY - 80 prostredníctvom komunikácie I2C, môžete si pozrieť moje konkrétne návody na to.
Krok 2: Zdrojový kód Arduino
Najprv musíme nahrať skicu na dosku Arduino, ktorá načíta údaje z magnetometra a odošle ich do IDE spracovania. Tu je zdrojový kód Arduino:
/ * Arduino Compass * * od Dejana Nedelkovského, * www. HowToMechatronics.com * */
#include // Knižnica Arduino I2C
#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;
plávajúci nadpis, nadpisStupne, nadpisFiltrované, deklinácia;
plavák Xm, Ym, Zm;
#define Magnetometer 0x1E // I2C 7bit address of HMC5883
neplatné nastavenie () {
// Inicializácia sériovej a I2C komunikácie Serial.begin (115200); Wire.begin (); oneskorenie (100); Wire.beginTransmission (magnetometer); Wire.write (0x02); // Vyberte režim register Wire.write (0x00); // Režim nepretržitého merania Wire.endTransmission (); }
prázdna slučka () {
// ---- X-Axis Wire.beginTransmission (magnetometer); // prenos do zariadenia Wire.write (Magnetometer_mX1); Wire.endTransmission (); Wire.requestFrom (magnetometer, 1); if (Wire.available () <= 1) {mX0 = Wire.read (); } Wire.beginTransmission (magnetometer); // prenos do zariadenia Wire.write (Magnetometer_mX0); Wire.endTransmission (); Wire.requestFrom (magnetometer, 1); if (Wire.available () <= 1) {mX1 = Wire.read (); }
// ---- Os Y
Wire.beginTransmission (magnetometer); // prenos do zariadenia Wire.write (Magnetometer_mY1); Wire.endTransmission (); Wire.requestFrom (magnetometer, 1); if (Wire.available () <= 1) {mY0 = Wire.read (); } Wire.beginTransmission (magnetometer); // prenos do zariadenia Wire.write (Magnetometer_mY0); Wire.endTransmission (); Wire.requestFrom (magnetometer, 1); if (Wire.available () <= 1) {mY1 = Wire.read (); } // ---- Wire-beginTransmission (magnetometer); // prenos do zariadenia Wire.write (Magnetometer_mZ1); Wire.endTransmission (); Wire.requestFrom (magnetometer, 1); if (Wire.available () <= 1) {mZ0 = Wire.read (); } Wire.beginTransmission (magnetometer); // prenos do zariadenia Wire.write (Magnetometer_mZ0); Wire.endTransmission (); Wire.requestFrom (magnetometer, 1); if (Wire.available () <= 1) {mZ1 = Wire.read (); } // ---- Os X mX1 = mX1 << 8; mX_out = mX0+mX1; // Surové údaje // Z technického listu: 0,92 mG/číslica Xm = mX_out*0,00092; // Gaussova jednotka //* Magnetické pole Zeme sa pohybuje od 0,25 do 0,65 Gaussa, takže toto sú hodnoty, ktoré musíme približne získať.
// ---- Os Y
mY1 = mY1 << 8; mY_out = mY0+mY1; Ym = mY_out*0,00092;
// ---- Os Z
mZ1 = mZ1 <0,073 radová deklinácia = 0,073; nadpis += deklinácia; // Oprava pri vrátení znamienok, ak (nadpis <0) nadpis += 2*PI;
// Oprava v dôsledku pridania deklinačného uhla
ak (nadpis> 2*PI) nadpis -= 2*PI;
nadpisStupne = nadpis * 180/PI; // Nadpis v jednotke Stupne
// Vyhladenie výstupného uhla / dolnopriepustného filtra
headerFiltered = nadpisFiltrovaný*0,85 + nadpisStupne*0,15;
// Odoslanie hodnoty nadpisu cez sériový port na spracovanie IDE
Serial.println (nadpis Filtrovaný);
oneskorenie (50); }
Krok 3: Spracovanie zdrojového kódu IDE
Potom, čo sme nahrali predchádzajúci náčrt Arduina, musíme prijať údaje do Processing IDE a nakresliť digitálny kompas. Kompas sa skladá z obrázku na pozadí, pevného obrázku šípky a otočného obrázku tela kompasu. Hodnoty magnetického poľa ucha vypočítané pomocou Arduina sa teda používajú na otáčanie kompasu.
Tu je zdrojový kód IDE spracovania:
/ * Arduino Compass * * od Dejana Nedelkovského, * www. HowToMechatronics.com * *// spracovanie spracovania.sériové. *; import java.awt.event. KeyEvent; import java.io. IOException;
Sériový myPort;
PImage imgCompass; PImage imgCompassArrow; PImage background;
Reťazcové údaje = "";
plavákový kurz;
neplatné nastavenie () {
veľkosť (1920, 1080, P3D); hladký (); imgCompass = loadImage ("Compass.png"); imgCompassArrow = loadImage ("CompassArrow.png"); pozadie = loadImage ("Background.png"); myPort = nový sériový port (tento, „COM4“, 115200); // spustí sériovú komunikáciu myPort.bufferUntil ('\ n'); }
void draw () {
obrázok (pozadie, 0, 0); // Načíta obrázok na pozadí pushMatrix (); prekladať (šírka/2, výška/2, 0); // Preloží súradnicový systém do stredu obrazovky, aby sa otáčanie uskutočnilo priamo v strede rotateZ (radiány (-hlavička)); // Otočí kompas okolo obrazu osi Z (imgCompass, -960, -540); // Načíta obrázok kompasu a pri premiestňovaní súradnicového systému potrebujeme nastaviť obrázok na -960x, -540y (polovičná veľkosť obrazovky) popMatrix (); // Vráti súradnicový systém späť na pôvodnú pozíciu 0, 0, 0 obrázku (imgCompassArrow, 0, 0); // Načíta obrázok CompassArrow, ktorý nie je ovplyvnený funkciou rotateZ () kvôli funkcii popMatrix () textSize (30); text („Nadpis:“+ nadpis, 40, 40); // Vytlačí hodnotu nadpisu na obrazovku
oneskorenie (40);
}
// začne čítať údaje zo sériového portu
void serialEvent (Serial myPort) {data = myPort.readStringUntil ('\ n'); // načíta údaje zo sériového portu a vloží ich do premennej String „data“. nadpis = float (údaje); // Konvertovanie hodnoty String na Float value}
Dúfam, že sa vám tento projekt bude páčiť. Ak je to tak, môžete tiež navštíviť moju webovú stránku a nájsť ďalšie skvelé projekty.
Odporúča:
Arduino Nano-výukový program 3-osového 12-bitového/8-bitového digitálneho akcelerometra MMA8452Q: 4 kroky
Arduino Nano-trojosový 12-bitový/8-bitový digitálny akcelerometer MMA8452Q Výukový program: MMA8452Q je inteligentný, trojosový, kapacitný, mikroobrábaný akcelerometer s nízkym výkonom a 12 bitovým rozlíšením. Flexibilné programovateľné možnosti pre používateľov sú k dispozícii pomocou vstavaných funkcií v akcelerometri, konfigurovateľných na dve prerušenia
Pás hmatového kompasu: 9 krokov
Haptický kompasový pás: Pás poháňaný Arduinom, ktorý vibruje smerom na sever. Ľudské vnímanie bolo vždy obmedzené na naše biologické zmysly, ale čo keby sme to mohli zmeniť? V prírode existujú zvieratá so schopnosťou vnímať magnetické polia, barometrický tlak,
Spracovanie zvuku a digitálneho signálu Bluetooth: Rámec Arduino: 10 krokov
Spracovanie zvuku a digitálneho signálu Bluetooth: Rámec Arduino: Zhrnutie Keď premýšľam o Bluetooth, myslím na hudbu, ale bohužiaľ väčšina mikrokontrolérov nedokáže prehrávať hudbu cez Bluetooth. Raspberry Pi môže, ale je to počítač. Chcem vyvinúť rámec založený na Arduine pre mikrokontroléry na prehrávanie zvuku cez Bluet
ESPcopter a Visuino - Konvertujte smer kompasu na 3D uhol: 6 krokov
ESPcopter a Visuino - Preveďte kompas na 3D uhol: ESPcopter je teraz plne podporovaný najnovšou verziou Visuina, a preto je pravdepodobne najľahšie naprogramovať existujúci dron! :-) S jeho podporou Visuino môžete ovládať motory, LED, práca s akcelerometrom, Gyr
Projekt digitálneho kódového zámku Arduino pomocou maticovej klávesnice: 9 krokov
Projekt digitálneho kódového zámku Arduino pomocou maticovej klávesnice: Vybudujte zariadenie na digitálny kódový zámok so systémom Arduino a Qwiic pomocou Zio M Uno a maticovej klávesnice Hex 4x3. Prehľad projektu Pre tento projekt postavíme jednoduchý digitálny kódový zámok, do ktorého môžu užívatelia zadávať a zadávať kľúče. v. V tomto návode si ukážeme použitie