2008年10月30日 星期四

方案網

RFID的全面介紹和資料

一、RFID的全面介紹和資料

如何管理比澳洲人口多得的袋鼠?人類發射到太空中的東西如何追蹤?病人不到醫院去,醫生如何檢測並得出第一手的腦電波、心電圖資料資料?超市中條碼大量的破舊、損害怎麼辦?……這些問題似乎困難而且沒有必然聯繫,但是用RFID技術可以解決上述的所用問題。

RFID是英文“Radio Frequency Identification”的縮寫,中文稱為無線射頻身份識別、感應式電子晶片或是近接卡、感應卡、非接觸卡...等等,是非接觸式自動識別技術的一種。

1、起源
RFID最早曾在第二次世界大戰中用來在空中作戰行動中進行敵我識別:當時英國用以確認進機場的是否為己方的飛機,以免遭誤擊。

20
世紀90年代起,這項技術被美國軍方廣泛使用在武器和後勤管理系統上。美國在“伊拉克戰爭”中利用RFID對武器和物資進行了非常準確地調配,保證了前線
彈藥和物資的準確供應。和以往的“充足”供應有所不同,現代化的管理強調的是準確供應,也就是需要多少就提供多少,因為多餘的供應會增加不必要的管理成
本。

許多歐美國家高速公路有電子收費站,只要憑著黏在車上的RFID辨識卡片,就可直接通過收費道、自動扣款,不須停車。

2、RFID原理
1. 標籤(Tag,即射頻卡):由耦合元件及晶片組成,標籤含有內置天線,用於和射頻天線間進行通信。
2. 閱讀器(Reader):讀取(在讀寫卡中還可以寫入)標籤資訊的設備。
3. 天線(Antenna):在標籤和讀取器間傳遞射頻信號。


統的基本工作流程是:閱讀器通過發射天線發送一定頻率的射頻信號,當射頻卡進入發射天線工作區域時產生感應電流,射頻卡獲得能量被啟動;射頻卡將自身編碼
等資訊通過卡內置發送天線發送出去;系統接收天線接收到從射頻卡發送來的載波信號,經天線調節器傳送到閱讀器,閱讀器對接收的信號進行解調和解碼然後送到
後臺主系統進行相關處理;主系統根據邏輯運算判斷該卡的合法性,針對不同的設定做出相應的處理和控制,發出指令信號控制執行機構動作。
以往使用條碼,由於長度的限制,物流行業只能給每一類產品定義一個類碼,就是說,一批牛奶,不管保質期是哪一天,他們在商場的代碼都是一樣的,商場無法通過代碼判斷每一件產品的準確庫存週期。


據EPC網路計畫,每一實際電子產品都會有一個96位元長的產品標籤,或叫“牌照”。該標籤將標明製造商、描述產品種類並為該物品指定一個獨特的序號。其
結果就是,任何產品,哪怕是一盒牛奶都將有自己的身份。從數學上講,96位長的標籤足以為地球上的每一個物體都指定一個唯一的身份。

毫不誇張地說“RFID能將物體一個個編排造冊,以致於打造飛機的一釘一鉚都能被鑒別出來。” 由於RFID標籤的存儲容量是2的96次方以上,所以他們可以將世界上所有的產品每一個都以惟一的代碼表示。

3、RFID飛入尋常百姓家
在香港,這一技術最為普遍的應用就是公共汽車、火車和渡船上使用的“無接觸”Octopus卡,主要方便小型貨物存放和自動售貨等。RFID晶片也是北京市一卡通工程中所採用的主要技術。

RFID
技術能夠被廣泛應用在民用領域得益於兩個推動力量:第一就是晶片製造成本被大幅度降低,從起初的幾十美元降低到幾個美分,使得RFID電子標籤可以為超市
的管理者接受;第二就是用戶對RFID技術的廣泛接受,歐洲最大的超市麥德龍和美國最大的超市沃爾瑪在2003年和2004年試用RFID的決定加速了
RFID技術的普及。尤其是美國零售業巨頭沃爾瑪特要求其主要供應商於明年初使用RFID標籤,對RFID技術的推動功不可沒。沃爾瑪特有70%的貨物都
源自中國。沃爾瑪前100位供應商和美國國防部今年花費在RFID技術和服務的資金將達到5.15億到38億美元的水準。這些錢很多將用於把RFID資料
編碼和資料捕捉系統整合進入資訊網路之中,為供應商的生產和分配活動提供支持。

RFID的驅動力量是市場,這一點和其他的IT技術有所不同。但是由於普通的消費者還沒有一個清楚的印象,超市和管理機構的關注讓民眾也產生了興趣。

4、RFID更加奇妙的應用
可穿戴醫療設備
RFID除了在超市的種種應用外,醫學研究人員也正在研製各種可穿戴的晶片。“許多公司都投入了大筆資金來開發所需的底層硬體。”哈佛大學醫學院Spaulding Rehabilitation醫院的運動分析實驗室主任Paolo Bonato指出。

Bonato在2003年5/6月刊發的IEEE Engineering醫學和生物學卷上撰寫了多篇關於可穿戴醫療設備的論文。

其中的一篇論文寫道:“最終的目標是實現一個外部供電的帶智慧MEMS感測器的單晶片,它可以是一次性使用的, 尺寸差不多為普通‘創可帖’般大小。”

在商業應用上,一些新興公司正在開發帶有嵌入式感測器的襯衫、手錶、臂章和戒指,它們可使身患各種小毛病的普通老百姓隨時跟蹤自己的心臟、肺、體溫和運動情況,當然它們也可以用在運動員和軍事人員身上。

在實驗室中,大多數此類裝置都需要通過有線連接至PDA或者PC。研究人員面臨的挑戰是集成更複雜的感測器和廉價的無線通信功能。

“可穿戴裝置正從臨床實驗進入廣泛的應用領域, 雖然現在還很難確定可穿戴醫療保健裝置的增長情況,但是通過研究我們認為,今後5年將呈指數增長。”Bonato補充說。

T恤衫監控呼吸
VivoMetrics
公司就是該領域的少數新興公司之一。該公司的LifeShirt就是一件帶很多感測器的T恤衫,目前主要用於監測像睡眠呼吸暫停症這樣的病人的呼吸。該公
司瞄準的市場是用它的產品來同步管理5個藥物試驗的資料收集。VivoMetrics創始人和首席運營官Andrew
Behar將其視為一個重要的增長市場,因為在任何時候都有大約500個臨床試驗在進行。

在義大利,醫生使用LifeShirt作為
工具來監視家裏的中風病人,以減少住院時間。“它可以在衛生保健方面獲得廣泛的應用,5到10年內,將使病人無需到醫院去。”Behar稱。但是要想使大
量普通消費者能用上LifeShirt則還不現實。“醫生們並不十分清除如何利用所有的資料。”他認為。

該公司當前的首要工作是將更複雜
的感測器嵌入到LifeShirt中,用於測量心率、腦波及其他關鍵因素。Vivo正與一家公司合作研製一種可以通過衣服跟蹤心率的輕便感測器。
BodyMedia瞄準了用它的SenseWear收發器來實現這種產品的市場。Roche
Diagnostics公司在今年夏天開始以300到400美元的價格銷售採用了這種收發器的臂章式監控器。

BodyMedia首席執行官Astro Teller希望,每年都能夠獲得一兩個新的收發器用戶以提高公司的收益。Medtronic和Audi公司已經在各自的某些試驗中使用了該器件。

應用戶市場的要求,Zigbee聯盟正在研製用於可穿戴醫療裝置的低成本無線鏈結技術。該組織於2004年推出一項用於醫療設備的低成本、低帶寬無線技術。

數字軍事裝備

國軍方仍將繼續支持該領域的關鍵研究工作。作為研究的一部分,Objective Force
Warrior專案的目的是重新定義2010年士兵戰鬥裝備,為此美國陸軍正在研究可以用來紡織複合天線、電源和資料匯流排的未來軍服所需要的新型材料。
他們的目標是將士兵變成戰場系統上的一個節點,並將他們的裝備重量從現在的120磅降低到50磅。

美國陸軍正致力於覆蓋各種頻率的複合天線設計。其電源和資料匯流排將具備與FireWire和USB介面相類似的能力,以連接可擕式電腦、電池、智慧顯示器以及士兵佩帶的感測器。

“我們現在研究的是基於纖維的半導體。我們認為,它也可以用於開發商業領域的可穿戴系統。”美國陸軍研究與開發中心電子工程師James Fairneny說。


二、涉足RFID



市場需求方面,世界上最頂尖的零售業巨頭沃爾瑪、塔斯科(Tesco)、麥德龍(Metro)要求其供應商提供的商品必須有RFID標籤;在中間軟體發展
上,有微軟、甲骨文(Oracle)、sun等IT巨擎宣佈進軍RFID的軟體發展;在硬體設備供應上,Alien、飛利浦、德州儀器、IBM等宣佈針對
日益成熟的RFID智慧卡市場進行戰略聯盟;在技術標準方面,總部設在美國麻省理工學院(MIT)的Auto-ID
Center和日本Ubiquitous ID Center也相繼提出獨立適用的RFID技術標準。

RFID發展最強勁的領域:物流和生產方面的工業應用

供應鏈管理和物流管理中,資訊的準確性和及時性是關鍵,這恰恰就是電子標籤的最大優點之一。電子標籤可以放置到物品的任何位置,只要在閱讀器可以讀到的範
圍(從幾釐米到幾米不等),就可以迅速地讀出其中的資料。借助電子標籤,可以實現商品對原料、半成品、成品、運輸、倉儲、配送、上架、最終銷售,甚至退貨
處理等環節進行即時監控。這樣不僅能提高自動化程度,而且可以降低差錯率,從而顯著提高供應鏈的透明度和管理效率。


電子標籤的出現,使得合理的產品庫存控制和智慧物流技術成為可能。一些分析家認為,物流和生產方面的工業應用是RFID晶片市場發展最強勁的領域。

RFID
對製造業將有現實促進意義。對製造業常用軟體ERP和SCM系統來說是一種革命性的突破,過去的物料編號無法實現對單一部件的跟蹤,而今天,物料的精確化
管理卻將觸角伸到了每一個環節的每一個部件,無論是品質控制、自動化管理、產品的生命週期管理都將面對過去無法想像的便利。例如,對產品次品率的分析可以
將次品來源定位在某一點,而倉庫中的某一個產品也不會因為同一類產品的數量過多而被單獨過久放置。

1、RFID在物流領域
德國麥德龍集團(METRO)在其最新建立的“RFID創新中心”安裝了一台NCR的自助結帳系統,它不僅可以讀取條碼,還能讀取無線射頻識別(RFID)標籤。

麥德龍集團建立的“創新中心”位於德國諾伊斯,目的是為了與合作夥伴共同發展RFID技術在零售領域的應用。

安裝在“創新中心”的NCR FastLane? 是全球首個集成了RFID讀取器的自助結帳解決方案。在其目前的應用中,混合型自助結帳系統在掃描過程中同時解除了RFID標籤在商品中設置的安全功能,這樣顧客在結完帳離開商店時就不會引發安全警報。

“RFID
創新中心”是麥德龍集團“非凡未來商店”計畫的專案之一。在該計畫中,為了促進創新技術在國內乃至國際零售行業的廣泛應用,麥德龍集團和來自IT、消費產
品和服務行業的45名著名合作夥伴,在真實的環境下共同測試各種新技術的在零售業的應用和相互作用。這一計畫成為零售業相關技術和流程發展和創新的有效平
臺。在麥德龍集團“非凡未來商店”計畫中,眾多技術和先進系統在實踐中獲測試和進一步發展。長遠來說,該計畫的目標乃為零售業制訂一套能夠在國際範圍內實
施的標準。

2、RFID在工業生產中
2003年,作為日益國際化的家電企業,海爾集團就開始跟蹤RFID技術。海爾希望發揮
RFID技術自動識別讀寫、群讀及遠距離讀取的作用,代替原來的近距離人工條碼讀取方式,提高工作效率;並在更長遠的未來,在一些可能的業務流程中,通過
RFID標籤捕獲資料,從而顯著提高供應鏈管理的水準。一旦晶片技術發展到成本顯著降低、存儲容量足夠大的時候,海爾還期望在家電產品中嵌入晶片標籤——
既記錄製造過程中的資料,還可以記錄顧客和電器保修的有關資訊。這樣在提供維修服務時,海爾員工便能通過系統自動讀取標籤中的資料,從而對產品資訊和維修
記錄了然於胸。

海爾在實施RFID技術上懷有緊迫感:一方面企業需要不斷提高工作效率、降低成本;另一方面,來自經營大環境的壓力,如像
沃爾瑪等一些零售巨頭對供應商們施予的壓力。除了醉心於技術革新的領先企業,目前關注RFID的企業多是迫於類似的環境壓力。2003年5月中旬,海爾計
畫在其一處倉庫中率先使用RFID技術。

戴爾在產品零部件上也安裝了RFID標籤。它可以使網上訂單迅速轉化為無線射頻信號。這些信號可
以指示戴爾公司的自動零部件選取機為每台PC收集所需要的零部件;它還能把產品組裝圖傳給工人,並補充成品的出貨量。戴爾的經理可以在網上監控產品在生產
過程中所處的位置。RFID被看作戴爾勝出同行的絕招之一。

3、RFID在車輛跟蹤與管理系統領域
無線定位與通信公司
WhereNet將WhereSoft Vehicle。這種VTMS(車輛跟蹤與管理系統
)將首次將RFID與業務規則結合在一起,實現工作流自動化。定位於汽車行業、車輛處理中心和汽車租賃公司的VTMS,採用WhereNet主動RFID
標籤和WherePort技術。

