2016/09/24

【翻譯新作】Arduino穿戴式裝置專案製作(Arduino Wearable Projects )

嗨,我翻譯了一本書,在此敬告舊雨新知。

書名:Arduino穿戴式裝置專案製作
原書名:Arduino Wearable Projects
作者:Tony Olsson,瑞典馬爾默大學教師,授課主題包括多種設計領域,以實感原型和穿戴式計算裝置為中心,研究方向包括觸覺互動和電子觸覺溝通。除了在大學工作,也是獨立藝術家∕設計師和作者。
譯者:我
出版社:碁峰
出版日期:2016年9月18日
頁數:240

PS 全彩印刷喔。

內容簡介:
一開始先帶您認識基本電子元件,包括LED與感測器,學會建構電子專案的基本知識。然後實際動手;打造第一個穿戴式電子裝置,從自行車手套開始,這雙手套能夠提昇您在夜間騎車的安全性;接下來製作LED眼鏡,以及酷炫的GPS手錶;另外也會鑽研其他類型的專案,包括無鑰門鎖、可配戴在身上的NFC標籤健身資訊追蹤裝置、以及具備Wi-Fi無線連網能力的Spark開發板;最終專案,將會結合上述種種概念,建構智慧型手錶,採用技術含有健身資訊、網路通知功能、GPS。

學習目標:
.定義穿戴式運算,學習基本知識
.利用Arduino開發穿戴式裝置原型
.穿戴式裝置建構過程,所需要的設計程序與步驟
.深入了解適合開發穿戴式電子裝置的材料與材質
.製作互動式自行車手套、GPS定位器手錶等穿戴式裝置
.學習程式設計,撰寫人機互動功能
.學習如何經由藍牙和Wi-Fi無線技術,連接穿戴式電子裝置並傳輸溝通
.親手製作的實際經驗,設計個人化風格

目錄:
第1章 初探Arduino與燈光閃爍
介紹如何安裝開發環境的基本步驟,如何起手開始撰寫程式,也會建構我們第一個電子電路:控制LED。

第2章 感測器
介紹如何連接感測器並溝通,從感測器取得資料;也會介紹各種數位與類比感測器,簡單的、複雜的都有。

第3章 自行車手套
引領讀者建構本書第一個專案,目標是打造自行車手套,運用LED並說明如何操控,並且介紹感測器進行簡單的手勢辨認。

第4章 LED眼鏡
學習如何打造能受程式操控的LED眼鏡,鏡面滿佈LED,由程式控制、顯示不同的樣式與形狀,也會逐一描述建構太陽眼鏡的步驟。

第5章 茫茫世界我在何處?
聚焦在可戴在手腕上的GPS追蹤裝置,以小型LCD螢幕顯示資訊;此章還包含詳細的指引與技巧,解說如何建構外殼容納零件,讓你戴在手腕上。

第6章 親手體驗NFC
介紹NFC技術與伺服馬達,結合成為智慧型門鎖,本章還包含了圍繞NFC標籤的設計,製作可配戴的指環,作為門鎖的鑰匙。

第7章 低功耗藍牙
介紹耗電量極低的智慧藍牙技術,實際運用製作穿戴專案;內容包括Blend Micro開發板,拿來打造專案連接到你的智慧型手機。

第8章 乘Wi-Fi飛翔
介紹具備Wi-Fi能力的Particle Core開發板,以及它的網頁介面IDE,還介紹如何連接各種線上服務。

第9章 時間也能有智慧
專心致力打造智慧型手錶,連接到網際網路,使用線上服務自訂通知功能,並把通知資訊顯示在小型OLED螢幕上頭。

2016/09/20

《Python程式設計入門》一書的投影片

之前曾開設共30小時的Python入門課程,分為5天、每天6小時,製作了一份投影片,以及相關範例程式。

網址:https://github.com/yehnan/python_book_slides。

內容大致按照拙作《Python程式設計入門》一書的介紹順序,但稍加改動,有所增減,除了投影片(PDF格式),另有相關的原始程式碼檔案。

投影片裡的中英文字型分別是新細明體和Arial,各作業系統應已內建,程式碼的字型則採用inconsolata-g

2016/09/18

UP board:簡單試用GPIO

照著RPi.GPIO - UpWiki的範例,運用RPi.GPIO模組、撰寫Python程式來控制UP board的GPIO腳位。

UP board的腳位功能圖,其中Pin欄是板子的實體針腳編號,UP pinout則是UP板子SoC的腳位編號,Linux GPIO是Raspberry Pi板子的SoC腳位編號。底下範例一律使用Pin欄的編號。

首先更新套件:
$ sudo apt-get update
$ sudo apt-get install python-rpi.gpio

接下來三個範例,閃爍LED,LED明暗度,開關控制LED亮滅。

範例,閃爍LED,讓LED亮一秒、滅一秒,不斷重複。電路圖如下:
程式碼:
import RPi.GPIO as GPIO
import time

LED_PIN = 16

GPIO.setmode(GPIO.BOARD)
GPIO.setup(LED_PIN, GPIO.OUT)

try:
    while True:
        GPIO.output(LED_PIN, GPIO.HIGH)
        time.sleep(1)
        GPIO.output(LED_PIN, GPIO.LOW)
        time.sleep(1)
except:
    GPIO.cleanup()

範例,LED明暗度,以軟體PWM控制LED的亮度,LED會從全暗漸漸到全亮,再漸漸回到全暗。電路圖同前。

程式碼:
import RPi.GPIO as GPIO
import time

LED_PIN = 16

GPIO.setmode(GPIO.BOARD)
GPIO.setup(LED_PIN, GPIO.OUT)
p = GPIO.PWM(LED_PIN, 50)
p.start(0)

try:
    while True:
        for dc in range(0, 101, 5):
            p.ChangeDutyCycle(dc)
            time.sleep(0.1)
        for dc in range(100, -1, -5):
            p.ChangeDutyCycle(dc)
            time.sleep(0.1)
except:
    pass

p.stop()
GPIO.cleanup()

範例,開關控制LED亮滅,不按下開關時LED熄滅,按下時才亮起。電路圖如下:
程式碼:
import RPi.GPIO as GPIO
import time

LED_PIN = 16
BUTTON_PIN = 13

GPIO.setmode(GPIO.BOARD)
GPIO.setup(LED_PIN, GPIO.OUT)
GPIO.setup(BUTTON_PIN, GPIO.IN)

try:
    while True:
        print(GPIO.input(BUTTON_PIN))
        if GPIO.input(BUTTON_PIN):
            GPIO.output(LED_PIN, GPIO.HIGH)
        else:
            GPIO.output(LED_PIN, GPIO.LOW)
except:
    GPIO.cleanup()


參考資料: