Arduino Serial 與 String 使用經驗 - readBytes

智慧農業 4.0 成果陳列區

繼前文「readString 使用經驗」,本文將談 serial.readBytes() 的使用經驗。

前文的感測模組屬於定時主動回報模式。而本文案例用的感測設備,則是終端指令互動模式。它不會主動回報任何資料。使用者必須透過 serial 埠連接進入它的 console ,輸入指令取得它的回應內容。理論上,用 readString() 方法同樣能處理它的輸出資料。只是它原本是設計和 PC 互動,並不考慮另一端的記憶體用量需求,導致它的輸出資料很長。當我使用 Arduino Pro Mini 控制板,在讀出它的資料接著呼叫字串方法加工時,會 OOM (Out of memory)。使我不得不換用 readBytes() 方法。

Arduino Serial 與 String 使用經驗 - readString

最近參與了一個智慧農業 4.0 相關的案子,這類案子通常都要整合環境感測模組(水位、氣溫)、無線訊號模組和自動控制系統。而且因為農地周圍常常沒有穩定的市電,故這些農業用途的設備基本都需要用電池供電。在低電力供應的限制下,我第一次用了 Arduino 控制週邊模組。 Arduino 開發工作本身並不困難,難在接上它的感測模組並沒有一定的資料輸出、入格式。幾乎每種感測模組都需要針對它的特性調整資料讀取動作。

智慧農業 4.0 成果發表會現場

本文案例,感測模組接上 Arduino 控制板的 Serial 針腳,透過 Serial 埠送出感測資料。當 Arduino 讀到感測資料後,要將資料透過無線訊號模組傳送給遠地的資料收集裝置。基於無線訊號模組的資料傳輸特性,應將資料先放入封包,以封包為單位傳送出去。

但本文案例的感測模組送出的資料內容沒有固定長度,也沒有固定的結束字元。一筆感測資料內容包含多行文字,但換行字元放在每行開頭,最後一行不附加換行字元。因此我也不能用換行字元判斷它是否送完一筆資料了。

MQTT用戶端入門 - 四、在 Windows 10 安裝 mosquitto 補遺

Mosquitto 提供 Windows 系統的安裝包。但是有些事沒說清楚,對首次接觸者帶來些許困擾。我在此補充一些事。

缺少功能

Mosquitto 的 Windows 系統安裝包並未啟用 MQTT over websockets 功能。如果你需要這功能,你得要下載原始碼自行編譯。

至於我個人的作法則不一樣。因為是 Windows 10 ,所以我啟用 Windows Subsystem for Linux (WSL) 安裝 Ubuntu on Windows 。然後在 Ubuntu on Windows 中直接用 apt-get 安裝 mosquitto 套件,同 Debian 安裝 mosquitto。本文寫作時, Ubuntu on Windows 運行的散佈版本為 16.04 , mosquitto 套件版本為 1.4.8 ,已可使用 MQTT over websockets 。

Windows Subsystem for Linux 是好東西啊。

安裝時的必要項目

Mosquitto 安裝程式 (Native build) 會提示你在繼續安裝前,先複製與安裝兩個軟體。但我建議先中斷 Mosquitto 安裝程式,等安裝了下列三個軟體之後,才去執行 Mosquitto 安裝程式。喔,你沒看錯,是「三個」。

傳統擴大機適應無線音樂串流使用方案與經驗

近幾年來,使用平板、手機播放線上音樂的人愈來愈多。他們雖然不是音響發燒友,但同樣會尋求更優雅舒適的音樂聆聽環境。他們希望有大顆的喇叭,可以讓手機播放地音樂繞樑於耳、餘韻不絕,而不是聽手機小喇叭聲嘶力竭的破嗓音。為此,音響廠商近一、兩年推出的平價新產品,幾乎都將無線音樂串流列為支援項目。這類產品如 TEAC NT-503, Yamaha WXA-50, Pioneer N-70AE 。

這波追求無線便利性的潮流,也影響了傳統音響發燒友。但我們通常已經擁有等級不差的傳統擴大機,那麼我們就會想找找可以連接手機和傳統擴大機的無線連接設備。本文將說明我的方式,讓平板、手機透過無線連接設備搭配傳統擴大機。

Lenovo Yoga Book 觸控筆與筆芯替代品