WherePort是一種在帶來RFID標籤的物品進入或離開特定區域時,觸發RFID標籤發射信號的技
術。與被動RFID標籤不同,主動標籤具有1,000英尺的發射距離,定位精度在半徑10英尺內。當汽車還在生產線上製造時,一種叫做WhereTag的
RFID標籤被分配給每一台車輛,並且與VIN(車輛身份號)建立聯繫。WhereNet VTMS發貨價格在25萬到100萬美元之間。

三、RFID晶片
1、世界最小的晶片
2001年6月,日立發表這種微晶片時便稱該部件是世界上最小的RFID晶片。2003年11月,日立已開發出將天線嵌入到RFID晶片上的方法,日立自豪地表示,該器件是帶有嵌入式天線的最小IC。

常規RFID晶片需要用一個外部天線來實現它們與外部讀取器的通信,而微晶片的片載天線使它能夠接收來自讀取器的無線信號並將ID號回送。因此,這種晶片無需附加任何外部器件即可自行進行工作。

2、符合全球規格的晶片

利浦電子公司2004年5月推出了業界第一個符合全球規則的
RFID晶片——UCODEEPC1.19,支援UHF全球產品電子代碼(EPCglobal)標準化運動。該新晶片用於貨盤和包裝箱識別,支援96位元
EPCglobal編碼標準化,能很好地幫助零售商和供應商在最短時間內符合G2類EPCglobal標準的要求。隨著沃爾瑪、Metro、Tesco、
Target以及國防部要求物流和供應鏈系統在2005年以實現非接觸式射頻識別(RFID)技術的規定,全球廠商都在尋找可以快速有效地為其供應鏈部署
RFID技術的方法。

該晶片的零售和供應鏈行業用戶在需要的時候可以充分利用256位元讀/寫記憶體將附加的資訊存儲在晶片上。有了這種功能的單晶片,EPC架構可以在全球範圍內的物流及供應鏈等行業得到廣泛應用。

現已投入使用的UCODEEPC1.19可分別在美國標準5.7米(寫)/8.2米(讀)和歐洲標準5.2米(寫)/7.4米(讀)的範圍內運行。該晶片具有每秒150標籤的無衝突速度。

RFID的解決方案
SSA Global為沃爾瑪以及美國國防部(DoD)提供的SSA倉庫管理射頻身份識別(RFID)解決方案現已初現客戶成效。

RFID
技術是幫助客戶提高供應鏈可視性的基礎,也是SSA Global供應鏈管理(SCM)解決方案的基石。SSA
Global的RFID產品將幫助製造企業和分銷商提高物料處理效率,以便更高效地管理和跟蹤物料的流通。SSA RFID for
Distribution是面向倉庫管理與製造領域的最初幾種RFID解決方案之一。

目前,RFID已在某些領域體現出合理價值,如資產
跟蹤、汽車牌照和安全性等。例如DC Logistics公司,在其達拉斯RFID部署中心運行SSA RFID for
Distribution中,公司的自動資料收集與分析功能得到了極大的提升。而沃爾瑪運用RFID試驗配送中心派遣貨輪則是為了回應客戶的要求,促進沃
爾瑪以及DoD等機構的制度遵從。另外,其他功能包括標記服務以及跨碼頭合併服務等,也將使該解決方案成為第一種全能產品。

SSA
RFID for Distribution構建用於滿足消費品和直接倉儲配送公司的行業需求。SSA Global現正與IBM、Sun
Microsystems、R4 Global Services和SIS Technologies,
ltd.等多家主要業務夥伴合作,構建旨在全面挖掘RFID潛能的解決方案。

甲骨文公司也推出包含有RFID技術的最新版本的供應鏈管理
軟體——Oracle 供應鏈管理11i.10(Oracle Supply Chain Management
11i.10)。RFID化交易,自動跟蹤整個供應鏈中的庫存流動,以改善透明度、安全性和決策制訂能力。

優派(ViewSonic)公
司首席資訊官兼資訊服務部副總裁羅伯特.穆恩(Robert
Moon)表示:“我們的供應鏈影響公司日常經營的方方面面,因而最終影響到公司各項目標的實現,如提供無與倫比的客戶服務、增加收入增長的機會、簡化主
要的供需流程,等等。我們對最新版Oracle供應鏈管理很感興趣,相信它在我們為實現公司各項總體目標而實施RFID庫存管理、全球訂單履行流程和新客
戶關係及合作夥伴關係管理等一些更高級的業務計畫的過程中,會起到至關重要的作用。”



三、從條碼到RFID

  條碼的起源、發展與歷史
  在美國華盛頓史密森(Smithsonian)美國歷史博物館中,陳列著一包箭牌果汁口香糖。1974年6月26日,這包口香糖在俄亥俄州特羅伊城的瑪西超市賣67美分。你可能會說,這有什麼稀罕的?但它卻是全世界第一件通過條碼掃描售出的商品。
  起源
 
 早在40年代,美國喬?伍德蘭德(Joe Wood Land)和伯尼?西爾沃(Berny
Silver)兩位工程師就開始研究用代碼表示食品項目及相應的自動識別設備,於1949年獲得了美國專利。該圖案很像微型射箭靶,被叫做“公牛眼”代
碼。靶式的同心圓是由圓條和空繪成圓環形。在原理上,“公牛眼”代碼與後來的條碼很相近,遺憾的是當時的工藝和商品經濟還沒有能力印製出這種碼..


而,10年後喬?伍德 蘭德作為IBM公司的工程師成為北美統一代碼UPC碼的奠基人。以吉拉德?費伊塞爾(Girard
Fessel)為代表的幾名發明家,于1959年提請了一項專利,描述了數字0-9中每個數字可由七段平行條組成。但是這種碼使機器難以識讀,使人讀起來
也不方便。不過這一構想的確促進了後來條碼的產生於發展。

  發展
  1973年美國統一編碼協會(簡稱UCC)建立了
UPC條碼系統,實現了該碼制標準化。同年,食品雜貨業把UPC碼作為該行業的通用標準碼制,為條碼技術在商業流通銷售領域裏的廣泛應用,起到了積極的推
動作用。1974年Inte
rmec公司的大衛?阿利爾(Davide?Allair)博士研製出39碼,很快被美國國防部所採納,作為軍用條碼碼制。39碼是第一個字母、數位式想
結合的條碼,後來廣泛應用於工業領域。

  1976年在美國和加拿大超級市場上,UPC碼的成功應用給人們以很大的鼓舞,尤其是歐洲人對
此產生了極大興趣。次年,歐洲共同體在UPC-A碼基礎上制定出歐洲物品編碼EAN-13和EAN-8碼,簽署了“歐洲物品編碼”協定備忘錄,並正式成立
了歐洲物品編碼協會(簡稱EAN)。到了1981年由於EAN已經發展成為一個國際性組織,故改名為“國際物品編碼協會”,簡IAN。但由於歷史原因和習
慣,至今仍稱為EAN。(後改為EAN-international)

  日本從1974年開始著手建立POS系統,研究標準化以及資訊
輸入方式、印製技術等。並在EAN基礎上,於1978年
制定出日本物品編碼JAN。同年加入了國際物品編碼協會,開始進行廠家登記註冊,並全面轉入條碼技術及其系
列產品的開發工作,10年之後成為EAN最大的用戶。

  應用
  此後不久,隨著LED(發光二極體)、微處理器和鐳射二極體的
不斷發展,迎來了新的識別字號(象徵學)和其應用的大爆炸,人們稱之為“條碼工業”。今天很少能找到沒有直接接觸過即快又准的條碼技術的公司或個人。由於
在這一領域的技術進步與發展非常迅速,並且每天都有越來越多的應用領域被開發,用不了多久條碼就會象燈泡和半導體收音機一樣普及,使我們每一個人的生活都
變得更加輕鬆和方便。

  RFID與條碼的比較
  目前全球以千億計的大小商品,都靠著產品上一條條粗細不一的線條(條碼)來辨
別身分。但是條碼只能記載著產品簡單的背景,例如生產商和品項名稱,而且還得透過紅外線接觸掃瞄才能讀取資料。更重要的是目前全世界每年生產超過五億種商
品,而全球通用的商品條碼,由十二位排列出來的條碼號碼已經快要用光了。條碼是唯讀的、需要對準標的、一次只能讀一個、且容易破損;而RFID是可讀寫
的、使用時不需對準標的、同時可讀取多個、堅固全天候使用,可不需人工參與操作。

  首先,條碼依靠被動式的手工讀取方式,工作人員需要手持讀取設備一個一個掃描,而RFID讀取設備利用無線電波,可以全自動瞬間讀取大量標籤的資訊;
  其次,條碼屬於易碎標籤,由於物理、化學的原因很容易退色、被撕毀,RFID屬於電子產品,可以在條件苛刻的環境下使用;
  第三,條碼的存儲量很小,而RFID標籤內部嵌有存儲設備,信息量巨大;當然,條碼的問題在於它永遠是一次性的,不可改變的,而RFID可以任意書寫,也可以進行修改。

四——展望RFID以及RFID的標準

如何管理比澳洲人口多得的袋鼠?人類發射到太空中的東西如何追蹤?病人不到醫院去,醫生如何檢測並得出第一手的腦電波、心電圖資料資料?超市中條碼大量的破舊、損害怎麼辦?……這些問題似乎困難而且沒有必然聯繫,但是用RFID技術可以解決上述的所用問題。
  
RFID的前景

然RFID技術的新奇應用也在源源不斷地湧現出來。比如,日本電信最近開始給公司中的工人配備帶有RFID讀取器的PDA,用以讀取電話上的RFID標
籤,這樣總部就可以根據從工人PDA中收集上來的資訊,繪製工人當前位置的地圖,從而調度離某部電話最近的工人前去工作。

   在醫療領域中,RFID技術也大有可為,比如將每件醫療器械中裝入RFID,這樣就可以避免在已經被縫合的身體裏留下剪子、鉗子;或者用RFID標籤標注每個將要接受手術的患者,以確保他們的身份與所實施的手術過程相符。

 
 
在日本,某社團提出了一項計畫,準備用RFID標籤跟蹤兒童上學和放學的情況,來滿足對在校兒童安全越來越高的關注需求。根據大阪電信局介紹,RFID標
籤將被發放到小學,縫到學生的衣服或者學生卡、書包等私人用品上;而RFID標籤讀取器將被安裝到學校大門,以及其他一些家長和教師認為比較危險的地方。
每天,RFID標籤上的資料通過無線連接發送到中心資料庫,這樣攜帶RFID標籤的孩子的行動就可以被即時地或者准即時地予以跟蹤。從RFID標籤得到的
資料將會以多種形式的圖示顯示出來,除了記錄位置以外,以後還會用更加智慧的標籤記錄伴隨發生的事件。

  
7月初,幾家主要的手機製造商計畫推出內嵌RFID技術的通訊設備,它們希望由此改變消費者購買商品以及使用信用卡的方式——在近距離通訊(NFC)技術
的幫助下,比如把你的手機向海報或者廣告宣傳欄晃動一下(範圍在20釐米之內)就可完成交易,無論購買音樂會的門票、預定酒店的客房還是其他需要信用卡帳
號資訊的業務,都可以用手機之類的手提設備搞定。根據ABI研究機構的調查顯示,幾年內將有50%的手機集成RFID晶片,用來進行近距離的交流。這些交
易是傻瓜化的,不需要用戶進行配置,也就是說,通過無線通訊網絡、帶有NFC功能的Wi-Fi網路或者藍牙技術,手持設備內的RFID標籤會自動的連接到
對應的站點上,讓消費者瞭解有關產品和服務的資訊,傳遞視頻、音頻檔,或者達成一筆交易。
   RFID有如此貼近生活的應用,可見前景是不可估量的。

   RFID的現實問題

  但是RFID的現實問題我們也不能忽視:
   高風險
   RFID所需的高額費用和技術上的不成熟,使實施RFID仍是高風險的舉動。甚至有人認為,如今所謂的RFID應用熱潮是一項缺乏投入回報證明的瘋狂技術冒進。

 
 
雖然業界對RFID長期的前景仍堅持肯定的態度,但是,Gartner表示,應用這個技術的商業性的基本戰略還需要許多年才能成熟。企業開始在經營管理和
供應鏈中有效地使用條碼技術用了20年的時間。RFID技術的普及雖然不會用那樣長的時間,但是,企業需要不斷地對採用這項技術的戰略進行檢查,並且要認
識到RFID不可能在一個晚上成為主流的技術。

   價格過高
  
價格問題也是關於RFID爭論的一大焦點。專家認為,要想實施這項技術,就必須把標籤的價格從現在的每個45美分降低到每個10美分。價格必須便宜到讓更
多的公司使用的起,而現在產業正在朝著這個趨勢發展。而很多人現在仍在關注這個價格最終將降到多低,什麼時候將達到這個最低點。

   標準不統一
 
 
目前,很多RFID解決方案廠商提供的軟硬體技術還處於實驗室和模擬應用階段,尚不能適用現實應用的需要。如果企業採用專用技術,所使用的頻率、編碼、存
儲規則以及資料內容等都不盡相同,一旦RFID解讀器和標籤不能通用,企業間就無法順利進行資料交換和協同工作,只得將RFID技術局限在企業內部。

   正是由於缺乏一套廣泛通用的標準,才使得RFID技術一直未能廣泛地應用於供應鏈管理上。當供應鏈其中一環的資料不能在下一環節再用時,就會使技術開發成本大幅增加。可見,一個詳細、統一規範且開放的技術標準是RFID技術發展需要解決的頭等大事。

   失業
   市場調研公司Yankee Group最近公佈的研究報告顯示,未來三年企業將投資數十億美元安裝庫存追蹤(inventory-tracking)系統,這將使它們因供應鏈效率提高而節省成本,但數百萬工人卻將因此丟掉飯碗。

   Yankee Group表示,製造商在未來三年將在與射頻標識(RFID)相關的硬體、軟體和服務方面投入50億美元。但是,佈署RFID,僅在美國一地就可能導致400萬個工作崗位消失。

   健康影響
 
 
