發表文章

目前顯示的是 6月, 2012的文章

水族開放缸栽種水耕植物

圖片
因為是用 LED 照明,可能是因為功率太小穿透力不夠,栽種的挺水植物很多都還沒長到挺水就不長了。 因為忙又沒時間改燈,先拿一些適合水耕的植物來試一下,下圖是黃金葛和佛手芋: 黃金葛和佛手芋 買來的 佛手芋是土栽的,但是洗淨土後發現原本的根就很長,所以我讓莖部浮水,根部都放入水中。佛手芋很快又從浮水莖冒出新根: 佛手芋長出側根 黃金葛就不用說了,不但生長茂盛,根更是生入水中。 生長旺盛黃金葛 黃金葛的根部深入水中 還有已過花季的蘭花,也浮水栽培,並且也冒出新葉了。 蘭花浮水栽種 今天又試大岩桐的切葉繁殖,希望成功。 用寶特瓶的前端避免葉子碰到水

水族箱控制器 : Arduino 四部曲

圖片
控制器除了有顯示的功能,要是能加上與電腦的通訊那就更完美了,為了能達成此項功能,在原來的 Arduino 再加上一塊 I/O expansion 5.0:  I/O expansion 5.0 並利用  I/O expansion 5.0 上的 Xbee 介面接上  HLK-WIFI-M03,這塊板子曾在 Arduino 無線WIFI 傳輸 轉 RS232-Part3 中用過,如果 WIFI 可以連上控制器,就可以用 PC 來做更多的控制或記錄,今天一切很順利,程式加上 Serial.print, 就在 PC 端也可看到 溫度和日期了。 下一步應該來控制打氣機。 正打算接打氣機時,有一位水族達人建議,最好也能同時顯示室溫及濕度,剛好我手邊還有一片 SHT1x,這一片可同時傳回溫度及濕度: 原圖:http://www.dfrobot.com/wiki/images/8/84/SHT1x_Humidity_and_Temperature_Sensor.jpg 先用板子的 example 來測: 再來和原本的程式組合: #include <Wire.h> #include <OneWire.h> #include <Rtc_Pcf8563.h> /* add the lcd support */ #include "LCD12864RSPI.h" //init the real time clock #include <SHT1x.h> #define dataPin  11 #define clockPin 12 SHT1x sht1x(dataPin, clockPin); Rtc_Pcf8563 rtc; OneWire  ds(10); /* initialize the library objects */ void setup() {   Serial.begin(9600);   LCDA.Initialise(); // INIT SCREEN   delay(1000);   LCDA.CLEAR(); //   rtc.initClock();   rtc.setDate(13, 3, 6, 0, 12);   r

水族箱控制器 : Arduino 三部曲

圖片
因為發現要顯示的資料越來越多,原本用來顯示的LCD 1602已不夠使用,於是上網又找到了這一片  SPI LCD12864 Module : 原圖:http://www.dfrobot.com/wiki/images/4/43/DFR0091_CD.jpg 原圖:http://www.dfrobot.com.cn/image/cache/data/DFR0091/DFR0091-500x500.jpg 但是這一片是使用 SPI 介面,為了方便使用這一塊,所以我又加購了 一片 interface shield: 原圖:http://www.dfrobot.com.cn/image/cache/data/DFR0074/2-340x340.jpg 在這一片 Interface Shield 上,IIC 及 SPI 接口都直接拉出來,而且還作上了 SD 儲存卡的接口,這塊板子佔用了一些 Arduino 上的埠: IIC:Analog 4,5 Shiftout:Digital 3,8,9 TLC:Digital 3,9,10,11,13 SD:Digital 10,11,12,13 先用原廠的測試程式LCD12864RSPI 測一下顯示器如何,Compile時就發生了 Error : D:\arduino-1.0.1\libraries\LCD12864RSPI\LCD12864RSPI.cpp:75: error: 'digitalWrite' was not declared in this scope 我想這應該是我已經用 Arduino 1.0.1,廠家給的測試程式是舊的,打開原廠的 LCD12864RSPI_h ,原始的宣告前幾行: //Demo LCD12864 spi //www.dfrobot.com #ifndef LCD12864RSPI_h #define LCD12864RSPI_h #include <avr/pgmspace.h> #include <inttypes.h> 在#clude 的最後一行加上:  #include <Arduino.h> 再重新

