2018年3月17日 星期六

ON Semiconductor IoT Development Kit初作體驗


ON Semiconductor IoT Development Kit初作體驗





作者:柯大

最近到手一塊新的物聯網開發套件,是由ON Semi這家美國電子零件商所推出的,套件名稱叫做IoT Development Kit (簡稱IDK)。在測試之後發現,它提供的軟硬體開發環境相當完整,對Maker也算友善(支援標準Arduino介面),更有意思的是它支援ARMmbed OS開發平台,順便熟悉一下,確實有其獨到之處。
本篇將介紹ON Semiconductor安森美半導體公司最近推出的物聯網開發套件 IoT Development Kit (IDK)該套件包含完整的開發主板硬體及各式感測器組合,提供嵌入式作業系統架構(ARM® mbed™ OS)完整軟體開發環境及各種應用範例原始碼暨說明文件,提供所有必要的軟硬體組件,協助開發者迅速設計、評估並實作醫療、家庭及工業物聯網(IoT)應用,再搭配物聯網開發雲端平台,可適合多種複雜的物聯網應用場域測試及產品開發。並具下列開發優勢及特點:
ü   完整硬體開發套件分為主開發板、通訊模組、馬達驅動模、多種感測器模組。
ü   易學軟體開發平台:完整IDK C程式庫物聯網雲端開發平台。
ü   易用性:減少產品開發工作量並縮短產品上市時間。
ü   方位開發組合快速評估及產出原型端到端IoT解決方案。
ü   設計靈活性:多種連接方式,傳感器,執行器,電源管理。
ü   能源效率:提供開發最長的電池壽命IOT產品解決方案。
ü   模組擴展架構:標準ArduinoPmod™等各種業界標準介面
ü   完整應用套件案例組合:馬達工業自動化、智慧照明、智慧家庭控制、低功耗通訊傳輸及智慧環境監控解決方案。

     ON Semiconductor物聯網開發套件可支援多種應用,包括


IDK Hardware 組件


        IDK Baseboard  IDK主開發板
        Ambient Light Sensor (ALS) Shield  光照度感測模組
        Touch Shield觸控模組
        PIR Shield被動式紅外線人體感測模組
        Stepper Motor Shield 步進馬逹擴充控制板
        LED Ballast Shield 高功率LED調光控制板
        Wi-Fi® Module
        BLDC Shield無刷DC馬達控制器
        PoE Shield AC電力線乙太網路模組
        CAN Shield CAN網路模組
        USB 連接線及電力連接線
        Sigfox IoT 長距離低功耗通訊模組

硬體開發板與擴充模組及感測器介面結構說明圖

主開發板MCUARM Cortex M3 (NCS36510)


















BB-GEVK:物聯網開發套件基板設計用作物聯網開發套件的中心樞紐。內建的NCS36510低功率系統單晶片(SoC)提供相容於2.4GHz IEEE 802.15.4-2006Wi-Fi®連線收發器、ARM® Cortex®-M3微處理器、RAM與快閃記憶體,以及多種周邊裝置控制,同時內建用於反饋的LCD字元顯示器模組。
IDK基板透過USB連線至個人電腦,可進行應用程式設計、偵錯及為應用供電。PMODArduino格式的實體連接器可讓基板利用屏蔽模組,進行連線、感測與致動。此外,IDK基板配備JTAG偵錯介面,可執行複雜的軟體偵錯工作。

PIR Shield被動式紅外線人體感測模組










PIR-GEVBPIR被動紅外線擴展評估板採用NCS36000被動紅外線(PIR)偵測器控制器。NCS36000是完全整合的混合訊號CMOS裝置,專為低成本被動紅外線控制應用設計。PIR-GEVB板也包括PCA9655E I/O埠擴展器IC,透過I²C匯流排與SMBus提供16位元一般用途平行輸入/輸出(GPIO)擴展。


Ambient Light Sensor (ALS) Shield  光照度感測模組







ALS-GEVB:環境光感測器擴展評估板用於示範NOA1305環境光感測器(ALS)的功能。NOA1305專為手持式應用設計,內建16位元ADC2I²C數位介面、內部時鐘振盪器及斷電模式。此IC使用的濾光片提供接近人眼的光線反應。

Touch Shield觸控模組

TS-GEVB:觸控開關擴充板採用高效能、低成本的LC717A00AR電容數位轉換器LSI,適用於靜電電容式觸控感測器,特別重視實用性。LC717A00AR擁有8通道電容式感測器輸入。內建邏輯電路可偵測各輸入狀態(/)並將結果輸出,因此適用於多種開關應用。此產品亦配備PCA9655E,透過I²C匯流排與SMBus提供16位元一般用途平行輸入/輸出(GPIO)擴展,並偵測LC717A00AR8通道電容資料輸出情形,將其視為8位元資料進行測量。

Sigfox IoT 長距離低功耗通訊擴充模組











SIGFOX-GEVBSIGFOX®擴充板用於示範AX-SFEU,這款超低功率、高效能的Sigfox SoC針對IoT應用,提供上行線路和下行線路功能。AX-SFEU收發器使用邏輯準位RS232 UART進行連線,運用AT指令傳送訊框及設定無線電參數。

PoE Shield AC電力線乙太網路通訊擴充模組














POE-GEVB:電力線乙太網路擴充板具備NCP1083 HIPO™高功率乙太網路供電裝置(PoE-PD)NCP1083結合了PoE-PD介面及彈性、可設定的DC-DC轉換器控制器,該介面經強化,可支援IEEE 802.3afIEEE 802.3at (D3.0)標準。NCP1083同時支援AC電源變壓器和電池供電等輔助電力來源,可讓應用流暢地由非PoE網路轉換至PoE網路,無需另外使用開關電源。