目前有很多人對RFID遍佈未來世界充滿擔心,因為RFID磁條所使用的800~900MHz已經屬於甚高頻範圍,很多人擔心長期生活在RFID磁條包圍
中會受到高頻射線影響,免疫力下降和導致癌症都引發了很多人對RFID的疑問。而且RFID所使用的頻率也受到國際電信聯合會頻率資源的限制。

   隱私問題
   隱私保護團體也對RFID可能造成生產商長期跟蹤用戶抱有強烈的意見。而一旦使用一次性自毀RFID,顧客又很有可能在召回和折扣返款等服務上無法參與。

   RFID標準
 
  各國都在積極制定自己的RFID標準。國際上的ISO/IEC18000,美國的 EPC Global,日本的 Ubiquitous
ID三項國際標準,已形成三足鼎立局面。沃爾瑪去年已正式宣佈,從2005年起,在全球前100家供應商中強制實行所有產品加貼“電子標籤”。美國國防部
也正在推進全面導入電子標籤的計畫。法國政府已在食品領域全面推行原產地分類標誌制度。德國的麥德龍公司宣佈跟進。

  
我國電子標籤RFID技術的生產和應用領域僅有一些行業標準,各廠家自主開發的電子標籤產品千差萬別,在容量、資訊格式等方面不一致,不同類型的產品也不
能夠互相相容。因而,必須加快制定統一國家標準的步伐。中國國家標準化管理委員會近日宣佈正式成立“電子標籤”國家標準工作組,負責起草、制定中國有關“
電子標籤”國家標準,使其既具有中國的自主知識產權,同時和目前國際的相關標準互通相容,促進中國的“電子標籤”發展納入標準化、規範化的軌道。

 中國國家標準化管理局副局長王忠敏表示:“中國將在EPC國際標準的制定中扮演重要角色。”


射頻技術相關知識!!
電子標籤基本工作原理


子標籤是射頻識別(RFID)的通俗叫法,它由標籤、解讀器和資料傳輸和處理系統三部分組成。
標籤也被稱為電子標籤或智慧標籤,它是記憶體帶有天線的晶片,晶片中存儲有能夠識別目標的資訊。RFID標籤具有持久性,資訊接收傳播穿透性強,存儲資訊
容量大、種類多等特點。有些RFID標籤支援讀寫功能,目標物體的資訊能隨時被更新。
解讀器分為手持和固定兩種,由發送器,接收儀、控制模組和收發器組成。收發器和控制電腦或可編程邏輯控制器(PLC)連接從而實現它的溝通功能。解讀器也有天線接收和傳輸資訊。

料傳輸和處理系統:解讀器通過接收標籤發出的無線電波接收讀取資料。最常見的是被動射頻系統,當解讀器遇見RFID標籤時,發出電磁波,周圍形成電磁場,
標籤從電磁場中獲得能量啟動標籤中的微晶片電路,晶片轉換電磁波,然後發送給解讀器,解讀器把它轉換成相關資料。控制計算器就可以處理這些資料從而進行管
理控制。在主動射頻系統中,標籤中裝有電池在有效範圍內活動。

電子標籤與條碼

射頻技術和條碼有什麼不同?從概念上來
說,兩者很相似,目的都是快速準確地確認追蹤目標物體。主要的區別如下:有無寫入資訊或更新記憶體的能力。條碼的記憶體不能更改。射頻標籤不像條碼,它特
有的辨識器不能被複製。標籤的作用不僅僅局限於視野之內,因為資訊是由無線電波傳輸,而條碼必須在視野之內。由於條碼成本較低,有完善的標準體系,已在全
球散播,所以已經被普遍接受,從總體來看,射頻技術只被局限在有限的市場份額之內。目前,多種條碼控制模版已經在使用之中,在獲取資訊管道方面,射頻也有
不同的標準。

射頻技術與條碼是兩種不同的技術,有不同的適用範圍,有時會有重疊。兩者之間最大的區別是條碼是"可視技術",掃描器在
人的指導下工作,只能接收它視野範圍內的條碼。相比之下,射頻識別不要求看見目標。射頻標籤只要在接受器的作用範圍內就可以被讀取。條碼本身還具有其他缺
點,如果標籤被劃破,污染或是脫落,掃描器就無法辨認目標。條碼只能識別生產者和產品,並不能辨認具體的商品,貼在所有同一種產品包裝上的條碼都一樣,無
法辨認哪些產品先過期。

目前,在成本方面,由於組成部分不同,智慧標籤要比條碼貴得多,條碼的成本就是條碼紙張和油墨成本,而有記憶體晶
片的主動射頻標籤價格在2美元以上,被動射頻標籤的成本也在1美元以上。但是沒有內置晶片的標籤價格只有幾美分,它可以用於對資料資訊要求不那麼高的情
況,同時又具有條碼不具備的防偽功能。




電子標籤中的射頻標籤

射頻標籤就是含有物品唯一標識體系的編碼的標籤。這種唯一標識體系包括產品電子代碼EPC、泛在識別號UCODE、車輛識別代碼VIN、國際證券標識號ISIN、以及IPv6等等。


中,產品電子代碼(EPC)是全球產品代碼的一個分支,它可以識別視野之外的目標。電子產品代碼並不僅僅是一個無線電波條碼,它包含著一系列的資料和資
訊,象產地,日期代碼和其他關鍵的供應資訊,這些資訊儲存在一個小的矽片中,利用標籤,解讀器和電腦的聯網,生產者和零售商就可以隨時瞭解精確的產品和庫
存資訊。
射頻標籤根據商家種類的不同能儲存從512位元組到4兆不等的資料。標籤中儲存的資料是由系統的應用和相應的標準決定的。例如,標籤能夠
提供產品生產,運輸,存儲情況,也可以辨別機器,動物和個體的身份。這些類似於條碼中存儲的資訊。標籤還可以連接到資料庫,存儲產品庫存編號,當前位置,
狀態,售價,批號的資訊。相應的,射頻標籤在讀取資料時不用參照資料庫可以直接確定代碼的含義。
目前,射頻標籤價格根據標籤種類和應用價格從30美分到50美元不等,總的來說,用在高檔產品中的智慧標籤在50美分以上,主動標籤要貴的多,帶有複雜靈敏元件的價格在100美元以上。
射頻標籤的目的是使用一種統一標準的電子產品代碼,使產品在不同領域都能被辨識。


電子標籤中的射頻卡


前生產RFID產品的很多公司都採用自己的標準,但國際上還沒有形成統一的標準。現在,可供射頻卡使用的幾種標準有ISO10536、ISO14443、
ISO15693和ISO18OOO。應用最多的是ISO14443和ISO15693,這兩個標準都由物理特性、射頻功率和信號介面、初始化和反碰撞以
及傳輸協定四部分組成。

按照不同得方式,射頻卡有以下幾種分類:

1.按供電方式分為有源卡和無源卡。有源是指卡內有
電池提供電源,其作用距離較遠,但壽命有限、體積較大、成本高,且不適合在惡劣環境下工作;無源卡內無電池,它利用波束供電技術將接收到的射頻能量轉化為
直流電源為卡內電路供電,其作用距離相對有源卡短,但壽命長且對工作環境要求不高。

2.按載波頻率分為低頻射頻卡、中頻射頻卡和高頻射頻
卡。低頻射頻卡主要有125kHz和134.2kHz兩種,中頻射頻卡頻率主要為13.56MHz,高頻射頻卡主要為433MHz、915MHz、
2.45GHz、5.8GHz等。低頻系統主要用於短距離、低成本的應用中,如多數的門禁控制、校園卡、動物監管、貨物跟蹤等。中頻系統用於門禁控制和需
傳送大量資料的應用系統;高頻系統應用於需要較長的讀寫距離和高讀寫速度的場合,其天線波束方向較窄且價格較高,在火車監控、高速公路收費等系統中應用。


3.按調製方式的不同可分為主動式和被動式。主動式射頻卡用自身的射頻能量主動地發送資料給讀寫器;被動式射頻卡使用調製散射方式發射資
料,它必須利用讀寫器的載波來調製自己的信號,該類技術適合用在門禁或交通應用中,因為讀寫器可以確保只啟動一定範圍之內的射頻卡。在有障礙物的情況下,
用調製散射方式,讀寫器的能量必須來去穿過障礙物兩次。而主動方式的射頻卡發射的信號僅穿過障礙物一次,因此主動方式工作的射頻卡主要用於有障礙物的應用
中,距離更遠(可達30米)。

4.按作用距離可分為密耦合卡(作用距離小於1釐米)、近耦合卡(作用距離小於15釐米)、疏耦合卡(作用距離約1米)和遠距離卡(作用距離從1米到10米,甚至更遠)。

5. 按晶片分為唯讀卡、讀寫卡和CPU卡。

電子標籤中的射頻閱讀器

在RFID系統中,信號接收設備一般叫做閱讀器(或讀卡器)。閱讀器的基本功能就是提供與標籤進行資料傳輸的介面。

電子標籤中的射頻天線


RF裝置中,工作頻率增加到微波區域的時候,天線與標籤晶片之間的匹配問題變得更加嚴峻。天線的目標是傳輸最大的能量進出標籤晶片。這需要仔細的設計天線
和自由空間以及其相連的標籤晶片的匹配。本文考慮的頻帶是435MHz, 2.45 GHz 和 5.8 GHz,在零售商品中使用。

天線必須:
足夠的小以至於能夠貼到需要的物品上;
有全向或半球覆蓋的方向性;
提供最大可能的信號給標籤的晶片;
無論物品什麼方向,天線的極化都能與讀卡機的詢問信號相匹配;
具有魯棒性;
非常便宜。
在選擇天線的時候的主要考慮是:
天線的類型;
天線的阻抗:
在應用到物品上的RF的性能;
在有其他的物品圍繞貼標籤物品時的RF性能。

可能的選擇
這裏有兩種使用方式:一)貼標籤的物品被放在倉庫中,有一個便攜裝置,可能是掌上型,詢問所有的物品,並且需要它們給予資訊回饋資訊;二)在倉庫的門口安裝讀卡設配,詢問並記錄進出物品。還有一個主要的選擇是有源標籤還是無源標籤[1],[2]。

可選的天線
在435
MHz, 2.45 GHz 和 5.8
GHz頻率是用的RFID系統中,可選的天線有幾種,見下表,它們重點考慮了天線的尺寸。這樣的小天線的增益是有限的,增益的大小取決於輻射模式的類型,
全向的天線具有峰值增益0到2dBi;方向性的天線的增益可以達到6dBi。增益大小影響天線的作用距離。下表中的前三個種類的天線是線極化的,但是微帶
面天線可以使圓極化的,對數螺旋天線僅僅是圓極化的。由於RFID標籤的方向性是不可控的,所以讀卡機必須是圓極化的。一個圓極化的標籤天線可以產生
3dB 以強的信號。

阻抗問題
為了最大功率傳輸,天線後的晶片的輸入阻抗必須和天線的輸出阻抗匹配。幾十年來,設計天線與50
或70歐姆的阻抗匹配,但是可能設計天線具有其他的特性阻抗。例如,一個縫隙天線可以設計具有幾百歐姆的阻抗。一個折疊偶極子的阻抗可以是一做個標準半波
偶極子阻抗的20倍。印刷貼片天線的引出點能夠提供一個很寬範圍的阻抗(通常是40
到100歐姆)。選擇天線的類型,以至於它的阻抗能夠和標籤晶片的輸入阻抗匹配是十分關鍵的。另一個問題是其他的與天線接近的物體可以降低天線的返回損
耗。對於全向天線,例如雙偶極子天線,這個影響是顯著的。改變雙偶極子天線和一聽番茄醬的間距做了一些實際測量,顯示了一些變化,見圖4和圖5。其他的物
體也有相似的影響。此外是物體的介電常數,而不是金屬,改變了諧振頻率。一塑膠瓶子水降低了最小返回損耗頻率16%。當物體與天線的距離小於62.5mm
的時候,返回損耗將導致一個3.0
dB的插入損耗,而天線的自由空間插入損耗才0.2dB。可以設計天線使它與接近物體的情況相匹配,但是天線的行為對於不同的物體和不同的物體距離而不
同。對於全向天線是不可行的,所以設計方向性強的天線,它們不受這個問題的影響。

輻射模式
在一個無反射的環境中測試了天線的模
式,包括了各種需要貼標籤的物體,在使用全向天線的時候性能嚴重下降。圓柱金屬聽引起的性能下降是最嚴重的,在它與天線距離50mm的時候,反回的信號下
降大於20dB (見圖6)。天線與物體的中心距離分開到100—150mm的時候,反回信號下降約10
到12dB。在與天線距離100mm的時候,測量了幾瓶水(塑膠和玻璃),見圖7,反回信號降低大於10dB。
在蠟紙盒的液體,甚至蘋果上做試驗得到了類似的結果。