Arduino 無線WIFI 傳輸 轉 RS232-Part3

圖片
今天在準備幫水族設計的 Arduino 控制器時發現,一直沒有把Arduino 的無線轉RS-232紀錄下來,趁今天又要重作一次時,趕快紀錄一下,先回復一下記憶,用的是這塊HLK-WIFI-M03: HLK-WIFI-M03 真是好事多磨,這塊板子是 3.3V 而且電流需求 300ma,Arduino 的 3.3V 電流只能到 50ma 左右,更重要的是 Arduino 的 Serial 也是用 5V 為基礎,此時應該需要作 level convert,但是手邊臨時沒有 level convert 可用的 IC,但是 3.3V 的規格跟 Xbee 一樣,手邊有一塊 Arduino I/O expansion shield 5.0 的板子,這塊板子上有 Xbee的介面: 原圖 :http://wiki.dfrobot.com.cn/images/9/98/DFRduino_IO_Expansion_V5_1.jpg 接著調整 I/O Expansion 上的 jumper 改傳輸為 Xbee,調整 jumper 如下: 調整 jumper 接著就是查出 Xbee的腳位: 原圖 : http://www.pyroelectro.com/tutorials/xbee_wireless_interface/img/xbee_pinout.jpg 理論上我應該只要將  HLK-WIFI-M03 的 3.3V 及 Gnd 接上   I/O Expansion  中 Xbee 的 3.3V 及 Gnd, 後再將  HLK-WIFI-M03 的 Tx 接 Xbee 的 Rx 及 HLK-WIFI-M03 的 Rx 接 Xbee 的 Tx,希望就可以正常工作了,先寫一段小程式: print hello 再用 Tcpudpdbg 來測試 ,運氣不錯看到 hello 了: Tcpudpdbg 中看到   HLK-WIFI-M03   中傳回的 hello Arduino 的無線傳輸又向前邁進一步。

水族箱控制器 : Arduino 二部曲

圖片
有了溫度顯示,接下來想替控制器加上一個時間的控制,因為水族箱的燈光會需要用時間來控制,網路上有很多給 Arduino 使用的時間模組,因為LCD顯示器已經使用了 I2C的連法,所以我想找一塊時間模組也是用 I2C來連接,這時候的想法只是希望能多留一些 I/O 埠給其他用途,在網路上找到了這一塊: 原廠產品圖  http://www.waveshare.net/Shop/PCF8563-RTC-Board.htm 這一塊除了提供時間也提供日期,上面而且有 3.3V的電池可以供電,但是需注意此塊模組上I2C的接頭排列位置和 Arduino Sensor Shield 4.0 上的排列方式是不一樣的,不能直接拿排線對接: I2C 接頭腳位是不一樣的 接著當然是希望這一塊模組有現成的軟體可以用,很慶幸的是這一塊板子已有現成的 RTC-PCF8563 Library ,下載程式庫後先用簡單的程式測一下是否可以驅動時間模塊,以下是 http://arduino.cc/playground/Main/RTC-PCF8563 上的 Sample 程式: #include <Wire.h> #include <Rtc_Pcf8563.h> //init the real time clock Rtc_Pcf8563 rtc; void setup() { // Serial begin 9600 Serial.begin(9600); //clear out the registers rtc.initClock(); //set a time to start with. //day, weekday, month, century(1=1900, 0=2000), year(0-99) rtc.setDate(14, 6, 3, 1, 10); //hr, min, sec rtc.setTime(1, 15, 0); } void loop() { //both format functions call the internal getTime() so that the //formatted strings are at the current time/dat