Lenovo Yoga Book 實在是令人驚艷的產品。那隻可替換筆芯的觸控筆可說是最大賣點。將觸控筆的筆芯換成原子筆筆芯後,可以放張紙在 Create Pad 上書寫並同步到 OneNote 記錄。不少消費者就是為了滿足手寫書寫感而買下它。

但是它給了我們兩種筆芯,卻只有一隻筆桿。說真的,應該很少有用戶會忍著不裝原子筆筆芯。然而帶著兩種筆芯換來換去實在很麻煩。Yoga Book 用戶絕對需要兩隻筆。還有,原子筆的筆芯是耗材,我們也想知道何處取得補充品。

Lenovo 網站上可以找到這些配件,但常常缺貨,更重要的是價格難以下手。替代品如下:

  • 觸控筆: Samsung Galaxy Note series Stylus
  • 原子筆筆芯: DT&CREATION Mini Star Refills

谷阿莫挨告事件看影評短片的合法性

谷阿莫是以製作「X分鐘帶你看完某某電影」系列短片聞名的網路紅人。近日被電影片商控告侵權,谷阿莫挨告。電影片商:於網路取得非法影片已侵權

一般對著作權有所了解的人,會想到以電影 90 分鐘以上的內容和短片不到 5 分鐘的內容比例來看,是否可以主張合理使用? 然而這類影評短片的製作者若要主張合理使用的話,片源的合法來源基本有兩種途徑。一是從片商公開的預告片,二是從自購的 DVD、BD 影像。而谷阿莫製作短片的片源並不合法,這正是電影片商之主張重點。

調整留言板(disqus)的使用內容

由於留言板的使用率非常低,且 disqus 系統會拖長網頁載入時間,所以我調整了我的留言板機制。

現在大部份文章都不會看到留言板了。具共同主題或同系列的文章,則會共用同一主題的留言板。

少量的意見回饋與交流,使用 twitter 和 facebook 足以。

台灣 119 求救簡訊 APP 使用說明與開發筆記

「台灣 119 求救簡訊」是整合了 GPS 定位與 SMS 文字簡訊功能的應用程式。當使用者遇難需要向 119 消防局報案求助時,這個應用程式可以利用 SMS 文字簡訊送出求救訊息和 GPS 位置,讓消防局更快掌握受困者的地點。

此類工具對經常從事戶外活動的人頗有用處,各地方政府亦有發行類似的 App 。例如新聞「定位神準!119APP救出摸黑的登山客」。但受限於我國政府單位的短淺目光,僅在 Android 和 iOS 的軟體市集上發布此類 App 。

我用 HTML5 和 JavaScript 設計了「台灣 119 求救簡訊」這個純網頁版本的 Webapp 。此外,受益於微軟在 Windows 10 時增加了 UWP (Universal Windows Platform, 通用 Windows 平台) 的應用程式模式,同樣的源碼可以直接包裝成 UWP App 供 Windows 安裝。

Touch IME HTML5 輸入法引擎使用手冊

Touch 輸入法 Copyright (C) 2013 遊手好閒的石頭成 <shirock.tw@gmail.com>

Touch IME is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with this program.  If not, see
<http://www.gnu.org/licenses/lgpl-3.0-standalone.html>.

You should see https://rocksources.googlecode.com/ to get more information about Touch IME.

LGPLv3

List device path and product name of USB video devices

UVC (USB video class - wikipedia) 泛指使用 USB 連接介面的影像產品。一般使用者最熟悉的 UVC 設備就是 WebCam 。除了 WebCam ,還有數位攝影機、電視卡、或具有照相功能的設備。故一台電腦接了兩台以上的 UVC 設備並非罕見。

在 Linux 核心中,會為可用的 UVC 設備各自分配一個 dev 路徑,檔名為 video 編號。例如 /dev/video0, /dev/video1 。但是當你的電腦接了兩台以上不同的 UVC 設備時,你將發現系統缺乏清楚的訊息告訴你這些 dev 路徑與 UVC 設備的關係。你不知道這些 dev 路徑各自代表哪一台 UVC 設備。當你的應用軟體需要用 dev 路徑開啟特定設備時,這會帶給你一些小麻煩。

本文以 shell script 和 python 分別實作了一個列出 dev 路徑與其代表的 UVC 設備名稱的小工具。

學習 ECMAScript 6 - 語法補遺

本補遺所列者通常是簡化語法。功能性不強,我個人不常用。但為免閱讀他人程式時看不懂,還是需要整理列出。

