2015年6月13日 星期六

【作品】Wifi 遙控車!


嗨,我是克里斯。

之前寫了兩篇教學文章說要做 Wifi 遙控車,過了好幾個月卻還沒看到影子,大家大概覺得我是在畫唬爛...

但現在 Wifi 遙控車 終於完成了啦!

至於它是不是真的能跑、能遙控,請大家自行看後面的展示影片囉~

這台遙控車會自動連線到指定的 Wifi,並可透過特製的手機/平板 App來遙控。

這台遙控車由阿堆諾 (Arduino Mega)擔任駕駛,至於其它製作的細節,我已經寫在下面的教學文章裡了:
接下來就讓大家看看照片和影片。

可以只當一個平庸工程師嗎?

今天讀到了一篇文章〈一個平庸工程師的自白〉特別有一些感觸和發現...

程式這個工作其實有一個很有趣的特性。或許是其他行業所沒有的。

那就是你寫的程式往往還會作為零件,被其他工程師拿來使用。而且因為程式的散播和複製不用成本,所以有幾百幾千個工程師,來使用你做出來的零件(程式)也都有可能。

一個成品給一般人看的話,裡面有問題,人們可能還看不出。但是給同行看的話......

或許是這個原因,才讓工程師覺得壓力頗大。因為很容易就會有同行會來看自己的程式碼,尤其是因為出了 Bug或不好用等原因而引起他人的探究時...

不過反過來說。透過跟同行的頻繁交流和觀摩,大家很容易就能跟彼此學習。而且也往往會有熱心的人樂於回答問題。這使得學程式的人,很容易就能得到豐富的學習資源。

但我也認為,不用給自己太大的壓力,程式跟任何事情一樣都需要慢慢練習和養成。

並且跟做任何事情一樣,有多少熱情就做到什麼程度就好。沒有必要逼著自己非得當高手不可。人生又不是只有這麼一件事好做,我們活著可是要享受人生的呀~

2015年5月23日 星期六

【技術教學】打造Wifi遙控車(之二):整合 ESP8266 與 Arduino

嗨,我是克里斯。

上一集中,我們已經成功完成了電腦與 ESP8266的通訊。於是我接著著手研究和實作 ESP8266與 Arduino的通訊。然而後續的工作進行得並不順利,中間經歷了一段辛苦搏鬥的歷程(所以這一集才會等到現在)。


至於,搏鬥的歷程如何辛苦(如上圖),我就不講細節了。以下分享的重點,就放在辛苦搏鬥得到經驗和心得。

配線

基本上,用 Arduino 與 ESP8266 通訊 和 用電腦與 ESP8266 通訊的過程差不多。

在配線上,我們只要把原本接到 CP2102 (或其他USB轉 Serial轉換器)的線拆掉,把 TXD和 RXD改接到 Arduino上就行了:
  • 【Arduino】TX→【ESP8266】URXD
  • 【Arduino】RX→【ESP8266】UTXD
我建議使用 Arduino Mega,它會比 Arduino Uno 還要更適合。


因為 Uno只有一組 RX/TX通訊連接孔,而這組 RX/TX其實是與它的 USB連接阜接在一起。當我們把 USB線插上電腦,就等於是使用了這組 RX/TX 在和電腦通訊(是的,Arduino內建USB轉 Serial轉換器,所以接USB就可以直接跟 RX/TX通訊)。這也表示,它同時只能跟 電腦和 ESP8266 其中一個通訊。如果接了 ESP8266 那就無法跟電腦通訊了。

但 Mega 則有多組(0號~3號共四組)的 RX/TX通訊連接孔,因此我們就可以使用兩組 RX/TX,同時和電腦及 ESP8266 通訊。這會讓我們之後的實驗更容易。

Arduino Mega 的 RX0/TX0 就和 Uno一樣,已經跟它的 USB連接阜連接。所以如果你使用的是 Mega,請改接到它的 RX1/ TX1(孔19、18)。

除了通訊的配線之外,我們也要處理電源的配線。我高度建議不要使用 Arduino的 3.3v孔當作電源供應 ESP8266。因為,這就是我會辛苦搏鬥+鬼打牆的 80%原因!

2015年5月1日 星期五

Flash 與AS3學習簡易指南:給有程式基礎的人

這篇文章,是寫給想學習使用 Flash軟體搭配 ActionScript 3.0語言製作遊戲,並已經有程式基礎的人。如果你還不會寫程式,但有興趣學寫程式,請閱讀〈我想學寫程式,怎麼辦?〉文章。

Flash正在消失嗎?

在開始簡易指南之前,我想先簡單討論一下這個主題。你可能聽過有人說,因為現在有許多瀏覽器已經不支援 FlashPlayer,Flash早晚會被 HTML5取代而消失。這也許讓你有些猶豫,思考著 Flash是否還值得學習。以下我簡單說明我的觀點:

的確 Flash已經漸漸失去在網頁上的舞台,但有很多人不知道 Flash其實有兩大應用的面向。一個面向是為人所熟知的,透過 FlashPlayer內嵌在網頁的應用。另一個則是 Adobe AIR跨平台應用程式的開發。它不只可製作桌面應用程式也可製作行動裝置 App。只要寫一次程式,就可在 Windows、Mac、Android、iOS上運行。目前有許多遊戲 App正是以 Adobe AIR開發的。