局部結構的影響
在使用手持的儀器的時候,大量的其他臨近物體的使讀卡機天線
和標籤天線的輻射模式嚴重失真。這可以對於2.45GHz的工作頻率計算,假設一個代表性的幾何形狀,見圖8,9,10,和自由空間相比,顯示返回信號降
低了10dB,在雙天線同時使用的時候,比預料的模式下降的更多。圖11和圖12是在一個天線前的一個橫截平面的接收信號等高線圖,顯示了嚴重的失真。在
倉庫的使用環境下,一個物品盒子具有一個標籤會有問題,幾個標籤貼在一個盒子上以確保所有時候都有一個標籤是可以看見的。便攜系統的使用有幾個天線的問
題。每個盒子兩個天線足夠適合門禁裝置探測,這樣局部結構的影響變得不再重要,因為門禁裝置的讀卡機天線被固定在倉庫的出入,並且直接指向貼標籤的物體。

距 離
RFID
天線的增益和是否使用有源的標籤晶片將影響系統的使用距離。樂觀的考慮,在電磁場的輻射強度符合UK的相關標準時,2.45GHz
的無源情況下,全波整流,驅動電壓不  於3伏,優化的RFID天線阻抗環境(阻抗 200
或300歐姆),使用距離大約是1米[3]。如果使用WHO限制[4]則更適合於全球範圍的使用,但是作用距離下降了一半。這些限制了讀卡機到標籤的電磁
場功率。作用距離隨著頻率升高而下降。如果使用有源晶片作用距離可以達到5到10米。

總 結
全向天線應該避免在標籤中使用,然而
是可以使用方向性天線,它具有更少的輻射模式和返回損耗的干擾。天線類型的選擇必須使它的阻抗與自由空間和ASIC匹配。在一個倉庫中使用天線好像是不可
行的,除非使用有源標籤,但是在任何情況下,倉庫內的天線輻射模式將嚴重失真。一個門禁系統的使用將是好的選擇,可以使用短作用距離的無源標籤。當然門禁
系統比手持的儀器昂貴,但是手持儀器工作人員需要使用它到倉庫搜尋物品,人員費用同樣昂貴。在門禁系統中,每一個物品盒子,僅需要2個而不是4個或6個
RFID標籤。

電子標籤中的射頻頻率

RFID的解讀器的接收範圍受到很多因素的影響,如電波頻率,標籤的尺寸形狀,解讀
器的能量,金屬物體的干擾,和其他射頻裝置等。總的說來,低頻被動標籤的有效接收距離在一英尺以內,對於高頻被動標籤的接收距離在三英尺左右,對於超高頻
標籤的接收距離在十到二十英尺。對於使用電池的半主動和主動標籤,解讀器可以接收到三百英尺甚至更遠的信號。對於低頻和高頻射頻,如果標籤和解讀器天線的
尺寸一樣,接收距離可以用天線的直徑乘以1.4來計算。在直徑在三十釐米以內,這條規律都適用。
和我們聽的收音機道理一樣,射頻標籤和解讀器也要調製到相同的頻率才能工作。LF、HF、UHF就對應著不同頻率的射頻。LF代表低頻射頻,在125KHz左右,HF代表高頻射頻,在13.54MHz左右,UHF代表超高頻射頻,在850至910MHz範圍之內。

在操作中有4種波段的頻率,低頻(125KHz),高頻(13.54MHz),超高頻(850-910MFz),微波(2.45GHz).每一種頻率都有它的特點,被用在不同的領域,因此要正確使用就要先選擇合適的頻率。


前,不同的國家使用的同頻率,也不相同。現在,歐洲使用的超高頻是868MHz,美國的則是915MHz.日本目前不允許將超高頻用到射頻技術中。政府也
通過調整解讀器的電源來限制它對其他器械的影響。有些組織例如全球商務促進委員會正鼓勵政府取消限制。標籤和解讀器生產廠商也正在開發能使用不同頻率系統
避免這些問題。

不同的頻率有不同的特點,因此他們的用途也就形形色色。例如,低頻標籤比超高頻標籤便宜,節省能量,穿透廢金屬物體力強,
他們最適合用於含水成分較高的物體,例如水果等。超高頻作用範圍廣,傳送資料速度快,但是他們比較耗能,穿透力較弱,作業區域不能有太多干擾,適合用於監
測從海港運到倉庫的物品。

射頻技術遇到的一個問題就是解讀器衝突,就是一個解讀器接收到的資訊和另外一個解讀器接收到的資訊發生衝突,產
生重疊。解決這個問題的一種方法是使用TDMA技術,簡單來說就是解讀器被指揮在不同時間接收信號,而不是同時,這樣就保證瞭解讀器不會互相干擾。但是在
同一區域的物品就會被讀取兩次,因此就要建立相應的系統去避免這種情況的發生。

89C51 與 RF 發射模組的問題



> 我想請問 如果我用 89C51 的 txd 的串列傳輸


> 送出一各 8 bit 的串列訊號 如後


> 給 RF 的發射模組 (TG-11 303Mhz) 發射出去


> 然後 在 接收模組上 接到 RS232 送給PC


> 然後 用 VB MSCOMM 顯示出來


> 但市不知道為什麼 接收的訊後 都一直不對 會亂跳


> 如果不接發射模組 8051 直接接到 RS232


> 一切正常  想請問 這是什麼原因...


