:::

4-1 為PM2.5感測器增加液晶顯示

器材準備

跟精簡版比起來這次加入LCD1602螢幕顯示PM2.5與溫溼度資訊,因為要多佔用兩個IO,所以原本的蜂鳴器就拿掉了,腳位規劃如下圖:

LCD1602_I2C在arduino已有LiquidCrystal_I2C函式庫可用,不過在ESP-01上面並不適用,GOOGLE一下網路上已有大德改寫完成,網址如下:

https://github.com/agnunez/ESP8266-I2C-LCD1602

請先下載函式庫解壓到arduino底下的library資料夾,命名為LiquidCrystal_I2C

編輯Arduino程式

#include <DHT.h>
#include <ESP8266WiFi.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h> 

#define  DHTPIN     1    
#define  DHTTYPE    DHT22 
DHT dht(DHTPIN, DHTTYPE,11);

LiquidCrystal_I2C lcd(0x27,16,2); // Check I2C address of LCD, normally 0x27 or 0x3F
  
//*-- IoT Information
#define SSID    "無線網路名稱"          
#define PASS    "無線網路密碼"       
#define HOST    "pm25.tn.edu.tw"     
#define PORT    80
String PMgps = "學校經緯度座標";  
String schoolcode = "學校代碼";   
int no = 0;                                  //設備編號,可設定0~255,在監測網上可區別一校多個設備
long updateInterval = 1200000;    //傳送資料時間間隔,測試完請設定1800000(30分鐘)
long updateLcd = 10000;     //LCD更新時間間隔
long resettime =86400000;       //每24小時自動重開機


//sharp GP2Y1051 二代 start
int incomeByte[7];
int data;
int z=0;
int sum, count;
float average_pm2d5,sum_2s;
unsigned long error, starttime, updateStart, updateStart2;

 
void updateSensor( float T)
{
  
   if(abs( millis() - updateStart2) > updateLcd ) { 
   float h = dht.readHumidity();
   float t = dht.readTemperature(); 
   lcd.clear();
   lcd.print("PM2.5:");
   lcd.print(T,1);
   lcd.setCursor(11,0);
   lcd.print("ug/m3");
   lcd.setCursor(0,1);
   lcd.print("T:");
   lcd.print(t,1);
   lcd.print("'C H:");
   lcd.print(h,1);
   lcd.print("%"); 
   updateStart2 = millis(); 
   }
     
   if(abs( millis() - updateStart) > updateInterval | updateStart == 0 ){    
  float h = dht.readHumidity();
  float t = dht.readTemperature();
     WiFiClient client;
    if( !client.connect( HOST, PORT ) )
    {
         return;
    }
    else
    {
        String getStr = "GET /xoops/api.php?schoolcode=" + schoolcode + "&no=" + no + "&pm25=" + T + "&t=" + t + "&h=" + h +"&gps=" + PMgps + " HTTP/1.1\r\n";
        client.print( getStr );
        client.print( "Host: pm25.tn.edu.tw\n" );
        client.print( "Connection: close\r\n\r\n" );
        client.stop();
        updateStart = millis();      //重設上傳時間
     }     
    }     
   
  
}

void setup()
{
    Serial.begin( 2400 );

    WiFi.begin( SSID, PASS );
 
    lcd.begin(0,2);      // In ESP8266-01, SDA=0, SCL=2               
    lcd.backlight();
    dht.begin();
    starttime=millis();      //設定Sharp感測器開始的擷取時間
    updateStart = millis();      //設定第一次即上傳
    updateStart2 = millis();      //LCD更新計時器
  
}
 
