:::
PM2.5空污監測器實作

晒寶貝喔!分享一下您精心製作的pm2.5感測器~~

discuss pic 2016-07-25 20:41:07
大家架設好後,不仿拍個照,甚至架設中的英姿~~好讓其他老師參考,大家分享一下喔~~
discuss pic 2016-07-26 22:34:05
discuss pic 2016-07-30 15:47:10
水喔!水喔!擺著當展示,MAKER環境教育喔~
discuss pic 2016-08-04 21:27:06
我把感測器裝到盒子上方,方便跟學生說明。


盒子側面只挖電源孔。


未來打算把4個LED燈移到盒子外面方便觀察,順便貼上監測網站的 QR code。

感謝鄭老師,自己動手做很好玩^^
discuss pic 2016-08-04 22:32:38
太讚了~~~~~~,還想到把LED燈外移,這是個好構想!感謝嘉龍老師分享
discuss pic 2016-08-04 23:35:01

一代目偵測器(第一梯研習,只有sharp傳感器+無線模組)



二代目偵測器(第二梯研習,加裝溫濕度感測+LED指示)
綠光LED顏色容易搞混,所以換成白光LED!


以第二梯研習送的塑膠盒當比例尺!(粉紅色盒子是閩南語認證的小禮物外盒


 實際上線工作情況影片



話說第一梯研習給的sharp GY1010傳感器會有偵測數值偏高的情形,上線後常常看到網頁顯示一片紫!

小弟當時的作法:





後來上網google,找到幾個不同寫法的偵測判斷程式,有興趣的參考囉!


discuss pic 2016-08-05 00:52:55
哈哈,真是有趣~~

不過,樂文老師,提供的兩個網址參數的換算公式應該都差不多,我也有參考到這兩篇,後來改成國外數據曲線的原始計算方式,不知道是不是真的有些感測器有問題,還是線路接觸不良的問題?需要大家一起來找看看解法....
discuss pic 2016-08-05 16:57:57
PM2.5精簡版~~~

ESP8266其實可以像UNO板一樣當作主控版,
這次研習配發的是ESP-01,只有兩個GPIO,一個給DHT22用,一個給SHARP(二代)用,
就沒法再接LED.蜂鳴器.繼電器,較不適合教學展示(全接的話可用ESP-12),
不過若是純粹記錄資料用,倒是可以省下UNO板跟很多小零件
-------
更正一下:
DHT22佔用一個GPIO,而SHARP則是接到RX,
所以還空出一個GPIO可以利用,如接蜂鳴器嗶嗶叫,
或是接顆IR LED更讚,整組放在冷氣機附近,就可以紅外線搖控冷氣機了~~~
discuss pic 2016-08-07 08:32:30
天哪!宇男老師實在是太強了!這本來是未來的進階課程,沒想到你自行完成!!實在太了不起了,我畫了電路圖,麻煩老師可否提供一下程式,大家有福了~~

discuss pic 2016-08-07 21:19:06
感謝盛南老師的電路圖,清楚明瞭~~
小弟的程式碼,供大家參考,內容是拜請孤狗大神拼湊而來的,為了方便閱讀有些原作的註解已刪減了(不良示範)
本例中並沒有使用蜂鳴器,這部份就麻煩盛南老師看要讓它怎麼叫了...

#include <DHT.h> #include <ESP8266WiFi.h> #define DHTPIN 0 //#define BUZZPIN 2 #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; float T; int sum, sount; unsigned long error, starttime; void setup() { Serial.begin( 2400 ); Serial.println( SSID ); WiFi.begin( SSID, PASS ); dht.begin(); starttime=millis(); //設定Sharp感測器開始的擷取時間 delay(2000); } 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; T = vo*700; } else{ z=0; Serial.flush(); data='/0'; for(int m=0;m<7;m++){ incomeByte[m]=0; } } z=0; } } updateSensor(T); delay(updateInterval); // 設定傳送時間間隔 } void updateSensor( float T) { 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(5000); client.stop(); } }

discuss pic 2016-08-07 22:47:58
路過的訪客
    真是太棒了!原來高手就在身邊,放上buzzer的部分,請多指教一下,也可以從雲端下載
雲端→Arduino程式→1050722→ESP8266_Buzzer_DHT22_air2_sample
    大家也可以玩玩看,不過,燒錄方式需要用到esp8266 to usb轉接器,並且參考 http://ruten-proteus.blogspot.tw/2015/09/esp8266-kits-support-arduino-ide.html 中,用Arduino IDE程式匯入ESP8266的程式庫,設定相關參數,如1MB 512+512,若覺得太複雜,就請等我將ESP8266講義完成,或者是.....宇男兄可以讓你嶄露身手一下.....^^

#include <DHT.h>
#include <ESP8266WiFi.h>
#define  DHTPIN     0
#define  BUZZPIN    2    
#define  DHTTYPE    DHT22 
DHT dht(DHTPIN, DHTTYPE);

//*-- 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;
float T;
int sum, sount;
unsigned long error, starttime;

void setup() {
    Serial.begin( 2400 );
    Serial.println( SSID );
    WiFi.begin( SSID, PASS );
    dht.begin();
    pinMode( DHTPIN, INPUT );
    pinMode( BUZZPIN, OUTPUT );
    digitalWrite( BUZZPIN, OFF );    
    starttime=millis();      //設定Sharp感測器開始的擷取時間
    delay(2000);
}

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;
   
       T = vo*700;
   
      }
      else{
        z=0;
        Serial.flush();
        data='/0';
        for(int m=0;m<7;m++){
          incomeByte[m]=0;
          }
      }
      z=0;
    }
  }
          updateSensor(T);
          delay(updateInterval);   // 設定傳送時間間隔  
}

