踏進互動科技世界 - Arduino.TW

I2C

I2C佔用的空間非常小,減少了電路板的空間和晶片PIN腳的數量,降低了晶片溝通成本。長度可高達25英呎,並且能夠以10Kbps的最大傳輸速率支持40個連接。I2C的另一個優點是,它支持多主控 (multimastering),其中任何能夠進行發送和接收的設備都可以成為主總線。一個主控能夠控制信號的傳輸和時鐘頻率。當然,在任何時間點上只能有一個主控。

在同一塊電路板上 I2C線少,覺得比UART、SPI好用,如果要拉長距離那麼就要用到提升電阻。因為I2C需要有雙向IO的支持,而且使用上拉電阻(提升信號強度)會讓抗干擾能力較弱,所以用於同一塊電路板上晶片之間的通信,較少用於遠距離通信。SPI實現要簡單一些,UART需要固定的波特率,就是說兩位數據的間隔要相等,而SPI則無所謂,因為它是有時鐘的協議。I2C的速度比SPI慢一點,協議比SPI複雜一點,但是連線也比標準的SPI要少。

下載ATMEGA168 SPEC觀看第21.2章[link]

  • 要了解I2C,就得從那兩條線談起
    • SDA
    • SCL

....wait

 

RS232/UART

製作互動裝置少不了要使用RS2322的RXTX(UART)來進行傳送資料的工作,每天都要設定baud9600/n/8/1的設定針對這一串神秘的設定參數簡單說明如下

 RS232 DB9 Male (Pin Side) RS232 DB9 Female (Pin Side)
     -------------               -------------
     \ 1 2 3 4 5 /               \ 5 4 3 2 1 /
      \ 6 7 8 9 /                 \ 9 8 7 6 /
       ---------                   ---------

 

閱讀全文...

XBee 徹底理解 (xbee運作模式)

了解Zigbee的相關知識之後,接著我們要了解XBee Zigbee模組的使用方式,先打開datasheet的page 5,可以看到Xbee的Specifications

 了解上面的規格之後,我們要了解Xbee的腳位是什麼,看datasheet的page7

主要只會用到1,2,3,10這四個腳位,1 = vcc最大為3.3V 2= dout, 3= din, 10 = gnd

閱讀全文...

Zigbee相關知識

了解IEEE 802.15.4的概括後,我們知道有了底層的規格制定,隨之而來的就是應用層的定義,因為IEEE 802.15.4的應用層並無規範,因此各家廠商都可以自己來定義要怎麼做,所以電子大廠的幾個龍頭TI, Freescale, ember, philips, st, atmel, 工研院, cisco, cyperss, honeywell, intel, jennic.....等大廠以及公司紛紛組成一個聯盟,也就是所謂的Zigbee Alliance

而Zigbee的訂製有很重要的意義在,也就是商業使用的規範,因為各家為了要把自己的賣點禿顯出來,可是又無標準可循,因此zigbee有規範幾個重要的關鍵:

網路裝置有分三種 Corrdinator, Router, End Device

網路拓撲也是支援三種: star, tree, mesh

引自:http://commons.wikimedia.org/wiki/File:Star_network_7.png

引自:http://crookedtimber.org/2004/08/13/love-is-a-battlefield-spanning-tree-network-with-no-4-cycles/

引自:http://werebuild.eu/wiki/index.php?title=Mesh_networking

但一般我們都用到點對點的方式,因為複雜的網路架構就要進行傳輸路徑的規劃,找尋最佳路徑以及最短路徑,這部分都需在Arduino上進行實作。

 了解網路了之後在稍微了解一下Zigbee規格幫助我們做了什麼,以下圖片皆引自 http://www.meshnetics.com/zigbee-faq/公司的Zigbee說明圖:

我們可以從上圖知道Zigbee其實傳輸速率是比BT還要慢,應用的層面在文字與圖片傳輸。

那Zigbee可以運用的方面有哪些呢??其實相當廣泛,幾乎生活周遭都可以運用Zigbee的網路

一般台灣屬於Worldwide的頻帶,所以是用2.4Ghz

從上圖的Zigbee stack可以理解除了mac與phy層以上都是zigbee alliance所定義,除了基本的network, application還有application framework與zdo等。

與我們一般所了解的網路OSI 七層網路模型類似

引自:http://www.automatedbuildings.com/news/oct06/reviews/060928082002osimodel.htm

應用層:輸入 Arduino - > 軟體收到輸入的字符(我們看得懂得方式)

表示層:把 Arduino 變成 41 72 64 75 69 6E 6F(程式語言看得懂的方式)

交談層:A電腦開始跟B電腦之間商定交易方式 CC 41 72 64 75 69 6E 6F DD(兩人之間說好的交易方式:面交,郵寄)

傳輸層:B電腦收到A電腦的資料,確認之後回傳 OK,若是沒有回傳則在傳一次(當你收到貨請給我好評價)

網路層:這兩台電腦之間會有一個路由表,彼此之間開始選擇路徑要怎樣走(有點像是導航路徑規劃)

資料連接層:A電腦要知道B電腦的MAC Address 如:00-11-22-33-44-55-66-77(門牌號碼)

實體層:透過網路線進行 High, Low, High, Low, ...的電壓信號(電子世界)

 

XBee 徹底理解 (ADC模式)

了解api模式之後,我們就可以利用xbee上面內建的adc傳輸模式來進行傳輸,因為內建的adc模式是透過api封包進行,我們先將兩顆xbee設定以下的參數:

xbee1

DL = 0x1234

MY = 0x5678

D0 = 2

D1 = 2

IR = 0x14

IT = 5

Xbee2

DL = 0x5678

MY = 0x1234

P0 = 2

P1 = 2

IU = 1

IA = 0x5678(0xFFFF)

 

左邊是Xbee1,右邊是Xbee2,注意Xbee1的pin14要接上3.3V,因為pin14=VREF要做參考電壓用

先來看xbee1上面的D0, D1為什麼要設定2,因為看到page 33 table 3-06之中

我們可以看到當D0~D4備設定為2的時候,是ADC模式,那接下來看xbee2的P0, P1也是等於 2是因為看table下方

閱讀全文...