> 我們老師不讓我們用 編解碼 IC HT12E



  空中最好不要直接用 UART , 因為裡面的訊號中會有太長的定態, 也就是在資料中, 常常會有連


  續的 0 , 或連續的 1.



  在連續的期間, 只要有一丁點的干擾, 你的資料就完蛋了! 有空可以參考一下各種軟碟機的低階


  讀寫原理, 若你要用那些的編碼最好!



  有一個 PCM  的飛機遙控器, 就是用 APPLE ][ 軟碟的編碼方式...


  若你要直接用 UART, 最好編碼後, 使之沒有連續的 1 (或 0) , 再用.  傳送資料時, 定態不要超


  過三個 bit 的時間.



  所以你可能要把一個 byte 的資料, 拆成兩 byte, 編碼插一些 bit  後, 再來送. 對方接到後, 再


  組合回來.



  同步碼, 前導碼....等等控制碼, 用資料編碼沒有用到的, 這樣接收的程式比較好寫.


  當然, 無線通訊中, 由於失誤率遠大於有線, 故一定要有檢查碼 (有線幾乎都有在核對, 更何況是無


  線呢? ) ; 以便讓收方要求重送, 還是丟棄.



  另外 51 會干擾接收模組. 可的話, 用頻譜儀看一下在接收頻率附近的那幾根諧波, 有沒有很大根,


  有沒有命中接收頻率.



  注意 RF 模組的頻寬, 以便規化適合的鮑率.


  ~~~~~~


很精闢的見解,一針見血,佩服,這位仁兄所說得情形與敝人先行實驗的結果完全吻合,實為值得參考


的文章,好好研究個中道理,就會明白問題來源,編碼與通訊協定是重要的考慮與必要的措施..


Good luck....


--


Free Tech (Win32Asm, Electronics..)


http://freetech.hypermart.net/


Updated: May-9, 2001 / 20:15



以前的 post (2)


=========================


Re:使用無線模組(類似tg11)與rs232連接,做無線單向的資料傳輸遇到的問題


>


>TG11 模組..基本上是用來傳送簡單的命令而已..類似機車的遙控發動器...


>加上編解碼 IC,可以傳送的距離非常遠..我有測試過..可達到 50 幾公尺..再遠沒測過了..


>


>至於你說的這個架構..


>基本上我也是有嘗試過...


>只不過我的架構是...


>PC->RS-232->HIN232(電壓準位轉換)->無線發射模組 ~~ 無線接收模組->8051 的 RS-232 埠


>但是..可以傳送的距離很短..二~三公尺左右..


>


>因此..基本上你的架構應該是可行的..


>只是有些地方可能你可以嘗試一下...


>我傳送資料時..大概每秒要傳送 30 幾筆左右...每筆大約 10Byte 左右..


>8051 才能穩定的接收到資料...


>我的 Baud Rate = 4800 bps...8N1...


>給你參考...希望對你有幫助...^^


>


>另外..你可以到 Google 用 "RWS-434" 關鍵字應該可以查到很多資料..


>還有..元智大學也有相關的文件..


>http://designer.mech.yzu.edu.tw/article/articles/technical/(2001-08-30)


>無線電收發模組電路製作介紹.htm


>


>



你可能要嘗試著將傳送資料的"頻率"提高...


例如..每秒傳送字串"123456789"...30-40次...


也就是說..每隔 30mS 左右..就將字串"123456789"傳送過去...


這樣可以提高資料傳送時的穩定度...



另外..二個模組不要擺太遠..一開始最好離近一點...模組需要加上天線..會比較好..


嗯..是的..接收端會一直接收到雜訊..若要排除接收到雜訊..則可以自定接收的格式...


例如..若你要傳送"ABC"這三個字元過去...則你的格式可能可以類似寫成這樣子...



$ABCk@


$-->表示前導符號...


ABC-->表示欲傳送的資料..


k-->表示檢查碼..Check Sum


@-->表示結束符號...



程式可以寫成...


當接收到的字元..是 '$' 時..


則開始接收資料..並同時儲入 Buffer..


一直接收到..結束字元 '@' 出現...或資料長度大於某個值..才結束接收..


當字串接收完成後, 再比對 Check Sum 與傳送的資料是否符合..


若符合..則表示資料接收正確...



給你參考..希望有幫助..^^


呵呵~~~看來有人碰到跟我一樣的問題喔~~我之前有做一個題目,其中也是需要無線傳輸,


於是我用的架構跟你們討論的一樣(因為這是最方便的),但是我發現,這需要將傳送的包率


達到 115200 才能夠比較容易接收到,而且為了增加傳輸的可信度,使用了


handshake+boardbast+packet 的 Protocol,因為我這是一個 server 對很多的 client 做控制,


但都是使用一樣的頻率,所以我是用 TDM 方式來做,但還是不穩,有時不到 1 秒就可以控制


有時要等一分鐘?!@@a....這種通訊系統實在是太爛了....當下我也找不出方法可以解決就畢業了....


但是現在我知道問題所在了



原因是 "0","1" 分別要用不同的狀態來表示,不能直接把 "O" 當成電位 0V 送給模組,


這樣會變成接收段無法判斷現在是什麼狀態,這麼說好了,如果是送 1 出來的話還沒什麼錯誤,


但 RS232 是 狀態0 就是 0電位,這時接收端就會接收到雜訊,運氣好的話若雜訊是在 TTL 的


0準位以下,就收到 0,但雜訊一個過大,就變成 1 了,那這時就會出錯



所以很不幸的...不能直接送 RS232 訊號給模組....所以別偷懶了~~~自己寫個 protocol 來傳吧,


我建議可以遵循紅外線的傳送方式來送,因為 PT2262 這個無線遙控器 IC 就是用這樣的方式來傳,


大家可以去 GOOGLE 找這個 SPEC.裡面有 PROTOCOL 的詳細解說或是使用 Manchester 編碼


也是可以的~~不管是用什麼方法,反正原則就是千萬不要用電位 0 來代表有意義的資料


送到無線模組~~說完了>_<||



8051動手做做看- [實作班]

不錯的 Blog..

有無線 module 的使用

http://tw.myblog.yahoo.com/jl0821/article?mid=305&sc=1

2008年10月29日 星期三

Arduino 連接 LCD1602

Arduino&LCD1602 

wxxmickey 发表于 - 2008-5-9 21:34:00

      Arduino我已经接触一段时间了,由于工作原因,不能天天玩这个,所以只能隔三岔五的搞点实验,现在把一些心得给大家分享一下。


     今天玩的是字符液晶1602,有玩过1602字符液晶的朋友都知道,这个液晶分4总线和8总线2种驱动方式(关于该液晶的详细资料,大家
可以自己搜索,这里就不做详细说明了)。我们用单片机驱动1602液晶,使用并口操作很容易就驱动起来了,但使用
Arduino板驱动1602液晶,还真有点费劲,因为他只能位操作。根据官方网站提供的例程,很容易看出他们使用的是最常用的8总线驱动方式,然而他巧
妙的使用for循环语句完成了位操作的赋值。我们来看看官方的工程代码:


int DI = 12;
int RW = 11;
int DB[] = {3, 4, 5, 6, 7, 8, 9, 10};//使用数组来定义总线需要的管脚
int Enable = 2;


void LcdCommandWrite(int value) {
 // poll all the pins
 int i = 0;
 for (i=DB[0]; i <= DI; i++) //总线赋值
{
   digitalWrite(i,value & 01);
   value >>= 1;
 }
 digitalWrite(Enable,LOW);
 delayMicroseconds(1);
 // send a pulse to enable
 digitalWrite(Enable,HIGH);
 delayMicroseconds(1);  // pause 1 ms according to datasheet
 digitalWrite(Enable,LOW);
 delayMicroseconds(1);  // pause 1 ms according to datasheet
}


void LcdDataWrite(int value) {
 // poll all the pins
 int i = 0;
 digitalWrite(DI, HIGH);
 digitalWrite(RW, LOW);
 for (i=DB[0]; i <= DB[7]; i++) {
   digitalWrite(i,value & 01);
   value >>= 1;
 }
 digitalWrite(Enable,LOW);
 delayMicroseconds(1);
 // send a pulse to enable
 digitalWrite(Enable,HIGH);
 delayMicroseconds(1);
 digitalWrite(Enable,LOW);
 delayMicroseconds(1);  // pause 1 ms according to datasheet
}


void setup (void) {
 int i = 0;
 for (i=Enable; i <= DI; i++) {
   pinMode(i,OUTPUT);
 }
 delay(100);
 // initiatize lcd after a short pause
 // needed by the LCDs controller
 LcdCommandWrite(0x30);  // set:
                         // 8-bit interface, 1 display lines, 5x7 font
 delay(64);                     
 LcdCommandWrite(0x30);  // set:
                         // 8-bit interface, 1 display lines, 5x7 font
 delay(50);                     
 LcdCommandWrite(0x30);  // set:
                         // 8-bit interface, 1 display lines, 5x7 font
 delay(20);                     
 LcdCommandWrite(0x06);  // entry mode set:
                         // increment automatically, no display shift
 delay(20);                     
 LcdCommandWrite(0x0E);  // display control:
                         // turn display on, cursor on, no blinking
 delay(20);                     
 LcdCommandWrite(0x01);  // clear display, set cursor position to zero 
 delay(100);                     
 LcdCommandWrite(0x80);  // display control:
                         // turn display on, cursor on, no blinking
 delay(20);                     
}


void loop (void) {
  LcdCommandWrite(0x02);  // set cursor position to zero 
  delay(10);                    
  // Write the welcome message
  LcdDataWrite('H');
  LcdDataWrite('o');
  LcdDataWrite('l');
  LcdDataWrite('a');
  LcdDataWrite(' ');
  LcdDataWrite('C');
  LcdDataWrite('a');
  LcdDataWrite('r');
  LcdDataWrite('a');
  LcdDataWrite('c');
  LcdDataWrite('o');
  LcdDataWrite('l');
  LcdDataWrite('a');
  delay(500);
}


实验器材:Arduino DM 一个,USB电缆一根,LCD1602一个,单芯杜邦线若干。


根据例程定义接线图如下:



大家需要注意的是,液晶根据不同的颜色不同的型号,对比度(VEE)调节电压也不同,一般都需要接个电位器进行调节,本人使用的是灰膜液晶,VEE直接接到地即可。



例程编译后,下载进Arduino,显示居然不正常,如图:



一般这种液晶上电或没有正常初始化就会出现一排黑块,但我仔细检查了程序和电路连线,也没有看出什么问题,难道液晶坏了?我又把液晶拆到我的51实验板上验证是好的,我开始怀疑是对比度调节的问题,于是把液晶拿起来一看,果然是对比度不对。


 


斜着看,就能看见“Hola
Caracila”的字样,也就是我们实验需要显示的内容。这款灰膜液晶我使用很多次,对比度调节端都是直接接地,没有任何问题,怎么用这个程序就出现这
样的问题,于是我又找到官方网站仔细探头究竟,终于被我发现问题的所在,官方网站使用的是2001的液晶(好象是这个型号),是单排显示的一排显示20个
字符, 因此这个问题就出在液晶的功能初始化设置上了,我开始没有注意,所以就直接套用程序了。


根据我们使用的液晶更改功能初始化设置,指令集如下表:




根据指令6,将官方提供的代码初始化部分:


 LcdCommandWrite(0x30);  // set:
                         // 8-bit interface, 1 display lines, 5x7 font
 delay(64);                     
 LcdCommandWrite(0x30);  // set:
                         // 8-bit interface, 1 display lines, 5x7 font
 delay(50);                     
 LcdCommandWrite(0x30);  // set:
                         // 8-bit interface, 1 display lines, 5x7 font


更改为8总线、双行显示、5x7:


 LcdCommandWrite(0x38);  // set:
                         // 8-bit interface, 2 display lines, 5x7 font
 delay(64);                     
 LcdCommandWrite(0x38);  // set:
                         // 8-bit interface, 2 display lines, 5x7 font
 delay(50);                     
 LcdCommandWrite(0x38);  // set:
                         // 8-bit interface, 2 display lines, 5x7 font


更改后编译、下载,显示结果如下:



是不是能够很清楚的看见“Hola Caracila”的字样了。


Arduino DM的数字端口只有13个,那么LCD1602就占用了10个,浪费了不少资源,对我们以后的电路扩展带来了极大的不便。于是我就可以使用该液晶的4总线驱动方式,可以节省3个数字端口出来作其他扩展。本人编写的工程代码如下:


/********************************************************************/
 
int LCD1602_RS=12;  


int LCD1602_RW=11;  


int LCD1602_EN=10;  


int DB[] = { 6, 7, 8, 9};


char str1[]="Welcome to";


char str2[]="www.DFRobot.cn";
/********************************************************************/


 


/********************************************************************/ 
void LCD_Command_Write(int command)
{
 int i,temp;
 digitalWrite( LCD1602_RS,LOW);
 digitalWrite( LCD1602_RW,LOW);
 digitalWrite( LCD1602_EN,LOW);


 temp=command & 0xf0;
 for (i=DB[0]; i <= 9; i++)
 {
   digitalWrite(i,temp & 0x80);
   temp <<= 1;
 }
 
 digitalWrite( LCD1602_EN,HIGH);
 delayMicroseconds(1);
 digitalWrite( LCD1602_EN,LOW);


 temp=(command & 0x0f)<<4;
 for (i=DB[0]; i <= 10; i++)
 {
   digitalWrite(i,temp & 0x80);
   temp <<= 1;
 }


 digitalWrite( LCD1602_EN,HIGH);
 delayMicroseconds(1);
 digitalWrite( LCD1602_EN,LOW);
}



/********************************************************************/
void LCD_Data_Write(int dat)
{
 
 int i=0,temp;
 digitalWrite( LCD1602_RS,HIGH);
 digitalWrite( LCD1602_RW,LOW);
 digitalWrite( LCD1602_EN,LOW);


 temp=dat & 0xf0;
 for (i=DB[0]; i <= 9; i++)
 {
   digitalWrite(i,temp & 0x80);
   temp <<= 1;
 }


 digitalWrite( LCD1602_EN,HIGH);
 delayMicroseconds(1);
 digitalWrite( LCD1602_EN,LOW);


 temp=(dat & 0x0f)<<4;
 for (i=DB[0]; i <= 10; i++)
 {
   digitalWrite(i,temp & 0x80);
   temp <<= 1;
 }


 digitalWrite( LCD1602_EN,HIGH);
 delayMicroseconds(1);
 digitalWrite( LCD1602_EN,LOW);
}



/********************************************************************/
void LCD_SET_XY( int x, int y )
{
  int address;
  if (y ==0)    address = 0x80 + x;
  else          address = 0xC0 + x;
  LCD_Command_Write(address);
}



/********************************************************************/
void LCD_Write_Char( int x,int y,int dat)
{
  LCD_SET_XY( x, y );
  LCD_Data_Write(dat);
}



/********************************************************************/
void LCD_Write_String(int X,int Y,char *s)
{
    LCD_SET_XY( X, Y );    //设置地址
    while (*s)             //写字符串
    {
      LCD_Data_Write(*s);  
      s ++;
    }
}


 


/********************************************************************/
void setup (void)
{
  int i = 0;
  for (i=6; i <= 12; i++)
   {
     pinMode(i,OUTPUT);
   }
  delay(100);
  LCD_Command_Write(0x28);//4线 2行 5x7
  delay(50);
  LCD_Command_Write(0x06);
  delay(50);
  LCD_Command_Write(0x0c);
  delay(50);
  LCD_Command_Write(0x80);
  delay(50);
  LCD_Command_Write(0x01);
  delay(50);


}



/********************************************************************/
void loop (void)
{
   LCD_Command_Write(0x02);
   delay(50);
   LCD_Write_String(3,0,str1);//第1行,第4个地址起
   delay(50);
   LCD_Write_String(1,1,str2);//第2行,第2个地址起
   while(1);
}
根据程序定义接线图如下:




编译后,下载进Arduino,显示如图:



这个代码容易移植,以后需要用到显示的地方,都可以直接引用。


找到了Arduino语言关于字符液晶4总线的库函数,使用该库函数程序就变的相当简洁了。函数例程如下:


#i nclude <LCD4Bit.h>
LCD4Bit lcd = LCD4Bit(1);   //传递参数1和2,表示选择1线和2线字符液晶。
lcd.clear();//清屏
delay(1000);//延时
lcd.printIn("arduino");//显示字符串
lcd.cursorTo(2, 0);  //line=2, x=0
lcd.leftScroll(20, 50);//將LCD上现有的文字以50ms的速度向左移动20个字符位


注意:若使用LCD4Bit.h的话,RW需要接地.


下载“LCD4Bit.h”

http://ricky.roboticfan.com/

這是一個大陸很牛的 機器人 博士的 Blog



http://ricky.roboticfan.com/

基于神经元的两轮自平衡机器人

基于神经元的两轮自平衡机器人

Ricky 发表于 - 2008-9-28 1:11:00

前言:


2006年就想做一个2轮自平衡小车,但是一直事情比较多,也没找到合适的元件.一直拖到现在. 这当中其实也试了不少其它的硬件,但是都不是很理想. 现在终于把硬件配齐了. 当然花费也不少.  


现在的DIYER比我们当时可是幸福多了,不但可选择的产品多了很多, 价格也是每年都在跌.  当初2个电机就花了600多,还不带编码器和驱动器, 而控制板也不便宜, 也要300多,更要紧是用起来不方便. 不像现在的Arduino板子, 样例超多。下面买的这些传感器和控制器都有相关的代码,拿来就能用。


这个制作的就是想要试试两轮的自平衡控制系统, 在硬件上和其它的双轮自平衡小车没有太大区别,唯一的区别是在其控制器上. 主要是想看看用神经元网络进行自学习平衡,会有什么样的效果. 因为是实验性质,所以最后的效果如何还不能确定,只是原理上是行得通的.


硬件部分


先看看硬件的 零件清单:


1) Devantech 驱动系统 


2) 5自由度传感器,3轴加速度,2轴陀螺仪


3) Arduino控制板


4) 电池, 2个7.2V 3900mA串联


5) CMPS03 电子罗盘


6) 无线传输模块APC220 




终于让Arduino和MD23通信了 i2c

查阅了无数的论坛, 终于发现原来Arduino的I2C通信无需所谓的上拉电阻。可以直接连接到i2C设备,但是唯一的前提就是,需要共地,或者共电源。


再将Arduino的GND和MD23的输出GND连接后,MD23就乖乖的听Arduino的指挥。要你往前转,你就不敢往后。哈哈!


关于URM37系列超声波使用中的问题解答

http://bbs.roboticfan.com/topic.aspx?topicid=5007

一.URM37V1.0-1.1

二.URM37V3.0-3.2

Q:请问怎样设置模式2的距离比较值,我打算的比较值是15CM?

A: 模块EEPROM地址00写0x0F;(0x0F是15cm距离的10进制转16进制的低8位)

模块EEPROM地址01写0x00;(0x00是15cm距离的10进制转16进制的高8位)

模块EEPROM地址02写0xaa;(0xaa是模块模式2自动测量模式的命令)

Q:按使用手册的图接好后,V3.2伴侣无返回数据显示,只看到硬件上绿灯在亮,这是怎么回事?

A:1.检查电源是否接好,模块上绿灯亮表示电源正常.

2.检查数据线是否接正确(模块8脚到串口母头3脚,模块9脚到串口母头2脚,模块2脚到串口母头5脚),线是否导通.

3.检查软件串口选择是否正确,串口是否打开.

4.检查电脑串口是否正常.


1)我想采用第一串口被动模式测距,如何接收返回距离?有具体的汇编程序参考一下么?

答:返回指令为4个字节的数据,在十六进制下,为 0x22 0x11 0x12 0x45。 这里0x22表示返回距离读数,0x11代表距离的高位,0x12代表距离的低位,0x45是校验位,其值等于前面数据的和=22 11 12=45,具体表示就是0x45。

2)另外那个角度问题,我没有买那个驼机,我就想让它直接测前面的距离,角度应该怎样写呢?

答:角度数据可以任意写。

3)URM37 V3 超声波传感器使用第二功能要怎么配置?
答: 需要写入比较距离值
串口发送
0x44 0x00 低距离 SUM
0x44 0x01 高距离 SUM
0x44 0x02 0xaa 0xf0

如果不用开关模式,就直接写0x44 0x02 0xaa 0xf0


4).我想设置为“PWM被动控制模式”,命令为0x44+0x22+0xaa+SUM,执 行命令结果也为“有效”!使用的是rm37 V3.2伴侣! 当我执行读指令0x33+0x22+0x00+SUM时,返回值为0x33+0x22+0x00+SUM,设置自动模式,然后验证也一样!问题:为啥我没 有写进去?是不是urm 37 V3.2不支持这个功能? 串口是打开的,电路也检查了. 谢谢,请指教!

答:您需要写入 0x44 +0x02+0xBB+SUM


Arduino扩展板使用之舵机篇

舵机,又称伺服马达,是一种具有闭环控制系统的机电结构。舵机主要是由外壳、电
路板、无核心马达、齿轮与位置检测器所构成。其工作原理是由控制器发出PWM(脉冲宽度调制)信号给舵机,经电路板上的IC处理后计算出转动方向,再驱动
无核心马达转动,透过减速齿轮将动力传至摆臂,同时由位置检测器(电位器)返回位置信号,判断是否已经到达设定位置,一般舵机只能旋转180度。

    舵机有3根线,棕色为地,红色为电源正,橙色为信号线,但不同牌子的舵机,线的颜色可能不同,请大家注意。



        舵机的转动位置是靠控制PWM(脉冲宽度调制)信号的占空比来实现的,标准PWM(脉冲宽度调制)信号的周期固定为20ms,占空比0.5~2.5ms 的正脉冲宽度和舵机的转角-90°~90°相对应。注意,由于舵机牌子不同,其控制器解析出的脉冲宽度也不同,所以对于同一信号,不同牌子的舵机旋转的角度也不同。



        下面我们用Arduino控制配合扩展板控制3个不同牌子的舵机。首先了解一下扩展板的一些特性。



       
