星期六, 9月 07, 2019

快樂的無線電錶 - 1

最近著迷一部動漫 新石紀 , 是以科研為主題展開的作品; 這邊不是要討論這部作品, 重點是女角們身材都很好 而是其中以陸續展開的科技樹,  只要玩過即時戰略遊戲的人應該都深知科技樹的重要性, 放到現實生活中, 不斷的研究開發的過程對(阿宅)而言, 幾乎是一股能夠與性並駕齊驅的樂趣!










扯遠了回到標題, 為什麼要搞電錶, 而且是無線電錶?
其實是最近的電費實在是太貴, 冷氣沒有開整天, 兩個月就跑了一千度, 為了瞭解用電狀況, 初期我將 米家智能插座 插在懷疑用電量高的 洗衣機、飲水機上.
後來我覺得有些電器就是該開, 省不了的話, 單獨看一個電器的用電量是沒有幫助的. 應該要從總量來看, 人不在家的時候不必要的電器是不是吃了太多的電量? 如此就必須監控電錶的變化.


不斷的記錄電錶的變化也是個辦法, 但這實在是太原始了吧! 如果等 智慧電錶 也是個辦法, 不過是要等多久?

這時候只好發揮科技宅的科技能力, 自動電錶度數辨識系統!
很幸運的是已經有前人開發了類似的程式碼:
analog-gauge-reader
當然不能直接套用, 但是整個系統概念開發都是從這個sample延伸的.


整個硬體拆成以下部分

  1. 平台
  2. 影像擷取
  3. 數據傳輸
「raspberry pi w zero」的圖片搜尋結果

平台

如果按照目前智慧電錶的運作, 15分鐘要截取一次,  續航力至少要達到一天, 所以用手機基本上不可行, 況且電錶在地下室, 手機也傳不出去.
而續航力至少一天的原因是, 電錶在地下室沒有插座可以供電
, 就算有鐵定也是公用電, 隨便使用是會被別人白眼的.
所以每天出門前去更換電池是還可行的(雖然還是有點麻煩), 運算力要足夠, 可以擷取影像, 又不會太耗電, 看來Raspberry Pi Zero W是最適合的了! 

搭配行動電源10000mAh/額定6200mAh/5V, 耗電量100mAh 理論上應該可以供電 62h, 大約是兩天半.

影像擷取

Raspberry Pi Zero搭配Pi Zero專用的迷你相機, 整個體積相當的小.
很可惜迷你相機的視角不夠廣, 而且對焦距離不夠近, 所以只能拍攝到兩格的度數, 且相當模糊.
還好兩位數的度數也足夠判斷用電狀況, 模糊的問題還不至於影響度數的判讀太多.
Zero Spy Camera for Raspberry Pi Zero


數據傳輸

數據的部分, 毫無懸念就是Lora了, 家裡的智慧瓦斯電錶也是Lora抄錶. 之前買過的Lora模組, 測試可以從B3傳輸到12F, 完全沒有問題

而整個系統大概分為以下幾個部分:
  1. 電錶影像擷取
  2. 度數辨識
  3. 度數傳送

電錶影像截取

影像擷取前人樹都種得很好了, 利用picamera就可以在Python很簡單的控制camera:

但是有一個坑要注意, 要是picamera拍下來不想存成檔案, 再用opencv函式讀回來這樣沒效率的事情, 就要用BytesIO的stream去接picamera的影像, 然後再轉到numpy, 再轉到opencv (opencv只吃numpy).
from io import BytesIO
from picamera import PiCamera
import cv2
import numpy as np
import time

# Create the in-memory stream
stream = BytesIO()
camera = PiCamera()
camera.start_preview()
camera.capture(stream, format='png')
# "Rewind" the stream to the beginning so we can read its content
stream.seek(0)

file_bytes = np.asarray(bytearray(stream.read()), dtype=np.uint8)
img = cv2.imdecode(file_bytes, cv2.IMREAD_COLOR)
format = time.strftime("%Y-%m-%d_%H:%M:%S", time.localtime())
filename = format + '.png'cv2.imwrite(filename, img)