所以,在我看來,雖然 Flash失去了網頁的舞台,但它在行動裝置 App的舞台上仍大有可為,因此我並不認同 Flash正在消失的說法。

此外 Flash在長期的發展之下,已經是相當成熟的工具。並且已經有了許多豐富的第三方程式碼資源,有許多現成的遊戲引擎可以使用(包括物理引擎和3D引擎)。因此比起一些新興的 跨平台App開發軟體,它其實有著更大的優勢。

學習 Flash及 ActionScript 3.0的重點

關於如何學習 Flash和 AS3,實在不是一篇文章可以說完的。這篇文章的目的,只是給想要踏入這道門的學習者,提供一些個人的建議,和一些我認為的重點,以便讓學習者能有一個大概的探索及學習的方向。
  1. 物件導向: 寫 Flash的程式有兩種做法,第一種是把程式寫在 Flash檔案(.fla)的影格中。第二種則是把程式寫在 AS3(.as)檔案中,做成類別。第一種做法適合程式初學者。但是熟悉之後就應該放棄這樣的做法。因為程式碼會不好維護,而且也不符合物件導向的精神。第二種才是比較符合物件導向的做法,但思維需要一些轉換。另外 AS3的整個架構,都是以物件導向的思維所建立的,所以如果不了解類別、繼承等物件導向概念,將無法抓到 AS3的精隨。
  2. 顯示物件架構:要做遊戲,必須要了解 AS3的顯示物件架構。「顯示清單」是重要的關鍵字。Stage, Sprite ,MovieClip, DisplayObject 等類別,以及 addChild(),removeChild()等方法的運作都值得去了解。
  3. 事件機制:AS3處處都使用事件,讓各種物件可以協同工作。了解事件機制在 AS3中的運作方式很重要。
  4. 程式與美術的結合:用 Flash做遊戲,通常會直接用 Flash製作遊戲角色和腳色的動畫,因此學會如何使用 Flash的繪圖/動畫工具會有幫助。更重要的是,要知道如何使用 AS3把去和已經做好的遊戲角色美術元件結合,並在需要的時候透過程式,複製出需要的美術元件出來使用,所以需要學習「元件與類別的綁定」。
  5. 不要使用 AS2,它與 AS3是不相容的兩種語言。 AS3的架構更嚴謹,也更符合物件導向精神。所以盡量找 AS3的範例。
  6. 推薦好書:我非常推薦一本書叫做《ActionScript3殿堂之路》,以上的重點都在這本書裡,它的說明很清晰,也很適合用來學習物件導向思維。(但現在這本書好像不好找,可能要花點力氣弄到手,不過我認為是值得的。)
  7. 官方 API以及官方說明文件都有中文版,可以讀一讀:
    ActionScript 3.0 開發人員指南
    適用於 Adobe® Flash® Platform 的 ActionScript® 3.0 參考

2015年4月23日 星期四

什麼是「Maker」與「Arduino」?

嗨,我是克里斯。

你是否跟我一樣,喜歡自己動手做玩意呢?如果是這樣,那「Maker」與「Arduino」就是你不可不知的東西囉!如果你還不太清楚它們是什麼,那就讓我來介紹一下吧~

Maker是啥?

「Maker」中文叫做「自造者」,顧名思義,就是靠自己的力量去設計/製造東西的人。在這個所有的需求都靠商業和購買去滿足的社會,是一件難能可貴的事情。

Maker揮灑創意為自己量身打造所想要的物品、機械和工具。自主性、創造力 和 善用網路/社群資源,是 Maker與過去傳統工匠最大的區別。

過去只有公司或專業人員才能進行的「設計」,只有工廠才能進行的「製造」,如今在網路豐富的共享知識、資源和社群,以及新科技工具(如3D印表機和Arduino)的加持下,任何人都能透過學習,化身 Maker,將這些工作一手包辦,將自己的想法付諸實現。

現在Maker已經成為一股全球化的運動,網路上各種教學和軟硬體資源,因為 Maker們的分享和貢獻,已相當豐富。而世界各地也都開始冒出各式各樣的 MakerSpace。MakerSpace 是 Maker們彼此交流的據點,通常會提供各式各樣的工具和機具讓 Maker們使用。

而在網路(包含Youtube)上我們很容易就可以看到各式各樣Maker們所自造的神奇玩意。從除了把家電改造成可以遙控之外,四軸直升機、蜘蛛機器人...紙飛機發射器等...琳瑯滿目,令人目瞪口呆。

成為 Maker,除了可以享受DIY過程帶來的樂趣與成就感,其中還蘊含著更深的一層意義:透過打造/生產自己想要事物,我們開始拿回塑造自己生活環境的自主權,而不再只能被動的作為現成商品的消費者,被動接受商業環境為我們所形塑的生活。

這種個體取回自主權的特徵,其實也正是一個領域走向「去中心化」(Decentralization)的過程。因此在我看來,Maker運動其實也是「去中心化」世界趨勢當中的一環。