本实验需要扩展板一个,舵机3只。由于只是做演示用,舵机5v电源就暂时使用Arduino上的,但不可长时间使用,因为多个舵机转动时电流比较
大,Arduino上的电源芯片可能会因过热而保护甚至损坏,电源选择跳线需要接到外部供电,不可使用USB供电。



Arduino官方网站给我们提供了一个很好的舵机调用函数库(舵机函数库下载地址),可以让Arduino任意IO口控制舵机,下列代码使用Arduino的编译环境中的串口监视器发送数据来控制舵机旋转角度。


实验代码如下:


#i nclude <Servo.h>


Servo servo1;
Servo servo2;
Servo servo3;


void setup()
{
  servo1.attach(8);//定义舵机控制口
  servo1.setMaximumPulse(2200);//定义旋转的时间
  servo2.attach(9);
  servo2.setMaximumPulse(2200);
  servo3.attach(10);
  servo3.setMaximumPulse(2200);
  Serial.begin(19200);//设置波特率
  Serial.print("Ready");
}


void loop()
{
  static int v = 0;


  if ( Serial.available()) {
    char ch = Serial.read();//读取串口数据


    switch(ch) {
      case '0'...'9':
        v = v * 10 + ch - '0';//字符换算成10进制
        break;
      case 'a'://如果数据后带a,则表示是servo1的数据,比如串口发送85a
        servo1.write(v);
        v = 0;
        break;
      case 'b'://如果数据后带b,则表示是servo2的数据,比如串口发送90b
        servo2.write(v);
        v = 0;
        break;
      case 'c'://如果数据后带c ,则表示是servo3的数据,比如串口发送180c
        servo3.write(v);
        v = 0;
        break;
    }
  }


  Servo::refresh();//刷新
}


本实验代码在Arduino 0011版编译环境中编译通过,在Arduino 0012版编译环境中没有编译通过,不知何故?

Arduino&GP2D12红外线测距传感器

最近忙生活琐事,很少搞这些小东东,今天闲了一下就发表一个Arduino控制GP2D12的小实例,仅供大家参考!


器材:Arduino开发板,GP2D12,1602字符液晶,连接线若干。


Arduino开发板和1602字符液晶我就不多介绍了,前面都提到过。


GP2D12是日本SHARP公司生产的红外距离传感器,价格便宜,测距效果还不错,主要用于模型或机器人制作。


技术规格如下:


探测距离:10-80cm

工作电压:4-5.5V

标准电流消耗:33-50 mA

输出量:模拟量输出,输出电压和探测距离成比例



从曲线图中我们可以看出,输出电压并非是线性的,所以这个测距也就只能测个大概,如果要精度高的话就需要做非线性校正,这里我们就不讨论这个问题了。


实验原理:


GP2D12根据距离的远近输出相应的电压,经Arduino开发板0号模拟口输入,转换成数字量,根据公式计算得到需要显示的数据。


实验原理图:



实验实物图:



没有障碍物,显示范围超出。



有障碍物时显示测量距离。



经实验,需要在GP2D12的电源端加个10UF以上的电解电容,稳定供电电压,以保证输出模拟电压更稳定。


实验代码:


/********************************************************************/
int GP2D12=0;


int ledpin = 13;


int LCD1602_RS=12;  


int LCD1602_RW=11;  


int LCD1602_EN=10;  


int DB[] = {6, 7, 8, 9};



char str1[]="www.DFRobot.cn";


char str2[]="Renge:00cm";


char str3[]="Renge Over";
/********************************************************************/


 


/********************************************************************/ 
void LCD_Command_Write(int command)
{
 int i,temp;
 digitalWrite( LCD1602_RS,LOW);
 digitalWrite( LCD1602_RW,LOW);
 digitalWrite( LCD1602_EN,LOW);


 temp=command & 0xf0;
 for (i=DB[0]; i <= 9; i++)
 {
   digitalWrite(i,temp & 0x80);
   temp <<= 1;
 }
 
 digitalWrite( LCD1602_EN,HIGH);
 delayMicroseconds(1);
 digitalWrite( LCD1602_EN,LOW);


 temp=(command & 0x0f)<<4;
 for (i=DB[0]; i <= 10; i++)
 {
   digitalWrite(i,temp & 0x80);
   temp <<= 1;
 }


 digitalWrite( LCD1602_EN,HIGH);
 delayMicroseconds(1);
 digitalWrite( LCD1602_EN,LOW);
}



/********************************************************************/
void LCD_Data_Write(int dat)
{
 
 int i=0,temp;
 digitalWrite( LCD1602_RS,HIGH);
 digitalWrite( LCD1602_RW,LOW);
 digitalWrite( LCD1602_EN,LOW);


 temp=dat & 0xf0;
 for (i=DB[0]; i <= 9; i++)
 {
   digitalWrite(i,temp & 0x80);
   temp <<= 1;
 }


 digitalWrite( LCD1602_EN,HIGH);
 delayMicroseconds(1);
 digitalWrite( LCD1602_EN,LOW);


 temp=(dat & 0x0f)<<4;
 for (i=DB[0]; i <= 10; i++)
 {
   digitalWrite(i,temp & 0x80);
   temp <<= 1;
 }


 digitalWrite( LCD1602_EN,HIGH);
 delayMicroseconds(1);
 digitalWrite( LCD1602_EN,LOW);
}



/********************************************************************/
void LCD_SET_XY( int x, int y )
{
  int address;
  if (y ==0)    address = 0x80 + x;
  else          address = 0xC0 + x;
  LCD_Command_Write(address);
}



/********************************************************************/
void LCD_Write_Char( int x,int y,int dat)
{
  LCD_SET_XY( x, y );
  LCD_Data_Write(dat);
}



/********************************************************************/
void LCD_Write_String(int x,int y,char *s)
{
    LCD_SET_XY( x, y );    //设置地址
    while (*s)             //写字符串
    {
      LCD_Data_Write(*s);  
      s ++;
    }
}


 


/********************************************************************/
void setup (void)
{
  int i = 0;
  for (i=6; i <= 13; i++)
   {
     pinMode(i,OUTPUT);
   } 
  LCD_Command_Write(0x28);//4线 2行 2x7
  delay(50);
  LCD_Command_Write(0x06);
  delay(50);
  LCD_Command_Write(0x0c);
  delay(50);
  LCD_Command_Write(0x80);     
  delay(50); 
  LCD_Command_Write(0x01);
}



/********************************************************************/
void loop (void)
{
   float temp;
   int val;
   char i,a,b;
   LCD_Command_Write(0x02);
   delay(50);
   LCD_Write_String(1,0,str1);
   delay(50);
   LCD_Write_String(3,1,str2);
   delay(50);
   while(1)
    {   
      val = analogRead(GP2D12);
      temp=val/5.8;//改变被除数,可以减小一点误差。
      val=95-temp;//由于GP2D12的输出电压与距离成反比,所以需要用一个常量相减,改变这个常量,可以减小一点误差。
      if(val>80)
        {
          LCD_Write_String(3,1,str3);      
        }
      else
        {
          LCD_Write_String(3,1,str2);
          a=0x30+val/10;
          b=0x30+val%10;      
          LCD_Write_Char(9,1,a);
          LCD_Write_Char(10,1,b);  
        }   
      delay(500);
     }
}

2008年10月28日 星期二

2008年10月27日 星期一

Running TX433 and RX433 RF modules with AVR microcontrollers

http://winavr.scienceprog.com/example-avr-projects/running-tx433-and-rx433-rf-modules-with-avr-microcontrollers.html

RF Link between two Arduinos

http://dma.ucla.edu/senselab/node/389<br /><br />#include <softwareserial.h><br /><br />/* <br />Read a pushbutton and send a value<br />to another microcontroller.  <br />*/<br /><br />#define rxPin 2<br />#define txPin 3<br />#define buttonPin 12<br />#define ledPin 13<br /><br />// set up a new serial connection for communicating with RF transmitter <br />// (this also frees up Arduino's built in serial port for PC communication)<br />SoftwareSerial rfSerial =  SoftwareSerial(rxPin, txPin);<br /><br />byte val = 0;<br />byte onState = 99;<br />byte offState = 98;<br /><br />void setup() {<br />  pinMode(buttonPin, INPUT);    // declare pushbutton as input<br />  pinMode(ledPin, OUTPUT);    // declare led as output<br />  rfSerial.begin(2400); // our RF Link is a 2400 baud model (make sure you check this!)<br />  // start by blinking high and then low so we can tell the setup routine has been completed<br />  digitalWrite(ledPin,HIGH);<br />  delay(1000);<br />  digitalWrite(ledPin,LOW);<br />}<br /><br />void loop(){<br />  val = digitalRead(buttonPin);<br />  if ( val == HIGH ) {         // check if the input is HIGH (button pressed)<br />    rfSerial.print(onState, BYTE); // OK send it to the RF transmitter<br />  } else {<br />    rfSerial.print(offState, BYTE);  // send a 0 through the transmitter<br />  }<br />}<br /></softwareserial.h></pre><p>
OK and here is the receiver code which goes on Arduino #2. Once again
I'm using the SoftwareSerial library, but this time it's necessary
because I need to use the usual Serial port to send data up the USB to
the computer. The loop is filled with a little extra code to avoid
sending the same byte over and over and over. A byte is only sent if it
is new (changes from "off" byte to "on" byte for instance and no data
would be sent again until it goes back "off").</p>
<pre>#include <softwareserial.h><br /><br />/* <br />Read from a RF Link receiver module<br />and get the data into a computer. <br />*/<br /><br />#define rxPin 2<br />#define txPin 3<br />#define ledPin 13<br /><br />// set up a new serial connection for communicating with RF receiver <br />// (this also frees up Arduino's built in serial port for PC communication)<br />SoftwareSerial rfSerial = SoftwareSerial(rxPin, txPin);<br /><br />char prevChar = 0;<br /><br />void setup() {<br /> // set up the input and output pins<br /> pinMode(rxPin, INPUT); // set up pins for serial comm. with RF receiver<br /> pinMode(ledPin, OUTPUT);<br /> // initialize serial comm<br /> rfSerial.begin(2400); // begin serial connection with RF Link unit<br /> Serial.begin(2400); // begin serial communication over USB to the computer<br /> // blink LED on and then off just to let us know the setup routine is complete<br /> digitalWrite(ledPin,HIGH); // turn on LED<br /> delay(1000);<br /> digitalWrite(ledPin,LOW); // turn off LED<br />}<br /><br />void loop(){<br /> char someChar = '0'; <br /> someChar = rfSerial.read(); // read whatever the RF Link has to offer<br /> // print out the character: <br /> if (someChar!=prevChar) { // only print out new data (don't print 0 a billion times in a row)<br /> Serial.print(someChar, BYTE); // send data to computer<br /> prevChar=someChar; // store what we just read<br /> }<br />}<br /></softwareserial.h>

2008年10月22日 星期三

逐步解說:Hello World:智慧型裝置的 COM Interop 範例

課程名稱:Windows CE/Windows Mobile應用程式設計

Windows CE/ Windows Mobile 應用程式設計 訓練課程>傳識資訊
課程名稱:Windows CE/Windows Mobile應用程式設計

開發SOAP

WinCE Web Server

WinCE Web Services - wince mobile 的嵌入式软件开发专栏 - CSDNBlog
新一篇: 制作在wince系统上的安装程序 | 旧一篇: EVC中如何添加库文件?
支持基本的功能,就是 Web Server ,而且还有 FTP Server
你可以在网络部分的服务器部分里找到,具体的你需要看PB的帮助!
另外,第三方的也有,不过你先把WinCE自带的Web Server 搞懂比较好!
下面,我简要下一下配置方法:
裁减操作系统时,你定位到以下路径:
Communication Services and Networking/Servers/Web Server (HTTPD)
注意,Web Server 底下还有 Active Server Pages (ASP) Support
编译,下载目标系统。
一般来说,WinCE启动后自动自动了 Web Server ,假如你的WinCE设备的IP地址为192.168.1.100
那么,你在PC上可以访问 http://192.168.1.100
如果成功,可以看到它默认的主页。
至于,停止、启动Web 服务,你可以用 services start httpd0:
停止服务:services stop httpd0:
查看当前服务状态(包括其它服务): services list
以上命令是在WinCE中的命令行中输入的,你在裁减时需要加载这个组件。
具体的你查PB帮助吧!

以原始程式碼建置 Windows CE .NET 的 XML Web Services

2008年10月20日 星期一

device and handhelds and microsoft windows ce

device and handhelds and microsoft windows ce Resources | TechRepublic


http://search.techrepublic.com.com/search/device+and+handhelds+and+microsoft+windows+ce.html

Enabling FILECTL ActiveX component on Mobile Devices

Enabling FILECTL ActiveX component on Mobile Devices | SandboxM

http://www.sandboxm.com/enabling-filectl-on-devices/

PocketPC


http://www.pocketpcjunkies.com/Uwe/Forums.aspx/wince-vc/200810/1

DllRegisterServer()

Registaration of activex failed in wince5.0

http://www.bokebb.com/dev/english/1951/posts/195130668.shtml

创建 ATL ActiveX 控件

eMbedded Visual C++ 4.0

http://www.microsoft.com/downloads/details.aspx?familyid=1DACDB3D-50D1-41B2-A107-FA75AE960856&displaylang=en

G6K4D-FX9P2-RMHJ9-WR4YV-3GF9B

2008年10月19日 星期日

