2016年9月29日 星期四

8x8矩陣LED驅動電路圖與source code

8x8矩陣LED驅動電路設計架構,主要由一顆STM32L031K6 ST MCU來控制,以掃描方式來一顆顆點亮LED,用一顆CR2032鈕扣電池就可以驅動,可以連續動作20個小時,下面圖式是8x8矩陣LED電路圖,電路架構很單純,就是一般的GPIO來控制矩陣LED。

接下來就是介紹8x8矩陣LED驅動的Source code介紹。

void All_ROW_H(void)
{
LED_ROW_A_H();
LED_ROW_B_H();
LED_ROW_C_H();
LED_ROW_D_H();
LED_ROW_E_H();
LED_ROW_F_H();
LED_ROW_G_H();
LED_ROW_H_H();
}
void All_ROW_L(void)
{
LED_ROW_A_L();
LED_ROW_B_L();
LED_ROW_C_L();
LED_ROW_D_L();
LED_ROW_E_L();
LED_ROW_F_L();
LED_ROW_G_L();
LED_ROW_H_L();
}
void All_COL_H(void)
{
LED_COL_A_H();
LED_COL_B_H();
LED_COL_C_H();
LED_COL_D_H();
LED_COL_E_H();
LED_COL_F_H();
LED_COL_G_H();
LED_COL_H_H();
}
void All_COL_L(void)
{
LED_COL_A_L();
LED_COL_B_L();
LED_COL_C_L();
LED_COL_D_L();
LED_COL_E_L();
LED_COL_F_L();
LED_COL_G_L();
LED_COL_H_L();
}

void Select_Turn_On_LED(uint8_t ROW,uint8_t COL)
{
All_ROW_L();
All_COL_H();
switch(ROW)
{
case 1 :
LED_ROW_A_H();
break;

case 2 :
LED_ROW_B_H();
break;

case 3 :
LED_ROW_C_H();
break;

case 4 :
LED_ROW_D_H();
break;

case 5 :
LED_ROW_E_H();
break;

case 6:
LED_ROW_F_H();
break;

case 7 :
LED_ROW_G_H();
break;

case 8 :
LED_ROW_H_H();
break;

default :
break;
}
switch(COL)
{
case 1 :
LED_COL_A_L();
break;

case 2 :
LED_COL_B_L();
break;

case 3 :
LED_COL_C_L();
break;

case 4 :
LED_COL_D_L();
break;

case 5 :
LED_COL_E_L();
break;

case 6:
LED_COL_F_L();
break;

case 7 :
LED_COL_G_L();
break;

case 8 :
LED_COL_H_L();
break;

default :
break;
}

Wait_delay(100);
}

void Smile_Face(void)
{
Select_Turn_On_LED(1,4);
Select_Turn_On_LED(1,5);
Select_Turn_On_LED(2,1);
Select_Turn_On_LED(2,2);
Select_Turn_On_LED(2,5);
Select_Turn_On_LED(2,6);
Select_Turn_On_LED(3,1);
Select_Turn_On_LED(3,2);
Select_Turn_On_LED(3,6);
Select_Turn_On_LED(3,7);
Select_Turn_On_LED(4,6);
Select_Turn_On_LED(4,7);
Select_Turn_On_LED(5,6);
Select_Turn_On_LED(5,7);
Select_Turn_On_LED(6,1);
Select_Turn_On_LED(6,2);
Select_Turn_On_LED(6,6);
Select_Turn_On_LED(6,7);
Select_Turn_On_LED(7,1);
Select_Turn_On_LED(7,2);
Select_Turn_On_LED(7,5);
Select_Turn_On_LED(7,6);
Select_Turn_On_LED(8,4);
Select_Turn_On_LED(8,5);
}
void main(void)
{
     HAL_Init();

     /* Configure the system clock */
     SystemClock_Config();

     /* Initialize all configured peripherals */
     MX_GPIO_Init();
     MX_TIM2_Init();
     while(1)
    {
           Smile_Face();
     }
}


