- Potrebné materiály:
- Schéma zapojenia:
- Napájanie vášho nastavenia:
- Programovanie vášho Arduina:
- Príprava aplikácie pre Android pomocou spracovania:
- Práca sklonomeru Arduino:
MPU6050 je IC 3-osi akcelerometer a gyroskop 3 os spojené do jednej jednotky. Je tu tiež umiestnený teplotný senzor a DCM na vykonávanie zložitých úloh. MPU6050 sa bežne používa na výrobu robotov Drone a iných vzdialených robotov, ako je samovyvažovací robot. V tomto projekte sa naučíme, ako používať MPU6050 je zostavený inklinometer alebo vodováha. Ako vieme, sklon sa používa na kontrolu, či je povrch dokonale vyrovnaný alebo nie, sú k dispozícii buď ako bubliny so spritovou bublinou, alebo ako digitálne merače. V tomto projekte budeme budovať digitálny inklinometer, ktorý je možné monitorovať pomocou aplikácie pre Android. Dôvod na použitie vzdialeného displeja ako mobilného telefónu je ten, že môžeme sledovať hodnoty z MPU6050 bez toho, aby sme sa museli pozerať na hardvér, čo by sa nám veľmi hodilo, keby sme MPU6050 umiestnili na dron alebo na iné neprístupné miesta.
Potrebné materiály:
- Arduino Pro-mini (5 V)
- Gyroskopický senzor MPU6050
- Modul Bluetooth HC-05 alebo HC-06
- Doska FTDI
- Nepál
- Pripojovacie vodiče
- Chytrý telefón
Schéma zapojenia:
Kompletná schéma zapojenia pre tento projekt snímača náklonu Arduino je uvedená nižšie. Má iba tri komponenty a dá sa ľahko postaviť cez nepájivé pole.
Tieto MPU6050 komunikuje s pomocou I2C a teda SDA čapu je spojený s kolíkom A4 Arduino, ktorá je SDA kolík a kolík SCL je pripojený k A5 pin Arduino. Modul HC-06 Bluetooth pracuje s pomocou sériovej komunikácie preto Rx kolík Bluetooth je pripojený k čapu D11 a Tx pin Bluetooth je pripojený k vývodu D 10 Arduino. Tieto piny D10 a D11 budú nakonfigurované ako sériové piny programovaním Arduina. Modul HC-05 a modul MSP6050 pracujú na + 5 V, a preto sú napájané z kolíka Vcc Arduina, ako je uvedené vyššie.
Použil som pár spojovacích drôtov na dosku a zostavu som postavil na malej doske. Po dokončení pripojení bude moja doska vyzerať takto.
Napájanie vášho nastavenia:
Môžete buď napájať svoj obvod prostredníctvom programovacej dosky FTDI, ako som to urobil ja, alebo môžete použiť 9V batériu alebo 12V adaptér a pripojiť ho k Raw pinu Arduino pro mini. Arduino Pro-mini má zabudovaný regulátor napätia, ktorý prevádza toto externe regulované napätie + 5V.
Programovanie vášho Arduina:
Keď je hardvér pripravený, môžeme začať programovať naše Arduino. Ako vždy kompletný kód pre tento projekt možno nájsť v dolnej časti tejto stránky. Aby som však lepšie pochopil projekt, rozbil som kód na malé chyby a vysvetlil som ich ako kroky uvedené nižšie.
Prvým krokom by bolo prepojenie MPU6050 s Arduinom. Pre tento projekt použijeme knižnicu vyvinutú spoločnosťou Korneliusz, ktorú si môžete stiahnuť z odkazu nižšie
MPU6050 Liberty - Korneliusz Jarzebski
Stiahnite si ZIP súbor a pridajte ho do svojho Arduino IDE. Potom prejdite na Súbor-> Príklady-> Arduino_MPU6050_Master -> MPU6050_gyro_pitch_roll_yaw . Tým sa otvorí ukážkový program, ktorý používa knižnicu, ktorú sme si práve stiahli. Takže kliknite na upload a počkajte, kým sa program nahrá do vášho Arduino Pro mini. Po dokončení otvorte sériový monitor, nastavte prenosovú rýchlosť na 115 200 a skontrolujte, či sa zobrazuje nasledujúci text.
Spočiatku budú všetky tri hodnoty nulové, ale pri posúvaní tabuľky s chlebom môžete sledovať, ako sa tieto hodnoty menia. Ak to zmenia, znamená to, že vaše pripojenie je správne, inak skontrolujte svoje pripojenia. Nájdite si tu čas a všimnite si, ako sa tri hodnoty Pitch Roll a Yaw líšia podľa toho, ako nakláňate senzor. Ak budete zmätení, stlačte tlačidlo reset na Arduine a hodnoty sa znova inicializujú na nulu, potom nakloňte snímač jedným smerom a skontrolujte, ktoré hodnoty sa líšia. Obrázok nižšie vám pomôže lepšie porozumieť.
Z týchto troch parametrov nás zaujíma iba Roll and Pitch. Hodnota Roll nám povie o sklonu v osi X a hodnota Pitch povie nám o sklonom osi Y. Teraz, keď sme pochopili základné informácie, umožníme vlastne začať programovať Arduino na čítanie týchto hodnôt a odoslať ho Arduinu cez Bluetooth. Ako vždy začnime zahrnutím všetkých knižníc potrebných pre tento projekt
#include
Potom inicializujeme softvérové sériové číslo pre modul Bluetooth. To je možné vďaka softvérovej sériovej knižnici v Arduine, pričom IO piny je možné naprogramovať tak, aby fungovali ako sériové piny. Tu používame digitálne piny D10 a D11, kde D10 id Rx a D11 je Tx.
Softvér Serial BT (10, 11); // RX, TX
Potom inicializujeme premenné a objekty potrebné pre program a presunieme sa na funkciu setup (), kde určíme prenosovú rýchlosť pre sériový monitor a Bluetooth. Pre modely HC-05 a HC-06 je prenosová rýchlosť 9600, takže je nevyhnutné ich používať rovnako. Potom skontrolujeme, či je zbernica IIC Arduina pripojená k MPU6050, ak nie, vytlačíme varovnú správu a zostaneme tam, pokiaľ je pripojené zariadenie. Potom kalibrujeme gyroskop a nastavíme jeho prahové hodnoty pomocou príslušných funkcií, ako je uvedené nižšie.
void setup () {Serial.begin (115200); BT.začiatok (9600); // začnite komunikáciu Bluetooth na 9600 baudrate // inicializujte MPU6050 while (! mpu.begin (MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G)) {Serial.println ("Nenašiel som platný senzor MPU6050, skontrolujte zapojenie!"); oneskorenie (500); } mpu.calibrateGyro (); // Kalibrácia gyroskopu pri štarte mpu.setThreshold (3); // Ovláda citlivosť}
Riadok „ mpu.calibrateGyro ();“ nakalibrujte MPU6050 na pozíciu, na ktorej je momentálne umiestnený. Tento riadok je možné volať dovnútra programu viackrát, kedykoľvek je potrebné kalibrovať MPU6050 a nastaviť všetky hodnoty na nulu. „Mpu.setThreshold (3);“ táto funkcia riadi, do akej miery sa hodnota pohybuje pre pohyb na snímači. Príliš nízka hodnota zvýši hluk, takže buďte opatrní a manipulujte s tým.
Vo vnútri prázdnej slučky () opakovane čítame hodnoty gyroskopu a teplotného senzora vypočítame hodnotu výšky tónu, natočenia a vybočenia, pošleme ju do modulu Bluetooth. Nasledujúce dva riadky budú čítať nespracované hodnoty gyra a teploty
Vektorová norma = mpu.readNormalizeGyro (); temp = mpu.readTemperature ();
Ďalej vypočítame výšku, naklonenie a vybočenie vynásobením časovým krokom a jeho sčítaním k predchádzajúcim hodnotám. Timestep nie je nič iné ako interval medzi po sebe idúcimi odpočty.
ihrisko = ihrisko + norma.YAxis * timeStep; roll = roll + norm.XAxis * timeStep; yaw = yaw + norm.ZAxis * timeStep;
Aby sme lepšie pochopili časový krok, pozrime sa na nasledujúci riadok. Tento riadok je umiestnený na čítanie hodnôt z MPU6050 presne v intervale 10 mS alebo 0,01 sekundy. Hodnotu timeStep teda deklarujeme ako 0,01. Použite riadok dole na udržanie programu, ak tam zostane, ak zostane viac času. (millis () - timer ()) udáva čas potrebný na vykonanie programu. Iba to odpočítame s 0,01 sekundy a po zvyšok času tam iba držíme náš program pomocou funkcie oneskorenia.
oneskorenie ((timeStep * 1000) - (millis () - časovač));
Po dokončení načítania a výpočtu hodnôt ich môžeme poslať na náš telefón cez Bluetooth. Má to však háčik. Modul Bluetooth, ktorý používame, dokáže poslať iba 1 bajt (8 bitov), čo nám umožňuje posielať čísla iba od 0 do 255. Musíme teda rozdeliť naše hodnoty a namapovať ich do tohto rozsahu. To sa deje v nasledujúcich riadkoch
if (zvitok> -100 && zvitok <100) x = mapa (zvitok, -100, 100, 0, 100); if (rozteč> -100 && rozteč <100) y = mapa (rozteč, -100, 100, 100, 200); if (teplota> 0 && teplota <50) t = 200 + int (teplota);
Ako to môžete zistiť, hodnota rolovania sa mapuje na 0 až 100 do premennej x a výška sa mapuje na 100 až 200 do premennej y a teplota sa mapuje na 200 a vyššie do premennej t. Rovnaké informácie môžeme použiť na získanie údajov z odoslaných údajov. Nakoniec tieto hodnoty zapíšeme cez Bluetooth pomocou nasledujúcich riadkov.
BT.write (x); BT.write (y); BT.write (t);
Ak ste pochopili celý program, posuňte sa nadol, pozrite sa na program a nahrajte ho na dosku Arduino.
Príprava aplikácie pre Android pomocou spracovania:
Android aplikácia pre tento Arduino Inclinometer bola vyvinutá pomocou Processing IDE. Toto je veľmi podobné Arduinu a dá sa z neho vytvoriť systémová aplikácia, aplikácia pre Android, návrhy webových stránok a oveľa viac. Spracovanie sme už použili na vývoj niektorých ďalších skvelých projektov, ktoré sú uvedené nižšie
- Ping Pong hra pomocou Arduina
- Rádio FM riadené inteligentným telefónom pomocou spracovania.
- Radarový systém Arduino využívajúci spracovanie a ultrazvukový senzor
Nie je však možné vysvetliť celý kód, ako vytvoriť túto aplikáciu. Máte teda dva spôsoby, ako to prekonať. Buď si môžete stiahnuť súbor APK z nasledujúceho odkazu a nainštalovať si aplikáciu pre Android priamo do svojho telefónu. Alebo prejdite nižšie a nájdite kompletný kód spracovania a sami sa naučte, ako to funguje
V súbore ZIP nájdete priečinok s názvom data, ktorý obsahuje všetky obrázky a ďalšie zdroje, ktoré sa majú načítať do aplikácie pre Android. Nasledujúci riadok rozhoduje, ku ktorému názvu by sa malo zariadenie Bluetooth automaticky pripojiť
bt.connectToDeviceByName ("HC-06");
Vo vnútri funkcie draw () sa veci budú vykonávať opakovane. Tu nakreslíme obrázky, zobrazíme text a animujeme pruhy na základe hodnôt z modulu Bluetooth. Čítaním v programe môžete skontrolovať, čo sa deje vo vnútri každej funkcie.
void draw () // Nekonečná slučka {background (0); imageMode (CENTRUM); obrázok (logo, šírka / 2, výška / 1,04, šírka, výška / 12); load_images (); textfun (); getval (); }
Na záver je potrebné vysvetliť ešte jednu dôležitú vec. Pamätajte, že hodnotu rozstupu, roztočenia a teploty rozdelíme na 0 až 255. Takže tu ju opäť vrátime k normálnym hodnotám opačným priradením k normálnym hodnotám.
if (info <100 && info> 0) x = mapa (info, 0, 100, - (šírka / 1,5) / 3, + (šírka / 1,5) / 3); // x = informácie; else if (info <200 && info> 100) y = mapa (info, 100, 200, - (šírka / 4,5) / 0,8, + (šírka / 4,5) / 0,8); // y = info; inak if (info> 200) temp = info -200; println (temp, x, y);
Existujú oveľa lepšie spôsoby, ako získať údaje z modulu Bluetooth do telefónu, ale keďže ide iba o hobby projekt, ignorovali sme ich, ak máte záujem, môžete sa hlboko zorientovať.
Práca sklonomeru Arduino:
Keď sa pripravíte na hardvér a aplikáciu, je čas zabaviť sa na tom, čo sme vytvorili. Nahrajte Arduino kód na dosku, môžete tiež odstrániť komentáre na riadkoch Serial.println a pomocou sériového monitora skontrolovať, či hardvér funguje podľa očakávaní. To je každopádne úplne voliteľné.
Po načítaní kódu spustite vo svojom mobilnom telefóne aplikáciu pre Android. Aplikácia by sa mala automaticky pripojiť k vášmu modulu HC-06 a v hornej časti aplikácie sa zobrazí „Pripojiť k: HC-06“, ako je to znázornené nižšie.
Spočiatku budú všetky hodnoty nulové okrem hodnoty teploty. Je to preto, že Arduino pre túto pozíciu kalibrovalo MPU-6050 ako referenciu, teraz môžete nakloniť hardvér a skontrolovať, či sa spolu s animáciou menia aj hodnoty v mobilnej aplikácii. Kompletné fungovanie aplikácie nájdete na videu uvedenom nižšie. Teraz teda môžete nepájivú dosku umiestniť kamkoľvek a skontrolovať, či je povrch dokonale vyrovnaný.
Dúfam, že ste projektu porozumeli a dozvedeli ste sa z neho niečo užitočné. Ak máte pochybnosti, vyriešte to pomocou časti s komentármi nižšie alebo na fórach.