2015年11月13日 星期五

Golf V TDI 更換備胎

我想有很多 Golf車主跟我一樣,從來沒自己換過輪胎,但是總有時候剛好有需要,你得自己換備胎,這時候這篇文章或許對你就有幫助了。

首先,Golf的備胎是「全尺寸」備胎,也就是跟原本四個胎尺寸大小都一樣的輪圈及輪胎,也就是說換上去之後其實他就跟你原來胎一樣,只是新了一點。原廠在保養的時候都會檢查備胎胎壓,幫你保持備胎是有氣的狀況,這樣就不會要換的時候才發現已經沒氣了。

像這次前一天晚上回家前,在轉彎時聽到底盤發出「登」一聲,聽起來有點像是避震器或者什麼金屬接縫的地方因位置變動發出的聲音,當下不以為意,回家後檢查四個輪胎也都沒問題,結果第二天早上發現右前輪已經沒氣了。原來是插進了一根螺絲釘,經過一夜氣才慢慢的漏光。

當下想說是否去買個打氣機灌飽輪胎,再開去輪胎行補胎,但是想想既然有備胎,為何不試試看呢,其實很久以前我曾幫別人嘗試換過March的輪胎,但用隨車工具費盡九牛二虎之力也轉不動螺絲,最後還靠旁邊計程車司機幫忙用他的工具才換好。所以對於隨車附贈的工具我是抱持懷疑態度的。


2015年7月15日 星期三

無螢幕安裝 Raspberry Pi

買Raspberry Pi套件時,最基本要有的是一張記憶卡(當硬碟用)及一個USB變壓器(最好是2A的),然後接了USB鍵盤滑鼠與HDMI螢幕,就成了一台小電腦。但是現在人多用laptop,往往沒有多餘的鍵盤或螢幕,所以本篇要說明的就是如何再沒有多餘的螢幕跟鍵盤狀況下把NOOB(1.4.1)裝起來。

不過說真的沒有螢幕與鍵盤滑鼠安裝真的是「有點麻煩」,所以這邊用的是偷吃步,至少家裡有可接HDMI的電視機以及滑鼠吧,只接滑鼠和電視機,就可以利用NOOB把Raspbian裝起來,之後再利用SSH透過有線網路連線進去設定你的Raspberry Pi。

首先利用OS X的磁碟工具格式化記憶卡,選FAT格式即可。記憶卡不要買太便宜的,選大品牌速度快一點的風險會比較小。從官網下載完整版的NOOB解壓縮,然後把解壓縮之後的檔案全部複製到記憶卡上,這時就用HDMI接好電視,USB接上滑鼠(一般無線的也可以),這時開機電視上會看到NOOB的第一個安裝畫面,請用滑鼠勾選 Raspbian [Recommanded] 然後按Install。之後會看到開始安裝的進度Bar一直跑,一直到100%之後,RPi會重開機,這時其實就可以關電把RPi給拔下來了。不過要注意,Linux最好是好好關機再插拔USB設備及電源,否則常容易造成檔案毀損而開不了機。接下來把RPi接上有線網路,預設會用DHCP開機,這樣RPi就得到IP了。

2015年4月27日 星期一

Arduino之做出名堂 - MRT計時手表


在台北搭捷運是沒有時刻表的,因為班距短,而且真要看的話,進了捷運站螢幕上有跑馬燈會顯示下一班捷運還有多久發車,趕的話估計一下時間就小跑步也就趕上了。但是有兩條支線 - 北投到新北投,以及七張到小碧潭是按照時刻表發車的,而且班距較長(可能會到20分鐘一般),所以有時候你需要看看時刻表估計是否可以趕上下一班捷運,太久的話可能等公車還比較快,而捷運站有印時刻表讓旅客自取以參考時間,上網找並沒有相對的App,所以乾脆自己做一支手錶,可以倒數計時看下一班捷運還有多久發車,這樣在車站外就可以估計要不要去搭捷運了。

規劃手表應有之功能:日期跟時鐘是最基本的,還有MRT倒數計時功能,可以輸入時刻表,由目前時間推算下一班MRT還有幾分鐘,另外手錶還加上偵測溫度氣壓Sensor,用來推算目前高度,也算是多點附加價值。

