2013-10-11

Arduino Pro Mini A6 A7

目前市面上較新的Arduino Pro Mini 似乎都多加了兩支Analog 腳 A6 及A7,
http://www.arduino.cc/en/Main/ArduinoBoardProMini

當我們燒了Firmata 協議而不是用一般Arduino sketch 來寫固定的程式時,這兩支
多出來的腳會讀不到。

這是因為較早官方Pro Mini 沒這兩支腳,所以當我們用Arduino IDE 燒錄Firmata 時,
這兩支腳是沒被定義的。如果需要用到這兩支腳,必須改一下Firmata 相關程式裡的定義:

1. Arduino IDE 的 libraies/Firmata/Board.h
  裡面的Arduino Duemilanove, Diecimila, and NG 下兩行的
  TOTAL_ANALOG_PINS 6 改成 8
  TOTAL_PINS        20 改成 22
  再用Arduino IDE 把Firmata 燒進Pro Mini 裡

接下來是電腦端所使用的程式庫
2. 使用pyFirmata 的話,需修改 pyFirmata/pyfirmata/boards.py
  'analog':tuple(x for x in range(6)),   <===改成 8
3. 使用pyduino 的話,需修改 pyduino.py
  self.analog = []
  for i in range(6):  <==改成8

目前使用經驗:
pyFirmata 支援PWM 及Servo 沒問題, 但要做 install 的動作
pyduino PWM 失敗, Servo 未支援, 單一支pyduino.py 可以不做 install,
直接跟執行程式放同目錄載入(import)即可。

2013-10-07

Arduino Firmata python 控

Physical computing 讓我們脫離數十年來電腦總是看得到摸不到的現象。
為什麼說看得到摸不到?螢幕上一朵花你摸得到嗎?一粒燈泡你摸得到嗎?

Physical compiting 讓我們可以跟實體的東西互動,最簡單的就是透過微控器
(MCU)加上一些電子零件,就可以讓我們把動作延伸到真實的東西上,像說可以
叫電腦幫你關電扇、開電燈……。

長久以來說到微控器總是讓人想到8051,不過這近十年來已經有更方便撰寫程式
的各種微控器在市面上流通。不管哪一種微控器,最普遍的用法就是把對應於各
種動作的程式(或說firmware)寫好燒進微控器的晶片,開動後它便會自主運作。

微控器最多的使用方式是讓它獨立運作,不過它也可以連接著電腦,成為電腦的
週邊設備,讓我們透過電腦跟實體物件進行互動式接觸。

只是每當你要改變微控器的用法時(例如接的感測器或訊號器要換腳位),都要重
新燒錄一次程式,就算只改一個bit 也都要重燒。

如果微控器是做為電腦的延伸器官來用,其實可以不用每次重燒程式,反正它一
直連接著電腦,就讓電腦來運算,最後只要丟出指令給微控器,或者讀取微控器
偵測到的數據,來電腦裡運算、紀錄,這樣就可以了。

也就是只要燒一個通用的協定(protocol),然後各種運算都在電腦裡進行,最後
傳送給微控器做出你要它做的動作。

以Arduino 來說,它的IDE 裡就附了一個通用協定 Firmata, 選其中的
StandardFirmata 燒進 Arduino 之後,便可以在電腦上寫程式來指揮 Arduino
運作而不必事先燒到 Arduino 裡面。

如果你要求用最新的,那 Arduino IDE 裡的就要換成 firmata 官方最新版
2.3.6, 可以在 http://www.firmata.org/wiki/Main_Page 下載。

網路上有多種支援 Firmata 的程式,個人覺得其中之一的 pyduino 蠻方便入手
,只要俱備基本python 語言知識,就可以立即把玩。這個版本比較新
http://pyduino.googlecode.com/svn/trunk/
最基本的 digital In/Out, digital PWM, analog In 立即可用。

另外一個也不錯的是 https://github.com/tino/pyFirmata
它除了上面的功能外,已經確認可以用它來控制 servo

但其它方面如I2C, PulseIn.... 目前似乎尚未成功支援,不過這幾項基本動作
也夠玩一些花樣了。

當然你也可以傳送raw command 給微控器,Firmata 是一種類似MIDI 的協定,
像說送出 serial.write(chr(0x90)+chr(0x08)+chr(0x00)) 來讓第三pin 的
LED 亮起來(其實 0x08 是mask來算的, 除了第三pin 之外的都不亮).

2013-09-27

網樂通連接 MCU UART 不能boot 的問題

這問題就是從網樂通 UART 的RX/TX/GND 接出來直接跟 MCU 的 UART TX/RX/GND
連線的話,不能同時開機或 MCU 先開機。必須網樂通先開機,再開 MCU,否則
網樂通會因不明原因卡住,無法開機。

以前就遇到這問題,只是沒再進一步使用,所以放著沒再試。中秋這幾天在家
閒閒就來嚐試解解看,順便整理一下,給可能會這樣玩的朋友一點參考。

