2008年11月30日

EeePC新拍檔(EeePC專用轉換器)

我的EeePC就不在多做解釋了,之前提過了。

有EeePC的人不知道有沒有個困擾,就是它的變壓器沒辦法和一般NB共用,因此EeePC通常都會另外帶一顆小小看起來很可愛的變壓器,不可否認,這顆變壓器真的很小、很可愛,攜帶起來比一般NB變壓器要輕便很多,但是還是很不方便。

EeePC儘管優點很多,但是他的變壓器,和一般NB是沒辦法相容的,主要原因就是變壓器的供電電壓,一般NB的電壓是19V,而EeePC的則是12V,既然電壓不同,我們能不能做個小變壓器,讓他的電壓相同呢?

還記得之前做過電池轉5V的ARM開發板用變壓器電路,也做過19V轉5V的ARM開發板用變壓器,它的元件並不多,同樣的元件,要把19V轉12V並不難,因此我在EeePC買來沒多久就想做一個,但可惜的是,一直沒時間弄它。
上週週末和這周週末,我特別把這個電路弄出來了。

下面我們就來看圖說故事,看看成品吧!
首先看看第一張,這張是成品,也是經過遮掩後看起來最正常的一張:
寄件者 EeePC變壓器電路


接著我們慢慢越來越深入的看它,首先看它輸入的部份,它輸入部份就是一個一般的DC插頭,基本上我用的是2.5mm的插頭,一般NB變壓器通常都能插入,像台製的變壓器還能更換,那更是沒問題,至於塑膠殼的孔,我是用美工刀割的,所以並不好看:
寄件者 EeePC變壓器電路


看完了輸入端,我們看看輸出端,輸出端則是用電鑽磨出來的小開口,讓電線能夠有個出口,同樣並不很好看,但相信已經比輸入端要好的多了:
寄件者 EeePC變壓器電路


接著我們把它打開,看看它的廬山真面目,首先看看電路板的正面,看得出來元件並不多,而且我並沒有做任何處理,我使用的是LM2576-ADJ,這顆變壓IC是目前最容易取得的Switching Power IC:
寄件者 EeePC變壓器電路


再來我們看看電路板的背面,我必須說,我的銲接技術從高職到現在,始終沒有太大的進步:
寄件者 EeePC變壓器電路


接著我們看看塑膠殼的底板,這裡有點玄機,因為我的銲接中,一些地方是直接用銲錫拉的,因此比較厚,溫度也高,造成了塑膠殼底板其實會稍微燒融掉,這其實滿危險的,畢竟誰知道啥時會走火呢?
因此我在底板貼上一層鐵佛龍膠帶,沒錯~就是被大家用來貼滑鼠的鐵佛龍膠帶,我最近剛買了一卷使用... :p
鐵佛龍膠帶除了很滑(摩擦係數很低)外,他其實也可以耐高溫(可耐200度C以下)、防水、絕緣(導電係數低),因此它其實很好用,可以用在陽台、電路板、室外...等各式場合,如果你四周圍有人買了鐵佛龍膠帶,卻只是用來貼滑鼠,強烈建議跟他要一卷放著,很快就會注意到他好用的地方了。
寄件者 EeePC變壓器電路


接著,來個醜陋大集合,電路板背面和塑膠殼打洞處的合照:
寄件者 EeePC變壓器電路


最後,讓我們看看實際運作時的樣子,這張照片我們實際的把NB用的變壓器接上它,然後將它接到EeePC,EeePC就會顯示目前正在充電中,除了系統的顯示外,也可以注意到電池的燈號,它顯示橘燈,並且持續亮著,表示電池充電中:
寄件者 EeePC變壓器電路


以上就是這次EeePC新拍檔的介紹,當然,不可免俗的,來列出它的成本吧。
LM2576-ADJ NT $20(不大確定,有點忘了,約NT20~25元)
線繞電感 NT $20(工型電感比較便宜,效果相同)
精密電阻 NT $1 x 2
SMD電容 NT $25(不大確定,有點忘了,約NT20多元)
日製電容 NT $18(不大確定,有點忘了,約NT15~25元)
塑膠盒 NT $40(不大確定,有點忘了,約NT40元)
DC IN接頭 NT $5(不大確定,有點忘了,約NT5元)
DC OUT線 NT $30