規劃好功能後,接下來是硬體採購,要做一支手錶應該會有:

  • 螢幕 - 我用了1.3吋白色OLED的螢幕,支援3.3/5V
  • 主版 - 體積要儘量小,Arduino Pro Mini ATmega328 3.3V,我買了號稱可跑16Mhz的,不過感覺不出來有啥不一樣
  • RTC(Real Time Clock) - 從網上找了一塊DS1307晶片的Tiny RTC,支援3.3V及I2C,原本它還帶CR2032電池座,但是因為太占空間,就解焊掉換接小一點的紐扣電池
  • 感測器 - BMP180,可測溫度及氣壓換算為高度
  • 電池 - 為了縮小體積,買了個僅130mAh的3.7V鋰電池
  • 兩個按鈕 - 用來切換時間及MRT倒數顯示畫面,以及切換螢幕休眠
  • 表殼錶帶 - 這部份就比較傷腦筋,不會有現成的商品可用,不是想辦法用3D列印或手工DIY自製一個

2015年4月20日 星期一

用頭腦打籃球

打籃球的人應該都聽過一句話:「多用腦袋打球」,意思是說打籃球不是只靠投籃準、速度快、彈性好以及身材高大就會贏,尤其是有上述優勢的球員,往往因為先天條件好而靠天賦打球就可以勝過同儕,而一開始對於籃球觀念不紮實,而限制了未來的發展。

但是,頭腦要用在哪兒呢?首先是接傳球。接到球的時候要保持威脅性,也就是讓防守者警戒,去猜測你下一步的行動;試想如果你持球時對對方不構成威脅,那防守者大可把注意力放在你的隊友的身上,這樣就增加了你隊友進攻時的困難度,所以如何增加你持球時的威脅性,第一步就是「三重威脅」:保持可投、可傳、可突破的姿勢。



裡面Lilard講到他為何保持低姿勢持球,因為如果把球拿到頭上準備傳球,對手就會貼上來防守,而Wall說如果對手貼太近他就會用試探步把對手逼回去然後伺機投籃。所以,保持你接到球之後的威脅性,能夠有助於吸引防守者的注意力(包括防守你隊友的人),這樣可以增加你傳出好球的機會。

2015年2月24日 星期二

Arduino 使用藍牙模組上傳程式

開始使用藍牙之後,由於每次上傳程式都要記得先拔開pin 0/1的連接線,否則序列埠會被藍牙占著而無法上傳程式,本來改用SoftwareSerial()函式庫之後發現可以用軟體模擬序列埠讓藍牙連接其他pin腳,不過經測試之後發現softwareSerail()好像有點問題,在9600 baud rate時工作都正常,但到了57600就無法正確傳送內容了。上網查詢後發現這程式庫的確有些問題,有人改用NewSoftwareSerial()程式庫,但好像使用軟體模擬的在高baud rate時都會有些問題。所以保證傳輸最穩定的還是直接連接硬體Serial Port,也就是pin 0/1(Mega會有三組)。

既然都已經連結硬體Serial Port了,那是否可以從藍牙來「無線」上傳程式呢?查詢了一下資訊,有人製作Bluetooth Sheild可以無線更新程式,也有人從藍牙模組上另外焊一條線來達成。研究了一下,我想應該是跟上傳程式時需要 reset 有關(跟之前Arduino Pro Mini的問題很像)。於是我就測試了一下,發現就算是用HC-06,只要在上傳程式時在藍牙連接成功時(此時HC-06的LED會從閃爍變成長亮)按一下reset,就可以順利上傳程式。

2015年2月16日 星期一

Arduino用藍牙模組進行遠端遙控

遠端遙控Arduino有幾個選擇:藍牙(Bluetooth)、XBee、無線網路(Wi-Fi)、無線電(Radio)、紅外線等。要連線都需要發射端與接收端兩個設備,其中除紅外線之外可以做雙向傳輸資訊(無線電要看是什麼模組),一般說來無線電適合長距離,Wi-Fi適合上網路與Server連接,其他的幾種傳輸距離都不長。以價錢來說,紅外線最便宜,再來可能就是藍牙(2.1)或無線電模組,Xbee與Wi-Fi模組的價格都較貴,而藍牙跟Android手機連線蠻容易的,所以很多人做遠端遙控的project都會先從藍牙開始嘗試。