或許你會問 MCU 不就是要用來獨立運作,為什麼要跟網樂通接連?其實 MCU 除
了獨立運作外,跟電腦連接著,就可以透過網路來傳送資訊或遠端遙控,除非利用
像是ethernet shield 或 wifi shield 的周邊,不過那是另外一回事,不在此
文討論,這裡針對利用免費的網樂通來跟 MCU 組合的問題。

我試過 arduino 及 MSP430G2 都有同樣的問題。

為什麼不走 USB ?
說來慚愧,因為在使用自己 make 出來的 cdc-acm.ko 載入後 /dev/ 下並未如期
出現 ttyACM0 (for Leonardo/MSP430G2), 所以無法使用,未再進一步試解。

於是想到何不直接拉網樂通的 UART 來接線?

一開始並沒遇到這個「不能boot」的問題,因為都是在網樂通開機後才接上 UART,
當程式弄好,一切都如預期動作後,想給它擺著進行自動運作時,才發現 MCU 不能
比網樂通先開機或同時供電開機。

先是想到會不會是 uboot 在那裡等候 user press Enter, 但實際連接 UART 經USB
到電腦的 terminal 時,發現它並不會等候,而是很順暢的一路往下開機,所以
問題不在 uboot.

要接到網樂通的 UART, 它不就有四條線,其中之一是Vcc 供電,那如果用 Arduino
Pro Mini 最好不過了!體積小、功能又跟大隻的一樣,又可以吃 3.3V 正好搭配網樂通,
價格又不到200台幣,真是值得推推的好物!

一步一步確定問題,可能是在電路嗎?在拿到 Pro Mini 後便試著只接 Vcc/GND, 確實可以
同時(或MCU 先開)開機,開機完再手動接上 TX/RX, 但這樣一旦斷電,人又不在機器旁,就
不能動了。(warm boot 沒問題,cold boot 不行)

再來試試把 TX/RX 串連電阻,會不會就可以過關?

結果是用了幾百到 1K ohm 電阻, 網樂通仍不能開機,把電阻加更大,發現網樂通
是可以開機,但開機完成卻無法正常讀到 MCU 的 analog 訊號(digital 可以)。試了
幾次仍沒試出可以讓兩者都成功的電阻值,看來應該改想別的辦法。

最後想到『那就利用 MCU 本身的 digital 來當「斷/接」 TX/RX的開關好了』

先試了只接通網樂通的 TX 到 MCU RX, 而網樂通 RX 到 MCU TX 不接(開路)的情況下,
是可以順利讓網樂通開機的。那麼只要在開機完成再利用 MCU 來接通網樂通的 RX
到 MCU TX 應該就可以了。

先前利用 2N2222 做過一條兩段式給 Canon DSLR 的快門線,想到同樣的拿 2N2222 來做這個
RX 的開關線路就可以了,方式如下:

網樂通GND --------------- MCU GND
網樂通Vcc --------------- MCU Vcc
網樂通TX  --------------- MCU RX

       2N2222
       E B C
       | | |
網樂通RX ----/ | \----- MCU TX
        /
        \--2K電阻-- MCU digital pin

2N2222 的 B 通過電阻接 MCU digital pin
2N2222 的 C 接 MCU TX
2N2222 的 E 接 網樂通 RX

經實測,cold boot 後可以順利讀取 MCU analog。

以上內容無法保證你的網樂通或 MCU 不會產生任何問題,請自行斟酌嚐試。

2013-09-12

「九月政爭」是啥小?

媒體又在耍白爛了!啥是「九月政爭」?

政爭的戲碼應該是「馬英九插王金平的菊花,王金平插馬英九的喉嚨,然後
馬英九射在王金平花心,王金平射在馬英九的食道」這才稱得上政爭呀!

我們看到的是
「馬英九從頭到尾不斷插王金平的菊花,王金平只發出幾聲呻吟,動都不敢動
,然後馬英九很快就射了」

這哪政爭?

所以請各媒體別再錯誤百出的下標題,正確標題是
「九月雞姦」

許多689 們心裡一定想著『啊………被皇上雞姦………好幸福呀!』

2013-08-03

忠烈祠、旌忠狀,再來呢?

國防布對於虐殺義務役士官洪仲丘一案,一直在腦力激蕩,從最早說要把
洪仲丘放到忠烈祠,洪家卻對國防布的認真考量覺得很無腦,因為洪仲丘
又不是為國作戰死亡。

對於洪家不願接受奉伺忠烈祠一事,國防布再度發揮創意,提出要頒給
洪仲丘旌忠狀,洪家再度覺得國防布十分腦殘,因為旌忠狀是頒給因公
作業死亡的軍人。

國防布覺得很納悶,他們已經提出這麼好的優惠,為什麼洪家都不接受?

其實國防布可以再次發揮創意,向日本政府申請,讓洪仲丘神位奉祀進入
日本最高級的靖國神社,或許洪家可以接受!

為什麼可以接受?我也不知道,反正國防布一直無理頭的腦殘,認為隨便
發想,就認為可以擺平虐殺義務役士官這件事。