void loop(){
   //每24小時重開機
  if(starttime >= resettime) {
    ESP.restart();  
    }

  while (Serial.available()>0){
    data=Serial.read();
    if(data == 170){
      z=0;
      incomeByte[z]=data;
    }
    else{
      z++;
      incomeByte[z]=data;
    } 
    if(z==6)
    {
      sum=incomeByte[1]+ incomeByte[2]+ incomeByte[3] + incomeByte[4];
 
      if(incomeByte[5]==sum && incomeByte[6]==255 )
      {
        float vo=(incomeByte[1]*256.0+incomeByte[2])/1024.0*5.00;
        float pm = vo*700;
        sum_2s=sum_2s + pm;
        count++;
        if(abs(millis()-starttime)>2000){    
          average_pm2d5=(sum_2s/count)*1.00;
          updateSensor(average_pm2d5);
          starttime=millis();
          sum_2s=0;
          count=0;
        }
      }
      else{
        z=0;
        Serial.flush();
        data='/0';
        for(int m=0;m<7;m++){
          incomeByte[m]=0;
        }
      }
      z=0;
    }
  }
}

預設每10秒刷新一次螢幕資訊,每20鐘上傳資料到資訊中心,修改好後上傳到ESP-01(詳細上傳方式請參閱第1章)

電路接線圖

線太多看起來有點複雜,不過對顏色就不會錯了,圖片忘了標示上排電源是5V,下排電源3.3V

接好線路,插上變壓器,打完收工

圖示中T代表溫度,H代表溼度


搜尋