市面上比較常見的藍牙模組,目前應以HC-06(僅從機功能)及HC-05(主從機功能)為大宗,很多人買HC-06作為從機連接Arduino,與Android App連線(Android手機做主機),透過藍牙來遙控Arduino。Google許多文章,多半是講如何以Arduino Uno來代替USB to TTL連接線連接HC-06,透過AT指令來設定設備名稱、連線密碼跟Baudrate(HC-06也只能設定這三樣參數)。關於如何判斷是HC-05還是HC-06,這篇寫的很清楚。總之每個人買到的藍牙模組可能會不太一樣,像我的HC-05是焊上6隻pin腳,晶片上有打個金色勾勾,上片還有個像reset的按鈕;而HC-06則只有焊4隻pin腳。如下圖:

從左至右:HC-05、HC-06、USB to TTL

反面:針腳從左至右是EN、VCC、GND、TXD、RXD、STATE

接法很簡單(兩片一樣),左至右
RXD接TX、TXD接RX、VCC接5V、GND接GND

在Arduino IDE上選擇USB to TTL的序列埠,新增一個視窗並打開Serial Console,並將換行指令改為「Both NL & CR」;HC-06可直接開始打入AT指令按Enter,例如打入AT,HC-06會回應OK。但HC-05需要在「通電後」按一下右下的按鈕,方可進入AT模式,如果已在連線狀態,則需要「長按住」按鈕以輸入AT指令,意思是說如果沒按按鈕,輸入AT指令則不會有回應。至於詳細的AT指令,每片模組多少有些不同,所以請跟你購買的商家索取手冊參考。

2015年2月8日 星期日

Arduino Pro Mini 上傳程式出現錯誤訊息?

玩Arduino,有人喜歡玩大的比如說Mega,看重它I/O pin夠多,Memory比較大之類的,但也有人喜歡玩小的,比如說Pro Mini,I/O數跟Uno差不多,分為5V/16MHz與3.3V/8MHz兩種,但它沒有USB,也因此讓體積更小。如果想要連接電腦,就需要接另一張USB轉TTL/RS232的小卡。下圖從右開始依序是Uno, Nano, Pro Mini以及USB轉接卡:


使用Pro Mini的第一個問題就是要怎樣跟USB to TTL卡連接。Pro Mini買來時通常pin腳要自己焊,不過附贈的針腳常是90度公頭的,也就是跟左邊USB卡上的針腳一樣,可以去電子材料行買90度母頭的(如圖)來焊。

USB to TTL/RS232上面的針腳從左開始依序是:DTR / RX / TX / VCC / CTS / GND
而我這片Pro Mini上的針腳從左開始依序是:DTR / TXO / RXI / VCC / GND / GND
有的Pro Mini標示會不太一樣,比如說第一腳標 GRN,最後一腳標BLK之類的。但其實它的順序都是一樣的,直接一對一接上即可。

其中DTR是Auto Rest腳位,如果沒有接這條,你會發現在上傳程式時出現「avrdude: stk500_getsync(): not in sync」的錯誤訊息。上網找資訊往往會發現有人建議在上傳程式時,看到白色compile完計算程式大小的字樣時,趕緊按下Pro Mini上的reset鍵,就可以成功上傳,一試還真靈,心中暗暗感謝谷歌大神,殊不知這是因為沒接DTR腳位,所以在上傳程式時無法自動reset。


2015年1月30日 星期五

Arduino IDE 標籤(Tab)的用法

用Arduino IDE寫Sketch幾次之後,有時候code越寫越長想要整理一下,這時有人應該發現到IDE的右邊有個下拉選單可以新增「標籤」(英文是Tab),但是又不知道怎樣跟原來的Code連結在一起,這篇就教大家如何把Code放進新標籤裡面。