2016年3月24日 星期四

Kinetis Design Studio 安裝流程

Kinetis Design Studio 是免費的開發軟體,但只有支援Kinetis MCU,其他MCU,像是ColdFire等MCU是不支援。
Kinetis Design Studio的介面與之前Freescale codewarrior很像,有使用過codewarrior應該很快就可以適應Kinetis Design Studio的編輯環境。
接下來就是Kinetis Design Studio的安裝介紹,有幾個軟體要去安裝。

1.先安裝Kinetis Design Studio V3.0.0軟體。
下載路徑: http://www.nxp.com/products/software-and-tools/run-time-software/kinetis-software-and-tools/ides-for-kinetis-mcus/kinetis-design-studio-integrated-development-environment-ide:KDS_IDE#

2.再安裝Kinetis Software Development Kit (SDK)  , Kinetis SDK 1.3 Mainline版本。
下載路徑 : http://www.nxp.com/products/software-and-tools/run-time-software/kinetis-software-and-tools/development-platforms-with-mbed/software-development-kit-for-kinetis-mcus:KINETIS-SDK。

3.安裝KSDK_1.3.0_Eclipse_Update,執行Kinetis Design Studio軟體。
a. Select "Help" -> "Install New Software".








b.In the Install New Software dialog box, click the "Add" button in the upper right corner. Then, in the Add Repository dialog, select the "Archive" button.

















c.路徑在C:/Fresscale/KSDK_1.3.0/tools/eclipse_update/KSDK_1.3.0_Eclipse_Update.zip.
d.Click "Open", and the "OK" button in the Add Repository dialog box.
e.The KSDK update shows up in the list of the original Install dialogs.

4.安裝其他軟體,執行Kinetis Design Studio軟體。
a. Select "Help" -> "Install New Software".

b.在Work With 選擇Freescale KDS Update Site - http://freescale.com/lgfiles/updates/Eclipse/KDS





















c.點選Select All ,按NEXT去完成安裝。



5.Check for Updates.檢查是否有更新軟體。













完成以上軟體的安裝,Kinetis Design Studio動作才會正常。

2014年11月12日 星期三

推薦 ~ 2FreeHosting 免費虛擬主機,20GB空間+150GB流量,cPanel控制版面 。

現在免費虛擬主機可以說是非常的多,但哪個擁有「大空間」、「不亂刪帳號」又「穩定」呢?為了選一個符合以上條件的空間,花了非常多的時間在這上面,試過了許多免費虛擬主機。2FreeHosting是一個還不錯的免費虛擬主機供應商,這家主機商非常適合放網站,架設WordPress等。 2FreeHosting提供了免費20GB的儲存空間、150GB流量/月,以及電子信箱帳號等,儲存空間部分可以不用擔心,流量部分150GB也非常足夠使用了,如果用來架設WordPress是絕對足夠使用的!2FreeHosting也支援自訂網域名稱,當然也有免費的子網域可以使用,主機控制版面是cPanel,非常好使用,當然2FreeHosting也提供了電子信箱服務,可以新增10個電子信箱帳號,信箱空間應該是算在20GB內,如果您想開始經營一個部落格,2FreeHosting會比您自架還來的節省成本、穩定!值得推薦給大家!


2FreeHosing 資訊

網站網址 : http://api.2freehosting.com/
免費空間 : 20GB
流量限制 : 150GB / 月
強制廣告 : 無
控制版面 : cPanel
網站註冊 : http://api.2freehosting.com/

2FreeHosing註冊教學

第一步
連結註冊網頁 : http://api.2freehosting.com/
第一格空白 : 英文名字
第二格空白 : Email信箱
第三格空白 : 設定密碼
第四格空白 : 確認密碼
第五格空白 : 輸入驗證碼
按  Sign Up  開始註冊。
如下圖示