此外, 還要安裝picamera[array] (非常重要!)
pip install "picamera[array]"

度數辨識

度數辨識的部分是本文重點, 但是我打算留到下篇文章再好好介紹:P

星期五, 12月 21, 2018

發光樂高路克 與 美國太空筆


最近研究一個小東西,想把樂高的星際大戰路克光劍加上LED發光,這之前就完成了。


但是我想把路克搬到GOGORO 2上面去,之前剛好裝了樂高油缸蓋,帝國風暴兵已經佔領一陣子了,我希望路克上去平衡一下原力。

於是我就在想,這麼小的空間要供電,電池沒辦法太大,所以最好就是只有晚上且騎乘的時候發光就好(白天發光也看不到啊!)。因此我從555  Timer研究起,無奈覺得有點複雜,要達到我想要的功能可能要不止一顆555,還是回頭用我比較熟悉的Arduino吧。

這麼小的體積及簡單的功能用ATtiny13就可以了,用Uno當ISO燒錄器去燒錄ATtiny13也不是甚麼大問題。接著是加上震動偵測模組以及光敏電阻,就可以知道現在是否在騎乘、是否是晚上,用Pro mini加上一些範例,其實這些簡單功能幾十分鐘就完成,接下來就是把程式碼加上Power Saving功能並且轉移到ATtiny13就好了!


但是我突然覺得,挖勒...為了讓路克光劍發光,搞得這麼複雜幹嘛......
做個開關, 晚上騎車前按一下,下車再按一下,不就好了...............................
如此就只需要一個鋰電池、一個開關、一個限流電阻和拿著光劍的路克,完工!
為了避免額外的耗電,最後我把限流電阻改成CRD限流二極體。
最多再加一個USB鋰電池充電模組就好了。





這讓我想到一個故事,太空筆的故事。
傳說中美國太空總署花了好多錢做了一隻太空筆,為的就是可以在太空失重環境下書寫;而蘇聯用一支鉛筆就解決這個問題。這是個震撼人心的故事。

結果事實不是這麼一回事,有興趣的人請自己打開下面連結:
下面連結

總之,我想說的只有一句話:莫忘初衷

星期三, 8月 02, 2017

BLE Lego Train

I've been busy with BLE Lego Train recently. 
8879 Remote control IR Speed Remote Control
8879 Remote control IR Speed Remote Control

Traditionally, we use 8879 Remote control IR Speed Remote Control to control most 4 trains.
But I also want to control auto switch tracks with motor , it's need more and more 8884 REMOTE CONTROL IR RECEIVER.


If I want control 4 train and 4 switch, I need 2 x Remote Control, 8 x IR Receiver, 4 x 88002 Train Motor, 4 x 8883 Medium Motor, 8 x Battery Box, cost $$$$$$$$$$....

The expenditure of motor is unavoid, but I want build more intelligent railway system, a IoT based system, IR is not a good choice.
A BLE based Remote Control is better.
At beginning, I use RFDuino, a Arduino ecology mcu with NRF51822, including Nordic privated Gazell Link Layer protocol(GZll), very easy to exchange data between BLE devices by GZll.
gzll_fig1_star_network.png
GZLL Star Network




This my first prototype:


RFDuino with GZll is good, but only support 8 devices (with host, totally 9 devices), there is not enough expansion capability for me. So I begin to study next prototype.

I found RedBear BLE Nano is a good candidate, acceptable price, and a most important: open source!
RedBear BLE Nano


Open source that mean I can duplicate many BLE Nano compatible device with cheap NRF51822 board.
NRF51822 BLE GT82C01


First I buy a set of RedBear BLE Nano for my 2nd prototype, I use RFDuino as RC host, to treat as a Beacon/Broadcaster. BLE Nano as RC device, to treat as a observer.
BLE Nano can receive advertisement data from Beacon, parse the data and interpreter command to control motor.
Now the path between RFduino and BLE Nano is linked, next step is controlling train motor directly!

