發表文章

水族開放缸栽種水耕植物

圖片
因為是用 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.init...

水族箱控制器 : 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...

水族箱控制器 : Arduino 首部曲

圖片
每次都在幫別人設計東西,今天決定為自己的魚缸設計個東西,國外的網站有很多人在作,好像還有賣整套的,趁有空,趕快找一下自己的零件,先找出自己之前 LCD 1602 的顯示模組,我好像也有現成的顯示程式,參考一下: Arduino 模擬 Modbus Slave LCD 1602 (I2C 介面) 這次用 Arduino Duemilanove  ATmega168 ,用這塊板子沒什麼特別理由,因為最先找到就是這一塊,再加上一塊 Arduino sensor shield 4.0: 然後又碰到工程師最怕的一件事,改版本從原來的 Arduio 0022 升級到 Arduino 1.0.1: Arduino 1.0.1 結果原有舊的Libraries Compile 都會有 Error, 只好上 LCD1602字符液晶显示器 再下載新版的 Library,終於可以 Compile 完成,我先用 DFROBOT 原廠附的HelloWorld 來測試顯示模組,結果都不會顯示字元,原以為是 LCD 1602壞了,結果是自己糊塗了,忘了調整  Arduino sensor shield 4.0 上的 jumper: 調整 jumper 後 就可以看到 : Hello World 接著就是要連接 DS18B20 1-wirw 設備,讀取溫度,這一段可以參考 Arduino 溫度感應 ,不過這一次我沒有用麵包板,而是直接把電阻差在接頭上: 4.7K歐姆的電阻接在接頭上 1-wire 的 Library  OneWire.zip  其中有一個 DS18x20_tempature 的 範例,Upload 程式並執行,從 Serial Port Monitor我們就會看到: 溫度的值收到且 Arduino 有發現DS18b20 ,再來應該就是把溫度送到 LCD 1602 上,這段程式主要是改 DS18B20 的 example 展現出來就是: 看來魚缸可以有自己的溫度顯示器了。

Aspire Revo R3700 wake-on-lan (遠端喚醒)

圖片
前幾天才改裝完 TP-link 成 DD-WRT, 今天就有人希望我能用 DD-WRT 去 WOL Aspire Revo R3700,這台PC 應該算是一台Home theater media PC,網路上有很多人在討論這台上用WOL 喚醒,我看有些人很容就設成功,但是有些人卻沒結果,我要測的系統的基本資訊如下: 系統基本資訊 首先在 BIOS 中 Power Management 有幾項要先設定: ACPI Suspend Mode = S3  Deep Power Off Mode = disabled Power on by PCIE Devices = Enabled  接著要回Window7中去設定: 裝置管理員> Realtek PCIe GBE Family Contoller>內容>進階 Energy Efficient Ethernet:  關閉   環保節能: 關閉 Wake on Magic Packet: Enabled Wake on Pattern Match: Enabled 關機網路喚醒: 開啟 WOL and 開啟連接速度: 10 Mbps  開啟連接速度我是設在 10 Mbps。 然後要在: 裝置管理員> Realtek PCIe GBE Family Contoller>內容>電源管理 [x] 允許電腦關閉這個裝置以節省電源 [x] 允許這個裝置喚醒電腦 [x]] 只允許 magic packet 喚醒電腦 我原本認為應該不要鉤選 " 允許電腦關閉這個裝置以節省電源",但是好像不鉤連第二項 " 允許這個裝置喚醒電腦" 都無法勾選。 都設完後最好還是到 Command window(cmd) 中去執行一下 PowerCfg: 執行: Powercfg -devicequery wake-armed <enter> 系統回應: Realtek PCIe GBE Family Controller ..... 最重要是要看到要用來當 wol 的介面卡,這樣就表是設定完成。 再來就是要設定 dd-wrt: WOL 設定畫面 如果想在電腦還沒有睡眠前先測...