第二步

到Email信箱點擊驗證信中的連接來激活帳號 .
這樣就完成註冊的動作。








2014年11月5日 星期三

在blogger文章上加上Facebook 「讚」(like)與 Google Plus +1 按鈕

目前最流行社交網站就是Facebook 與Google+,許多網站現在都會與這些熱門的社交網站結合,增加網站的流量與知名度。

這篇文章要介紹如何在blogger文章加上Facebook [讚]與Google Plus +1按鈕 , 按步驟去修改,就可以簡單而快速增加此功能。



STEP1:
到Blogger管理介面的[範本],點選右上角的[備份/還原],進入之後點選[下載完整範本],並儲存下載檔案,就完成網站備份的動作。




STEP2:
下載的檔案是個XML檔,使用文字編輯軟體來打開。在檔案中找尋「</head>」,然後在這個 </head> 之前的</b:temolate-skin>之後加入 Google Plus +1 按鈕要使用的的程式碼:
  </b:template-skin>
  <!-- Begin: Add by ethanwu -->
  <!-- Google Plus +1 button -->
  <!-- Place this tag in your head or just before your close body tag. -->
  <script src='https://apis.google.com/js/plusone.js' type='text/javascript'>
    {lang: &quot;zh-TW&quot;}
  </script>
  <!-- End: Add by ethanwu -->
</head>
程式碼中用 <!-- 與 --> 夾起來的部分(紅色)都是註解,而 Begin: Add by ethanwu 與 End: Add by ethanwu 之間程式就是要加進去的。

SETP3: 

接下來就是按鈕的擺放位置,這個範例是把按鈕放在文章標題的下方,首先尋找「<div class='post-header'>」,這個 div 就是專門將小工具放在文章標題下方的用的,但是在管理界面中沒辦法放置自定的按鈕。

一樣加入 Begin: Add by ethanwu 與 End: Add by ethanwu 之間的程式碼。

<div class='post-header'>
  <div class='post-header-line-1'/>
  <!-- Begin: Add by ethanwu -->
  <b:if cond='data:blog.pageType != &quot;static_page&quot;'>
    <div class='socialMediaHeader'>
      <!-- facebook like button -->
      <iframe allowTransparency='true' expr:src='&quot;http://www.facebook.com/plugins/like.php?href=&quot; + data:post.canonicalUrl + &quot;&amp;send=false&amp;layout=button_count&amp;show_faces=false&amp;width=90&amp;action=like&amp;font=arial&amp;colorscheme=light&amp;height=21&quot;' frameborder='0' scrolling='no' style='border:none; overflow:hidden; width:90px; height:21px;'/>

      <!-- Google Plus +1 button -->
      <!-- Place this tag where you want the +1 button to render. -->
      <div class='g-plusone' data-size='medium' expr:data-href='data:post.canonicalUrl'/>
    </div>
  </b:if>
  <!-- End: Add by ethanwu -->
</div>
這個程式碼主要包含了 Facebook 與 Google Plus +1 兩部分,上半部的 iframe 部分是 Facebook 所使用的,下半部的 div 則是 Google Plus +1 按鈕,兩個按鈕用<div class='socialMediaHeader'> 包起來,這樣可以方便微調按鈕的位置。

SETP4 :
最後一步驟,到Blogger管理介面的[範本],點選右上角的[備份/還原],把修改之後的檔案上傳回去,就完成了。




2014年3月18日 星期二

Bluetooth Keyboard & Mouse schematic 藍芽3D鍵盤滑鼠電路圖

今天來介紹藍芽Keyboard / Mouse硬體電路,滑鼠功能是由陀螺儀及G-Sensor計算出來數值,藍芽是選用ISSC BM1652模組,是顆HID Bridge 藍芽模組,有包含HID Profile。 

