把遇到錯誤的、學習到的前端筆記在這邊

總網頁瀏覽量

Copyright © Tzeng Ying-chi. 技術提供:Blogger.

2019/10/08

[2019鐵人賽] - 23.筆記IoT初練習- 速度與激情? - Johnny Five 之 Accelerometer 三軸加速度計


Sensor 篇第四彈!今天要介紹的是 (∩^o^)⊃━☆゚.*・。

Accelerometer - 三軸加速度計

迷之音:這個我終於知道了!就是陀螺儀嘛!!
本魯:(X)是有點相似~跟陀螺儀還是有點區別的~( ΘωΘ )  
迷之音:啊?.........ಠ_ಠ


簡介 - 三軸加速度計 ≠ 陀螺儀

加速度計(Accelerometer主要是以重力(G力)來感測,也稱為重力感測器(G-Sensor);
透過測量的元件在某個軸向的受力大小、狀況來得到數值,也就是三軸運動的情況;
三軸加速度計可以量測X、Y、Z三個方向

而陀螺儀(Gyroscop),也稱為角速度計、地感器(GYRO-Sensor),
主要結構內部有個陀螺,利用陀螺轉子的運動來量測三維座標的夾角與角速度
三軸陀螺儀可以同時量測前、後、左、右、上、下六個方向

兩者都屬於微機電系統(Microelectromechanical Systems,簡寫:MEMS),即將微電子技術與機械工程融合到一起的一種工業技術;
目前的消費性電子產品和行動裝置都能看到MEMS的身影,例如智慧型手機內的電子羅盤、陀螺儀等

相關連結:

> 加速規 -
https://zh.wikipedia.org/wiki/%E5%8A%A0%E9%80%9F%E8%A6%8F
> 加速度計和陀螺儀感測器:原理、檢測與應用 -
https://reurl.cc/qDNKpD
> 微機電系統 -
https://w.wiki/9d6
> 加速計/陀螺儀/磁力計是什麼,3軸/6軸/9軸感測器又是什麼? -
https://reurl.cc/QpbVV0
> 關於加速度計和陀螺儀傾角測量的物理分析 -
https://kknews.cc/zh-tw/education/lnaaxy9.html

工作原理:

剛剛提到加速度計屬於MEMS,他的構成可分成固定電極和可移動物體,透過可移動物體在固定電極片移動產生電容值差值,進而得物體重心的位移和方向


畫出來用看圖的方式了解工作原理,希望比較好理解一點~(。>﹏<)a

> 本魯的加速度計模組是使用「ADXL345」IC組合而成的
> 搖搖模組還會發出碰撞聲「喀啦~喀啦~」的,應該是 IC 裡面的移動物體的碰撞聲。


後面還有很多需要理解的東西,話不多說趕快來實作吧!
準備需要的東西有~ヽ(・×・´)ゞ

硬體部分

### 電路方面

ADXL345 有 I2C 和 SPI 兩種通訊協定可以選擇,三軸加速度的接腳有

- VCC - Supply voltage range: 2.0 V to 3.6 V 電壓供給
- GND - 接地
- CS - Chip Select. 選擇晶片
- INT1 - Interrupt 1 Output. 中斷輸出 1
- INT2 - Interrupt 2 Output. 中斷輸出 2
- SDO - Serial Data Output. 串列資料輸出 (SPI通訊)
- SDA - Serial Data. 串列資料線
- SCL - Serial Communications Clock. 串列通訊時脈線

> Data Sheet - https://www.analog.com/media/en/technical-documentation/data-sheets/ADXL345.pdf

因為 Johnny-Five 的 Accelerometer API ADXL345 使用 I2C通訊,故我們只要接 SDA 和 SCL資料線即可。

> 接線圖
> 附上電路圖
介紹完後,我們開始來實作吧~
準備需要的東西有~ヽ(・×・´)ゞ


## 硬體方面
- Arduino Uno 一片 + USB TypeB 線材一條 (標配標配!
- 杜邦線 看你用幾條準備幾條
- 加速度計 一個 這邊使用 ADXL345

## 軟體方面 
> Johnny-Five - Accelerometer
http://johnny-five.io/api/accelerometer/ 

### 使用寫法 - ADXL345 範例
要使用 Accelerometer 的話,需要呼叫 Johnny-Five 的 Accelerometer 物件,
物件參數 `controller` 指定加速度計型號,這邊使用ADXL345,故 Value 填寫 'ADXL345'字串;
把 ADXL345 的 SDA、SCL 接腳連接到 Arduino 的 I2C 接腳 A4、A5。 

## API
> Johnny-Five - Accelerometer API
> http://johnny-five.io/api/accelerometer/#api

- hasAxis(name) Does the device support the axis?
偵測Sensor是否支援 X / Y / Z 軸。
寫法:
```
// 檢測 Sensor 是否有支援 Z 軸
if (accelerometer.hasAxis("z")) {
  console.log(accelerometer.z)
}
```

- enable()
啟動 Device 偵測和 Events 事件,如果 Device 支援休眠狀態,呼叫 enable() 會將其喚醒。

- disable()
停用 Device 偵測和 Events 事件,如果 Device 支援休眠狀態,呼叫 disable() 會將其進入休眠狀態。


## Events
> Johnny-Five - Accelerometer Events
> http://johnny-five.io/api/accelerometer/#events

Events 也是 `change` 和 `data` 事件和之前介紹的一樣,就不贅述了~
  
## 實作 - 

```
var five = require('johnny-five');
var board = new five.Board();

board.on('ready', function() {
  var accelerometer = new five.Accelerometer({
    controller: 'ADXL345',
  });

  accelerometer.on('change', () => {
    const { acceleration, inclination, orientation, pitch, roll, x, y, z } = accelerometer;
    console.log('Accelerometer:');
    console.log('  x            : ', x);
    console.log('  y            : ', y);
    console.log('  z            : ', z);
    console.log('  pitch        : ', pitch);
    console.log('  roll         : ', roll);
    console.log('  acceleration : ', acceleration);
    console.log('  inclination  : ', inclination);
    console.log('  orientation  : ', orientation);
    console.log('--------------------------------------');
  });
});
```

0 留言:

張貼留言