2008年10月18日 星期六

Robofun 台灣機器人討論區

Robofun 台灣機器人討論區 是台灣
最大的機器人討論區

ScribeFire

ScribeFire 是一個 FireFox 的 Plug-in

for Blog

非常好用..

2008年10月17日 星期五

URM V3.2 ultrasonic sensor to Arduino board

http://www.yerobot.com/forum/viewtopic.php?f=5&t=7&p=10&sid=72f4c2fbb84bf3

This article gives a sample how to interfacing URM V3.2 ultrasonic sensor to Arduino board. Of couse, our Roboduino works as well.

1) Change URM V3.2 Mode to PWM output

To connect URM V3.2 to Arduino type board, you have to change the URM V3.2 mode to PWM output. To do that, you need send 0x44, 0x02,0xbb, 0x01 to the sensor through serial connection. You can use URM helpmate V1.2 to do that.

http://www.yerobot.com/download/software/URMV3.2HelpMate.rar

All URM V3.2 shipped after 15th August 2008, the PWM function will be enabled before shipping.
2) Connect URM V3.2 to Arduino

Here is a connection diagram:

Attachment:
Roboduino-URM.jpg
Roboduino-URM.jpg [ 122.45 KiB | Viewed 250 times ]



V3.2 Arduino

Pin2 GND
Pin1 Pin12
Pin4 Pin11
Pin6 Pin10
Pin7 Pin9


Last edited by ricky on Sat Sep 13, 2008 4:31 pm, edited 7 times in total.

Top
Profile

ricky
Post subject: Re: Interfacing URM Ultrasonic Sensor to Arduino (Roboduino)
PostPosted: Tue Jul 29, 2008 10:27 pm
Offline

Joined: Sat Jul 12, 2008 3:50 pm
Posts: 17
Here is the Arduino code:

Code:
/* URM V3.2 Ultrasonic Sensor
*------------------
*
* Reads values from an ultrasonic sensor (5m sensor)
* and writes the values to the serialport.
* Help, please goto www.yerobot.com
* First written by Ricky on 2008 08 13
* Last modified by Crystal on 2008 09 27
*/

int ultraData = 11; // Ultrasonic data pin
int ultraTrigger = 10; // Ultrasonic trigger pin
int ultraEnable=9; //Ultrasonic enable pin
int ultraPower=12;//Ultrasonic power pin
int val = 0;
int ultraValue = 0;
int timecount = 0; // Echo counter
int ledPin = 13; // LED connected to digital pin 13


void setup() {
Serial.begin(9600); // Sets the baud rate to 9600
pinMode(ledPin, OUTPUT); // Sets the digital pin as output
pinMode(ultraPower, OUTPUT);
digitalWrite(ultraPower, HIGH); // Set to HIGH to provide 5V power
pinMode(ultraEnable, OUTPUT);
digitalWrite(ultraEnable, HIGH); // Set Enable Pin to HIGH
delay(200); //Give sensor some time to start up --Added By crystal from Singapo, Thanks Crystal.
}

void loop() {
ultraValue = 0;
digitalWrite(ledPin,LOW);
timecount = 0;
val = 0;
pinMode(ultraTrigger, OUTPUT); // Switch signalpin to output

/* Send low-high-low pulse to activate the trigger pulse of the sensor
* -------------------------------------------------------------------
*/
digitalWrite(ultraTrigger, HIGH); // Send low pulse
delayMicroseconds(500);

digitalWrite(ultraTrigger, LOW); // Send low pulse
delayMicroseconds(200);

digitalWrite(ultraTrigger, HIGH); // Send low pulse
delayMicroseconds(200);
/* Listening for echo pulse
* -------------------------------------------------------------------
*/

pinMode(ultraData, INPUT); // Switch signalpin to input



do // Loop until pin reads a high value
{
val = digitalRead(ultraData);
}while(val == HIGH);

do // Loop until pin reads a high value
{
val = digitalRead(ultraData);
timecount ++; // Count echo pulse time
delayMicroseconds(50);
}while(val == LOW);


/* Writing out values to the serial port
* -------------------------------------------------------------------
*/

ultraValue = timecount; // Append echo pulse time to ultraValue


Serial.println(ultraValue,DEC);
Serial.flush();



/* Lite up LED if any value is passed by the echo pulse
* -------------------------------------------------------------------
*/

if(ultraValue > 20){
digitalWrite(ledPin, HIGH);
}

/* Delay of program
* -------------------------------------------------------------------
*/

delay(50);
}

URM37V3.0超聲波模塊S51例程

http://dreamfactory.home.sunbo.net/show_hdr.php?xname=DA14701&dname=FKBSS11&xpos=68

2008年10月16日 星期四

Active Server Pages: Open, Read and Create files

Active Server Pages: Open, Read and Create files

http://www.asptutorial.info/learn/OpenReadCreate-files.html

如何設計 ISAPI

嵌入式操作系统Windows CE研究

嵌入式操作系统Windows CE研究

http://www.gd-emb.org/detail/id-52454.html

Embedded Web Server For Windows CE .NET

Embedded Web Server For Windows CE .NET

http://www.windowsfordevices.com/articles/AT5506351786.html

Arduino RF Link

國外使用 Arduino 及 RF Module


Arduino RF Link




I bought two RF links from SparkFun a while back (a 315Mhz and a 434Mhz).
A few nights ago, I actually hooked one of them up and successfully ran
a test program between two Arduinos. Here's the code for the receiver:

#define rxPin 2<br />#define txPin 3<br /><br />byte incomingByte = 0;<br /><br />SoftwareSerial rfSerial = SoftwareSerial(rxPin, txPin);<br /><br />void setup() {<br /> pinMode(rxPin, INPUT);<br /> pinMode(txPin, OUTPUT);<br /> rfSerial.begin(2400);<br /> Serial.begin(2400);<br />}<br /><br />void loop() {<br /> incomingByte = rfSerial.read();<br /> Serial.println(incomingByte, DEC);<br /> incomingByte = 0;<br />}</pre>And for the transmitter:<pre>#define rxPin 2<br />#define txPin 3<br /><br />SoftwareSerial rfSerial = SoftwareSerial(rxPin, txPin);<br />byte outgoingByte = 0;<br /><br />void setup() {<br /> pinMode(rxPin, INPUT);<br /> pinMode(txPin, OUTPUT);<br /> rfSerial.begin(2400);<br /> Serial.begin(2400);<br />}<br /><br />void loop() {<br /> Serial.println(outgoingByte, DEC);<br /> rfSerial.println(outgoingByte, BYTE);<br /> outgoingByte++;<br /> delay(10);<br />}
Pretty
simple. It just sends the numbers 0-255 repeatedly and prints them out
to serial (use the serial monitor to watch the bytes fly by). The part
that threw me for awhile was that the receiver has two data pins. I
read somewhere
(*ahem* SparkFun KLP Walkthrough Tutorial) that only one of them was
useful (pin 2) and the other (pin 3) was optional and could be tied to
ground. After banging my head against the wall, I looked at the
receiver data sheet which clearly shows that the data pins should be
tied together! Once I corrected my wiring, it worked beautifully. So,
last but not least, a photo.



2008年10月15日 星期三

VOICEME 數位你的生活 (聲控 Robot)

VOICEME 數位你的生活 (聲控 Robot) - 科技新知與酷炫新品 - Robofun 機器人論壇 - Powered by Discuz

VOICEME 數位你的生活 (聲控 Robot)




世界首富BillGates他那全數位化的豪宅是否曾令你心神嚮往?



從小時候到現在就一直希望能擁有一個全數位化的生活,當然,隨身的手機、PDA到數位相機是最基本配件,但生活中的大小事似乎全掌握在那好幾支的大小搖控器手上,雖然說有貴貴的萬用或數位搖控器可以選擇,但總覺得少了那麼一點帶有未來的感覺。







VoiceMe產品的誔生給了我們這些平民百姓一個簡單生活數位化的方式,透過聲控就可以輕鬆的操控您家中的各種數位化產品喔,打開電視,用說的,切到HBO也是用講的,開冷氣、關音響、調音量任何可以用搖控器控制的都可以交給VoiceMe自動化完成。





產品包裝,全英文的,可能做外銷的比較多吧。



VoiceMe是利用sensory的聲音辨識技術為核心,經小弟實機測試效果真的很不錯,手冊上寫的是利用一組觸發指令,但我拿到的卻要兩組,也許是一
組比較容易誤判吧,他的玩法相當的簡單,先錄兩組所謂的觸發指令(小弟是用R2及D2)再加上一個『指令』即可完成一組聲控的組合,系統提供同時30組的
指令可供使用,每一組指令最多可指定三個動作喔。





內附中文手冊,除了觸發指令兩組和說明書稍有出入之外,說明還算詳盡。



VoiceMe動作的指定是利用原有的搖控器對他進行紅外線訊號的發射,他會聰明且忠實的記錄下來,再加上全中文語音的引導,簡單設定輕鬆上手。





酷酷的飛碟圓盤造型相當具有質感,我買的是鐵灰色的不錯看,但黄色的好像也很讚。



三方向的紅外線發射器,再加上紅外線本來就有的反射原理,讓您的VoiceMe擺在哪都隨意。



重頭戲來了,VoiceMe提供的功能看似簡單但運用上卻相當的彈性、方便,比如說我希望一進房間一個指令就能幫我打開電視並切到Discovery,我
就可以說『 R2 D2 電視』,則VoiceMe則會依序傳送 打開電視電源、傳送1 9切到探索頻道(三個動作),然後再說 『R2 D2
冷氣』則冷氣就會自動開啟電源了,30個指令x3個動作也就是說您可以組合多達90組的動作喔,簡單的設定就實現了數位家庭的夢想,您還等什麼呢?全自動
的未來家居生活VoiceMe讓您也可以輕鬆的擁有。



產品手冊上寫的雖然是聲控搖控器,但我認為叫他是一台Robot也不為過,真實的R2D2買不到沒關係,但VoiceMe做為您的管家機器人也很不錯,有機會您一定要試試。

註:國產的優秀產品值得用力給他支持喔。

      此文同步發表在 http://www.mobile01.com 前進數位家庭版

製造商在台灣也有賣VoiceMe呀! 我就是打電話去買的啊!

他們的網站是www.hotech.com.tw

各位大大可以參考看看


拍的真棒

國產手機操縱者聯發科的秘密

 

國產手機操縱者聯發科的秘密 

 
《環球企業家》記者 黃河
 
榮秀麗沒有壓抑住自己的火爆脾氣,拍著桌子沖對面四個聯發科技(MediaTek Inc,以下簡稱聯發科)的人大聲指責起來。
 
"
為什麼不允許我們用展訊科技的產品,只能用你們聯發科的?"
 
"
我們也只是'奉旨行事',請您諒解。"
 
此刻是2006年年中,北京天宇朗通通信設備有限責任公司和它的手機晶片方案提供夥伴聯發科剛開始合作兩周。天宇朗通的總經理榮秀麗無法接受臺灣合作夥伴的英代爾式作風——凡是其客戶,絕不允許採用競爭對手的產品。天宇朗通以前採用的是中國大陸的展訊和美國模擬器件公司(ADI)的手機晶片解決方案。
 
但榮很快便發現,自己對聯發科的一攬子手機晶片解決方案"上癮了"。有了聯發科的方案,天宇朗通最短在3個月就可以完成一台新機從設計、研發、生產到最後擺上櫃檯的全過程,而這一週期在國外成熟的手機廠商那裏,通常需要1年半。
 
聯發科承諾的質量可以與諾基亞比肩的說法,看起來也非誇張。天宇朗通的低端產品返修率現在約為4%,中高端為7%-8%
 
即便問題來了,聯發科的服務回應堪稱迅速。在榮秀麗去聯發科的北京辦公室提出了一大堆要求和問題後,他以為對方起碼要在一兩天後,才能給回復。但就在她打車回單位的路上,就接到了數十個電話,開頭第一句話都是,"老闆剛才指示我,讓我馬上幫你解決問題"到榮下車後,所有問題基本都得到解決。
 
運氣看起來不能再好了。到了20068月份,天宇朗通的"天語/K-Touch"品牌手機的出貨量已達到80萬部——僅僅5個月前,這家公司才拿到手機生產牌照(此前它是一家手機分銷商)。到今年11月份,其在中國市場的份額達到了4%-5%,僅次於聯想移動的6.2%,在國產手機中排名第二。而其銷售額,據公開資料也已經超過12億元人民幣。如今,天宇朗通已成為聯發科在內地手機市場的最大合作夥伴。
 
曾令中外手機製造商撓頭不已的中國龐大的"黑手機"產業更是對聯發科感激涕零。一年前你在中國任何一個城市的電腦城裏逛一圈,就會發現若干外形似曾相識的"著名品牌"手機,比如"Song Ericsson""Motrola"或者"三新",還有一些你從未聽過的品牌,比如"野馬""東方龍"。它們中的絕大部分,都是聯發科的晶片套上了暢銷手機型號的外殼。黑手機一年前一度在中國市場佔據1/5的份額,其"過人之處"便是能在挑中市面上新品機型的外殼後,3個月內便實現銷售和回款。
 
業內流傳的說法是,中國內地有1億台左右的國產手機都採用了聯發科的晶片解決方案,而整個國產手機的出貨量今年也不過1.8億台。如果再考慮到所有在中國生產的手機(包括外資品牌)已經佔據了全世界產量的45%左右,聯發科的全球地位已經無庸置疑——根據聯發科自身的資料,其在手機晶片領域全球排名僅次於高通(Qualcomm)和德州儀器(TI),位元列第三。
 
