2013年3月31日 星期日

Python Serial 自動重連

幾天前,發現 Arduino 的藍芽有的時候會斷線,造成 Python 的上傳軟體當掉,資料上傳不過去
所以想了好久解決.....

主要是運用 pyserial 的timeout 和 writetimeout
當連結斷掉的時候,會造成兩件事:

  1. Python 寫資料給Arduino 的時候會造成writetimeout
  2. Python 讀不到 Arduino 資料的時候會造成timeout
所以我先寫一個副程式叫做 reconnect()
由於 COM PORT 要先關掉才能重連,所以先關掉再開PORT直到成功:
def reconnect():

 global error

 s.close()
 error = 1

 while error == 1:

    try:
      s.open()
      error = 0

    except:
      print "Error connection"
      error = 1  
然後再寫入的部分:

 try:
    s.write("a")
  except:
    print "time out"
    reconnect()
    s.write("a")
而讀取的時候 serial.readline 會自動timeout(要先設定)而跳過
所以不用動

所以總結以上
當Arduino 和 PC 斷線的時候:
寫入失敗=>reconnect()=>再次寫入
讀取失敗=>跳過直到寫入失敗=>reconnect()


不過我還在想有沒有比較好的方法......
畢竟這樣搞,讀11個 data 都 timeout的話
要等至少一分鐘才會重連 =  =




   

熱敏電阻的換算

查了一下資料.....

首先要找感應器的常溫電阻,和B值

再來就代公式了

R測=EXP(B值 * ((1/溫度)-(1/288.15)))*常溫電阻值

好多新東西

最近又從掏寶買了不少東西回來,終於把電池系統(太陽能板,鋰電池充電版,升壓板)加了上去
還有大氣壓力計,不過依然是在找澆水的門閥值就是了......

還有阿,以前要上船程式碼到 Arduino mini pro 的時候,總是要接線道 Arduino UNO再把 UNO上的IC拔下來.....
現在有個這個東西終於不用這樣搞了~~
FTDI轉接器
還有還有,有鑑於我的USB轉接線爆掉了(被扯斷)
還買的一個三件式的USB街頭,還把線捲成麻花狀XDXDXD (訊號表示:.....)

2013年3月28日 星期四

土壤濕度計--------自動澆水器(中)



總之是做完了土壤濕度計,上圖的釘子就是感測器之一
現在就剩下決定要澆水的溼度數值了~~

土壤濕度計示意圖:





2013年3月26日 星期二

沈水馬達....自動澆水器(上)

 要做個自動澆水器,至少要先弄到一個幫浦
OK,接下來要做的是土壤濕度計

2013年3月24日 星期日

Cosm 上傳程式改寫成Python 版



原本的Cosm的上傳軟體用的是Processing 寫的
但是他實在是有點肥的說....連Delay都妹有(翻桌
剛剛寫完Python 感覺很可以就把他改寫了


--------------------------------------------------------------
import serial
import eeml
import time

API_KEY = '  '
FEED =
API_URL = '/v2/feeds/{feednum}.xml' .format(feednum = FEED)

s=serial.Serial('COM5',9600)

while True:
    s.write("a")
    voltage = s.readline()
    temp= s.readline()
    ntemp = s.readline()
    hum = s.readline()
    dew = s.readline()
    voltage = float(voltage) * 0.0048828125
    pac = eeml.Pachube(API_URL, API_KEY)
    print "-----------Data--------------"
    print voltage
    print temp
    print ntemp
    print hum
    print dew
    print "---------Data  end-----------"
    pac.update([eeml.Data(0, voltage)])
    pac.update([eeml.Data(1, temp)])
    pac.update([eeml.Data(2, ntemp)])
    pac.update([eeml.Data(3, hum)])
    pac.update([eeml.Data(4, dew)])
    pac.put()
 
    time.sleep(10)
----------------------------------------------------------------

Gmail notifier => Python + Arduino



一個下午就這樣不見了....
這東西會檢查Gmail裡面有沒有未讀的信件,有的話Flag會舉起來


第一次搞Python + Arduino

總之流程如下:
Python 跑一個可以抓Gmail api 的 lib
一旦有新信件就會用serial port 丟資料給Arduino
Arduino再做動作


2013年3月22日 星期五

Arduino 藍芽感應器

Arduino 藍芽感應器

半成品完成拉XDXD
現在光是靠電池就可以撐個一天左右了wwww
完整的鋰電池放電循環XD

下來還要加....太陽能板+充電板,DS18B20X2,電池溫度感應器,
還有一個很重要的=>電量感應器
要不要加個SD卡呢?wwww




2013年3月21日 星期四

鋰電池放電測試



這應該過放了吧ˊ_>ˋ
保護板勒?

----------------更新-----------------

原來是接點掉了....

2013年3月20日 星期三

Processing + Bluetooth serial 的問題解決方法

事情是這樣的....

我用Processing 作為 Arduino上傳至 Cosm的資料處裡
之前 Arduino都是用USB連到小筆電,都很正常
但是哩,當我把 serial 接上 Bluetooth 模組的時候....悲劇惹

沒辦法建立連結或是寫入資料

解決辦法如下----https://code.google.com/p/processing/issues/detail?id=1336

由於 Processing 用的是 Arduino 的 IDE.....
所以換上修正版的rxtxserial.dll就解決啦~~

鋰電池充電

我只能說我很怕充到一半爆炸XDXDXD
這是CN3063用Arduino的電源充1650mah的鋰聚合物電池

充電板好燙....

2013年3月19日 星期二

DS3231

昨天把從Maxim 拿的ds3231樣品銲上轉接版來用

聽說一年誤差不到2分鐘?
SOIC比TSSOP好銲多了
Arduino 測試

新的溫度計

剛剛跑去光華買了一個超精準的溫度感應器....ds18b20

一顆120真的是有夠貴的

不過看到那溫度精準到0.0625有爽到,比起DHT11的1度真的是天差地遠

上:相對濕度(DHT11) 中:DS18b20 下:DHT11


2013年3月14日 星期四

SDR 研究















這東西真的好有趣~
剛灌完軟體的感想:
SDR#比HD-SDR好用多了

天氣觀測

當有天氣系統到來時,日變化(溫度)將會被天氣系統所蓋過,隱而不彰

 好像挺有道理的