2015年11月20日 星期五

nRF52832 BLE Mouse Test

1. 最近使用nRF52832做了airmouse相關的demo, 因此對於ble_app_hids_mouse這個example code
    有一些初步的了解.

2. 本範例的執行結果是當藍芽滑鼠與PC配對成功後, 會不停地劃方, 且按下Button3會等同於按
    下滑鼠左鍵.

3. 完整範例下載連結:
    nRF52_SDK_0.9.2_bt_mouse 

4. 由於現在nRF52有Preview DK & DK兩塊板子, 因此在不同的開發板上要執行此程式, 須記得
    要修改define, 如使用Preview DK的話, 請修改為BOARD_PCA10036.
 


5. 原先的範例如要傳送mouse button的資訊到PC的話, 需使用與mouse dx dy不同的id, 這樣會浪
    費BLE頻寬, 因此我有修改BLE Profile, 讓dx dy與button可以同時傳送給PC.

6. main loop flow:

  • 程式一開始會先設定一個10msec的Timer, 利用這個Timer每次送一個Flag給main loop判斷何時要傳送dx dy & button給PC.
  • main loop則是不停地檢查mousetimerIsReady flag, 當發現為1時, 則去執行key scan & send dx dy.  



  • 劃方程式如下所示, 只是不斷地送出固定的dx dy座標給PC, 並配合key scan一同將結果送出去.

7. Test Flow:

  • 當程式燒入DK Board後, 此時會看到LED1約間隔1秒的頻率在閃爍著.
  • 此時可以使用藍芽新增裝置來新增Nordic_Mouse.






  • 當新增完畢後, 便可以開始測試, 底下是使用Mouse Test2這個Tool進行測試的影片.

2015年11月17日 星期二

nRF52 Preview DK vs. nRF52 DK

1. 今天上班才發現昨天上課拿到的是nRF52 DK, 跟之前拿到的nRF52 Preview DK有些微不同.

2. 看起來變動比較大的是NFC的部份, 板子的質感也有向上提升一些.



2015年11月16日 星期一

Nordic Global Tech Tour 2015 (Taipei)

1. 今天一早去台大參加Nordic的研討會.

2. 參加者可以得到一塊免費的開發板.

3. 會後寄出了今天上課的投影片檔案.












2015年11月15日 星期日

STM32F401/411 HID Test(Keyboard + Mouse + HidRaw)

1. 本範例是利用stm32f401 discovery board來實做出usb keyboard/mouse/hidraw等裝置, 並送出簡
    單的測試資料來驗證是否正確.


2. 程式完整範例下載連結:
    STM32F401_411_HID_TestCode

3. main flow:

  • 程式用來切換hid or vcp的設定在stm32f401_discovery.h中, 由於現在要測試的是HID, 因此我們預設使用HID, 而底下的KeyBoardTest/MouseTest/HidRawTest等3個define, 則是決定可以進行哪些項目的測試, 可以全部一起打開, 也可以只打開其中一個.
  • main loop主要在執行button scan, 當確認到user有按下user button後, 根據不同的define去送出不同的資料.
  • 特別需要注意的是當keyboard/mouse放開時, 需送出release key的event, 否則會看到連發key的情形出現, 而hidraw則不需要.
4. Test Flow:
  • keyboard test: 可以先開啟一個空白文字檔來測試, 當按下user button時, 會送出一個小寫(in lowercase letters)的a出現, 放開即馬上停止輸出.



  • mouse test: 當按下user button時, 滑鼠鼠標會朝右上方移動, 放開即馬上停止輸出.


  • hidraw test: 測試時, 可先安裝Bus Hound tool, 接著接上stm32f401 discovery board, 若成功則可以看到我們新增出來的usb device(ex: [32]USB輸入裝置).

  • 當按下user button即可看到我們輸出的資料, 放開不需做其它處理即會自行停下.

2015年11月14日 星期六

2015-11-14-康寧附幼-幼綠班-運動會

    今天陪著大女兒一起參加運動會, 比起去年的表現, 今年真的是進步不少, 希望明年能順便一起參加小女兒的運動會啊.







2015年11月13日 星期五

Wii Remote Control + ASR + Melody Recognition + ROBONOVA-I

1. 今天整理資料突然看到以前在學校拍的影片, 以前比較瘦啊, 真是令人懷念.......XD


2. 記得當時使用的MCU是Generalplus的GPCE061A 16Bit Micro-Controller.


2015年11月12日 星期四

STM32F401/411 Virtual Com-Port(VCP) Two Way Test

1. 此測試程式是利用stm32f401 discovery board實做出virtual com port function(vcp), 並透過vcp
    接收一個binary file, 並於接收完畢後, 將整個binary file透過vcp顯示出來.

2. 完整範例和測試檔案下載連結:
    STM32F401_411_VCP_TwoWay_TestCode

    GPIO_IOToggle.bin

3. 硬體電路連結方式如下, 將stm32f401 discovery board的mini usb(stlink)和micro usb(usb slave)
    與電腦連接.
 


 4. 安裝stm32 virtual com port driver, link: stm32_vcp_driver

5. main flow:

  • 目前usb的設定預設值是使用virtual com port, 之後會再解釋hid.
  • 當程式開始執行且USB Init成功之後, 可以在裝置管理員的地方看到STMicroelectronics Virtual COM Port(COMx)的裝置.



  • main.c的流程只有兩個function, 第一個是一直在等待vcp接收bin file, 第二個是將接收完成的bin file打印在vcp顯示出來. 


  • vcp rx function:  目前接收的上限是設定在50kbytes, 如果是使用stm32f411 discovery board的話, 則可以設定到100kbytes.
  • vcp tx function:  只需要將要傳送出去的buffer帶進來即可.


6. Test flow:

  • 選用一個可以send file的terminal tool(ex: Tera Term or Terminal_v1.93b.....).
  • 接下來使用Tera Term來測試如何傳送及顯示一個binary file.
  • 開啟後設定Tera Term去開啟stm32 virtual com port(ex: COM7), 設定可以參考下圖.




  • 當設定成功後, 可以看到下圖畫面, 代表已經連線.




  • 此時點選File -> Send file:



  • 選定一個要傳送的test binary file(ex: GPIO_IOToggle.bin), 並按下開啟即會開始傳送, 傳送過程中, LED4 & LED5會一直閃爍, 當停止閃爍恆亮時, 代表STM32F401接收完成.




  • 當接收完畢後, 程式即會自動將接收的binary file透過vcp傳送出去, 因此可以在Tera Term上的視窗看到如下畫面.




  • 我們可以使用UltraEdit開啟GPIO_IOToggle.bin來簡單比對一下是否相同, 以下截取開始和結尾的畫面來簡單比較, 看來應該是沒有差異, 代表傳送接收皆正確.