void updateSensor( float T)
{
   if(T>200) {
      digitalWrite( BUZZPIN, ON );
               delay(1000);
      digitalWrite( BUZZPIN, OFF );
               delay(1000);
      digitalWrite( BUZZPIN, ON );
               delay(1000);
      digitalWrite( BUZZPIN, OFF );
               delay(1000);
      digitalWrite( BUZZPIN, ON );
               delay(1000);
      digitalWrite( BUZZPIN, OFF );
      }

    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(5000);
        client.stop();
      }
}


discuss pic 2016-08-08 07:48:43
盛南老師,小小問題請教一下:
為了節省資料庫資源所以設定每30分鐘才上傳資料一次,
不過LED與蜂鳴器的反應與資料庫無關,
是不是可以從UpdateSensor()裡面獨立出來,
讓它可以即時改變LED燈號或是鳴叫聲,
不用等30分後要寫入資料庫時才變更,
這樣在教學展示時較能看到它的變化
以上一點小建議
discuss pic 2016-08-08 16:44:04
是的,這也是有想到的,只是比較沒時間修改及測試程式sorry,還可以考慮收個幾次資料再上傳平均值等,這都是可以思考的部分

其實我自己還有測試在Arduino內做一個小網站,可以直接連上去察看即時的數據,有時間會再分享出來....

宇男老師,可以的話幫忙修改測試一下,^^
discuss pic 2016-08-22 09:01:02
經過不到一個月,有兩個燈似乎壞了,另一個亮度已經漸暗了,但是資料還是會上傳,請問是LED燈的品質問題?還是應該再加上電阻來避免LED燈燒毀?
discuss pic 2016-08-24 13:01:18
老師,請參考此討論串最後的內容,感謝。
http://pm25.tn.edu.tw/modules/tad_discuss/discuss.php?DiscussID=6&BoardID=1
discuss pic 2016-08-25 08:21:42
LED不加電阻的話可以改用PWN輸出減少出力,
支援PWM的腳位是3.5.6.9.10.11,
藍紅黃燈已接到11.10.9了,只需把綠燈改接到3
再把原本控制LED開關的語法digitalWrite(腳位,開/關), 開關HIGH/LOW,ON/OFF,1/0都通用
改成analogWrite(腳位,0~255) ,0關閉,255最亮,
找一個LED可以看得清楚不會太暗的數值,
延長LED的壽命,
以上供各位參考

搜尋