星期一, 6月 05, 2017

3.3v / 5v CanBus and TI HVD256

近來我的CanBus Project從Arduino ProMini平台轉移到Teensy 3.2平台, 因為Teensy3.2內建了CanBus Controller, 所以只要再外加一顆CanBus Transceiver( SN65HVD232 )就可以對CanBus做溝通. 且整體CanBus-ready的平台可以做得更小, 節省體積. 沒想到...這才是惡夢的開始...

我有兩套驗證CanBus用的Microchip MCP2551+2515, 接在一起:
Arduino-MCP2515-MCP2551 <---> CanBus <--->  MCP2551-MCP2515-Arduino

用Teensy替代掉其中一套, 也就是變成這樣的架構:
Arduino-MCP2515-MCP2551 <---> CanBus <--->  SN65HVD232-Teensy3.2 

用來測試CanBus的正確性, 沒想到怎麼搞兩邊就是無法溝通. 讓我極度懷疑CanBus一邊3.3v一邊5v是不可行的, 但後來爬到這文章:
http://www.ti.com/lit/an/slla337/slla337.pdf

TI指出3.3v與5v CanBus是可以共存的, 卻讓我陷入了死胡同...
當然,最常遇到的終端電阻問題, 經過測試也排除掉了.

後來換把MCP2551替換成SN65HVD232, 讓CanBus直接走3.3V:
Arduino-MCP2515-SN65HVD232 <---> CanBus <--->  SN65HVD232-Teensy3.2

還是失敗, MCP2515跟SN65HVD232間因為電壓不同, 似乎溝通上也有問題(個人推論, 並未驗證).
網路上爬文, 似乎也有不少人遇到跟我相同的問題:

https://e2e.ti.com/support/interface/industrial_interface/f/142/t/170788
https://www.amobbs.com/thread-3448321-1-1.html
http://www.microchip.com/forums/m851300.aspx
http://forum.arduino.cc/index.php?topic=173216.0

有人說是供電問題, 有人說是軟體問題, 但Teensy最終是要接車上的CanBus, 而非MCP2515/2551, 所以我也不想去處理MCP2515跟SN65HVD232間的問題.
不過就算把Teensy + SN65HVD232 接到車上CanBus也是無法溝通, 車上CanBus應該是走5V, 或許依舊是電壓造成的問題. 有一段時間就擱置下Teensy這個平台的使用計畫... 

擱置將近一年後, 我臨時興起做了個實驗, 在底下的這架構, 把CanBus BitRate從500K降到20K, 居然通了!!
Arduino-MCP2515-MCP2551 <---> CanBus <--->  SN65HVD232-Teensy3.2

但是再高一點就會一直傳錯, 開始懷疑是線材的問題(我是隨便拿兩條杜邦線來當CanBus High/Low). 但我不想處理線材問題, 會牽扯到我不太熟悉的類比領域, 有點超出side project的意義了. 所以我試著去找有沒有3.3v MCU(Teensy 3.2)可以用的5V CanBus Tranceiver??

很幸運的TI的CAN Reference Guide讓我找到一個方向:

HVD256正是我想要的解答, 它基本上是以5V運作(所以CanBus也是走5V), 但RX的部分可以相容3.3V的MCU(內建Level shifter), 所以接上3.3V Teensy是沒問題的. 這是一顆比較新的IC, 國內露天基本上是找不到現貨, 看來只能淘寶了... 但很幸運的是, TI非常佛心可以提供少量Sample, 而且還是Fedex寄出, 拿到這顆HVD256後替換HVD232, 居然通了!!!
http://www.ti.com/product/SN65HVD256/samplebuy

只是我在想, TI這顆HVD256不就直接打臉自己? 3.3V跟5V CanBus在某些條件下是無法相容??? 這個疑惑就留給有心人來解析了.... 臣,告退......

拉哩拉雜打了這麼多, 其實只有一個重點:
若你遇到3.3V跟5V CanBus無法溝通的問題, 試試看先讓它們電壓一樣吧!