總成本約 NT $150左右,比買一顆EeePC專用變壓器便宜,而且因為我之前在玩ARM開發板的變壓器時,買了上面這些零件,所以這次實際上並沒有買很多元件,只有買DC OUT線、電阻,其他都是現成的,這對現在不景氣的環境來說,可以說是非常不錯的,一方面好玩、一方面實用、一方面也省錢,可以說一石三鳥。

電子零件細節:
LM2576-ADJ
用的穩壓IC是LM2576-ADJ,LM2576是switching power的穩壓IC,它的輸入電壓可以吃8V~40V,有固定輸出版本和可調整輸出的版本,-ADJ是可調整的版本,這顆的轉換效率大概80~85%左右。

線繞電感
根據LM2576的datasheet,使用100uH的電感,電感建議用線繞電感,網路上關於電感的建議是,線繞電感比較適合Power這類功率用途,而工型電感適合在通訊類用途,不過這最後要看買得到什麼......

精密電阻
因為是用可調式的LM2576,因此需要用電阻來控制輸出電壓,專業的說法叫做分壓,為了輸出電壓的穩定性,我們不希望輸出電壓的變化太大,所以我們希望電阻的誤差小一點,因此買精密電阻,精密電阻的誤差在1%,一般的則是10%。
輸出電壓的算法是(一樣,datasheet寫的):
R2 = R1 x ( ( 輸出電壓(這邊是12V) / 1.23 ) - 1 )
根據上述算法,我使用的電阻是:
1.37k
12k

電容
LM2576需要2顆電容,一顆在輸入端,一顆在輸出端,datasheet建議用鋁製電容。
不過我去光華商場,只有看到SMD電容看起來像是鋁製電容,價格也像鋁製電容,因此輸入端我就用SMD的電容。
輸出端我找不到鋁製的電容或SMD電容,所以我買比較高級的日製電容,反正奇摩拍賣上也有人在賣日製電容,給人換在顯示卡上,我想品質應該ok。
datasheet對電容的要求是:
1. 輸入端為 100uF,輸出端為 1000uF
2. 電容的電壓規定是,電容的電壓必須比電壓(輸入端看輸入電壓,輸出端看輸出電壓)大,建議大1.5倍,datasheet解釋,這是避免突波的發生。
我使用的是:
SMD電容 100uF 50V
日製電容 1000uF 25V

這樣的規格,輸入端上到40V應該都ok,輸出12V沒問題。

二極體(上面漏掉了)
二極體要求要用蕭特基二極體,電流要求能耐3A。
耐3A的原因是,LM2576的最大輸出電流是3A,因此要能耐3A。
用蕭特基的原因是,switching power因為切換速度很快,因此二極體反應要夠快,蕭特基二極體能夠符合需要。

塑膠盒
隨意即可,不裝也ok

DC IN接頭
NB電源插的上去即可。

DC OUT線
我去國際電子廣場,拿著EeePC的變壓器對店員問,它就給我線了.... = =

datasheet的網址:
http://datasheet.eeworld.com.cn/pdf/164979_MOTOROLA_LM2576-15.html

2008年11月24日

HPLIP掃描功能終於支援HP Color LaserJet CM1015

