2014年5月11日 星期日

Bluetooth Low Energy X Sharp Memory LCD with Arduino

線超級亂.....
把玩極低功耗的LCD之後,覺得該拿去做個什麼東西,腦袋一轉,想起來我幾個月前有買過一組BLE UART的模組,於是打算做一個低功耗的無線Serial螢幕

除了上次的Arduino+Sharp Memory LCD以外,另外加入BLE模組
不過這個模組不像仿間的那種只有TX-RX的,而是帶有待機模式的模組,我可以利用他的Pin喚醒Arduino,這樣我就可以在等待下一個資料前保持待機的狀態,而BLE也可以在極低功耗下維持連線.
Arduino端基本上是把UART收到的東西原封不動地丟到LCD上,好處就是我想改畫面的時候動主機端就好,但是缺點就是沒辦法搞圖出來像是天氣圖的符號,而受限於ASCII
最後是我寫了一個Python程式每五秒鐘讓它顯示PC的CPU使用率以及記憶體使用率
心血來潮加個LTC匯率試試
Code:
Python (主機端):
import serial
import time
import psutil
import json
import requests
s = serial.Serial('COM4', 115200)




while 1:
    try:
        r = requests.get('https://btc-e.com/api/2/ltc_usd/ticker')
        c = json.loads(r.text)
    except:
        print("error")
        pass
    CPU = psutil.cpu_percent(interval=1)
    print(CPU)
    m = psutil.virtual_memory()
    price = c['ticker']['buy']
    String = "CPU :\n" + str(CPU)+"%" +"\nRam :\n"+str(m.percent) +"%\n"+"LTC:\n"+str("%.2f" % price)+"USD"
    print(String)
 
    s.write(String)
    time.sleep(5)


s.close()


UPDATE:
我跑了一整晚之後,發現他竟然有殘影惹.....回頭去翻Datasheet,上面有說到這麼一段話:
Sharp recommends keeping maximum time between
VCOM toggles to no more than one second, and
refreshing data every two hours, to prevent stuck pixels.
沒仔細看Datasheet哭哭喔

結果靠著黑白黑白這樣閃,總算是救回來了...(吧
趕快補上每秒reflash的code,希望不會再發生了
video
最後就是我需要想個辦法量測耗電量....BLE脈衝性的我用電表量不准阿...囧
阿還有就是我需要把SS換個腳位,不然一直閃LED會耗電


UPDATE:測試耗電量
由於脈衝性的耗電量,理論上是要用示波器去看波形啦....
但是我沒有示波器可以用,所以只好拿Arduino佔當我的示波器,
首先測試Arduino的UART+ADC的速度,測試傳送一千次後,總共花了265ms
所以最快間隔就是0.265ms

再來就是讀資料的部分,我在BLE裝置上串了一個10歐姆的電阻,再用OPA放大11倍讀取電壓
,利用Python的程式把資料抓到.txt檔案裡,最後丟到excel分析

分析結果就是

  1. 接收一個Frame 平均電流 6.381mA 耗時85.065ms
  2. Reflesh畫面        平均電流 9.053mA 耗時1.855ms
  3. BLE一個連線週期 平均電流 6.772mA 耗時2.12ms
  4. 待機  平均電流0.0325mA
用以上結果當中的BLE連週期,和原廠的資料(0.41mA(電表),0.0243mA(積分))落差有點大阿...
雖然時間上差不多(2.25ms)
總結的耗電量是0.487mA,但是感覺各種問題啊....

沒有留言:

張貼留言