錯誤訊息
未知: 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: theme_kind 在檔案中的第 /modules/tad_discuss/header.php 列 8
未知: 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 index: op 在檔案中的第 /modules/tad_discuss/function.php 列 57
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 63
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 57
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 63
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 57
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 63
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 57
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 63
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 57
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 63
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 57
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 63
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 57
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 63
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 57
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 63
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 57
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 63
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 57
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 63
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 57
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 63
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 57
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 63
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 57
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 63
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 57
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 63
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 57
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 63
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 57
通知: Undefined index: op 在檔案中的第 /modules/tad_discuss/function.php 列 63
通知: Undefined index: bootstrap 在檔案中的第 /modules/tadtools/preloads/core.php 列 68
已棄用
資料庫語法
0.000092 - SET SQL_BIG_SELECTS = 1
0.000770 - SELECT * FROM config WHERE (`conf_modid` = '0' AND `conf_catid` = '1') ORDER BY conf_order ASC
0.000369 - SELECT sess_data, sess_ip FROM session WHERE sess_id = 'oce6ivce98fo2u0fqbona0p2md'
0.000528 - SELECT * FROM modules WHERE dirname = 'tad_discuss'
0.000500 - SELECT COUNT(*) FROM group_permission WHERE (`gperm_modid` = '1' AND (`gperm_groupid` = '3') AND `gperm_name` = 'module_read' AND `gperm_itemid` = '13')
0.000446 - SELECT * FROM config WHERE (`conf_modid` = '13') ORDER BY conf_order ASC
0.000583 - SELECT * FROM config WHERE (`conf_modid` = '0' AND `conf_catid` = '5') ORDER BY conf_order ASC
0.000323 - SELECT COUNT(*) FROM banner
0.000165 - SELECT * FROM banner LIMIT 0, 1
0.004409 - UPDATE banner SET impmade = 1277547 WHERE bid = 1
0.000563 - SELECT * FROM config WHERE (`conf_modid` = '0' AND `conf_catid` = '3') ORDER BY conf_order ASC
0.001288 - SELECT DISTINCT gperm_itemid FROM group_permission WHERE gperm_name = 'block_read' AND gperm_modid = 1 AND gperm_groupid IN (3)
0.001065 - 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,13) 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.000967 - 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.000540 - SELECT * FROM modules WHERE dirname = 'tadtools'
0.000345 - SELECT * FROM config WHERE (`conf_modid` = '4') ORDER BY conf_order ASC
0.000458 - select * from tad_discuss where DiscussID='5'
0.000371 - SELECT COUNT(*) FROM group_permission WHERE (`gperm_modid` = '13' AND (`gperm_groupid` = '3') AND `gperm_name` = 'forum_read' AND `gperm_itemid` = '1')
0.005135 - update tad_discuss set `Counter`=`Counter`+1 where `DiscussID`='5'
0.000613 - select * from `tad_discuss_board` where `BoardID` = '1'
0.000830 - select * from tad_discuss where DiscussID='5' or ReDiscussID='5' order by ReDiscussID , DiscussDate
0.000734 - select * from tad_discuss where DiscussID='5' or ReDiscussID='5' order by ReDiscussID , DiscussDate LIMIT 0, 20
0.000474 - SELECT * FROM users WHERE uid = '2'
0.000313 - SELECT * FROM smiles
0.000596 - select * from `tad_discuss_files_center` where `col_name`='DiscussID' and `col_sn`='5' order by sort
0.000438 - SELECT * FROM users WHERE uid = '6'
0.000364 - select * from `tad_discuss_files_center` where `col_name`='DiscussID' and `col_sn`='7' order by sort
0.000327 - select * from `tad_discuss_files_center` where `col_name`='DiscussID' and `col_sn`='12' order by sort
0.000321 - SELECT * FROM users WHERE uid = '15'
0.000244 - select * from `tad_discuss_files_center` where `col_name`='DiscussID' and `col_sn`='20' order by sort
0.000294 - select * from `tad_discuss_files_center` where `col_name`='DiscussID' and `col_sn`='22' order by sort
0.000335 - SELECT * FROM users WHERE uid = '5'
0.000259 - select * from `tad_discuss_files_center` where `col_name`='DiscussID' and `col_sn`='24' order by sort
0.000223 - select * from `tad_discuss_files_center` where `col_name`='DiscussID' and `col_sn`='29' order by sort
0.000320 - SELECT * FROM users WHERE uid = '12'
0.000268 - select * from `tad_discuss_files_center` where `col_name`='DiscussID' and `col_sn`='31' order by sort
0.000263 - select * from `tad_discuss_files_center` where `col_name`='DiscussID' and `col_sn`='34' order by sort
0.000309 - select * from `tad_discuss_files_center` where `col_name`='DiscussID' and `col_sn`='35' order by sort
0.000403 - select * from `tad_discuss_files_center` where `col_name`='DiscussID' and `col_sn`='36' order by sort
0.000320 - select * from `tad_discuss_files_center` where `col_name`='DiscussID' and `col_sn`='38' order by sort
0.000272 - select * from `tad_discuss_files_center` where `col_name`='DiscussID' and `col_sn`='42' order by sort
0.000310 - SELECT * FROM users WHERE uid = '10'
0.000327 - select * from `tad_discuss_files_center` where `col_name`='DiscussID' and `col_sn`='50' order by sort
0.000286 - select * from `tad_discuss_files_center` where `col_name`='DiscussID' and `col_sn`='53' order by sort
0.000281 - select * from `tad_discuss_files_center` where `col_name`='DiscussID' and `col_sn`='54' order by sort
0.000590 - SELECT COUNT(*) FROM group_permission WHERE (`gperm_modid` = '13' AND (`gperm_groupid` = '3') AND `gperm_name` = 'forum_post' AND `gperm_itemid` = '1')
0.000317 - select `tt_theme`,`tt_use_bootstrap`,`tt_bootstrap_color`,`tt_theme_kind` from `tadtools_setup` where `tt_theme`='school2015'
0.001017 - 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` = 'tad_discuss_discuss.tpl') ORDER BY tpl_refid
0.000732 - 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` = 'tad_discuss_bootstrap.tpl') ORDER BY tpl_refid
0.000732 - 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_notification_select.tpl') ORDER BY tpl_refid
0.000426 - SELECT * FROM modules WHERE dirname = 'tad_themes'
0.000302 - SELECT * FROM config WHERE (`conf_modid` = '3') ORDER BY conf_order ASC
0.000191 - select `tt_bootstrap_color` from tadtools_setup where `tt_theme`='school2015'
0.000382 - select * from tad_themes where `theme_name`='school2015'
0.000230 - select conf_value from config where conf_title ='_MD_AM_DEBUGMODE'
0.000338 - select * from tad_themes_blocks where `theme_id`='7'
0.000494 - select mid from modules where dirname='tad_themes'
0.000576 - desc `tad_themes_data_center` `sort`
0.000183 - 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.000212 - select conf_value from config where conf_name ='allow_register'
0.000368 - select `mid`, `name`, `dirname` from modules where isactive='1' and hasmain='1' and weight!=0 order by weight
0.000222 - SELECT * FROM modules WHERE dirname = 'tad_blocks'
0.000235 - select conf_value from config where conf_title ='_MD_AM_DEBUGMODE'
0.000217 - select count(*) from priv_msgs where `to_userid` ='0' and `read_msg`=0 group by `to_userid`
0.000420 - 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.000177 - 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.000154 - 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.000171 - 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.000146 - 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.000447 - 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.000249 - SELECT * FROM modules WHERE dirname = 'tad_login'
0.000382 - SELECT * FROM config WHERE (`conf_modid` = '14') ORDER BY conf_order ASC
總計: 74
區塊
搜尋: 沒有快取
總計: 1
額外資訊
包含檔案: 216 檔案
使用記憶體: 7498952 bytes
計時
XOOPS 使用 0.187 秒來載入。
XOOPS Boot 使用 0.033 秒來載入。
Module init 使用 0.011 秒來載入。
XOOPS output init 使用 0.037 秒來載入。
Module display 使用 0.060 秒來載入。
Page rendering 使用 0.044 秒來載入。