:::

4-1 修改sample程式

    一開始從網路搜尋而來,修改了很多次幾乎內容全改,本來想把一些版權宣告刪掉因為怕太亂,不過秉持自由軟體開源精神,就都先保留囉!若有哪些程試片段版權是別人的,也麻煩告知喔!

程式路徑與檔名為:

    雲端→空污感測實務課程→Arduino程式→1050722→LED4_Buzzer_DHT22_ESP8266_Relay_air2_sample

 

    請將以下資訊修改完,才能上傳Arduino,這樣回傳的資料才不會大家都一樣。

1. 修改自己學校的無線網路名稱、密碼:例如名稱 jljhs-dlink-1 密碼 jljhs123


    雙斜線//內容後是註解,可保留中心電腦教室測試的無線網路名稱密碼,在前面加雙斜線註解掉就好。

2. 修改自己的學校代碼

3. 修改設備編號(若同校有兩個以上的老師參加研習,自行決定用哪個編號0~255)

4. 修改自己學校的GPS,參考以下文件,或參考「用Google Map取得GPS座標」教學影片。

    雲端→台南市國中小基本資料.doc

 

完整程式碼:

#include <SoftwareSerial.h>
#include <DHT.h>
#define _rxpin      4    //接ESP8266 TX
#define _txpin      5    //接ESP8266 RX
#define  RST        6    //接ESP8266 RST
#define  DHTPIN     7    //接DHT22資料傳輸
#define  LED_G      8    //接綠燈
#define  LED_Y      9    //接黃燈
#define  LED_R      10   //接紅燈
#define  LED_B      11   //接藍(紫)燈
#define  Relay2     12   //Control Fan or Light
#define  Buzzer     13   //接蜂鳴器
#define  DHTTYPE    DHT22 // SENSOR TYPE - THE ADAFRUIT LIBRARY OFFERS SUPPORT FOR MORE MODELS
DHT dht(DHTPIN, DHTTYPE);
SoftwareSerial WiFiSerial( _rxpin, _txpin ); // ESP8266 RX, TX

//*-- IoT Information
String SSID = "TN-Computer-bridge";          //無線網路名稱
String PASS = "computer123";                 //無線網路密碼
//String SSID = "修改自己的無線網路名稱";      //無線網路名稱
//String PASS = "修改自己的無線網路密碼";      //無線網路密碼
String schoolcode = "修改自己的學校代碼";    //學校代碼
int no = 0;                                  //設備編號,可設定0~255,在監測網上可區別一校多個設備
String PMgps = "修改自己的學校經緯度座標";   //學校經緯度座標
//long updateInterval = 1800000;               //傳送資料時間間隔,測試完請設定1800000(30分鐘)
long updateInterval = 10000;                 //傳送資料時間間隔,測試用10000(10秒鐘) 時間太短亦會發生錯誤

String IP = "pm25.tn.edu.tw";                //PM2.5網站網址

//sharp GP2Y1051 二代 start
int incomeByte[7];
int data;
int z=0;
int sum, sount;
unsigned long error, starttime;
 
// Arduino夏普GP2Y1051AU0F的串口讀取_源代碼_Weesky維天監製
// 作者ID:Weesky ; ...
// 2014年11月23日
// v1.0 基礎版本,成功讀取數值,並且算出PM2.5濃度。
// v1.1 改進了算法,這樣看起來數值高了些。對於愛好者操作更容易了。
//請不要在採樣週期裡面添加延遲delay這樣的。不然串口寄存器只有64Byte,很可能被塞滿。
// 修改者:ng344
// 增加溫濕度感測、2-way-relay、ESP8266、LED警示

void setup()
{
  Serial.begin(2400);
  dht.begin();
  WiFiSerial.begin(9600);
  starttime=millis();      //設定Sharp感測器開始的擷取時間
  sendtoWiFi("AT");
  delay(1000);
  if(WiFiSerial.find("OK"))
  {
    Serial.println("RECEIVED: OK after AT Command\nData ready to sent!");
    connectWiFi();
  }
  else{
    Serial.println("fale");
  }
  pinMode(LED_G,OUTPUT);
  pinMode(LED_Y,OUTPUT);
  pinMode(LED_R,OUTPUT);
  pinMode(LED_B,OUTPUT);
  pinMode(RST,OUTPUT);
  pinMode(Relay2,OUTPUT);
  pinMode(Buzzer,OUTPUT);
  
  digitalWrite(LED_G,LOW);
  digitalWrite(LED_Y,LOW);
  digitalWrite(LED_R,LOW);
  digitalWrite(LED_B,LOW);
  digitalWrite(RST,HIGH);
  digitalWrite(Relay2,HIGH);
  
}
 