使用新標籤大致有兩種方式:
  1. 放入Function,也就是void myFunction () 這種程式
  2. 放入設定檔、資料檔之類的,比如說myData.h

第一種很簡單,就直接開新標籤使用,Arduino IDE會把它跟主程式當成一體的,只要標籤不加附檔名(Arduino IDE預設會使用ino當新標籤的附檔名),也不用在主程式裡include新的標籤名。

第二種可以把一些設定的資料放進去,副檔名比如說用.h,但是要注意需要在主程式開頭的位置(也就是在void setup()之前)要include這個檔案,否則Arduino IDE會找不到,編譯(Compile)的時候會報錯。語法是「#include "myData.h"」,跟使用Library差不多,但是Library使用「#include <library.h>」來呼叫不在同個目錄裡的程式庫,而雙引號用來包含在同目錄裡的檔案。另外,這種用法也可以把別人的程式,包含.c或.h等直接引用,而不需要先安裝該程式庫,可以參考一下。

這樣,就可以讓你的程式變得簡潔又好讀了。

2015年1月15日 星期四

Arduino之玩出名堂 - 聖誕音樂盒

去年(2014)年聖誕節將臨之時,想要做一個特別的聖誕禮物給另一半,首先想到的是聖誕樹;看了Lily Allen版本(原唱是KEANE)的「Somewhere Only We Know」MV幕後製作花序,想說也許可以自己做顆聖誕樹(像2:06開始那樣,自己做樹幹黏上樹枝再著色),但是走了一趟美工材料行,發現要做這個好像搞太大,材料也不好買,所以更改計畫,以聖誕樹為主題,做一個能播放音樂的盒子吧。


Lily Allen版本Somewhere Only We Know

3:22秒可以看到整個場景,聖誕樹跟場景是真的模型,
裡面的角色也是用一張張紙片連拍之後進電腦合成的動作

2015年1月13日 星期二

製作一個Arduino專案不只是寫code(二)

上篇最後講到要如何將電池連接到Arduino,這部份就開始跟電路有點相關了。一般說來一開始大家買的Start Kit(所謂懶人包)多半都是使用UNO配合麵包板跟跳線來連接電子相關零件,當然如果你是電子科系畢業又有豐富電子實作經驗的,以下這些內容就可以跳過啦。

關於連接線材大概會經過這幾個階段:

  1. 麵包板與公-公跳線(兩端都是針)
  2. 開始需要公-母跳線(可能需要連接另外的電子模組)
  3. 自己做線(外面賣的長度可能不符,或想製作多對多的跳線)
  4. 開始焊接(有的電子模組沒有針腳需要自己焊接,或因為焊接比插線來的牢靠)
  5. 自作排線
自作線材會需要一些工具,最基本會需要剝線鉗與夾線鉗:


右邊是剝線鉗,有各種口徑,這把是從AWG20(0.8mm)到AWG30(0.2mm),一般我們做小型電子設備大概用到AWG24(0.5mm)與AWG26(0.4mm)居多,要是沒這把箝子想用剪刀或其他平口鉗把電線皮割開,多剝幾次你應該就會受不了了,所以買些好用的工具可以讓你DIY之路順暢些,專案也不會因為工具因素而擱置。左邊那把是夾線鉗,是用來將端子固定在線材上的,這部份等會介紹杜邦端子時再說。

2015年1月7日 星期三

製作一個Arduino專案不只是寫Code(一)

用了Arduino之後,深覺利用程式來控制電路邏輯,可以讓不熟悉電子工程的人很容易上手來製作自己想要的電路功能,能根據不同的輸入或感應器的讀數,來控制不同的設備、儲存什麼資訊、發送什麼訊息等;甚至連結無線網路、跟手機、網站等連線、實現遙控或IOT設備都有可能。

不過實作一陣子之後就會發現,有時候花時間解決的問題往往不在Arduino本身,而是在如何供電、如何連接線路、如何驅動某個設備、搜尋跟採買適合的零件、甚至怎樣製作一個精美的外殼等事情上。如何克服這些事,而讓你的小專案完成,這裡有些經驗可以分享一下。