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,希望不會再發生了
最後就是我需要想個辦法量測耗電量....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,但是感覺各種問題啊....

沒有留言:

張貼留言