- Potřebné materiály:
- Kruhový diagram:
- Napájení nastavení:
- Programování vašeho Arduina:
- Příprava aplikace pro Android pomocí zpracování:
- Práce s Arduino inklinometrem:
MPU6050 je IC 3-osy akcelerometr a gyroskop 3 osa spojeny do jedné jednotky. Je zde také teplotní senzor a DCM pro provádění složitých úkolů. MPU6050 se běžně používá při stavbě robotů Drone a dalších vzdálených robotů, jako je samovyvažovací robot. V tomto projektu se naučíme, jak používat MPU6050 je postaven Inclinometer nebo Spirit Leveler. Jak víme, inklinometr se používá ke kontrole, zda je povrch dokonale vyrovnaný nebo ne, jsou k dispozici buď jako spritové bubliny, nebo jako digitální měřiče. V tomto projektu budeme stavět digitální inklinometr, který lze monitorovat pomocí aplikace pro Android. Důvodem pro použití vzdáleného displeje, jako je mobilní telefon, je to, že můžeme monitorovat hodnoty z MPU6050, aniž bychom se museli dívat na hardware, což by se velmi hodilo, kdyby byl MPU6050 umístěn na dron nebo na jiná nepřístupná místa.
Potřebné materiály:
- Arduino Pro-mini (5 V)
- Gyroskopický senzor MPU6050
- Modul Bluetooth HC-05 nebo HC-06
- FTDI deska
- Nepájivá deska
- Připojovací vodiče
- Chytrý telefon
Kruhový diagram:
Kompletní schéma zapojení pro tento projekt snímače náklonu Arduino je uvedeno níže. Má pouze tři komponenty a lze jej snadno postavit na prkénko.
Tyto MPU6050 komunikuje s pomocí I2C a tudíž SDA čepu je spojen s kolíkem A4 Arduino, která je SDA kolík a kolík SCL je připojen k A5 pin Arduino. Modul HC-06 Bluetooth pracuje s pomocí sériové komunikace proto Rx kolík Bluetooth je připojen k čepu D11 a Tx pin Bluetooth je připojen k vývodu D 10 Arduino. Tyto piny D10 a D11 budou nakonfigurovány jako sériové piny naprogramováním Arduina. Modul HC-05 a modul MSP6050 pracují na + 5 V, a proto jsou napájeny kolíkem Vcc Arduina, jak je uvedeno výše.
Použil jsem pár spojovacích vodičů na prkénko a postavil sestavu na malé prkénko. Jakmile jsou připojení hotová, vypadá moje deska níže.
Napájení nastavení:
Svůj obvod můžete napájet buď pomocí programovací desky FTDI, jako jsem to udělal já, nebo použít 9V baterii nebo 12V adaptér a připojit jej k Raw pinu Arduino pro mini. Arduino Pro-mini má vestavěný regulátor napětí, který převádí toto externí napětí regulované + 5V.
Programování vašeho Arduina:
Jakmile je hardware připraven, můžeme začít programovat naše Arduino. Jako vždy kompletní kód pro tento projekt lze nalézt v dolní části této stránky. Abych ale lépe porozuměl projektu, rozbil jsem kód na malé štěrbiny a vysvětlil jsem je jako kroky níže.
Prvním krokem by bylo propojení MPU6050 s Arduino. Pro tento projekt použijeme knihovnu vyvinutou společností Korneliusz, kterou si můžete stáhnout z níže uvedeného odkazu
MPU6050 Liberty - Korneliusz Jarzebski
Stáhněte si soubor ZIP a přidejte jej do svého Arduino IDE. Pak přejděte na Soubor-> Příklady-> Arduino_MPU6050_Master -> MPU6050_gyro_pitch_roll_yaw . Tím se otevře ukázkový program, který používá knihovnu, kterou jsme právě stáhli. Klikněte tedy na upload a počkejte, až se program nahraje do vašeho Arduino Pro mini. Jakmile to uděláte, otevřete sériový monitor a nastavte přenosovou rychlost na 115200 a zkontrolujte, zda se zobrazuje následující.
Zpočátku budou všechny tři hodnoty nulové, ale při pohybu po prkénku můžete sledovat, jak se tyto hodnoty mění. Pokud to změní, znamená to, že vaše připojení je správné, jinak zkontrolujte vaše připojení. Udělejte si zde čas a všimněte si, jak se tři hodnoty Pitch Roll a Yaw liší podle způsobu naklonění senzoru. Pokud budete zmatení, stiskněte resetovací tlačítko na Arduinu a hodnoty se znovu inicializují na nulu, poté nakloňte snímač jedním směrem a zkontrolujte, které hodnoty se mění. Níže uvedený obrázek vám pomůže lépe porozumět.
Z těchto tří parametrů nás zajímá pouze Roll and Pitch. Hodnota Roll nám řekne o sklonu v ose X a hodnota Pitch řekne nám o sklonem osy Y. Nyní, když jsme pochopili, že základy umožňují skutečně začít programovat Arduino tak, aby tyto hodnoty přečetlo, odešlete jej Arduinu přes Bluetooth. Jako vždy začněme zahrnutím všech knihoven potřebných pro tento projekt
#zahrnout
Poté inicializujeme softwarové sériové číslo pro modul Bluetooth. To je možné díky softwarové sériové knihovně v Arduinu, IO piny lze naprogramovat tak, aby fungovaly jako sériové piny. Zde používáme digitální piny D10 a D11, kde D10 id Rx a D11 je Tx.
SoftwareSerial BT (10, 11); // RX, TX
Poté inicializujeme proměnné a objekty potřebné pro program a přejdeme k funkci setup (), kde určíme přenosovou rychlost pro sériový monitor a Bluetooth. U HC-05 a HC-06 je přenosová rychlost 9600, takže je povinné používat stejnou rychlost. Poté zkontrolujeme, zda je sběrnice IIC Arduina připojena k MPU6050, pokud ne, vytiskneme varovnou zprávu a zůstaneme tam, dokud je zařízení připojeno. Poté kalibrujeme Gyro a nastavíme jeho prahové hodnoty pomocí příslušných funkcí, jak je uvedeno níže.
void setup () {Serial.begin (115200); BT. Začátek (9600); // zahájit komunikaci Bluetooth na 9600 baudrate // inicializovat MPU6050 while (! mpu.begin (MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G)) {Serial.println ("Nelze najít platný senzor MPU6050, zkontrolujte zapojení!"); zpoždění (500); } mpu.calibrateGyro (); // Kalibrace gyroskopu během startu mpu.setThreshold (3); // Ovládá citlivost}
Řádek „ mpu.calibrateGyro ();“ zkalibrujte MPU6050 na pozici, na které je aktuálně umístěn. Tento řádek lze uvnitř programu volat vícekrát, kdykoli je třeba kalibrovat MPU6050 a všechny hodnoty nastavit na nulu. „Mpu.setThreshold (3);“ tato funkce řídí, jak moc se hodnota mění pro pohyb na senzoru, příliš nízká hodnota zvýší hluk, takže buďte opatrní, když si s tím pohráváte.
Uvnitř smyčky void () opakovaně čteme hodnoty gyroskopu a teplotní čidlo vypočítá hodnotu výšky, náklonu a vybočení, odešle ji do modulu Bluetooth. Následující dva řádky budou číst surové hodnoty Gyro a teplotu
Vektorová norma = mpu.readNormalizeGyro (); temp = mpu.readTemperature ();
Dále vypočítáme výšku, naklonění a vybočení vynásobením časovým krokem a přidáním k předchozím hodnotám. Timestep není nic jiného než interval mezi po sobě jdoucími odečty.
rozteč = rozteč + norma.YAxis * timeStep; roll = roll + norm.XAxis * timeStep; yaw = yaw + norm.ZAxis * timeStep;
Abychom lépe porozuměli časovým krokům, podívejme se na níže uvedený řádek. Tento řádek je umístěn pro čtení hodnot z MPU6050 přesně v intervalu 10 mS nebo 0,01 sekundy. Deklarujeme tedy hodnotu timeStep jako 0,01. Pomocí níže uvedeného řádku program podržte, pokud tam zbývá více času. (millis () - timer ()) udává čas potřebný k provedení programu. Prostě to odečteme s 0,01 sekundy a po zbývající dobu tam jen držíme náš program pomocí funkce zpoždění.
delay ((timeStep * 1000) - (millis () - timer));
Jakmile dokončíme čtení a výpočet hodnot, můžeme je poslat do našeho telefonu přes Bluetooth. Ale tady je háček. Modul Bluetooth, který používáme, může odesílat pouze 1 bajt (8 bitů), což nám umožňuje odesílat čísla pouze od 0 do 255. Musíme tedy rozdělit naše hodnoty a namapovat je do tohoto rozsahu. To se děje pomocí následujících řádků
if (role> -100 && role <100) x = mapa (role, -100, 100, 0, 100); if (rozteč> -100 && rozteč <100) y = mapa (rozteč, -100, 100, 100, 200); if (temp> 0 && temp <50) t = 200 + int (temp);
Jak na to přijdete, hodnota role se mapuje na 0 až 100 do proměnné x a hřiště se mapuje na 100 až 200 do proměnné y a teplota se mapuje na 200 a výše do proměnné t. Stejné informace můžeme použít k načtení dat z toho, co jsme odeslali. Nakonec tyto hodnoty zapíšeme přes Bluetooth pomocí následujících řádků.
BT.write (x); BT.write (y); BT.write (t);
Pokud jste pochopili celý program, přejděte dolů, podívejte se na program a nahrajte jej na desku Arduino.
Příprava aplikace pro Android pomocí zpracování:
Aplikace pro Android pro tento Arduino Inclinometer byla vyvinuta pomocí Processing IDE. To je velmi podobné Arduinu a lze jej použít k vytváření systémových aplikací, aplikací pro Android, webových návrhů a mnohem více. Zpracování jsme již použili k vývoji některých našich dalších skvělých projektů, které jsou uvedeny níže
- Ping Pong hra pomocí Arduina
- Rádio FM ovládané chytrým telefonem pomocí zpracování.
- Radarový systém Arduino využívající zpracování a ultrazvukový senzor
Není však možné vysvětlit celý kód, jak vytvořit tuto aplikaci. Máte tedy dva způsoby, jak to projít. Buď si můžete stáhnout soubor APK z níže uvedeného odkazu a nainstalovat aplikaci pro Android přímo do telefonu. Nebo přejděte níže a najděte kompletní kód zpracování a sami se naučte, jak to funguje
V souboru ZIP najdete složku nazvanou data, která se skládá ze všech obrázků a dalších zdrojů, které se mají načíst do aplikace pro Android. Níže uvedený řádek rozhoduje, ke kterému jménu se má Bluetooth automaticky připojit
bt.connectToDeviceByName ("HC-06");
Uvnitř funkce draw () budou věci prováděny opakovaně. Zde nakreslíme obrázky, zobrazíme text a animujeme pruhy na základě hodnot z modulu Bluetooth. Přečtením programu můžete zkontrolovat, co se děje uvnitř každé funkce.
void draw () // Nekonečná smyčka {background (0); imageMode (CENTRUM); obrázek (logo, šířka / 2, výška / 1,04, šířka, výška / 12); load_images (); textfun (); getval (); }
Na závěr je třeba vysvětlit ještě jednu důležitou věc, pamatujte, že jsme hodnotu hřiště, kolečka a teploty rozdělili na 0 až 255. Takže zde ji opět přivedeme zpět na normální hodnoty obráceným mapováním na normální hodnoty.
if (info <100 && info> 0) x = mapa (info, 0, 100, - (šířka / 1,5) / 3, + (šířka / 1,5) / 3); // x = informace; else if (info <200 && info> 100) y = mapa (info, 100, 200, - (šířka / 4,5) / 0,8, + (šířka / 4,5) / 0,8); // y = informace; jinak if (info> 200) temp = info -200; println (temp, x, y);
Existují mnohem lepší způsoby, jak získat data z modulu Bluetooth do telefonu, ale protože se jedná pouze o hobby projekt, ignorovali jsme je, můžete v případě zájmu hlouběji kopat.
Práce s Arduino inklinometrem:
Jakmile se seznámíte s hardwarem a aplikací, je čas se bavit tím, co jsme vytvořili. Nahrajte Arduino kód na desku, můžete také odstranit komentáře na řádcích Serial.println a pomocí sériového monitoru zkontrolovat, zda hardware funguje očekávaným způsobem. To je každopádně zcela volitelné.
Po nahrání kódu spusťte ve svém mobilním telefonu aplikaci pro Android. Aplikace by se měla automaticky připojit k vašemu modulu HC-06 a v horní části aplikace se zobrazí „Připojit k: HC-06“, jak je uvedeno níže.
Zpočátku budou všechny hodnoty nulové kromě hodnoty teploty. Je to proto, že Arduino kalibrovalo MPU-6050 pro tuto pozici jako referenci, nyní můžete naklonit hardware a zkontrolovat, zda se spolu s animací mění také hodnoty v mobilní aplikaci. Kompletní fungování aplikace najdete na videu níže. Nyní tedy můžete prkénko umístit kamkoli a zkontrolovat, zda je povrch dokonale vyrovnaný.
Doufám, že jste projektu porozuměli a naučili se z něj něco užitečného. Máte-li jakékoli pochybnosti, použijte prosím sekci komentářů níže nebo fóra k vyřešení.