2019年2月17日 星期日

MPU-6050三軸加速度陀螺儀6DOF模組 GY-521


這個模組能夠輸出六個數據,三個軸的傾斜角度跟加速度,但是角度是偵測水平變化,而加速度則是偵測線性運動的變化,在還沒開始使用前,自己就感到很困惑,因為拿到這個模組時,很懷疑這麼小的東西要怎麼偵測這兩種數據,尤其是還有陀螺儀,印象中,陀螺儀不就是一個陀螺在轉嗎?

於是上網用"mems 陀螺儀"查看看,了解是利用科氏力(科裡奧利力(Coriolis))的原理,在微電機裡面也不是真的有個陀螺,詳細就不去研究了,先知道個大概之後,就來用看看吧。

然後,又遇到問題了,我根本不知道有什麼SCL,SDA之類的,查到了SDA (Serial Data line),SCL (Serial Clock Line),的說明,這是兩個裝置通訊所用的接腳,至於通訊用的協定則是採用I2C,因為這個模組用的通訊協定是I2C,所以就會使用這兩個接腳,我有查到接腳的說明,路徑如下
https://www.mschoeffler.de/2017/10/05/tutorial-how-to-use-the-gy-521-module-mpu-6050-breakout-board-with-the-arduino-uno/
好,那arduino上呢?

  • VCC (The breakout board has a voltage regulator. Therefore, you can connect the board to 3.3V and 5V sources.)
  • GND
  • SCL (Serial Clock Line of the I2C protocol.)
  • SDA (Serial Data Line of the I2C protocol.)
  • XDA (Auxiliary data => I2C master serial data for connecting the module to external sensors.)
  • XCL (Auxiliary clock => I2C master serial clock for connecting the module to external sensors.)
  • AD0 (If this pin is LOW, the I2C address of the board will be 0x68. Otherwise, if the pin is HIGH, the address will be 0x69.)
  • INT (Interrupt digital output)


因為我用的是arduino nano,就查了一下接腳,A5是SCL,A4則是SDA
網路上有很多文章,我是參考底下這篇
http://dory168.blogspot.com/p/gy-521sensormpu-6050dmp-ic.html

函式庫是底下路徑,要注意的是所需要的函式庫是放在Arduino目錄下
https://github.com/jrowberg/i2cdevlib

還有,文章中有提到驗證會出現錯誤,我抓的版本沒有,也許有修正錯誤了
因為有輸出數據,就不想去研究了

看到了數字,就想試試看圖像化的效果,
但是,在下載  “Toxi” 函式庫時遇到問題,因為這個連結過去的好像不是,就GOOGLE了一下,從網站首頁找下底下的網址
https://bitbucket.org/postspectacular/toxiclibs/downloads/

結果,安裝processing的時候又遇到了問題,出現警告訊息說有檔案遺失而無法安裝,於是試了幾個版本,最新版都不行,防毒都關了也沒用,只有2.2.1可以開啟,但是編譯的時候卻出現錯誤,看來是JVM的版本不合,抓了各種JVM都不行,就卡在這裡了。

而且發現,瞬間超過某個角度之後,MPU6050就會當掉,又再上網查了之後知道這是抓data時會頓停的問題,但是就必須要連arduino都要重開,所以又在找到下面的文章,使用他的程式碼後就好了。
http://microchip.eefocus.com/module/forum/thread-57814-1-1.html









2019年2月13日 星期三

Mini MP3 Player

為了想要用arduino控制音效,所以淘了這個撥放器回來試試看,一看到底下說明整個就傻住了,竟然要發送指令,這,我不會啊,幸好賣家提供了一篇文章









https://stonez56.blogspot.com/2015/03/arduino-dfplayer-mini-mp3-module.html

原始文章應該出自底下
https://t93093.wordpress.com/2017/08/03/arduino-%E6%B8%AC%E8%A9%A6-dfplayer-mini-mp3-%E6%92%AD%E6%94%BE%E6%A8%A1%E7%B5%84/

但是,看的時候不仔細,多花了點時間,所以依照自己的方式做紀錄,
先到底下路徑抓函式庫放到arduino的libraries
https://github.com/DFRobot/DFPlayer-Mini-mp3

#include <DFPlayer_Mini_Mp3.h>

聲音檔的放置方式:
在準備的micro SD卡裡面新增"mp3" 資料夾,把聲音檔放進這個資料夾
而聲音檔要先以四個數字命名0001~9999,在寫arduino程式碼的時候,要使用哪個聲音檔,不管前面的0,比如0001寫1就可以,
mp3_play (1);         //播放0001的聲音檔

測試用的程式碼,注意接腳用的是0、1,所以傳程式碼時先不要接
#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>

//
void setup () {
Serial.begin (9600);
mp3_set_serial (Serial); //set Serial for DFPlayer-mini mp3 module
mp3_set_volume (15);
}


//
void loop () {     
mp3_play (1);
        delay (6000);
}

聲音檔名的數字之後就可以加文字,比如0001test.mp3,

我也拆了一條USB線,測試讀卡功能,插到電腦上,還真的有抓到勒


只是,有個困惱的地方,接喇叭的正負極並沒有清楚的標示,實際上測試則是怎麼接都可以,但SPK2接正極的時候雜音比較少,至於要沒雜音的話,

依照官方的說法,需要接個1k的電阻,不過,上述的測試程式碼不能使用底下的接腳,因為是接10、11,所以為了符合底下的接腳說明,稍微修改了一下





#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>

SoftwareSerial mySoftwareSerial(10, 11); // RX, TX

void setup() {
 Serial.begin (9600);
 mySoftwareSerial.begin(9600);
 mp3_set_serial (mySoftwareSerial); //set Serial for DFPlayer-mini mp3 module
 mp3_set_volume (20);

}

void loop () {     
 mp3_play (1); //play 0001.mp3
 delay(10)
}




官方也有提供函式庫跟範例
http://wiki.dfrobot.com.cn/index.php/(SKU:DFR0299)DFPlayer_Mini%E6%A8%A1%E5%9D%97

接著,我叫兒子錄了兩句話,把它接到otto上,只不過otto的10跟11是用來接嘴巴的Led,因為線太亂,我沒有接,修改成遇到障礙物發出人聲警告。

題外話,因為我本來是用mblock寫程式,但是不知道怎麼把MP3player加進去,所以想用arduino 的IDE來編輯程式碼,但是,不管怎麼compiler都失敗,後來,到下面下載函式庫放到libraries裡面就可以了。
https://github.com/stembotvn/OttoDIY_mBlock_Extension