CAN Shield CAN通訊擴充模組











CAN-GEVB:控制器區域網路驅動器擴充板用於示範NCV7342 CAN收發器。NCV7342扮演控制器區域網路(CAN)協定控制器和實體匯流排的通訊介面。NCV7342收發器為匯流排提供差分傳輸能力,並為CAN控制器提供差分接收能力。CAN-GEVB板也包括PCA9655E I/O埠擴展器IC,透過I²C匯流排與SMBus提供16位元一般用途平行輸入/輸出(GPIO)擴展。

Stepper Motor Shield 步進馬逹擴充控制板











D-STPR-GEVK:雙步進馬達驅動器擴充板用於示範AMIS-30543微步進馬達驅動器。AMIS-30543適用於汽車、工業、醫療與海洋環境的一般用途與雙極馬達應用。AMIS-30543具備單晶片穩壓器,可縮減機電整合步進應用的材料清單。

連接方式:










LED Ballast Shield 高功率雙LED調光控制板















D-LED-B-GEVK:雙LED驅動擴充板採用NCV78763電源安定器和雙LED驅動器。NCV78763單晶片驅動器適用於高電流LED。此驅動器提供完整的解決方案,可透過兩個內建的獨立降壓開關通道輸出,驅動雙燈條,電壓最高可達60V。由於具備SPI程式能力,單一硬體設定便能支援多重系統設定,實現彈性化的平台解決方案方法。


BLDC Shield無刷DC馬達控制器















BLDC-GEVKBLDC無刷DC馬達驅動器擴充板採用LV8907無刷DC馬達控制器(BLDC)LV8907為高效能、無感測器的三相BLDC,整合閘極驅動器,用於驅動外部N通道MOSFET。此裝置提供多樣化的系統保護與診斷功能,如過電流、過電壓、短路、低電壓、過熱等。LV8907 BLDC支援開放迴路及閉迴路速度控制,具備使用者可設定的啟動、速度設定及比例/積分(PI)控制係數,適合各種馬達和負載組合。






物聯網開發通訊協議及雲端平台架構

完整ARM mbed IoT Develiopment Kit 開發套件架構







(一)安裝Java Runtime Environment (JRE)
(二)安裝Installing GNU GCC Toolchain
下載 BB−GEVK−SOFTWARE.zip並解壓縮後安裝,再執行 Gnutoolchain.exe 安裝程式。
(三)安裝 IoT IDK 開發環境軟體
  • Windows 64 bit Java JRE:IDK_installer_x86_64.exe
  • Windows 32 bit Java JRE:IDK_installer_x86.exe
(四)測試第一個範例
  1. 確認USB通訊埠COM Port:進入裝置管理員查詢COM Port是不是COM32. 設定COM Port 傳輸參數 : 115200 N 8 1。
3. 啟動IDK程式。
開啟第一個範例程式測試:Examples =>Simple => Baseboard LCD
4. 修改COM Port 為所取得USB驅動正確的COM3,並按儲存鍵。
5. 修改程式內容字串。
6. 執行編譯範例程式。
7. 執行燒錄程式程式。
8. 按下<Reset>鍵開始燒錄。
9.燒錄完成再按下<Reset>鍵,重新啟動開發板。

10. 執行結果。

原始程式


// ---------------------------------------------------------------------------------------
//            1. This is a sample LCD application demonstrating displying of characters
//                             on LCD.
//
//            2. LCD is already mounted on the baseboard.
//
//            3. For hardware and software capabilities/limitations kindly refer the
//               help page of LCD in IDE.
//
//            4. If the application has detailed logs, it is advisable to check the
//               serial console of the computer. To open the serial console use the
//               following settings,
//                   Baud rate:           115200
//                   Data bits:           8
//                   Stop bits:           1
//                   Parity:              None
//                   Flow control:        None
//               The above settings has been tested and verified on serial client putty.
//
//                       5. If idle while loop is used in the project, then it is recommended to use
//                             a wait of 1 second to allow other threads/callbacks to run and get
//                             processed in time.
// ---------------------------------------------------------------------------------------

 #include "mbed.h"
 #include "Shields.h"
 /*******************************************************************************
 * CLASS INSTANCE DECLARATION
 ******************************************************************************/
 NHD_C0216CZ lcd;
  //initializing the serial console instance.
 Serial pc(USBTX,USBRX);

  int main()
 {
        int ret;
        char display_string[] = "================================";
        lcd.init();
        pc.printf("This is a LCD Demo. Observe the LCD display on Base Board for Demo.\r\n");
        lcd.displayString(display_string);
               //wait added to make displayed data persistent to human eyes.
        wait(3);
       
                //display the string to a specific position.
        ret = lcd.displayStringToPos("MAKER PRO", 1, 4); //row = 1, column = 6 of LCD.
        if(ret != LCD_RET_SUCCESS){
            return -1;
        }
       
       ret = lcd.displayStringToPos("by KODA", 2, 5); //row = 2, column = 6 of LCD.
        if(ret != LCD_RET_SUCCESS){
            return -1;
        }
        //wait added to make displayed data persistent to human eyes.
        wait(2);
       
       lcd.displayString("IoT DVK by WPI!\nON Semi IDK Test");
       wait(0.5);
       lcd.displayString(" \n\n");
       wait(0.5);
       lcd.displayString("IoT DVK by WPI!\nON Semi IDK Test");
       wait(0.5);
       lcd.displayString(" \n\n");
       wait(0.5);
       lcd.displayString("IoT DVK by WPI!\nON Semi IDK Test");
       wait(0.5);
       lcd.displayString(" \n\n");
       wait(0.5);
       lcd.displayString("IoT DVK by WPI!\nON Semi IDK Test");
        return 0;
 }









沒有留言:

張貼留言