星期四, 2月 25, 2016

LED名片拆解

最近買了一個LED名片, 想了解一下他的驅動方式, 買回來第一天就被我分屍了, 分屍前的照片還來不及拍... 只剩下這張屍塊組合照...


這咚咚是超音波熔接的, 非常難拆, 只能慢慢用筆刀劃開, 再用一字起子撬開.....

前方搭載了紅色濾光片, 對於判讀起了非常大的幫助, 若沒有濾光片, 光是LED本身的反光就夠亮的了.

濾光片完全拆除, 字幾乎看不清楚...

再來是最重要的背部, 很可惜不是採用ATMEL的solution. 採用的是GD32F150/C8T6的ARM mcu: http://www.gsense.com.cn/pro_detail.asp?id=139
LQFP封裝, 48pin, 支援高達39個GPIO.

本來以為買來會是採用ATMEL的solution, 這樣就可以把ATMEGA mcu刷成Arduino來玩玩了. 但是ATMEGA就沒那麼多IO可用, 所以要配置可觀的74HC595(就圖上應該有6顆), 如此cost也就低不下來.


以這個LED名片來看, 是四字的配置, 高度為11點, 因此總共有11x11x4 = 484點.
以傳統的掃描驅動方式需要44個IO(22x22 = 484).

ATMEL搭配6顆74HC595的, 每顆74HC595可以將3個IO擴充成8個IO, 因此18個IO可以擴充成48個IO, 可以驅動多達 24*24 = 576顆LED. 因此應付這個LED名片的484點是足夠的.

反觀GD32F150也無法驅動這麼多LED, 但也沒看到其他IC, 因此可能採用的就是Charlieplexing的驅動方式. 應用Charlieplexing只需要23pin就可以驅動507顆LED(23*23-23 = 506), 對GD32F150來說提供23個IO綽綽有餘.

雖然GD32F150 cost低, 但是採用的Charlieplexing本身掃描頻率比Multiplexing高很多, 但也因此單位時間內的LED發光次數會降低, 也就是LED亮度會比較低.

有機會再找找ATMEL solution的LED名片來分屍!

星期日, 1月 10, 2016

Use Arduino STM32 with Maple mini

Maple Mini

Maple mini is a phased out product, a STM32 based product with cheap price(about 5USD or 150NTD).
Official Maple IDE is not bad, but no longer support to win7, and driver with IDE is not signed, win7 deny install the driver without signed. It make Maple mini be a junk after win xp os.

Arduino  STM32

There are some replacement package can let maple mini alive with win7 os:

  1. Arduino Support Package For Maple
  2. STM32F103 and Maple / Maple Mini with Arduino 1.5.x IDE
  3. Arduino STM32
The best choice is method 3: "Arduino STM32", because it's based on method 1&2, and still active project.

It's a package to run with Official Arduino IDE, so you need to download the Arduino IDE and install. The newest version 1.6.7 maybe is not a good choice, because I had some problem when compiling sketch. Version 1.6.5 is ok and Arduino STM32 official site say support it.


Install Arduino STM32

Download Arduino STM32 and decompress, recommend to put whole directory to "~your sketch directory/hardware/" , named it to "Arduino_STM32" or whatever you like.

Install the driver first by "Arduino_STM32/drivers/win/install_drivers.bat".

Run Arduino IDE, now you can seed Maple Mini in Board:


Bootloader


If your Maple Mini is original, you should select Original Bootloader.
 

It's recommend to update to Bootload 2.0 (bootload with Arduino STM32).
You can update by a updating sketch  from Arduino STM32's site. You can download it by this link. And Follow these step:
  1. Upload "updating sketch" by Arduino IDE with Original Bootloader version.
  2. Open Serial Monitor, you can see some warning message, press Y and send it.
  3. Wait some updating message, reset it, 

Now you have Maple Mini with Bootloader 2.0.
Happy Arduinoing with Maple Mini !!!!

星期三, 11月 25, 2015

Merryfair WAU