規格

  • Bluetooth V3.0 class2
  • 兩顆3號乾電池
  • 藍芽指示燈
  • 電源指示燈
  • 陀螺儀
  • G-Sensor
  • 具有Keyboard功能
  • 具有Mouse功能


方塊圖

電路圖介紹
*昇壓線路:
使用TI TLV61220 ,INPUT 電池電壓,OUTPUT 3.3V。 

*電池電壓偵測:
讀取電池電壓,經由ADC轉換,讓MCU判斷電池電壓,當電壓低於2.4V時,低電壓LED會亮起。
*單晶片:
是選用LPC1114 ,32KB Flash.50 MHZ ARM Cortex-M0 MCU.



*G-Sensor
是選用ADXL345,G-Sensor主要用意是計算產品傾斜角度。

*陀螺儀:
用來計算滑鼠移動量。
*HID Bluetooth Module
選用ISSC BM1652 HID Bluetooth Module.
*Key Scan
按鍵掃描,來針側按鍵是否有做動。

完整電路圖:下載

2014年2月25日 星期二

無線~鍵盤&滑鼠&搖桿~三合一功能硬體電路介紹_Air Keyboard Hardware Design Specification

無線鍵盤、無線滑鼠的相關產品,在市面上有很多,但把鍵盤滑鼠與遙桿整合在一起,在市面上是很少見到的產品,滑鼠是利用陀螺儀及G-Sensor來實現滑鼠功能,小弟分享之前產品開發經驗,包含硬體設計的電路圖。

規格

頻道範圍: 2400MHz ~ 2483MHz
內鍵 Lithium-ion 可充電電池
操作時間: > 20hr 連續使用
充電時間: 3 小時
支援操作系統:
PC: Windows 98/ME/2000/XP/Vista/windows7;
有效距離: 可達 10 公尺 (2400MHz ~ 2483MHz)



鍵盤滑鼠搖桿-方塊圖












Dongle-方塊圖

鍵盤滑鼠搖桿-電路圖介紹


Battery Charge

電池充電IC是使用BQ24081,R26電阻可以設定充電電流小,電流目前設定為450mA。STAT1與STAT2的變化,可以知道充電IC目前的狀態,當STAT1為Low,STAT2為High是充電模式;當STAT1為High,STAT2為Low是充飽電模式;當STAT1與STAT2都為High是Sleep 模式。


Voltage Regulators
系統電力是經由DC to DC Converter IC TPS62200穩到DC 3.3V,使用DC to DC Converter IC是轉換效率較高,可以較省電;DC 3.3V再經過LDO AIC1731-30G穩到DC 3.0V給Gyro 使用,Gyro電源是需要較乾淨直流電壓,不然容易造成游標漂移。

RF Front-END
RFIC是選用CC2500,發射頻率是2400MHz~2483MHz,控制方式是經由SPI介面到8051 MCU,使用調變方式是 MSK , Data Rate 100KBaud , RX filtter BW 541KHz , Tx Power 0dBm,2.4G天線是使用國巨的YAGEO-CAN43117121X2453K(for 2.4GHz)--PIFA Mode。RF Frequency準確性是由Crystal來決定,是選用+/-10ppm誤差。


Key Scan
按鍵是以矩陣方式來掃描,由PICMCU來執行按鍵掃描。讀到的按鍵資料會存在I2C Buffer,PIC會產生一各中斷訊號給8051 MCU,8051 MCU再經由I2C來讀取按鍵資料。


Gyro

Gyro是做成模組化,與Keyboard PCB需垂直固定,控制方式來讀取X/Y/R軸直流電壓,由8051 MCU來讀取,在達配G-sensor資料,軟體經過數學演算成滑鼠資料,再經由RF發射出來給Dongle接收。


G-Sensor

G-Sensor是使用ADXL345BCCZ-RL7,當G-Sensor有角速度資料時,會產生一各中斷訊號給8051 MCU,8051 MCU再經由I2C介面來讀取G-Sensor資料,在達配Gyro資料,軟體經過數學演算成滑鼠資料,再經由RF發射出來給Dongle接收。


