本書將向你展示如何在你新買的、35美元的計算機上通過編程實現一個網絡機器人、氣象站或是媒體服務器等功能。你將會通過一些簡單的實例和有趣的項目學到如何在樹莓派上通過Python進行編程。本書適合于那些想要在諸如樹莓派這樣有趣的平臺上學習Python并且在學習過程中掌握一些電子技能的讀者。雖然我們并不要求有編程基礎或者Linux技能,但是如果接觸過Linux的話將會有很大幫助。
Preface 前 言
在2006年,當Eben Upton和其他樹莓派基金會的創辦人看到大學計算機專業學生的編程狀況時,他們感到無比沮喪。在美國,計算機專業的編程課程被縮減為“CS 101:如何使用Word程序”和“CS 203:優化你的Facebook主頁”。他們意識到,不是所有人在上大學之前都學過編程。因此,他們醞釀了一個計劃——打造一種小型廉價的計算機,使孩子們可以更加方便地學習編程,就如同昔日的Amiga、Spectrum和Commodore 64。隨后,他們便開發了一塊以ARM處理器為核心的開發板,配有512MB內存并具有視頻處理功能的GPU,集成了如USB鍵盤、鼠標、HDMI輸出端口等接口。為了使其更易于編程,他們將Python設定為其主要的編程語言——一種強大且易學的腳本語言。這樣,樹莓派就誕生了。
多年以前,我在Commodore VIC 20上用BASIC語言編寫了我的第一個程序。當時的計算機內存只有5KB,比現如今很多的微處理器的計算能力都要弱,但我仍編寫出了一個很有趣的游戲,并利用盒式磁帶保存程序的進度。在之后的幾年里,我先后使用過不同的計算平臺,從Windows 3.1到Macintosh OS 8,再到幾個Linux系統。然而,樹莓派的出現為陳舊的計算環境注入了一股新的氣息,我為之激動不已。一方面是因為它具有小巧而便宜的特點,另一方面則是因為它易與外界進行交互——這對于那些感興趣設計物質世界的人而言,是一種莫大的福音。所以當我聽到它的發售消息之后,就同億萬的愛好者、黑客和工程師一樣,立即對樹莓派進行了預訂并迫切期盼著它的到來。之后,我便開始用它構建一些東西并一發不可收拾了。
如果你買了樹莓派但不知道如何開始,那這本書適合你。
如果你買了樹莓派但不確定用它做什么,那這本書適合你。
如果你正猶豫是否要買樹莓派,并思索著:“為什么我要買呢?我又做不出什么很酷的東西”,那毫無疑問,這本書更適合你。
這不是一本關于Python語言的教材,也不是一本詳細探索樹莓派的書。它以一種輕松的方式將你引向這臺微型計算機。我希望你讀完本書后,在進行創新的同時也能清楚地意識到樹莓派所能做的一切。
你可以按照本書的進度完成各種項目,也可以自由選擇一些自己感興趣的項目。在實踐的過程中,我希望你能熟悉Python語言和樹莓派(它們能讓你走得更遠),創建自己的項目,或許還能幫助其他同樣對此感興趣的人。總之,我希望你會喜歡本書及書中的項目。因為寫作本書真的是一種非凡的體驗!
好好享受這本書吧!
致謝寫一本書可能是一個人的工作,但絕對少不了別人的幫助。很多人都為這個項目做出了大量貢獻,在此,我向他們致以最誠摯的謝意。感謝Kevin保證整件事情順利進行,感謝Anne Marie理清我想說明的事情,感謝Roger LeBlanc使得這本書看起來像是我知道我在做什么。感謝作為技術指導的Chaim。確保了我寫下的東西和實際的執行效果一致。并且感謝Michelle,最初能夠注意到我。
最后,特別感謝Becky和Reed。這是獻給你們的。
The Translator抯 Words 譯 者 序
近年來,隨著物聯網、可穿戴設備、智能硬件、工業4.0、互聯網+等新技術、新概念的出現,涌現出了大量的創客及創客空間。在2015年兩會上,李克強總理在政府工作報告中指出要把“大眾創業、萬眾創新”打造成推動中國經濟繼續前行的“雙引擎”之一。
樹莓派自問世以來,就以出色的性價比受到眾多計算機發燒友和創客的追捧。2016年2月,推出了最新版的樹莓派3B型,其搭載了1.2GHz的64位四核處理器(ARM Cortex-A53 1.2GHz 64-bit quad-core ARMv8 CPU)。在大大提高了處理能力的同時,還增加了802.11 b/g/n無線網卡和低功耗藍牙4.1適配器等無線通信功能。另外,Linux不再獨享樹莓派。2015年,微軟公司在推出Windows 10 IoT Core之初,樹莓派作為ARM平臺的代表,首先被支持。
Python語言是一種面向對象的、解釋型計算機程序設計語言。自問世以來,Python以其簡潔、易學、可擴展性以及豐富的庫資源等優勢,日益受到設計者的青睞。一些國際知名大學已經采用Python語言講授程序設計課程,譬如卡耐基梅隆大學的編程基礎、麻省理工學院的計算機科學及編程導論。另外,眾多開源的科學計算軟件包都提供了Python語言的調用接口,譬如著名的計算機視覺庫OpenCV、三維可視化庫VTK、醫學圖像處理庫ITK等等。
本書的作者沃爾弗拉姆·多納特(Wolfram Donat)是一名經驗豐富的計算機工程師,他以工程的視角詮釋了一個個工程項目的實現。本書有別于其他編程語言類圖書,在介紹完基本的軟硬件平臺后,通過網絡機器人、氣象站、媒體服務器、家庭安防系統、貓玩具、無線電遙控飛機、氣象氣球、潛水艇等8個工程項目,介紹了網絡通信協議、文件存儲、傳感器、執行部件等基礎知識的編程方法。使讀者真正理解了“通過做來學習”的先進理念。在突出實踐能力培養的同時,又在每個項目中針對嵌入式系統的各個功能模塊給出了相應的基礎知識的介紹。另外,原書作者還非常重視工程習慣的培養,在實踐過程中給出了一般的安全規則。以譯者20多年嵌入式系統教學、工程經驗來看,本書十分適合作為本科、高職高專各專業的創新課程教材。
本書由北京工業大學計算機學院的部分教師翻譯,其中簡介和第1~4章由韓德強翻譯,第5~7章由王眾翻譯,第7、8章由楊淇善翻譯,第9章由吳有仙翻譯,第10、11章由張麗艷翻譯,第12~14章由王宗俠翻譯,全書的審校由韓德強完成。
在本書的翻譯過程中得到了機械工業出版社華章公司的張國強、繆杰兩位編輯的大力支持,在此對二位表示由衷的感謝!
限于譯者的水平,翻譯中難免有錯誤或不妥之處,真誠希望各位讀者批評指正。
韓德強2016年8月于北京工業大學