今年年初和年中,台灣HP的彩色雷射印表機都有優惠,因此我在年中就參加了。
優惠方案原則上就是用比較便宜的價格買彩色雷射印表機,不過要寫個心得報告。
便宜多少呢?以我買的HP CM1015來說,我當時砸了NT13000左右(真的是很用力的砸下去了,我的24' LCD因此飛走了),基本上便宜個NT4000元。

家裏的印表機目前都由File Server在管理,File Server是Linux(Debian),因此使用上就有很大的限制,目前上面接了3台印表機,分別是:
Epson Photo 790
HP PSC 1315
HP Color LaserJet CM1015

由於Epson的惡習,因此目前已經停用了,而自從CM1015來了之後,主軸就幾乎都放在它身上。

在這邊我不得不說,HP印表機、掃描器、事務機對Linux的支援真的「比較好」(尤其是事務機),儘管它的支援和Windows相比,大概是天和地的分別,但已經比其他廠牌要好得多,而比較少聽過的品牌,很多都沒辦法在Linux上使用。

HP印表機、掃描器、事務機在Linux上的支援,基本上是透過一個稱之為HPLIP的OpenSource專案(HP Linux Imaging and Printing (HPLIP)),它和HP的密切程度之高,我基本上認為它應該是HP公司在維護和開發的。
透過HPLIP,在Linux上我們能夠比較方便的設定印表機、掃描器、事務機,大致來說只需要執行:
hp-setup
一問一答之間,就完成設定了,而能用的功能就是能用,不能用的功能,大概也沒機會可以用到了,真的是很方便。

CM1015有2個型號,分別在於有沒有網路的功能,價格大約差NT3000元,而這台專案機,原則上沒的挑,就是沒有網路。
不過這對我不是問題,我也不希望它有網路,畢竟接上File Server後,透過網路就能夠列印、掃描,加上File Server上數據機的傳真功能,這3000元實在沒有花的必要。

從買來的第一天開始,我就在關注HPLIP對CM1015的支援性,我本來以為這台機器不新,加上HP對Linux的支援性,應該都ok了,沒想到我還是高估了。
HPLIP一直以來,對CM1015都只支援列印功能,不支援掃描,這讓我很不舒服,畢竟花了這麼多錢,還要靠PSC 1315來掃描,那CM1015上的掃描器只是好看而已嗎.... :(

終於~HPLIP在2.8.10將CM1015的掃描功能加入了,我剛剛試用了,的確可以正常工作,這讓人非常興奮,CM1015終於正式變成事務機了。

最後提一下目前關於家中掃描、列印、傳真的整個配置:
列印部份:
使用CUPS進行列印的處理,這問題不大,設定很常見,在Windows、Linux上都能順利工作,網路列印也ok。

掃描部份:
Linux上的掃描器主要靠SANE,SANE是一個非常老牌的Linux掃描器系統,因為掃描器的硬體混亂,因此SANE本身分成前端、後端:
SANE前端:
SANE前端提供一些SANE的掃描軟體呼叫,對掃描器進行操作,在Linux上問題不大,基本上直接用xsane即可,在Windows上比較麻煩,Windows要透過TWAIN介面,而目前在Windows上TWAIN和SANE的溝通,主要是SaneTwainXSANE,我個人認為,SaneTwain比較好用,而且順道一說,它目前的中文介面,是我幫忙翻譯的。
SANE前端要能夠讓Windows透過網路來溝通,必須要啟動saned這個daemon,只要run起來,就能夠讓其他SANE的掃描軟體透過網路和SANE前端溝通。

SANE後端:
SANE後端主要就是掃描器的驅動程式介面,各種掃描器驅動程式都可以透過SANE後端的介面,讓SANE可以支援,前面提到的HPLIP,它就是提供了SANE後端的介面,讓SANE後端可以連結HPLIP來對掃描器進行操作。

所以Linux的掃描功能,基本上只要SANE能夠搞定,一切都沒問題,要網路掃描,SANE也能做到,整體來說我是相當滿意的。

傳真部份:
我在Linux上的傳真,使用HylaFax這套傳真軟體,HylaFax分成Server和Client,File Server上安裝的自然就是HylaFax Server,而各個Client(包括Windows、Linux)都需要安裝HylaFax Client才能夠透過網路來傳真。
Linux上問題不大,GFax就支援HylaFax傳真,最慘下指令也能傳真,Windows上比較麻煩,我個人推薦Winprint HylaFAX,這套軟體能夠簡單的傳真,並且容易操作,缺點是,它無法取消傳真,也無法看目前收到的傳真。
為此,我的解決方案有2個:
1. 在File Server上另外建立一個資源分享,目錄指定到/var/spool/hylafax/recvq,這樣一來,透過網路芳鄰,就能夠簡單的瀏覽、刪除已收到的傳真。
2. 除了Winprint HylaFAX之外,另外搭配WHFC Windows HylaFAX client使用,這套軟體介面不好看,而且久久沒更新,但還算堪用。

有了上述的幾個部份互相搭配,只要在家裏,我可以透過有線網路、無線網路在任何地方直接列印、掃描、傳真任何資料,那麼~誰還需要多花NT3000元購買有網路功能的事務機呢?誰又需要購買列印伺服器呢?

2008年11月23日

我所知道的嵌入式系統

嵌入式系統是我近6年來不斷嘗試要摸索的東西,但是一直到現在,我都還沒有學會嵌入式系統。
blog一直到現在,好像也從來沒有寫過嵌入式系統相關的東西,因此就發一篇來說說我所知道的嵌入式系統。

早在8年前,我在讀二專時,當時我曾經有個疑惑,到底IP分享器是怎麼做的?
同樣是微電腦系統,IP分享器一台不過NT2000元,硬體應該跟8051差不多,那8051可以作成IP分享器?可以有網路功能?可以寫Visual C++程式嗎?
二專畢業後,我當兵去當替代役,在當時買了生平第一台,也是目前唯一一台的PDA~iPAQ 3970,當時我從網路知道,它是嵌入式系統,一些人用它來搞嵌入式的實驗和開發,因此我就買了,也嘗試灌Linux上去,還因此燒掛過2次機板,其中一次還是自費6000元換的。
當完兵回去念二技,在當時專題老師說有塊ARM的板子可以玩,我就自告奮勇,很興奮的接下來玩,在當時,我知道ARM是嵌入式系統,但不瞭解它們間的關係。
在當時,為了能夠瞭解嵌入式系統、ARM的開發,死k那厚厚的說明文件,還有參加嵌入式系統的研討會,不過對嵌入式系統一直瞭解得很模糊,直到一場在中國技術學院辦的研討會,其中一個主講者的一句話,我終於瞭解了,這也是我到現在對嵌入式系統的理解。
所謂的嵌入式系統,其實可以這樣解釋,就是「嵌入式作業系統」,它的本質,實際上就是把作業系統嵌入到某個硬體平台上,就叫做嵌入式系統。
但因為作業系統的定義其實有模糊地帶,所以嵌入式系統也被泛指各種微電腦系統,原因在於,所謂的作業系統,它可能很單純,但也可以很複雜,我們用個
while(1) {}

裡面包入幾份工作,輪流的執行,這廣義的來說就算是作業系統。
因此很多微電腦系統都號稱是嵌入式系統,說起來也不完全是錯的。

而事實上,目前大部分指的嵌入式系統,多半是指32位元處理器形成的微電腦系統,並且在上面執行Linux、BSD、WinCE、WinXP這類的作業系統,這類客制化硬體 + 流行、功能強大的作業系統,是目前多半描述的嵌入式系統。
不過事實上,現在有些8051開發板,上面搭配了網路晶片、USB晶片,甚至音效晶片,並且在上面執行8051可以執行的簡易作業系統,這其實也是嵌入式系統的成員之一。

我們可以從上面我對嵌入式系統的名詞解釋(個人的理解),我們可以發現到,嵌入式系統包含了硬體、軟體、軔體(有時也稱驅動程式),因此嵌入式系統的門檻真的很高,我認為,一個嵌入式系統的工程師,至少需要具備一部分電子能力、一部分作業系統的瞭解、還程式開發的能力,我自認目前我還不具備上述所有的能力,至少每個部份我都還欠缺很多。
但同時,我認為35歲以下的年輕人(包括快30的我),要同時具備所有能力,應該很有難度,除非25歲就進入公司,並且被公司磨練了10年才有辦法。
而我認為,嵌入式系統要入門,有人帶的情況下,至少需要3年的時間,才能瞭解這些東西。

我在研究所至今,我必須說,我很不幸的遇到了很糟的老闆,以至於我唸了第四年,能不能畢業都還很難說,但最慘的是,我因此浪費了至少2年的嵌入式學習機會,儘管我老闆號稱做嵌入式系統,但其實他幾乎不瞭解嵌入式系統,我曾經聽他說過,他說「uC/OS這樣的作業系統,根本不能稱之為作業系統」,他也不懂硬體,看到電路、組合語言就完全畏懼,但很不幸的,我認為要搞嵌入式系統,這些是必要的。
因為正如我前面說過的,uC/OS和Linux相比,是一套小作業系統,但我們要開發商品或硬體,很多時候因為各種因素的限制(成本、體積、散熱、耗電...等),我們沒辦法使用32位元處理器,沒辦法有MB級的Flash,沒辦法有鋰電池電源,但是我們需要OS,這樣的系統它還是嵌入式系統,但沒辦法使用Linux、WinCE,因此uC/OS這類小型作業系統成了必要的選項。
此外,搞嵌入式系統,寫應用程式應該已經是非常幸福的了,因為沒有莫名其妙的問題,但既然是搞嵌入式系統,相信寫應用程式的應該是少數,就算是寫應用程式,也應該是受限制的嚴重,像是沒有加密函式庫,而像是.NET?我想應該很難看到他的身影,否則公司何必一個月NT40000請你呢?外包出去可能20000一週就能搞定了。
因此搞到軔體、驅動程式的機會其實很大,那麼在一個客制化硬體中寫軔體、驅動程式,不會碰到硬體IO、不會看到組合語言的機會有多大?我個人悲觀的認為並不大,因此,我會認為我老闆只是號稱做嵌入式系統,他其實對嵌入式系統並不瞭解。

我注意到這兩年嵌入式系統已經不像4,5年前那麼神秘了,被老闆綁越久,其實越難過,因為我很早就知道要走這條路,也很早就努力在摸索,但這兩年不但沒辦法進一步研究,還被綁著沒辦法出去,我估計再過2,3年,嵌入式系統的發展會更成熟,到時候人力需求會更少,相關的人才會更多(這兩年已經有這樣的傾向了)。

我認為,嵌入式系統在2年前甚至4年前,還是一團混亂,我認為這樣的情況會越來越少,我認為嵌入式系統在未來的發展,可能有幾個方向:
1. 開發走向標準化開發,會出現統一的開發方式,統一的函式庫
2. 會出現一些認證,因為目前嵌入式的工程師,程度差異性太大,像我老闆這樣「號稱」的人很多,因此認證變得有需要
3. 各層開發能夠分離,應用程式歸應用程式,作業系統歸作業系統,硬體歸硬體,能夠更有效的分散
4. 導入軟體工程,目前的嵌入式系統很亂,經常連開發時程都不好算,能不能開發出來都很難說,但軟體開發始終需要有計劃,否則對公司來說,漫無目的的砸錢並不是辦法,如何導入軟體工程,我相信目前還算是趨勢,套我之前學長說的,軟體工程中,說到itest這類測試工具,能夠有效的對程式開發時,錯誤的問題進行處理,但在嵌入式系統,三不五時就crash,不要說程式除錯,系統都死了怎麼除?顯然,軟工在這部分還有可以著墨的地方。
5. 硬體的相容性會越來越好,很難想像,嵌入式系統從8年前到現在,光OS的porting,就幾乎是非常大的問題,就算到現在,隨便一顆處理器的微電腦系統,要找到能用的作業系統都很難,要自己porting,還是只能看天,至於公司,除了求助硬體廠商之外,少不了至少3個工程師,花上2個月的時間進行porting,完畢後可能還需要2周,1個月進行測試,除了一堆bug後,工程師才會說「應該ok了」,所以我相信,這問題會逐步改善。

其實上述的問題,儘管我不喜歡M$,但不得不說,M$在嵌入式系統的發展上,很有計畫,而且做的很不錯。
1. M$把硬體相容性用驅動程式的概念來推行,在網頁直接列出某個版本的WinCE支援哪些硬體,並且新的WinCE都能支援舊的硬體,且不斷增加。
2. M$不得不說,對OS的Support至少是還ok的,讓硬體或軔體(驅動程式)廠商在開發WinCE時,不像Linux這麼無助。
3. M$把IE、Windows Media Player...等直接移植到WinCE,這讓開發多媒體、網路的廠商,可以不用辛苦的知道mplayer怎麼porting、mozilla怎麼porting就能直接開發多媒體、網路的產品。
4. M$直接提供 .NET CF...等函式庫,它知道開發嵌入式系統時,混亂的函式庫環境造成了多大的開發麻煩。
5. M$的共享程式碼計畫和龐大的WinCE架構(WinCE的一堆API),能夠讓嵌入式開發分層化,儘管因為架構很大很亂,分層起來還是很難搞,但至少有一堆interface,讓開發上能夠輕鬆些,Linux不得不說,這方面還是很亂,其他OS就更不用說了。

基於上述這些理由,還有M$對嵌入式的行銷,不得不說M$在嵌入式的市場真的是玩真的,而且這快10年的發展,真的讓M$在嵌入式的市場搶下很大的份額,至少手機、PDA部份,它吃掉了很大一塊,M$最近的新聞是,他要搞車用電腦。