如果洪家再不接受,國防布還可以向美國政府申請阿靈頓公墓、越戰陣亡
將士紀念碑、韓戰陣亡將士紀念碑……

2013-07-23

國防部真笨,我教你們!

最近中華民國陸軍269旅因為虐殺義務役士官一事鬧得雞飛狗跳,陸軍方面不斷
面對質疑,然後不斷淹滅證據,一下要淹滅大兵日記,一下要淹滅錄影帶,忙得
不可開交!

像陸軍政戰主任曾有福,就向記者說他有問了269旅政戰主任陳毅銘
『有沒有銷毀錄影帶?』 
陳毅銘告訴他『沒有』,所以他要記者在媒體上報給全國人民知道
「269旅政戰主任是『沒有銷毀錄影帶』」

這件新聞真的可以列入『珍氏世界最大笑話』紀錄!

不相信,大家可以去問問「白院長」(或者叫白副總統)
『請問白院長,你講話有沒有白賊?』
白院長一定答覆你『沒有』

國防部啊!你們真是笨到連豬看到都會笑,這麼簡單的事還要搞到焦頭爛額!

就直接 delete 洪仲丘的入伍紀錄就好了啊!

就說洪仲丘根本沒入伍當兵,哪來的被虐殺!這樣你們269旅那些人不但馬上
無罪釋放,說不定還可以申請國家貼償呢!

2013-04-15

什麼是炸彈客?

媒體又在一面倒的用「炸彈客」三個字!
到底什麼是炸彈客?

那媽媽嘴咖啡店謝依涵是不是應該叫「殺人客」? 

這個腦殘用詞大概始於「偷渡客」,什麼叫「偷渡客」?

明明偷渡就是犯罪,就應該叫「偷渡犯」,某些媒體為了幫中國偷渡犯漂白,
所以發明了「偷渡客」。

如果行為者所做的事觸及犯罪,就該叫「犯」才對,這是基本常識呀!

想想看使用暴力達到性交目的叫「性侵客」,
賣海洛、K他命叫「毒客」,

法國那個用火藥炸開五道門,還挾持人質越獄成功的叫「越獄客」,
到超商搶錢的叫「搶客」, 
被法院通緝的叫「通緝客」,

嘿!以後就統一這樣用好了!

2013-03-19

濫用「往生」之無理頭播報

這幾年「往生」兩字被濫用到一種新境界,連新聞報導都會說「小狗往生了」,
不曉得播報記者是不是太無知了?還是太神通廣大了?

說無知,是因為播報者分不清什麼是「往生」什麼是「死亡」?

說太神通廣大,是因為播報者能夠知道亡靈(如果有的話)到哪裡去了!那不是跟
中國政府一樣嗎?
中國政府能夠掌控密教喇嘛能否投胎轉世,比閻王還強大呀!

一開始大概是一些心態不健康的人,不敢說「死亡」兩字,所以就拿「往生」兩字
來填塞,久而久之以訛傳訛,變成無理頭的濫用「往生」。

但是,往生兩字是出自佛教淨土宗,指的是「往生西方極樂世界」,也就是
「去西方極樂世界報到了」。
那「西方極樂世界」是什麼?就是淨土宗提出的「阿彌陀佛的天國」,所以「往生」
兩字就是佛教淨土宗的「去天國了」的意思,這完全是宗教專用詞啊!

就像基督宗教用詞「蒙主召」「去見上帝了」「上天堂」同樣的意思。

「往生」兩字既不等同「死亡」,更不該被亂用、濫用。基督宗教的信徒怎麼能
被你說成「去阿彌陀的天國」?
人家要去也是「去耶和華的天國」啊!換個角度來想,你可以把佛教徒說成是
「蒙主召」「去耶和華的天國」嗎?

「死亡」是中性名詞不用,反而去用俱有價值意味的「往生」,真是莫明其妙!

「死亡」就像說「下車」,而「往生」類似說「去搭高鐵」,「下車」之後有很多
情況會發生,「去搭高鐵」只是一種情況,你可以騎腳踏車、搭計程車、跑步或甚至
去搭波音七四七。

死亡之後有沒有一個恆久不變的「本體」會到處亂跑、上天堂下地獄、當阿貓阿狗?

用時間線來比喻一下,有一個在時間點5出生的人,某甲,到時間點7死亡,那是某甲
死掉。然後在時間點16又有一個人出生,某乙,到時間點22死亡,某乙死掉。又有一個
人在時間點32出生,某丁,到時間點55死亡。

這時某些宗教就告訴你說那個某甲、某乙、某丁都是同一個人!
咦?同一個人?
喔!不!不是同一個人,是同一個靈魂。

咦!同一個靈魂!

靈魂是怎麼辨識的?靈魂有綠卡嗎?還是有Google帳號?或是靈魂有DNA?
難不成是在中國國家檔案局有靈魂編號可以列管追蹤?
不然中國政府怎麼掌控密教喇嘛投胎轉世?