Back

PM2.5精簡版分享(使用ESP-01作主控版)

Menu
黃宇男
#1
2016-08-12 09:35:51
1.打開ARDUINO軟體,檔案>>偏好設定,
在下方額外的板子管理員網址:輸入http://arduino.esp8266.com/stable/package_esp8266com_index.json


2.接著到工具>>板子>>板子管理員
拉到最下一欄會多一項ESP8266,需在欄內點一下才會出現安裝訊息


安裝好後會顯示INSTALLED

3.接下來到工具>>板子>>選Generic ESP8266 Module


板子選好後,再改一下Flash Size(我只知道1M,後面的SPIFFS就不知啥意思)


4.把ESP8266接到USB to 8266轉接板,並且將開關調到燒錄模式


5.把以下程式碼貼到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" );
        
        delay(2000);
        client.stop();
        updateStart = millis();      //重設上傳時間
      }     
   }
}

void setup()
{
    Serial.begin( 2400 );
    Serial.println( SSID );
    WiFi.begin( SSID, PASS );

    dht.begin();
    
    starttime=millis();      //設定Sharp感測器開始的擷取時間
    updateStart = millis();      //設定第一次即上傳
    delay(2000);
 
  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);
          Serial.print("PM2.5_Average = "); 
          Serial.println(average_pm2d5,2); 
          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的腳位定義,
ESP-01可用腳位沒幾支(若您想做其他專案,就是把感測器接到GPIO0或GPIO2),
少了一片UNO連接起來就簡單多了


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






ng344
#2
2016-08-24 12:59:33
超棒的分享,讚,大家一定要玩玩看喔!
第一頁 上一頁 1 下一頁 最後頁

PM2.5精簡版分享(使用ESP-01作主控版)

Menu
要先登入才能發表。
全部 錯誤訊息 (11) 已棄用 (0) 資料庫語法 (19) 區塊 (0) 額外資訊 (2) 計時(3)
錯誤訊息
未知: 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
通知: Undefined index: bootstrap 在檔案中的第 /modules/tadtools/class/Utility.php 列 844
通知: Undefined variable: dir 在檔案中的第 /modules/tad_discuss/pda.php 列 266
通知: Undefined variable: width 在檔案中的第 /modules/tad_discuss/pda.php 列 266
通知: Undefined variable: main 在檔案中的第 /modules/tad_discuss/pda.php 列 293
通知: Undefined variable: dir 在檔案中的第 /modules/tad_discuss/pda.php 列 266
通知: Undefined variable: width 在檔案中的第 /modules/tad_discuss/pda.php 列 266
通知: Undefined variable: form_data_edit 在檔案中的第 /modules/tad_discuss/pda.php 列 337
通知: Undefined variable: title 在檔案中的第 /modules/tad_discuss/pda.php 列 771
已棄用
資料庫語法
0.000083 - SET SQL_BIG_SELECTS = 1
0.000604 - SELECT * FROM config WHERE (`conf_modid` = '0' AND `conf_catid` = '1') ORDER BY conf_order ASC
0.000271 - SELECT sess_data, sess_ip FROM session WHERE sess_id = 'pqfmi8rfapa5svbt3fnq3dnf1o'
0.000320 - SELECT * FROM modules WHERE dirname = 'tad_discuss'
0.000553 - SELECT COUNT(*) FROM group_permission WHERE (`gperm_modid` = '1' AND (`gperm_groupid` = '3') AND `gperm_name` = 'module_read' AND `gperm_itemid` = '13')
0.000379 - SELECT * FROM config WHERE (`conf_modid` = '13') ORDER BY conf_order ASC
0.000289 - SELECT * FROM modules WHERE dirname = 'tadtools'
0.000309 - SELECT * FROM config WHERE (`conf_modid` = '4') ORDER BY conf_order ASC
0.000375 - select * from tad_discuss where DiscussID='48'
0.000417 - SELECT COUNT(*) FROM group_permission WHERE (`gperm_modid` = '13' AND (`gperm_groupid` = '3') AND `gperm_name` = 'forum_read' AND `gperm_itemid` = '1')
0.003911 - update tad_discuss set `Counter`=`Counter`+1 where `DiscussID`='48'
0.000131 - select * from `tad_discuss_board` where `BoardID` = '1'
0.000436 - select * from tad_discuss where DiscussID='48' or ReDiscussID='48' order by ReDiscussID , DiscussDate
0.000315 - select * from tad_discuss where DiscussID='48' or ReDiscussID='48' order by ReDiscussID , DiscussDate LIMIT 0, 20
0.000231 - SELECT * FROM users WHERE uid = '12'
0.000336 - SELECT * FROM smiles
0.000344 - select * from `tad_discuss_files_center` where `col_name`='DiscussID' and `col_sn`='48' order by sort
0.000293 - SELECT * FROM users WHERE uid = '2'
0.000237 - select * from `tad_discuss_files_center` where `col_name`='DiscussID' and `col_sn`='52' order by sort
總計: 19
區塊
總計: 0
額外資訊
包含檔案: 111 檔案
使用記憶體: 4872072 bytes
計時
XOOPS 使用 0.060 秒來載入。
XOOPS Boot 使用 0.029 秒來載入。
Module init 使用 0.031 秒來載入。