|

使用Ameba的WiFi模組連上網際網路

   
作者:曹永忠

智慧家庭的核心技術為網際網路,而連上網路最簡單的解決方案便是無線網路,所以如何讓Ameba來連接上網際網路,可說是一件非常重要的事,所幸Ameba開發板本身就內含WiFi無線網路模組,連網是一件非常簡單的事,本文要告訴讀者,如何簡單、快速、有效的連上網際網路。

Ameba WiFi功能

Ameba開發板是一塊支援Wi-Fi的微型化模組(RTL8711AF and RTL8195AM),內建 ARM Cortex-M3 CPU、記憶體,同時還配置了完整的無線網路協議,包含SSL硬體加速電路以及UART、 I2C、 SPI、PWM 、高速的 SDIO 接口......等各式序列介面,如下圖所示:

Ameba開發板模組一覽圖 Ameba開發板模組一覽圖

Ameba開發板核心晶片-RTL8195AM規格

Ameba使用RTL8195AM為開發板核心晶片,其基本規格如下:

  • 32-bit 166MHz ARM Cortex-M3 CPU
  • 內建低功耗 802.11 b/g/n 2.4G 無線 Wi-Fi
  • 內建NFC
  • 介面支援:GPIO / PWM / SPI / I2C / ADC / DAC / UART
  • Crypto HW engine:可做硬體加解密,支援 MD5/ SHA-1 / SHA2-256 / DES / 3DES / AES
  • IC 本身有 512K RAM,另外模組包含 2M SDRAM / 16M bit flash

Ameba開發板規格

Ameba開發板具有強大的功能,內含WiFi上網的功能,功能十分完備,其下為開發板的基本規格:

  • 與Arduino UNO開發版相容,可支援大多數 Arduino 擴充板(Shield):如 DfRobot 的 LCD Keypad shield......等等
  • 含一個 NXP LPC11U35 cortex-M0 IC,具備下列功能

    1. 不須使用 JLINK 可直接透過 USB傳入程式image檔
    2. 不須使用USB序列傳輸線,UART即可使用將訊息傳給開發用的電腦

Mac Address介紹

在許多無線網路的地方,由於安全性、保密性的因素,會採用權限管理,而最簡單、有效的方式,就是使用網路裝置的MAC Address,一般稱為「MAC」,每一個網路介面卡都有一個獨一無二的識別碼,這個識別碼是由六組16進位數字組成的物理位置(Physical Address),也稱為MAC(Media Access Control)Address。

這個位址分為兩個部分,前三組數字為Manufacture ID,就是廠商ID,後三組數字為Card ID,就是網路卡卡號,透過這兩組ID,我們可以在實體上區分每一張網路卡,理論上,全世界沒有兩張卡的MAC Address是相同的。

基於這個物理位址,就可以在網路上區分每一個裝置(電腦或網路產品),將資料傳輸到正確的位址而不會搞混,其中,MAC Address 是 12 碼的 16 進位數字,每兩個數字中間就會有「-」或「:」間隔,例如:00-F1-EE-50-DC-92。

取得網路MAC資料

第一步就是要教讀者如何取得MAC資料,我們將Ameba開發板的驅動程式安裝好後,打開Ameba開發板的開發工具「Sketch IDE整合開發軟體」,撰寫一段程式,就可以透過Ameba Wifi模組取得MAC資料,取得之MAC資料測試程式如下表所示:

MAC資料測試程式載點


取得MAC資料測試程式(CheckMac)

#include

uint8_t MacData;

String MacAddress ;

void setup() {

MacAddress = GetWifiMac() ;

ShowMac() ;

}

void loop() { // run over and over

}

void ShowMac()

{

Serial.print("MAC:");

Serial.print(MacAddress);

Serial.print("\n");

}

String GetWifiMac()

{

String tt ;

String t1,t2,t3,t4,t5,t6 ;

WiFi.status(); //this method must be used for get MAC

WiFi.macAddress(MacData);

Serial.print("Mac:");

Serial.print(MacData,HEX) ;

Serial.print("/");

Serial.print(MacData,HEX) ;

Serial.print("/");

Serial.print(MacData,HEX) ;

Serial.print("/");

Serial.print(MacData,HEX) ;

Serial.print("/");

Serial.print(MacData,HEX) ;

Serial.print("/");

Serial.print(MacData,HEX) ;

Serial.print("~");

t1 = print2HEX((int)MacData);

t2 = print2HEX((int)MacData);

t3 = print2HEX((int)MacData);

t4 = print2HEX((int)MacData);

t5 = print2HEX((int)MacData);

t6 = print2HEX((int)MacData);

tt = (t1+t2+t3+t4+t5+t6) ;

Serial.print(tt);

Serial.print("\n");

return tt ;

}

String print2HEX(int number) {

String ttt ;

if (number >= 0 && number < 16)

{

ttt = String("0") + String(number,HEX);

}

else

{

ttt = String(number,HEX);

}

return ttt ;

}

如下圖所示,讀者可以看到本次實驗,取得MAC資料測試程式結果畫面:

會員福利
1

免費電子報

2

會員搶先看

3

主題訂閱

4

好文收藏

曹永忠

Author: 曹永忠

國立中央大學資訊管理學系博士,目前在國立暨南國際大學電機工程學系兼任助理教授、國立高雄科技大學商務資訊應用系兼任助理教授自由作家,專注於軟體工程、軟體開發與設計、物件導向程式設計、物聯網系統開發、Arduino開發、嵌入式系統開發。長期投入資訊系統設計與開發、企業應用系統開發、軟體工程、物聯網系統開發、軟硬體技術整合等領域,並持續發表作品及相關專業著作,並通過台灣圖霸的專家認證。

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *