2021年4月24日 星期六

2021-4月24日

 3月初的搬家的新消息來得突然,家姊晉升黃董的日子來臨了!

除此之外,因應新公司設立在竹北的需求,我不得不升格為天龍人搬到台北松山住

台北的日子說真的比起新竹有趣多了!唯一的煩惱就是要想今天去哪玩,哈哈哈!


除此之外,台北的資訊也很發達,學習資源也很豐富,希望自己可以利用在台北的日子好好充實本身!

2021年2月1日 星期一

 2021剛來沒多久,很快的1個月過去了

不曉得是不是上了年紀,出社會工作後時間過得特別快

不過現階段國際情勢很嚴峻,台灣沒受武漢肺炎疫情影響封城是不幸中的大幸了

真希望可以回到放假還能搭飛機出國玩的日子...

2017年1月21日 星期六

Linksprite - Weather Station 氣象預報站

近日手邊取得了一個linksprite出產的玩具,名字叫做Weather Station
基本上就是小型氣象預報站,利用D1板子控制氣壓,溫濕度sensor
並量測目前所在空間的溫度,濕度和氣壓

--------------------------------------------------------------------------------------------------------

原則上參考下列網址的步驟依序進行即可完成這個小型預報站:
http://linksprite.com/wiki/index.php5?title=LinkSprite_weather_station

但網站沒有提供Source Code,只好另外搜尋,好不容易終於找到了,並下載zip檔:
http://www.instructables.com/id/LinkSprite-Weather-Station-Kit-With-Solar-Panel-Po/step4/3-Software-programming/

--------------------------------------------------------------------------------------------------------
盒子內附贈的2條黏土主要用來固定元件,這個部分網站上沒有特別說明,導致剛開始組裝時對固定方式感到許多疑惑,不過少數幾個螺絲固定的位置本人覺得僅供參考,要不要用螺絲鎖或是用黏土接,基本上以個人喜好決定

硬體接線的部分參考如下圖,雖然網站說明有提供實際接線圖,但細節拍得太模糊,反而示意圖較有用...


實際接線如下:

 由於在測試階段,所以電池和太陽能電池先擺著不接,省得浪費電池壽命,用usb接電腦除了燒錄D1板子的功用外,也能當作D1的電源使用

 LCD的部分因為開發版上的GPIO14只有顯示在4PIN插座及SCK,不過SCK有標示註明和GPIO14導通,所以直接插在SCK

 其餘像按鈕開關,SENSOR等示意圖只有標示1 2根接線位置,要注意實際上標示的PIN腳都在4PIN插座內,只要4PIN插座有對上接腳即可,每個插座的VCC,GND都和各自的SENSOR,開關上面4PIN插座VCC和GND的接腳有對上,所以就盡管接吧,不用怕接錯把板子燒壞


















裝好之後開開心心的啟動預報站,結果沒想到LCD螢幕竟然沒有顯示字幕
這個問題從昨天一直找到今天下午,原來是從某個角度看LCD時字體顏色太淡,難怪找了半天都找不到...

下圖中橘色方框標示的腳位是控制LCD的字體顏色深度,0V時為最亮
所以先把紅色方框內的可變電阻逆時針轉到底
但實際上0V時字體就會變成黑色方框,所以逆時針轉到底後再往順時針慢慢轉,
直到出現字體就停止,在轉下去的話字會變得太淺,肉眼會看不見





















另外寫一個測試LCD螢幕的code來測試,終於解決問題了





















Weather Station的運作方式如下:

按鈕短按時,LCD螢幕背景會亮5秒後消失
按鈕長按時(不用太久,只要短按的時間久一點約1秒左右),切換到時間與溫濕度顯示
再長按一次,切換到氣壓值顯示
再長按一次,換回標題畫面

我們先看以下程式碼中和預報站運作相關的內容:

  if(digitalRead(button)==0)
  {
    delay(10);
    if(digitalRead(button)==0)
    {
      backlightOn();
      diffentime = 0;
    }
    delay(140);
    if(digitalRead(button)==0)
    {
      flag++;
      if(flag==4) flag = 1 ;
      while(!digitalRead(button));
      clearLCD();
    }
 --------------------------------------------------------------------------









以上部分代表按鈕按下去時所做的動作(button==0)
在0.01~0.14秒之間(也就是短按的一瞬)就只會作LCD螢幕背景發亮的動作而已
但稍微久按一點,也就是0.14秒後(長按約1秒),之前flag常數會開始做+1的動作(前面設置flag為0),接下來我們看flag每+1後會做什麼事:
 --------------------------------------------------------------------------
  switch(flag)
  {
     case 1 :
            display_logo();
            break;
當flag=1時,一樣顯示LCD的logo,然後跳出switch迴圈


     case 2 :
            display_RTC();
            display_dht22();
            break;
當flag=2時,LCD顯示溫溼度與時間訊息,並跳出switch迴圈


     case 3 :
            display_bmp180();
            break;
當flag=3時,LCD顯示大氣壓力等訊息,並跳出switch迴圈





當flag=4時讓flag=1,回到LCD的LOGO介面




 --------------------------------------------------------------------------

上傳資料到雲端的部分會慢個幾十秒才更新,不過不用擔心,這是正常的現象


~By Bill