2016年11月5日 星期六

Golf V 更換煞車燈泡及行李箱油壓桿

話說 Golf 車開久了,總是會有小東西要修,跟一般國產車不一樣的是福斯的零件比較少有所謂副廠貨,不像TOYOTA, Benz, BMW這些車,因為量大,所以有很多廠商會製作副廠零件販售,相對來說,福斯車的零件最好來源,反而是淘寶,或者特定的零件進口商。

不過有些零件可以自己換,有些東西可沒辦法,像電池、輪胎、冷氣、隔熱紙這種,找一些專門店就可以搞定,但引擎、變速箱、發電機等還有車殼零件如後照鏡、保險桿這種,還是得找專門修VW的店才行。那剩下的一些小零件,可以自己動手DIY的,自己弄弄可以省不少錢呢。

上次前大燈壞的時候,去汽車材料行買H7規格的燈泡,歐斯朗的一顆250元,很容易自己換,打開引擎蓋,把燈泡座轉出來,拔出舊的燈泡換上新的,再轉回去就好了。這次右後煞車燈泡壞了,也去材料行買 "Golf用的後煞車燈泡" ,老闆想一想,給了我兩顆共20元。回去查查規格,發現老闆給的是雙芯的燈泡(也就是裡面有兩條燈絲,接點也有兩個)標示是12V/21/5W,應該是指一個燈絲是21W,另一個是5W。Golf用的煞車燈應該是2個P21W型號的才對,再回去換單芯的,價錢一樣。至於為何要買兩顆,網路上是說通常一個壞了,另一個也差不多了,不久也會壞掉,既然燈座不容易拆,乾脆一次換兩顆。


2016年2月11日 星期四

用Raspberry Pi當Airplay喇叭



擁有Apple TV的朋友一定想將音樂部份輸出到自己心愛的喇叭上播放,但很不巧Apple TV音訊的輸出是光纖數位,購買有數位光纖輸入的DAC可所費不貲,但是最近越來越常在Apple Store上租影片來看,明明有好的擴大機跟喇叭卻無法播出影片裡震撼的音效,卻令人有一點傷腦筋。於是想到Airplay的功能,要是讓Apply TV透過Airplay將聲音傳送到喇叭上,應該就解決數位輸出的問題。

但是,買一台Airport也要3000多元,而且聽說(謠言)它插電久了容易燒壞,而且我的擴大機是Cambridge Audio Azur 651A,內建有USB DAC的功能,之前插在Macbook上播音樂聽起來是蠻爽的,只是把一台NB擺在電視機旁,並且還要開家庭分享才能播放音樂,使用起來卻是不太便利。

那天,看著我的Raspberry Pi 2,突然想到如果接上一個USB WiFi dongle,再透過USB接到我的擴大機上,這樣不就是一台無線播放器,如果可以找到支援Airplay的軟體,那就變成一台Airplay播放器了。

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等直接引用,而不需要先安裝該程式庫,可以參考一下。

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