錯誤訊息
未知: Array and string offset access syntax with curly braces is deprecated 在檔案中的第 /include/functions.encoding.php 列 40
未知: Array and string offset access syntax with curly braces is deprecated 在檔案中的第 /include/functions.encoding.php 列 40
未知: Array and string offset access syntax with curly braces is deprecated 在檔案中的第 /include/functions.encoding.php 列 73
未知: Function get_magic_quotes_gpc() is deprecated 在檔案中的第 /class/libraries/vendor/xoops/xmf/src/Request.php 列 505
未知: Function get_magic_quotes_gpc() is deprecated 在檔案中的第 /class/libraries/vendor/xoops/xmf/src/Request.php 列 119
未知: Function get_magic_quotes_gpc() is deprecated 在檔案中的第 /class/libraries/vendor/xoops/xmf/src/Request.php 列 505
未知: Function get_magic_quotes_gpc() is deprecated 在檔案中的第 /class/libraries/vendor/xoops/xmf/src/Request.php 列 119
未知: Function get_magic_quotes_gpc() is deprecated 在檔案中的第 /class/libraries/vendor/xoops/xmf/src/Request.php 列 119
未知: Function get_magic_quotes_gpc() is deprecated 在檔案中的第 /class/libraries/vendor/xoops/xmf/src/Request.php 列 119
通知: Undefined variable: disabled 在檔案中的第 /modules/tad_book3/function.php 列 818
警告: str_repeat(): Second argument has to be greater than or equal to 0 在檔案中的第 /modules/tad_book3/function.php 列 818
通知: Undefined variable: disabled 在檔案中的第 /modules/tad_book3/function.php 列 818
通知: Undefined variable: disabled 在檔案中的第 /modules/tad_book3/function.php 列 818
通知: Undefined variable: disabled 在檔案中的第 /modules/tad_book3/function.php 列 818
通知: Undefined variable: disabled 在檔案中的第 /modules/tad_book3/function.php 列 818
通知: Undefined variable: disabled 在檔案中的第 /modules/tad_book3/function.php 列 818
通知: Undefined variable: disabled 在檔案中的第 /modules/tad_book3/function.php 列 818
通知: Undefined variable: disabled 在檔案中的第 /modules/tad_book3/function.php 列 818
通知: Undefined index: bootstrap 在檔案中的第 /modules/tadtools/preloads/core.php 列 68
已棄用
資料庫語法
0.000091 - SET SQL_BIG_SELECTS = 1
0.000881 - SELECT * FROM config WHERE (`conf_modid` = '0' AND `conf_catid` = '1') ORDER BY conf_order ASC
0.000453 - SELECT sess_data, sess_ip FROM session WHERE sess_id = '82q0bj29rhin1da0jgcjj1k7jh'
0.000478 - SELECT * FROM modules WHERE dirname = 'tad_book3'
0.001111 - SELECT COUNT(*) FROM group_permission WHERE (`gperm_modid` = '1' AND (`gperm_groupid` = '3') AND `gperm_name` = 'module_read' AND `gperm_itemid` = '9')
0.000424 - SELECT * FROM config WHERE (`conf_modid` = '9') ORDER BY conf_order ASC
0.000586 - select a.tbsn,a.title,b.author,a.category,a.page,a.paragraph,a.sort from tad_book3_docs as a left join tad_book3 as b on a.tbsn=b.tbsn where a.tbdsn='43'
0.000245 - SELECT tbsn,title FROM tad_book3 ORDER BY sort
0.000523 - SELECT * FROM config WHERE (`conf_modid` = '0' AND `conf_catid` = '5') ORDER BY conf_order ASC
0.000349 - SELECT COUNT(*) FROM banner
0.000178 - SELECT * FROM banner LIMIT 2, 1
0.004065 - UPDATE banner SET impmade = 1275158 WHERE bid = 3
0.000566 - SELECT * FROM config WHERE (`conf_modid` = '0' AND `conf_catid` = '3') ORDER BY conf_order ASC
0.001763 - SELECT DISTINCT gperm_itemid FROM group_permission WHERE gperm_name = 'block_read' AND gperm_modid = 1 AND gperm_groupid IN (3)
0.001333 - SELECT b.* FROM newblocks b, block_module_link m WHERE m.block_id=b.bid AND b.isactive=1 AND b.visible=1 AND m.module_id IN (0,9) AND b.bid IN (1,2,3,4,5,6,7,8,9,10,11,18,15,16,20,19,58,60,61,73,72,74,71,76,75,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,111,109,110,112,113,114,115,116,117,118,119,120,121,122,123) ORDER BY b.weight, m.block_id
0.001207 - SELECT f.*, s.tpl_source FROM tplfile f LEFT JOIN tplsource s ON s.tpl_id=f.tpl_id WHERE (`tpl_tplset` = 'default' AND `tpl_file` = 'system_block_search.tpl') ORDER BY tpl_refid
0.003916 - update tad_book3_docs set `count` = `count`+1 where tbdsn='43'
0.000387 - select * from tad_book3_docs where tbdsn='43'
0.000223 - select * from tad_book3 where tbsn='11'
0.000283 - select mid from modules where dirname='tad_book3'
0.000580 - desc `tad_book3_data_center` `sort`
0.000238 - select `col_sn`,`data_name`,`data_sort`, `data_value` from `tad_book3_data_center` where `mid`= '9' and `col_name`='read_tbdsn_date' and `col_sn`='43' order by `sort` , `data_sort`
0.001639 - select tbdsn,title,content,category,page,paragraph,sort,enable,uid,from_tbdsn from tad_book3_docs where tbsn='11' and `enable`='1' order by category,page,paragraph,sort
0.001155 - select tbdsn,title,category,page,paragraph,sort from tad_book3_docs where tbsn='11' and (`content` != '' or `from_tbdsn` != 0) and enable='1' order by category,page,paragraph,sort
0.000260 - SELECT * FROM modules WHERE dirname = 'tadtools'
0.000347 - SELECT * FROM config WHERE (`conf_modid` = '4') ORDER BY conf_order ASC
0.000197 - select mid from modules where dirname='tad_book3'
0.000417 - desc `tad_book3_data_center` `sort`
0.000209 - select `col_sn`,`data_name`,`data_sort`, `data_value` from `tad_book3_data_center` where `mid`= '9' and `col_name`='video_tbdsn_date' and `col_sn`='43' order by `sort` , `data_sort`
0.000262 - select groupid,name from groups
0.000654 - select * from `tad_book3_files_center` where `col_name`='mp4' and `col_sn`='43' and `kind`='file' order by sort limit 0,1
0.000497 - select `tt_theme`,`tt_use_bootstrap`,`tt_bootstrap_color`,`tt_theme_kind` from `tadtools_setup` where `tt_theme`='school2015'
0.000556 - SELECT f.*, s.tpl_source FROM tplfile f LEFT JOIN tplsource s ON s.tpl_id=f.tpl_id WHERE (`tpl_tplset` = 'default' AND `tpl_file` = 'tadbook3_index.tpl') ORDER BY tpl_refid
0.000375 - SELECT * FROM modules WHERE dirname = 'tad_themes'
0.000432 - SELECT * FROM config WHERE (`conf_modid` = '3') ORDER BY conf_order ASC
0.000219 - select `tt_bootstrap_color` from tadtools_setup where `tt_theme`='school2015'
0.000523 - select * from tad_themes where `theme_name`='school2015'
0.000295 - select conf_value from config where conf_title ='_MD_AM_DEBUGMODE'
0.000379 - select * from tad_themes_blocks where `theme_id`='7'
0.000208 - select mid from modules where dirname='tad_themes'
0.000572 - desc `tad_themes_data_center` `sort`
0.000166 - select `col_sn`,`data_name`,`data_sort`, `data_value` from `tad_themes_data_center` where `mid`= '3' and `col_name`='theme_id' and `col_sn`='7' order by `sort` , `data_sort`
0.000260 - select conf_value from config where conf_name ='allow_register'
0.000417 - select `mid`, `name`, `dirname` from modules where isactive='1' and hasmain='1' and weight!=0 order by weight
0.000179 - SELECT * FROM modules WHERE dirname = 'tad_blocks'
0.000197 - select conf_value from config where conf_title ='_MD_AM_DEBUGMODE'
0.000282 - select count(*) from priv_msgs where `to_userid` ='0' and `read_msg`=0 group by `to_userid`
0.000387 - select `menuid`, `itemname`, `itemurl`, `target`, `icon`, `link_cate_name`, `link_cate_sn`, `read_group` from tad_themes_menu where of_level='0' and status='1' order by position
0.000217 - select `menuid`, `itemname`, `itemurl`, `target`, `icon`, `link_cate_name`, `link_cate_sn`, `read_group` from tad_themes_menu where of_level='11' and status='1' order by position
0.000163 - select `menuid`, `itemname`, `itemurl`, `target`, `icon`, `link_cate_name`, `link_cate_sn`, `read_group` from tad_themes_menu where of_level='14' and status='1' order by position
0.000331 - select `menuid`, `itemname`, `itemurl`, `target`, `icon`, `link_cate_name`, `link_cate_sn`, `read_group` from tad_themes_menu where of_level='15' and status='1' order by position
0.000181 - select `menuid`, `itemname`, `itemurl`, `target`, `icon`, `link_cate_name`, `link_cate_sn`, `read_group` from tad_themes_menu where of_level='17' and status='1' order by position
0.000179 - select `menuid`, `itemname`, `itemurl`, `target`, `icon`, `link_cate_name`, `link_cate_sn`, `read_group` from tad_themes_menu where of_level='16' and status='1' order by position
0.000171 - select `menuid`, `itemname`, `itemurl`, `target`, `icon`, `link_cate_name`, `link_cate_sn`, `read_group` from tad_themes_menu where of_level='18' and status='1' order by position
0.000472 - select a.* from tad_themes_files_center as a left join tad_themes as b on a.col_sn=b.theme_id where a.`col_name`='slide' and b.`theme_name`='school2015'
0.000283 - SELECT * FROM modules WHERE dirname = 'tad_login'
0.000434 - SELECT * FROM config WHERE (`conf_modid` = '14') ORDER BY conf_order ASC
總計: 57
區塊
搜尋: 沒有快取
總計: 1
額外資訊
包含檔案: 204 檔案
使用記憶體: 6966768 bytes
計時
XOOPS 使用 0.155 秒來載入。
XOOPS Boot 使用 0.032 秒來載入。
Module init 使用 0.009 秒來載入。
XOOPS output init 使用 0.047 秒來載入。
Module display 使用 0.033 秒來載入。
Page rendering 使用 0.033 秒來載入。