下班回宿舍若敲筆電, 筆電是擺在桌上的, 要敲鍵盤肩膀幾乎都是聳起來, 很不符合人體工學. 長久下來, 肩膀開始疼痛, 應該是肌肉持續不當出力的結果.



為了解決這樣的問題, 買了螢幕架把螢幕架高, 避免頭過低. 又買了無線鍵盤, 把鍵盤放在鍵盤架上, 降低打字時的手臂高度. 環境調整之後的第一個禮拜, 肩膀的問題就得到了改善不再復發. 由此可見人體工學有多重要, 特別是我這種每天打電腦的阿宅.




最近公司又在辦Ergohuman 111團購, 同部門的同事幾乎每人都一把111
.



不是待在賺大錢的公司, 不像Yahoo都是配Aeron還拿來堆箱子[1]




辦公室配的是這種平價布面辦公室椅, 尤其背部空間很不服貼, 三不五時就要挪動屁股調整一下. SAYL當時在PCHOME特價9990(應該是最陽春的版本), 但是沒有試坐就買很不踏實啊! 所幸豪優在新竹開了新店面, 照顧到所有宅宅的坐姿吸乾了所有宅宅的錢包




很可惜的是SAYL豪優並沒有擺, 老闆說不好賣, 大概是陽春然後又貴, 同樣價錢下, 大家寧願轉買台灣品牌的111吧?!


結果一轉眼我看到一張橘色很亮眼的椅子MerryFair WAU, 試坐了一下是跟網椅很不同的坐感, 包覆跟支撐性強, 但如果坐姿不正確, 舒適性會不如網椅. WAU開箱文或討論非常非常非常少 (跟Ergohuman111相比的話)[2][3]. 後來再試坐了一下111, 如果是用來休息是張很棒的椅子, 但拿來辦公總覺得缺了甚麼!? 


豪優老闆報價WAU 18000, 一聽到價錢興趣全失, 寧願再去找找SAYL試坐, 可惜隔天9990的SAYL就沒了~ (pchome上面特價都一陣一陣的, 錯過了就要再等一陣子) 所以完全放棄SAYL. 後來我就轉念尋找WAU, 找到的最低價是12800, 結果隔天gmail裡躺著一封pchome的降價通知信, 原本pchome 24h賣14800的WAU降到9800...就在天時地利人和之下, 手一滑, 這張椅子就出現在我的辦公室了...



沒有花太多心力把這張椅子照得美美的, 看官們加減看看就好.

這張椅子的質感沒有我想像中來的好, 整張椅子是塑膠成型, 很多地方收邊都收得很差, 論整體的細節是不如111的(我辦公室有六張111, 所以累積了一些心得). 不過WAU可調整性還不錯, 我覺得有比111好, 我認為有花心思在設計調整機構. 

不如111的就是坐墊的深度不夠, 而且也無法像111可以前後調整, 這點是遜於111的.
另外, 為了達到支撐性, 犧牲了乘坐的彈性, 也就是因為這張椅子形狀固定, 無法像網椅可以隨著坐姿有些微的彈性調整空間, 所以只要姿勢不對, 或者椅子的調整不對, 這張椅子就會非常的不舒適!!!

所以建議對WAU有興趣的人, 一定要花點時間調整和試坐, 才知道這張椅子適不適合你 (其實每張人體工學椅都需要時間相處才知道你們適不適合).


最後來一張111跟WAU的合照.

[參考]
  1. 帶你逛超豪華 Yahoo!奇摩 辦公室
  2. [情報] 【Merryfair】WAU工學 $9990
  3. Merryfair WAU 2 入手

快樂的無線電錶 - 1

最近著迷一部動漫 新石紀  , 是以科研為主題展開的作品; 這邊不是要討論這部作品, 重點是女角們身材都很好 而是其中以陸續展開的科技樹,  只要玩過即時戰略遊戲的人應該都深知科技樹的重要性, 放到現實生活中, 不斷的研究開發的過程對(阿宅)而言, 幾乎是一股能夠與性並駕齊...