Game Pad

類比搖桿是讀取X/Y軸直流電壓,由PIC MCU來讀取,再經過ADC轉成資料,存在I2C Buffer,PIC會產生一各中斷訊號給8051 MCU,8051 MCU再經由I2C來讀取按鍵資料。Game Pad加了很多二極體,主要作用是同時按下二各以上按鍵,避免其它沒被按下按鍵產生誤動作。


8051 MCU

8051 MCU是使用C8051F920,主要控制CC2511 RF,Gyro ,G-Sensor ,電源開關機控制,及電池低電壓偵測,與滑鼠左右鍵功能。經由I2C與PIC MCU讀取資料。


PIC MCU
PIC MCU是使用PIC16F1937,主要作按鍵掃描及充電狀態顯示,經由I2C與8051 MCU溝通。


完整電路圖下載:請點這下載檔案

2014年1月3日 星期五

Wireless Power無線充電電路圖

無線充電
無線充電,又稱作感應充電、非接觸式感應充電,是利用近場感應,也就是電感耦合,由供電設備(充電器)將能量傳送至用電的裝置,該裝置使用接收到的能量對電池充電,並同時供其本身運作之用。由於充電器與用電裝置之間以電感耦合傳送能量,兩者之間不用電線連接,因此充電器及用電的裝置都可以做到無導電接點外露。


原理

一般而言,無線充電的充電器內有一線圈,並以交流電推動而產生交流電磁場,在用電裝置內有另一線圈接收交流電磁場,並轉化為電能,收到的電能被用作對裝置內的電池充電給對該裝置供電。情況就等同將變壓器的初級線圈及次級線圈分別放至充電器及用電裝置內。如果充電器及用電裝置之間的距離較遠,那就要使用共振電感耦合設計。

優點

  • 安全:無通電接點設計,可以避免觸電的危險。
  • 耐用:電力傳送元件無外露,因此不會被空氣中的水份、氧氣等侵蝕;無接點的存在,也因此不會有在連接與分離時的機械磨損及跳火等做成的損耗。
  • 在使醫療植入裝置較為安全:在植入嵌入式醫療裝置上,可以在不損害身體組織的情況下對植入在人體內的醫療裝置進行充電而不需要有電線穿過皮膚及其他自體組織,免去感染的風險。
  • 方便:充電時無需以電線連接,只要放到充電器附近即可。技術上,一個充電器可以對多個用電裝置進行進電,在有多個用電裝置的情況下可以省去多個充電器、不用佔用多個電源插座、沒有多條電線互相纏繞的麻煩。

缺點

  • 效率略低:一般充電器內也有變壓器,但無線充電以發射線圈及接收線圈組成的變壓器由於在結構上有限制,所以能量存送效率理論上會略低於一般充電器。若電源先由市電經適配器(降壓、整流、穩壓)後再接到無線充電器,如此經多重轉換,效率會更低。
  • 充電速度慢:由於效率低,在同樣的輸入功率下,充電速度較慢。
  • 成本高:在充電器需要有推動線圈的電子線路,而在用電裝置需要有電力換換的電子裝置,兩者也需要有線圈,因此成本比直接接觸為高。
  • 不能在移動時充電:這個問題只在移動裝置上發生,例如電動刮鬍刀在充電時就不能移離充電器,若電動刮鬍刀內的電池剛完全用盡時就不能使用,反而傳統以電線連接充電的設計可以持續使用。
  • 兼容性低:不同品牌的無線充電裝置因為無統一標準,因此不能通換使用。但近年,業界組織 Qi 開始推行標準化,展望將會有望達至標準統一。


電路圖

  • 無線充電IC是選用TI BQ500211A .
  • 以下是TI參考電路圖

BOM