研究筆記 - GaussToys

Mini GaussSense - ONE sensor for ALL

我們期待極速自造工具能精巧便攜、具有許多功能、可以重覆使用、可以自由擴展來適應不同的需求,最重要的,我們當然希望它很容易使用。

Mini GaussSense是值得您期待的優雅解決方案。小盒子裡的微型磁場感應器和磁鐵,正是極速自造的獨門配方。小小一顆便支援多種功能,足以取代滿滿一箱的傳統電子零件!連接Arduino和下載免費的軟件開發工具包後,一切神奇運作!兼容麵包板的設計,不僅能夠重覆使用、自由擴展,也節省您的時間!

Mini GaussSense,簡潔有力的自造工具箱。

Youtube 介紹(以一打十)Mini GaussSense - The Simplest Maker’s Toolkit, Ever! 

基本資料

媒體

介紹文

研究論文

社群支援

YouTube頻道影片

*

Mini GaussSense - 10 series

Bring up

開箱

按官網步驟走一次

  1. 開始使用 GaussSense
    1. 下載 Arduino Code, 並上傳(驗證使用 Fayaduino Uno +Arduino 1.6.5 )
    2. 下載 Processing 並按指示安裝(驗證使用 Processing 2..2.1 )
  2. Example/Basic/* 都執行正常
    1. UI 工作正常
    2. Console 會輸出類似
  1. 照片

基礎研究

GaussSense/src/gausstoys/core/GaussSense.java

        public void pre() {

                if(this.serialManager.isConnected()) {

                        this.serialManager.readSerialData();

        public void readSerialData() {

                this.serialData.clear();

                while( this.serial.available() > 0) {

                        int data = (byte)this.serial.read();

                    this.serialData.add(data);

                }

                this.serial.clear();

                this.serial.write(’a’);

        }

Arduino 跟 GaussSense 之間如何運作

感測值如何轉換成有意義的訊息

LinkItONE 也能用?

gs = new GaussSense(this, GaussSense.GSType.GAUSSSENSE_MINI, 1, 1, Serial.list()[Serial.list().length - 1], 115200);

Found 10 serial device(s).

[1] /dev/cu.ARD_SPP-

[2] /dev/cu.Bluetooth-Incoming-Port

[3] /dev/cu.EV3-SerialPort

[4] /dev/cu.usbmodem1421

[5] /dev/cu.usbmodem1423

[6] /dev/tty.ARD_SPP-

[7] /dev/tty.Bluetooth-Incoming-Port

[8] /dev/tty.EV3-SerialPort

[9] /dev/tty.usbmodem1421

[10] /dev/tty.usbmodem1423

純 Arduino Sensor 值觀察

磁鐵放在上面,藍面向上,置中 

66 127 127 49 127 127 127 127 127 127 127 127 53 127 127 41 

66 127 127 49 127 127 127 127 127 127 127 127 54 127 127 42 

66 127 127 49 127 127 127 127 127 127 127 127 54 127 127 42 

66 127 127 49 127 127 127 127 127 127 127 127 54 127 127 41 

66 127 127 49 127 127 127 127 127 127 127 127 53 127 127 42

=> 藍上是127

=> index 1,4,13,16 應該在角落

磁鐵放在上面,紅面向上,置中

-18 -127 -127 -53 -127 -127 -127 -127 -127 -127 -127 -127 -13 -127 -127 -44 

-18 -127 -127 -53 -127 -127 -127 -127 -127 -127 -127 -127 -13 -127 -127 -44 

-18 -127 -127 -53 -127 -127 -127 -127 -127 -127 -127 -127 -13 -127 -127 -44 

-18 -127 -127 -53 -127 -127 -127 -127 -127 -127 -127 -127 -13 -127 -127 -44 

-17 -127 -127 -53 -127 -127 -127 -127 -127 -127 -127 -127 -12 -127 -127 -44 

=> 紅上是-127

=> index 1,4,13,16 應該在角落

磁鐵距離約一公分,藍面向上,置中

55 57 51 37 38 71 63 54 36 76 43 27 35 29 43 21 

55 57 51 37 37 72 63 54 36 76 43 27 35 29 42 21 

55 57 51 37 38 72 64 55 37 77 43 27 35 29 43 21 

55 57 52 37 38 72 64 55 37 77 43 27 35 29 43 21 

55 58 52 38 38 72 64 55 36 77 44 28 35 29 43 21 

磁鐵距離約一公分,紅面向上,置中

-7 -26 -31 -19 -39 -32 -39 -19 -35 -19 -54 -36 -9 -33 -15 -16 

-7 -26 -32 -20 -39 -32 -39 -19 -35 -19 -54 -36 -9 -33 -16 -17 

-7 -27 -32 -20 -40 -32 -40 -19 -35 -19 -54 -36 -9 -33 -15 -17 

-7 -27 -32 -20 -39 -32 -40 -20 -35 -19 -54 -36 -9 -33 -15 -16 

-7 -27 -32 -20 -39 -32 -40 -20 -35 -19 -55 -36 -9 -33 -15 -16 

磁鐵放在上面,藍面向上,放左下角 (靠 Power PIN)

-6 33 127 127 -29 -4 127 127 -23 -3 -27 17 -3 -23 -10 -22 

-6 33 127 127 -29 -4 127 127 -24 -3 -26 17 -3 -23 -11 -23 

-6 33 127 127 -29 -4 127 127 -23 -3 -27 17 -3 -23 -10 -22 

-6 33 127 127 -30 -5 127 127 -23 -3 -27 17 -3 -23 -10 -22 

-6 33 127 127 -30 -4 127 127 -23 -3 -27 17 -3 -23 -10 -22 

=> index 4 在左下角

磁鐵放在上面,藍面向上,放右下角

127 127 6 -9 127 126 -11 2 -1 4 -29 -16 -15 -26 -2 -7 

127 127 6 -8 127 126 -11 2 -1 4 -29 -16 -14 -25 -2 -6 

127 127 6 -8 127 126 -11 2 0 4 -30 -16 -14 -25 -2 -6 

127 127 6 -8 127 125 -11 2 0 4 -29 -16 -14 -26 -2 -6 

127 127 6 -8 127 125 -11 2 -1 4 -30 -16 -14 -26 -2 -6 

=> index 1 在右下角

磁鐵放在上面,藍面向上,放左上角

8 -7 -16 -17 -26 -12 35 127 -32 24 127 127 -19 31 127 127 

8 -7 -16 -17 -26 -13 35 127 -32 24 127 127 -19 32 127 127 

8 -7 -16 -17 -26 -12 35 127 -32 24 127 127 -19 32 127 127 

8 -7 -16 -17 -26 -13 35 127 -32 24 127 127 -19 31 127 127 

8 -7 -16 -17 -26 -12 35 127 -32 24 127 127 -19 31 127 127 

=> index 16 在左上角

磁鐵放在上面,藍面向上,放右上角

-8 -12 -6 2 74 10 -13 5 127 127 -26 -22 127 127 14 -17 

-8 -12 -6 2 75 10 -14 5 127 127 -26 -22 127 127 14 -18 

-8 -12 -5 2 75 10 -14 4 127 127 -25 -23 127 127 14 -18 

-8 -12 -6 2 74 11 -13 4 127 127 -26 -22 127 127 14 -18 

-8 -12 -6 2 74 10 -14 5 127 127 -25 -22 127 127 14 -18 

=>index 13 在右上角

=> 排列應該是這樣, 4 在 POWER PIN, 1 在 D3

16 15 14 13

12 11 10 9

8  7  6  5

4  3  2  1

地磁感測的觀察

思路是先將被限制的感測值放開,看看能夠觀察到什麼

地表磁力約在 0.26 - 0.65 高斯,希望看到感測值在這附近,即使有 offset, 也希望能看到在八個方位能看到將近 2.65 的值差

0.26/(150.0/1024)

1.7749333333333335

>>> 0.65/(150.0/1024)

4.437333333333333

沒有下 constrain(v, -127, 127) 的值 

21 14 11 13 -6 16 12 21 -6 24 -7 -3 9 -7 13 3 

21 14 12 12 -6 16 12 21 -6 24 -7 -3 9 -6 13 3 

21 14 12 13 -6 16 12 21 -6 24 -7 -3 9 -6 13 3 

21 14 12 13 -6 16 13 22 -6 24 -7 -3 9 -7 13 3 

21 14 12 13 -6 16 12 21 -6 24 -7 -2 9 -7 12 3 

=> 沒看到預期接近 0, 在拿感測器轉 360 度的實驗中,觀測不到任何值有明顯的差2 的現象

RH:請使用processing example code e1 進行觀測,啟用後按enter可將所有值歸0

接著移動sensor,應該可以看到相當微小的差異,值在0-4之間

(您也可以在processing中使用用float[][] rawData = gs. getRawData() 後,再使用println(rawData)在console看到4x4的值)

然後您就可以自由將rawData乘上某個常數把值放大,或者使用更高解析度的ADC看到更細緻的結果。

不同磁鐵的觀察

  1. 隨便的磁鐵都能讓 GaussSense 感測到磁場的變化 => 一般磁鐵也能用
  2. 磁鐵強一點,感測到的數值會比較高,無法感測的距離也比較長
    1. RH: 可以把Arduino code中的 +/-127的限制放寬成+/-512 就可以減輕飽和問題。ps. Arduino當中可看到放寬後數值,但是如果要用processing的範例,必須在把+/-512 map回 +/-127 (e.g. 512/4 = new value)
  3. 所附的磁鐵約和一般比較強的磁鐵是類似的
    1. RH: 所附的磁鐵應該是比較弱的喔 銀色的磁鐵才是比較強的
  4. 有一種按下去比較軟的磁鐵,磁力很弱,而且可以看出磁力的分布比較奇特
    1. RH: 軟磁鐵運用的是交叉沖磁法,製造較簡易,但feature較複雜,不適用我們的演算法。

自製磁力感測 study