2013年8月18日 星期日

Arduino 天氣站 ver.2.0

                                     這是上次的Arduino 藍牙感應器改版*\(^o^)/*


首先他有以下的感應器:
BMP085 大氣壓力計
DS18b20 溫度計
ADT7410 溫度計
光照計
DHT22 溫濕度計
而且這版本還加了DS2764電池管理

上一個版本有一個很嚴重的問題,那就是他的耗電量太高了
HC-07藍牙大約耗20mA 
尤其是我希望他可以使用太陽能獨立運作
所以一方面在Arduino的程式碼裡加了睡眠的指令
另一方面加了一個可控制的開關在無線模組上

但是發現藍牙開開關關不穩定,還有重開連結時間太久
只好把藍牙換成CC1101 433mhz 的無線模組



另外,配合我先前買的Raspberry Pi
資料上傳以及處理就靠他啦Y(^_^)Y



2013年8月16日 星期五

Nixie tube clock 數字管時鐘做好啦~



Nixie tube 其實還滿流行的
當初是看到命運石之門當中的"世界線變動計"用的就是數字管
所以才有這個構想
動畫使用的是IN-18..ebay上面超貴..

數字管時鐘主要的難度在於,他的驅動電壓需要170~200v的等級(電流大概數mA
所以要控制的ic也需要耐高壓才行,
驅動電壓可以用DC-DC升壓,我買了一個專用的升壓版
控制IC用的是蘇聯製74141
數字管挑的是IN-14
右上的板子就是升壓版
下面那個洞洞版是自製Arduino
中間那個板子是我送洗的電路板(原本應該要直插才對
這裡面還真是難看阿......Orz

真空管 Buffer 前級





有稍微注意過音響或耳機的應該都知道真空管的名聲

我一直注意很久了...想要搞個搭棚的真空管耳擴來玩玩
不過先從基本開始做起

這次用的是X10D-GC電路板加上蘇聯6N1P真空管X2






家電控制

有鑑於我的床和房間電燈的開關太遠了...
冬天的時候常常想搞個無線開關出來
所以我找一個專業水電工XDXD來幫我完成這個  (搞這種東西最好有專業人士陪同
開關底下:兩路繼電器
開關左邊:Arduino+藍牙
這個開關的遙控器就是........我的手機啦 = =+
Android控制Arduino


好吧....其實有點不方便,我可能還要再加個無線開關

鋰電池電量+流量計


鋰電池要計算剩餘的電量不容易
有一種是用模型推估,
另一種則是利用超小電阻的降壓換算成電流在乘上電壓去算流量,
這次的裝置主要是DS2764的Breakout board,
DS2764內建25毫歐姆的電阻計算流量
同時用i2c和MCU溝通,相當方便


2013年4月2日 星期二

Arduino 資料處理

波谷前:未處理 波谷後:處裡成品

之前在讀Analog的時候,資料起伏相當大.....
所以開始找如何處理這些資料

http://playground.arduino.cc//Main/DigitalSmooth

直接叫出副程式就好了呵呵~~


digitalSmooth(讀取的資料, 資料陣列);



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好用多了

天氣觀測

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

 好像挺有道理的