:::

4. PM2.5感測器精簡版

這篇是從原本研習的版本精簡而來,拿掉UNO板與繼電器,使用ESP-01當作主控板,之前在討論區有分享過,現在整理進來

器材準備

ESP-01可用的IO不多,所以拿掉了繼電器與4顆LED燈,只接PM2.5感測器+DHT-22溫溼度感測器+與蜂鳴器,腳位規畫如下圖

編輯arduino程式

程式改編自盛南老師,修改一下各校環境資訊,就可以上傳了(詳細上傳方式請參閱第一章)

#include <DHT.h>
#include <ESP8266WiFi.h>
#define  Buzzer     2   //接蜂鳴器
#define  DHTPIN     0   //接DHT22
#define  DHTTYPE    DHT22 
DHT dht(DHTPIN, DHTTYPE,11);

//*-- IoT Information
#define SSID    "修改無線網路名稱"      //無線網路名稱
#define PASS    "修改無線網路密碼"      //無線網路密碼
#define HOST    "pm25.tn.edu.tw"        //PM2.5網站網址
#define PORT    80
String PMgps = "修改學校經緯度座標";   //學校經緯度座標
String schoolcode = "修改學校代碼";    //學校代碼
int no = 0;                            //設備編號,可設定0~255,在監測網上可區別一校多個設備
long updateInterval = 1200000;    //傳送資料時間間隔,測試完請設定1800000(30分鐘)
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, buzzerStart, updateStart;
 
void updateSensor( float T)
{
   
   if(T>=200) {
    digitalWrite(Buzzer,HIGH);
    buzzerStart=millis();      //設定Buzzer告警開始時間
   }
   
   if(abs(millis()-buzzerStart)>2000){ 
      digitalWrite(Buzzer,LOW);
   }
   
   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 );
    dht.begin();
    starttime=millis();      //設定Sharp感測器開始的擷取時間
    updateStart = millis();      //設定第一次即上傳
    pinMode(Buzzer,OUTPUT);
}
 
void loop(){

   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;
    }
  }
}

 

電路接線圖

完整組裝請參考盛南老師畫的電路圖

接好線路後,因為ESP-01主控板並沒有連接到電腦,無法從本機序列埠得知連線狀況,只能上監測網站等看看資料是否有上傳成功了


搜尋

錯誤訊息
未知: 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.000075 - SET SQL_BIG_SELECTS = 1
0.000646 - SELECT * FROM config WHERE (`conf_modid` = '0' AND `conf_catid` = '1') ORDER BY conf_order ASC
0.000314 - SELECT sess_data, sess_ip FROM session WHERE sess_id = '385goarpd6op58ll250gmgdmlu'
0.000342 - SELECT * FROM modules WHERE dirname = 'tad_book3'
0.000667 - SELECT COUNT(*) FROM group_permission WHERE (`gperm_modid` = '1' AND (`gperm_groupid` = '3') AND `gperm_name` = 'module_read' AND `gperm_itemid` = '9')
0.000416 - SELECT * FROM config WHERE (`conf_modid` = '9') ORDER BY conf_order ASC
0.000552 - 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='42'
0.000399 - SELECT tbsn,title FROM tad_book3 ORDER BY sort
0.000554 - SELECT * FROM config WHERE (`conf_modid` = '0' AND `conf_catid` = '5') ORDER BY conf_order ASC
0.000353 - SELECT COUNT(*) FROM banner
0.000144 - SELECT * FROM banner LIMIT 2, 1
0.004950 - UPDATE banner SET impmade = 1275132 WHERE bid = 3
0.000472 - SELECT * FROM config WHERE (`conf_modid` = '0' AND `conf_catid` = '3') ORDER BY conf_order ASC
0.001312 - SELECT DISTINCT gperm_itemid FROM group_permission WHERE gperm_name = 'block_read' AND gperm_modid = 1 AND gperm_groupid IN (3)
0.001087 - 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.000907 - 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.004260 - update tad_book3_docs set `count` = `count`+1 where tbdsn='42'
0.000417 - select * from tad_book3_docs where tbdsn='42'
0.000216 - select * from tad_book3 where tbsn='11'
0.000361 - select mid from modules where dirname='tad_book3'
0.000568 - desc `tad_book3_data_center` `sort`
0.000273 - 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`='42' order by `sort` , `data_sort`
0.001848 - 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.001285 - 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.000223 - SELECT * FROM modules WHERE dirname = 'tadtools'
0.000251 - SELECT * FROM config WHERE (`conf_modid` = '4') ORDER BY conf_order ASC
0.000203 - select mid from modules where dirname='tad_book3'
0.000364 - desc `tad_book3_data_center` `sort`
0.000172 - 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`='42' order by `sort` , `data_sort`
0.000254 - select groupid,name from groups
0.000473 - select * from `tad_book3_files_center` where `col_name`='mp4' and `col_sn`='42' and `kind`='file' order by sort limit 0,1
0.000322 - select `tt_theme`,`tt_use_bootstrap`,`tt_bootstrap_color`,`tt_theme_kind` from `tadtools_setup` where `tt_theme`='school2015'
0.000512 - 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.000232 - SELECT * FROM modules WHERE dirname = 'tad_themes'
0.000237 - SELECT * FROM config WHERE (`conf_modid` = '3') ORDER BY conf_order ASC
0.000151 - select `tt_bootstrap_color` from tadtools_setup where `tt_theme`='school2015'
0.000361 - select * from tad_themes where `theme_name`='school2015'
0.000234 - select conf_value from config where conf_title ='_MD_AM_DEBUGMODE'
0.000305 - select * from tad_themes_blocks where `theme_id`='7'
0.000215 - select mid from modules where dirname='tad_themes'
0.000557 - desc `tad_themes_data_center` `sort`
0.000164 - 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.000234 - select conf_value from config where conf_name ='allow_register'
0.000325 - select `mid`, `name`, `dirname` from modules where isactive='1' and hasmain='1' and weight!=0 order by weight
0.000166 - SELECT * FROM modules WHERE dirname = 'tad_blocks'
0.000191 - select conf_value from config where conf_title ='_MD_AM_DEBUGMODE'
0.000244 - select count(*) from priv_msgs where `to_userid` ='0' and `read_msg`=0 group by `to_userid`
0.000391 - 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.000209 - 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.000158 - 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.000146 - 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.000141 - 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.000160 - 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.000141 - 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.000437 - 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.000208 - SELECT * FROM modules WHERE dirname = 'tad_login'
0.000385 - SELECT * FROM config WHERE (`conf_modid` = '14') ORDER BY conf_order ASC
總計: 57
區塊
搜尋: 沒有快取
總計: 1
額外資訊
包含檔案: 204 檔案
使用記憶體: 6966800 bytes
計時
XOOPS 使用 0.141 秒來載入。
XOOPS Boot 使用 0.029 秒來載入。
Module init 使用 0.009 秒來載入。
XOOPS output init 使用 0.041 秒來載入。
Module display 使用 0.033 秒來載入。
Page rendering 使用 0.028 秒來載入。