void loop(){
  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 )
      {
 
        /* Serial.print("Data OK! |");
        for(int k=0;k<7;k++)
        {
          Serial.print(incomeByte[k]);  //列印出接收到Sharp的資料
          Serial.print("|");
        } 
        */
        //Serial.print(" Vo=");
        float vo=(incomeByte[1]*256.0+incomeByte[2])/1024.0*5.00;
        //Serial.print(vo,3);
        //Serial.print("v | ");
        float T = vo*700;
        // 這裡我修改過咯,2014年11月23日,v1.1
        // 普通Arduinio玩家也可以算出濃度啦!
        // 當然更精準的還需要自行標定哦:)  
        //Serial.print(" PM2.5 = ");
        //Serial.print(T,2);
        //Serial.print("ug/m3 ");
        //Serial.println();
        updateSensor(T);
        delay(updateInterval);   // 設定傳送時間間隔
      }
      else{
        z=0;
        Serial.flush();
        data='/0';
        for(int m=0;m<7;m++){
          incomeByte[m]=0;
        }
      }
      z=0;
    }
  }
}

void updateSensor( float T)
{
  digitalWrite(LED_G,HIGH);
  digitalWrite(LED_Y,HIGH);
  digitalWrite(LED_R,HIGH);
  digitalWrite(LED_B,HIGH);
  delay(2000);

  digitalWrite(LED_G,LOW);
  digitalWrite(LED_Y,LOW);
  digitalWrite(LED_R,LOW);
  digitalWrite(LED_B,LOW);
  delay(1000);
  
   if(T>=0 && T<36) {
    digitalWrite(LED_G,HIGH);
   }
   else if(T>=36 && T<54) {
    digitalWrite(LED_Y,HIGH);
   }
   else if(T>=54 && T<71) {
    digitalWrite(LED_R,HIGH);
   }
   else if(T>=71 && T<200) {
    digitalWrite(LED_B,HIGH);
   }
   else if(T>=200) {
    digitalWrite(LED_B,HIGH);
    digitalWrite(Relay2,LOW);
    delay(1000);
    tone(Buzzer,500);
    delay(1000);
    tone(Buzzer,1000);
    delay(1000);
    noTone(Buzzer);}
   else {digitalWrite(Relay2,HIGH);
    delay(1000);
   }
    //   noTone(Buzzer);}
    // 設定 ESP8266 作為 Client 端
    String cmd = "AT+CIPSTART=\"TCP\",\"" + IP + "\",80";
    sendtoWiFi(cmd);
    delay(1000);
    if( WiFiSerial.find("Error") )
    {
        Serial.print( "RECEIVED: Error\nExit1" );
        return;
    }
    float h = dht.readHumidity();
    float t = dht.readTemperature();
    boolean sendOK = false;  
    
    cmd = "GET /xoops/api.php?schoolcode=" + schoolcode + "&no=" + no + "&pm25=" + T + "&t=" + t + "&h=" + h + "&gps=" + PMgps + "\r\n";
    sendtoWiFi("AT+CIPSEND=" + (String)cmd.length());
    delay(5000);

    if(WiFiSerial.find( ">" ) )
    {
        Serial.print(">");
        WiFiSerial.print(cmd);          //送出pm2.5資料
        if( WiFiSerial.find("OK") ){    //檢查WiFi模組是否正確傳出資料
          sendOK = true;
          }
        Serial.print(cmd);
    }
    else
    {
        sendtoWiFi( "AT+CIPCLOSE" );
    }

    if(sendOK)
    {
        Serial.println( "RECEIVED: OK" );
    }
    else
    {
        Serial.println( "RECEIVED: Error\nExit2" );
     // reset ESP8266
        digitalWrite(RST,LOW);  //need chang to HIGH if  Relay use HIGH active
        delay(1000);
        digitalWrite(RST,HIGH);  //need chang to LOW if  Relay use HIGH active
    }
}

void sendtoWiFi(String cmd)
{
    Serial.print("SEND: ");
    Serial.println(cmd);
    WiFiSerial.println(cmd);
}

boolean connectWiFi()
{
    WiFiSerial.println("AT+CWMODE=1");
    Serial.println("Send AT+CWMODE=1");
    delay(3000);
    
    int count =0;
    String cmd="AT+CWJAP=\"" + SSID + "\",\"" + PASS + "\"";
    sendtoWiFi(cmd);
    Serial.println("Waiting for 15 second to connect network .....");
    delay(15000);
    
    /*
    if(WiFiSerial.find("OK"))
    {
        Serial.println("RECEIVED: OK");
        return true;
    }
    else
    {
        Serial.println("RECEIVED: Unknown");
        return false;
    }
    */
    
     cmd = "AT+ CIPMUX=0";
     sendtoWiFi( cmd );
     if( WiFiSerial.find( "Error") )
    {
        Serial.print( "RECEIVED: Error" );
        return false;
    }
    
}

 


搜尋