使用命令列程式指定播放音效的音效裝置

同事在 linux 上設計一套基於影片的 Kiosk 導覽系統時,想在使用者操作時加入一些音效或語音提示。然而這個導覽系統本身會持續播放影片與聲音,故他必須在保持影片播放動作的狀態下,同時混入操作音效。

此外,在目標系統上,預期會有兩個音效裝置,即主機板內建音效裝置,和螢幕 HDMI 音效裝置。目標系統用螢幕喇叭,故也必須確保音效從 HDMI 音效裝置輸出。他希望用導覽系統內部呼叫命令列程式的方式簡單地實現這些需求。

Debian 套件版本新舊比較工具

我任職的公司使用 Debian 套件格式管理自行開發的各類軟體,也會將一些第三方的軟體打包為 debian 套件。套件維護者有時候會需要調整版本的描述方式,夾綴一些如 rev, update, fix 之類的字眼,以便使用者更容易理解套件的版本意義。但套件維護者在調整版本文字時,有時會搞錯版本文字所代表的新舊順序。例如 “1.0.0rev1” 和 “1.0.0-1” 何者代表的版本較新?

套件維護者需要一些工具幫助他決定如何調整版本文字的內容。本文介紹兩種比較版本文字新舊意義的方式。分別使用 dpkg 命令列工具與 python 的 apt_pkg 庫。

讓網頁在 Twitter 推文時顯示圖片 - 在 github pages 中加上 Twitter Cards 與 Open Graph 標籤

我最近轉推網頁文章時,注意到同樣只放上文字和連結的推文,有些來源的網頁在我沒有附上圖片的情況下,依然會在推文中顯示網頁中的圖片。而且這類型的推文愈來愈多。這種推文的效果很好,我也想在我的部落格 (使用 github pages) 中加上這種效果。

概觀

首先看下圖。圖中是兩篇同樣只放上文字和網頁連結的推文,但呈現效果卻不相同。

有無圖片效果的兩則推文

下方的推文只有文字內容。但上方的推文主動地顯示了該網頁中的圖片縮圖與摘要文字。看起來,上方推文的閱讀效果較佳。

虹膜辨識應搭配紅外線 LED 與紅外線濾鏡相機

大約一年前,我在「臉部辨識系統經驗談」提到虹膜辨識系統的可用性與照相鏡頭有很大的關係。當時,我認為日本 NTT 尚未徹底解決虹膜辨識系統的手機照相需求。

規劃將虹膜辨識應用於行動設備或家用消費級產品時,我們首先會想到一般的相機是否可用?遺憾的是,一般相機並不適合用於虹膜辨識。各位可以用自己的手機相機自拍眼睛周圍。從照片可以看出,由於反光等因素,甚至會在虹膜區域出現相機的倒影。故取出的虹膜特徵品質極差。

MQTT qos 機制,發佈者如何確認訂閱者收到訊息?

在 COSCUP 2016 無人機空汙監控物聯網 這場關於 IoT 實作經驗的議程中,與會者向講者提問了一個問題。大意是說透過 MQTT 發出控制命令後,有沒有辦法確認感應器收到命令了?

MQTT 的 qos 機制可以確保訂閱者收到訊息。但發佈方法是非同步動作,當方法返回時,並不等於訂閱者都收到訊息了。若發佈者想知道訂閱者是否收到或何時收到訊息時,確實需要多一道工作。

廢止紅十字會法是矯枉過正

首先說明中華民國紅十字會在國際上的關係。提到紅十字會的國際關係,就要提到三件事物。一個是概念性的「國際紅十字與紅新月運動」團體,另兩個則是具有正式組織架構的「紅十字國際委員會(ICRC)」和「紅十字會與紅新月會國際聯合會(IFRC)」。且 ICRC 和 IFRC 是兩個獨立組織,彼此沒有從屬關係。 ICRC、IFRC 以及各地紅十字會三者共同合作推動「國際紅十字與紅新月運動」。 ICRC 承認中華民國紅十字會,屬於「國際紅十字與紅新月運動」團體。但受限於 IFRC 的組織章程,中華民國紅十字會不是 IFRC 的會員。民進黨立委李俊俋說「中華民國紅十字會根本不被國際紅十字會承認」,顯然他沒有搞懂紅十字會組織間的關係。我也不知道他口中的「國際紅十字會」是哪個。