投資者對此局面笑顏逐開:聯發科的銷售額過去五年來實現爆炸式增長,僅2007年的前三季度營收就達18億美元。聯發科在臺灣股市上的市值也飆升至6000億元新臺幣(185億美元),股價從三年前不到250元新臺幣直漲到現在的650元,一度是臺灣股王。當地輿論則將聯發科盛讚為自鴻海以來新一代臺灣企業的代表,正在"終結美國大廠獨霸局面"。在內地,聯發科的創始人蔡明介則被業內冠以更具爭議性的"黑手機之父"
 
這並不妨礙聯發科贏得對手的尊敬。"在聯發科面前,我們還只能算'小弟'"。展訊科技的總裁武平對《環球企業家》說。展訊總部位於上海,是內地第一家在納斯達克上市的晶片設計公司。
 
而做到這一切,聯發科幾乎用的是火箭般的速度:它進入手機晶片領域,至今不過只有7年光景;進入內地市場,也只有3年。
 
身材瘦小、不善言辭的蔡明介並不認為這是多麼值得誇耀的成就。"我們只是為這個行業提供了應有的附加價值",他告訴本刊記者,"我不是什麼'手機教父',也千萬不要用'統治力'這個詞。"
 
這是他第一次接受內地媒體的專訪。
 
培養手機業的"戴爾"
 
2000年,聯發科準備進軍手機晶片行業時,沒有人看好蔡明介。
 
工程師出身的蔡明介曾被臺灣業界稱為"一代拳王"——聯發科從光存儲晶片起家,現在全球70%DVD機裏都是聯發科提供的控制晶片。在積體電路和晶片設計行業,大多數公司都是靠一款產品吃飯。人們都不相信聯發科能打破這一點。
 
直到2003年,聯發科都沒有進入業內主要玩家的法眼。當年一位元跨國半導體公司臺灣地區業務高階主管彙報亞太總部競爭者消息,"要注意聯發科這家公司。"亞太區總經理的回答是:"他們的技術很低階,不用擔心。"但到了2007年,這位跨國公司業務高階主管氣急敗壞地說,"我早就告訴他們,結果現在呢?到了今年的全球經理人會議,全球總裁才說'我們應該和臺灣的聯發科學習'"
 
1999年底,蔡明介從美國一家名為Rockwell的手機基帶晶片開發公司挖來徐至強,準備著手手機晶片的開發。據稱徐是當時華人圈裏僅有的兩位可以帶隊開發手機基帶晶片的人之一。三年後,聯發科的手機晶片部門正式運營,徐出任該部門的總經理。當時市場上主流的晶片公司是高通、德州儀器、愛立信、飛利浦等,它們是諾基亞、摩托羅拉等一流公司的主要供應商。聯發科是唯一的中國公司。
 
當時蔡明介並沒有注意到中國大陸市場是自己的新機會,最初的策略依然是立足臺灣本土。直到他看到明基在內地手機市場取得了一定的銷售業績,並和李耀交談後,才意識到大陸市場的潛力。
 
2004年,聯發科決定正式進入內地手機市場。但當時市場環境並不好,國產手機的市場份額開始出現下滑,而且大多數國內公司只相信韓國的設計方案。
 
徐至強說服的依據只能來自產品本身。相對國外產品,儘管聯發科的價格也便宜不了多少,但功耗更低,而且提供的是名為"Turn-key"的全面解決方案——簡言之,廠商採用了這個方案,只需要加一個手機外殼即可成品——這能大大降低了出貨時間。採用其他公司的解決方案,國內手機公司需要6-9個月甚至是一年才能做出一款手機,而採用"Turn-key",最多是3-6個月就能出品一款手機。這個方案可謂正中黑手機業者下懷。該行業內最極端的比方是,只要有三個人就開始開設手機生產廠:一個人負責採購聯發科的解決方案以及其他配件,一個人負責尋找代工廠,一個人負責銷售和回款。
 
一直被諾基亞、摩托羅拉、三星和索愛等外資品牌壓制的國產手機廠商最終也認定,聯發科就是他們需要的夥伴。四年前,國產手機依靠渠道的人海戰術,在整體市場份額曾短暫的超過外資品牌,但產品本身一直是短板。後來外資品牌反超,國產手機就一直沒有翻身機會。現在他們終於可以借力聯發科,快速地拿出外觀時髦、功能豐富而價格相對便宜的產品來與外資抗衡,並且簡化了研發時間過長的流程,以便在自己擅長的渠道領域下更多的功夫。長虹手機總經理萬明堅則把這個模式簡單稱之為"向黑手機學習"
 
現在,除了天宇朗通,包括聯想移動、波導、長虹、TCL、康佳、創維等一線品牌,以及萬利達、天時達、奧克斯、大顯、唯開等二三線品牌,還有一些貼牌手機,都採用了聯發科的方案。在2006年,根據美林的估計,聯發科的市場佔有已經達到了40%,遠遠超過德州儀器、展訊、ADI、飛利浦等對手。到今年,更是預計市場份額能超過55%
 
而隨著"黑手機"一詞成為歷史,聯發科還將從自己一手喂大的這個嘈雜陣營贏來更堅定更為壯大的支持者——今年10月國務院宣佈取消手機生產核准制。
 
硬幣的另一面
 
無論蔡明介如何表示謙虛,一個無庸置疑的事實是,正是由於聯發科的出現,手機市場的生產門檻開始降低,手機迅速實現"大宗商品化"
 
不久前,一位元手機渠道代理商和聯想移動的高層開起來玩笑。前者說,現在有了聯發科,聯想移動的研發中心是不是要考慮重新定位角色了。他給出的建議是,現在既然研發部門是花錢部門,不如將其剝離出去,成立獨立子公司,和聯發科開展專案合作,提供更完善的解決方案給所有的國產手機公司。這樣還能賺錢。
 
這種方案聯想移動自然不會接受。但卻足以說明聯發科在出現爆炸式增長後,帶來了的給廠商們的另一面影響——由於聯發科基本是"承包"了前期開發的晶片、軟體和穩定性諸多問題,這固然加快了廠商的出貨能力,也幫助一些廠商迅速提高市場份額,但對一些有品牌知名度和研發勢力的廠商來說,它們開始擔心自己的研發和創新能力由此會逐步喪失。更極端的說法認為,聯發科的"Turn-key"解決方案有如鴉片,抽上癮會很舒服,但最後會讓手機廠商陷入無法花時間建立核心競爭力之苦。
 
國產手機品牌中唯一不和聯發科合作的夏新,一定程度上就是出於這種擔心。夏新採用的是展訊的解決方案,最初展訊也和聯發科一樣,提供整套的解決方案,但後來發現效果並不好。於是展訊決定在產品開發上"退一步"——不再提供完整方案,而是只做了一半,廠商在展訊平臺的基礎上,可以繼續做應用層面的開發,展訊同時給予配合。"這樣就有助於終端廠商提高自己的技術開發能力,有助於實現產品的個性化,有助於新業務的推廣。"展訊科技的總裁武平說。
 
這樣的合作已經有成功的案例。今年年初,夏新推出一款基於展訊晶片的超薄直板手機E70。其中一些具體應用就是夏新自身開發的,在一個季度的銷量中,曾拿到國產品牌冠軍的位置。
 
對聯發科來說,實際面臨的風險也不止來自廠商,更多的還是自身。在以產品自身為核心競爭力的手機晶片行業,如果某一款產品出現誤差,就很容易會給對手留下機會。聯發科的產品一路升級,都未曾出現問題。但在國內市場近期頗為流行的雙網雙待手機上,卻出現了一些紕漏。一位元黑手機的代理商對本刊說,聯發科提供這款雙晶片,返修率非常高,而展訊提供的單晶片解決方案,卻效果良好。"要知道廣東這邊的生產跟風現象嚴重",一位元當地的國有電子產品生產商的主管對本刊說。一旦這些雙晶片支援的手機出現更大規模的返修情況,一周到一個月之內,這些工廠都不會採用聯發科的這種晶片,而轉投他人懷抱。
 
此外,儘管聯發科限制廠商在採用自己的晶片後,又去採用聯發科對手的產品,但實際上,這種限制不可能完全做到。除了天宇朗通和康佳兩個廠商外,聯發科的其他合作者也沒有只把賭注放在了聯發科身上。比如聯想移動,其晶片解決方案提供方除了聯發科外,還包括展訊、德州儀器、博通(Broadcom)等。波導的採購名單則包括英飛淩、德州儀器和聯發科;TCL的是阿爾卡特和聯發科。
 
"
供應商怎麼決定採購方的做法呢?" 一位國產廠商代表明確對本刊表示,尤其是3G來臨後,一些美國公司如高通的產品線要比聯發科更加完整,屆時國內廠商也勢必更多考慮國外公司的解決方案。榮秀麗也稱,如果未來展訊也有更好的產品,不排除繼續合作的可能。
 
"
Stay in business"
 
53歲的蔡明介在各種挑戰面前並不是個新手。他自言是一個危機感很強的人。和另一位臺灣半導體行業的先驅式人物、被當地輿論稱為"梟雄"的聯電集團董事長曹興誠相比,蔡明介更加突出的特徵是謹慎小心、步步為營。
 
他從來不認為自己有幹一番大事業的雄心,而只是"不同階段有不同需求,必須去學"。他常掛在嘴邊的一句話,是來自孟子的"無敵國外患者,國恒亡"。與此相對應,另一句他也常常提及的話是,管理大師德魯克的"The most important business of every business is to stay in business"
 
今年9月,聯發科以3.5億美元收購ADI的手機晶片業務部門,這就可以視為是蔡明介應對聯發科產品組合尚不完善風險,以繼續"stay in business"的最新舉措。收購後,聯發科獲得了一支近400位經驗豐富的員工團隊。一方面可以彌補現有產品的不足,以便向高端擴展,打開歐美市場;一方面,更重要的是,能為大陸未來的3G市場做準備——ADI的產品涵蓋了WCDMATD-SCDMA
 
收購ADI的手機晶片部門前,聯發科所做的大量細緻的調查也足以顯示蔡的謹慎。在收到投行的收購邀請後,聯發科的團隊立刻向這幾年所有做了海外並購的中國公司——聯想、TCL、明基等諮詢意見。尤其著重瞭解明基遇到的工會、成本、跨文化融合等問題。逐一確定自己都能解決後,才發出收購要求。由蔡明介最後拍板決定。在收購完成後,徐至強每個月都有一大半的時間呆在ADI的總部波士頓,處理各種細節問題。
 
事實上,蔡明介十年來在聯發科的成功,謹慎小心正是貫穿始終的一個主導原則。1997年,從聯電集團分拆出來後,聯發科本來有機會為日本一些大廠提供初步晶片方案,但蔡還是先選擇了當地的代工廠廣明、建興等做為客戶以積累經驗。後來臺灣晶片設計業整體水平逐步上升,聯發科開慢慢將三星和索尼發展為直接客戶。到現在,聯發科已經是全球光存儲晶片領域第一大公司、佔據了全球DVD晶片70%的市場份額。
 
在蔡明介認為DVD、光存儲領域再難以出現高速增長,從而轉向手機晶片領域時,亦並非一步越過,也是仔細盤算、小心求證。2004年,在蔡決定進入內地手機市場後,也沒有直接選擇手機公司,而是在臺灣成立了一家手機設計合資公司達智,從事ODM業務,先做前期觀察。隨後又和一些所謂白牌的手機生產商合作——這是聯發科三年前被稱為"黑手機之父"的根源——在佔有率達到一定量的時候,才主動尋求和聯想、波導、康佳這樣的大廠商合作。現在手機晶片業務已經佔據了聯發科整體業務的50%
 
多年來,蔡明介和聯發科保持如此低調,正是因為在積體電路和晶片設計行業,先推出者會獲得高利潤回報,而晚到者則有可能全盤皆輸。"如果不是為了打對手,聯發科不會高調出來。"臺灣一位行業觀察家對本刊說。但今天已躋身全球前三強的聯發科,保持寂寂無名將會越來越困難。更何況,蔡明介對市場的野心尚沒有止步。
 
在蔡明介的計畫中,下一步除了中國的3G市場外,也期待能和諾基亞、摩托羅拉這樣的國際公司合作——畢竟後者加起來佔據了全球手機市場80%的份額。與此同時,蔡明介正在瞄準手機之外的市場機會,一如當年從光存儲領域跨越到手機市場那樣。聯發科已經收購總部位於美國加州NuCore公司的數碼相機晶片部門。曾經在臺灣IT業一蹶不振的揚智,被聯發科收購後正激進地切入大陸多媒體播放機(即與iPod競爭的MP3/MP4)市場。"蔡明介的強項之一,可以說是翻修公司,把爛公司變成獲利武器。"上述臺灣觀察家說。
 
頭髮已經略顯花白的蔡明介似乎依然沒有退休計畫。他最佩服郭台銘的以身作則,事實上他自己也同樣如此——每天工作近12個小時。住地離臺北新竹科學園區的總部,也就十五分鐘的車程。生活樸實,平時爬爬山就是最大的業餘愛好。
 
"
我真的退休了,聯發科在華人圈還是一個很重要的科技公司,我的希望就達到了。"蔡明介帶著濃濃的台南口音說。(本刊記者倪妮對此文亦有貢獻)  
 
 (本文來源:環球企業家 )




2008年10月14日 星期二

Arduino 在中國大陸

http://blog.arduino.cn/

這個連結是 Arduino 在中國大陸 的 Blog.
資料非常多...

:-)

參考資料

Arduino

R/C - AutoPilot

GPS

ATMEL / AVR