錯誤訊息
未知: 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
通知: 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 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 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.000070 - SET SQL_BIG_SELECTS = 1
0.000709 - SELECT * FROM config WHERE (`conf_modid` = '0' AND `conf_catid` = '1') ORDER BY conf_order ASC
0.000339 - SELECT sess_data, sess_ip FROM session WHERE sess_id = '0v6pqlud3ccopfef6eq6f3igrv'
0.000401 - SELECT * FROM modules WHERE dirname = 'tad_book3'
0.000574 - SELECT COUNT(*) FROM group_permission WHERE (`gperm_modid` = '1' AND (`gperm_groupid` = '3') AND `gperm_name` = 'module_read' AND `gperm_itemid` = '9')
0.000336 - SELECT * FROM config WHERE (`conf_modid` = '9') ORDER BY conf_order ASC
0.000465 - 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='20'
0.000189 - SELECT tbsn,title FROM tad_book3 ORDER BY sort
0.000482 - SELECT * FROM config WHERE (`conf_modid` = '0' AND `conf_catid` = '5') ORDER BY conf_order ASC
0.000291 - SELECT COUNT(*) FROM banner
0.000143 - SELECT * FROM banner LIMIT 2, 1
0.003885 - UPDATE banner SET impmade = 1275135 WHERE bid = 3
0.000341 - SELECT * FROM config WHERE (`conf_modid` = '0' AND `conf_catid` = '3') ORDER BY conf_order ASC
0.001221 - SELECT DISTINCT gperm_itemid FROM group_permission WHERE gperm_name = 'block_read' AND gperm_modid = 1 AND gperm_groupid IN (3)
0.000868 - 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.000715 - 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.003488 - update tad_book3_docs set `count` = `count`+1 where tbdsn='20'
0.000275 - select * from tad_book3_docs where tbdsn='20'
0.000168 - select * from tad_book3 where tbsn='3'
0.000281 - select mid from modules where dirname='tad_book3'
0.000548 - desc `tad_book3_data_center` `sort`
0.000218 - 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`='20' order by `sort` , `data_sort`
0.001243 - select tbdsn,title,content,category,page,paragraph,sort,enable,uid,from_tbdsn from tad_book3_docs where tbsn='3' and `enable`='1' order by category,page,paragraph,sort
0.000998 - select tbdsn,title,category,page,paragraph,sort from tad_book3_docs where tbsn='3' and (`content` != '' or `from_tbdsn` != 0) and enable='1' order by category,page,paragraph,sort
0.000233 - SELECT * FROM modules WHERE dirname = 'tadtools'
0.000283 - SELECT * FROM config WHERE (`conf_modid` = '4') ORDER BY conf_order ASC
0.000176 - select mid from modules where dirname='tad_book3'
0.000344 - desc `tad_book3_data_center` `sort`
0.000199 - 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`='20' order by `sort` , `data_sort`
0.000211 - select groupid,name from groups
0.000462 - select * from `tad_book3_files_center` where `col_name`='mp4' and `col_sn`='20' and `kind`='file' order by sort limit 0,1
0.000346 - select `tt_theme`,`tt_use_bootstrap`,`tt_bootstrap_color`,`tt_theme_kind` from `tadtools_setup` where `tt_theme`='school2015'
0.000484 - 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.000331 - SELECT * FROM modules WHERE dirname = 'tad_themes'
0.000330 - SELECT * FROM config WHERE (`conf_modid` = '3') ORDER BY conf_order ASC
0.000181 - select `tt_bootstrap_color` from tadtools_setup where `tt_theme`='school2015'
0.000299 - select * from tad_themes where `theme_name`='school2015'
0.000227 - select conf_value from config where conf_title ='_MD_AM_DEBUGMODE'
0.000272 - select * from tad_themes_blocks where `theme_id`='7'
0.000207 - select mid from modules where dirname='tad_themes'
0.000486 - desc `tad_themes_data_center` `sort`
0.000143 - 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.000241 - select conf_value from config where conf_name ='allow_register'
0.000424 - select `mid`, `name`, `dirname` from modules where isactive='1' and hasmain='1' and weight!=0 order by weight
0.000173 - SELECT * FROM modules WHERE dirname = 'tad_blocks'
0.000198 - select conf_value from config where conf_title ='_MD_AM_DEBUGMODE'
0.000204 - select count(*) from priv_msgs where `to_userid` ='0' and `read_msg`=0 group by `to_userid`
0.000349 - 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.000184 - 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.000166 - 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.000147 - 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.000138 - 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.000138 - 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.000393 - 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.000231 - SELECT * FROM modules WHERE dirname = 'tad_login'
0.000333 - SELECT * FROM config WHERE (`conf_modid` = '14') ORDER BY conf_order ASC
總計: 57
區塊
搜尋: 沒有快取
總計: 1
額外資訊
包含檔案: 204 檔案
使用記憶體: 6992032 bytes
計時
XOOPS 使用 0.130 秒來載入。
XOOPS Boot 使用 0.029 秒來載入。
Module init 使用 0.008 秒來載入。
XOOPS output init 使用 0.037 秒來載入。
Module display 使用 0.029 秒來載入。
Page rendering 使用 0.026 秒來載入。