Professional Documents
Culture Documents
จัดทำโดย
นำย อนันตชัย วังดอน 6220501136
เสนอ
อำจำรย์ กิติพงษ์ เจำจำรึก
คือเซ็นเซอร์สำหรับวัดอุณหภูมิเซ็นเซอร์นี้ประกอบด้วยลวดโลหะที่แตกต่างกันสองเส้นต่อเข้าที่ปลายด้าน
หนึ่งและเชื่อมต่อกับเครื่องมือวัดอุณหภูมิหรืออุปกรณ์ที่สามารถรองรับการใช้งาน Thermocouple ชนิดต่างๆ
เมื่อกำหนดค่าอย่างถูกต้องด้วยคุณสมบัติเฉพาะทำให้สามารถวัดระดับความร้อนได้ในช่วงระดับความร้อนที่สูงได้
เซ็นเซอร์อุณหภูมิชนิดนี้เป็นที่ทราบกันดีว่ามีคุณสมบัติรอบด้านในฐานะเซ็นเซอร์อุณหภูมิ ดังนั้นจึงนิยมใช้
กับการใช้งานที่หลากหลายตั้งแต่ใช้งานในอุตสาหกรรมไปจนถึงงานทั่วไปที่พบในสาธารณูปโภคและเครื่องใช้ทั่วไป
เนื่องจากมีรูปแบบและข้อกำหนดทางเทคนิคที่หลากหลายจึงจำเป็นอย่างยิ่งที่จะต้องทำความเข้าใจโครงสร้าง
พื้นฐานวิธีการทำงานช่วงของมันเพื่อกำหนดประเภทและวัสดุที่เหมาะสมสำหรับการใช้งาน
เทอร์โมคัปเปิ้ลในเชิงพาณิชย์มีราคาไม่แพง ใช้แทนกันได้มาพร้อมกับขั้วต่อมาตรฐานและสามารถวัด
อุณหภูมิได้หลากหลาย ในทางตรงกันข้ามกับการวัดระดับความร้อนวิธีอื่นๆ ส่วนใหญ่เซ็นเซอร์อุณหภูมิชนิดนี้ไม่
ต้องการพลังงานจากภายนอก ข้อจำกัดหลักคือความแม่นยำ ข้อผิดพลาดของระบบที่น้อยกว่าหนึ่งองศาเซลเซียส
(° C) ใช้กันอย่างแพร่หลายในวงการวิทยาศาสตร์และอุตสาหกรรม การใช้งานรวมถึงการวัดระดับความร้อนสำหรับ
เตาเผา ไอเสีย กังหันก๊าซเครื่องยนต์ดีเซลและกระบวนการทางอุตสาหกรรมอื่นๆ และยังใช้ในบ้านสำนักงานและ
ธุรกิจเป็นเซ็นเซอร์อุณหภูมิในเทอร์โมสตัทและยังใช้เป็นเซ็นเซอร์ตรวจจับเปลวไฟในอุปกรณ์ความปลอดภัยสำหรับ
เครื่องใช้ที่ใช้ก๊าซ
เทอร์โมคัปเปิลประกอบด้วยโลหะที่แตกต่างกันที่ปลายทั้งสองข้างและปลายด้านหนึ่งถูกให้ความร้อนจะมี
กระแสต่อเนื่องซึ่งไหลในวงจรเทอร์โมอิเล็กทริก ซึ่งหมายความว่าเมื่อจุดเชื่อมต่อของโลหะทั้งสองถูกทำให้ร้อน
หรือเย็นลงจะเกิดแรงดันไฟฟ้าที่สามารถเชื่อมโยงและรู้ค่าระดับความร้อนได้ดังรูปที่ 2.1
เปิ ดโปรแกรม Arduino IDE ไปที่ File ----> Preferences ----> Additional Boards Manager URLs:
ทำกำรแก้ลิงก์เป็ น https://dl.espressif.com/dl/package_esp32_index.json แล้วกด ok ดังรูปที่ 3.2
รูปที่ 3.2 การตั้งค่าโปรแกรม
ไปที่ Tools ----> Board ----> Board Manage ----> ค้นหำ ESP 32 ทำกำรติดตั้ง
float c,b,sum=0,Vin,Rt,t,ln,Temp,T;
int i,RA,var = 0;
int k = 0;
bool first = true;
bool on = true;
char incomingByte = 'g';
char interval = '0';
String intTime = "10";
long delayTime = 10000;
String info1 = "";
long count = 1;
void connectWiFi()
{
WiFi.begin(ssid, password);
int i=1;
bool flag = false;
while (WiFi.status() != WL_CONNECTED)
{
delay(5000);
Serial.print("Connecting to WiFi..Trial at number = ");Serial.println(i++);
WiFi.begin(ssid, password);
if (WiFi.status() == WL_CONNECTED)
{
flag = true;
break;
}
if (i > 20){
flag = false;
break;
}
}
if (flag)
{
Serial.print("Connected to the WiFi network SSID : ");
Serial.println(ssid);
}
else Serial.println("Connect to wifi false");
}
void setup()
{
Serial.begin(115200);
if (!OLED.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // สั่งให้จอ OLED เริ่มทำงานที่ Address 0x3C
Serial.println("SSD1306 allocation failed");
} else {
Serial.println("ArdinoAll OLED Start Work !!!");
}
connectWiFi();
}
void loop()
{
//------------------------------------------Thermistor-----------------------
for( i=0;i<=49;i++)
{
RA=analogRead(34);
sum=sum+RA;
}
b=sum/50;
c=b;
b=0;
sum=0;
//Serial.println(c);
//Serial.println(c);
Vin =(c*3.3)/4095;
Rt=(Vin*9.4)/(3.3-Vin);
Temp = 1 / ((1 / 298.15) + ((log(Rt / 9.4)) / 3950));
//ln=2.3*(log(Rt)-log(10000));
//Temp = (1/((1/298.15)+(1/3950)*ln));
T = (Temp - 273.15)-4;
Serial.println(T);
delay(2000);
//------------------------------------------------------------------------
//--------------------------------OLED---------------------------------------
OLED.clearDisplay(); // ลบภาพในหน้าจอทั้งหมด
OLED.setTextColor(WHITE, BLACK); //กำหนดข้อความสีขาว ฉากหลังสีดำ
OLED.setCursor(0, 0); // กำหนดตำแหน่ง x,y ที่จะแสดงผล
OLED.setTextSize(2); // กำหนดขนาดตัวอักษร
OLED.print("T ="); // แสดงผลข้อความ ALL
OLED.print(T);
OLED.print(" C");
//OLED.print(" \nKU ");
OLED.display();
//----------------------------------------------------------------------
//----------------------------Wifi-----------------------------------------------------------------------------------------
----------------
Serial.print("["+String(count++)+"] ");Serial.println("Send \"q\" = stop! , \"g\" = run! , \"t\" = set
interval! within 3 sec.\n");
//delay(3000);
delay(500);
if(count>100000) count = 1;
incomingByte = Serial.read();
/*if(Serial.available()>0)
{
incomingByte = Serial.read();
Serial.print("incomingByte");
Serial.println(incomingByte);
} */
if (incomingByte == 'q') {
on = false;
//Serial.println("\n\n\nProcess Stop");
Serial.print("You send : ");
Serial.println(incomingByte);
Serial.println("\nProcess stop!\n");
}
else if (incomingByte == 'g') {
on = true;
//Serial.print("\n\n\nProcess Running : ");
//Serial.println(incomingByte);
Serial.print("You send : ");
Serial.println(incomingByte);
Serial.println("\nProcess Running\n");
}
else if (incomingByte == 't') {
Serial.print("You send : ");
Serial.println(incomingByte);
Serial.println("\nWhat is interval time in seccond (5 - 3600 s)?");
while(interval = '0'){
intTime = Serial.readString();
if (intTime.toInt() > 4 && intTime.toInt() < 3601){
delayTime = intTime.toInt()*1000;
info1 = "Your interval (s) : " + intTime;
Serial.println(info1);
//Serial.print(intTime); Serial.print(" s.");
break;
}
}
interval = '0';
}
delay(1000);
http.begin("https://script.google.com/macros/s/AKfycbzfjfOb6wE0t4cboucnQmPlSqklKVm5-
2nnEn-GrAm_WEqPlALxyEBX3LAGdlp9QR9A3w/exec");
http.addHeader("Content-Type", "application/json"); //Specify content-type header
int httpResponseCode = http.POST(payload); //Send the actual POST request
if(httpResponseCode>0)
{
k++;
String response = http.getString(); //Get the response to the request
String myStr = response;
Serial.print("\nPOST number = "); Serial.println(k);
Serial.println("Your interval (s) : " + intTime);
//Serial.print(intTime); Serial.print(" s.\n");
Serial.print("\nhttpResponseCode = ");
Serial.println(httpResponseCode); //Print return code
if (httpResponseCode == 302) Serial.println("Your datas are reccorded into the
Sheet");
else {
Serial.print("\nresponse content = ");
Serial.println(response); //Print request answer
}
}
else
{
Serial.print("Error on sending POST: ");
Serial.println(httpResponseCode);
}
http.end(); //Free resources
}
else
{
Serial.println("Error in WiFi connection");
}
delay(delayTime); //Send a request every 1 minute
first = false;
//----------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------
}
Dowload CODE : https://drive.google.com/file/d/1ziBP3Ptxx3yGU8VD8rl-
LaKbCbXRj49q/view?usp=share_link
3.5 การทดสอบโดยส่งข้อมูลในการวัดขึ้น Google Sheet
โดยตั้งอุณหภูมิไว้ที่ 32 องศาและทำการติดตั้งบอร์ด ESP 32 จากนั้นทำการวัดค่าอุณหภูมิ
var SS = SpreadsheetApp.openById('1q1EcExiGkV9RUSmIF--
MXkNjwpaz4rniaaMigwPavYI/edit#gid=0'); //Enter Your Sheet ID Got From Sheet URL Li
nk
var sheet = SS.getSheetByName('Sheet1'); // Enter your sheet name here, In my ca
se it is TempSheet
//var str = "";
function Clear()
{
sheet.deleteRows(4, sheet.getLastRow());
SS.toast('Chart cleared', 'Esp32', 5);
}
function doPost(e)
{
var parsedData;
var result = {};
try
{
parsedData = JSON.parse(e.postData.contents);
}
catch(f)
{
return ContentService.createTextOutput("Error in parsing request body: " + f.mess
age);
}
switch (parsedData.command) {
case "appendRow":
var now = Utilities.formatDate(new Date(), "GMT+7", "dd-MMM-yyyy HH:mm:ss");
var tmp = SS.getSheetByName(parsedData.sheet_name);
var nextFreeRow = tmp.getLastRow() + 1;
var da = now + "," + parsedData.values;
var dataArr = da.split(",");
tmp.appendRow(dataArr);
str = "Success your data T/RH = " + dataArr[0] + " / " + dataArr[1] +" are r
ecorded into " + parsedData.sheet_name +".";
SpreadsheetApp.flush();
break;
}
return ContentService.createTextOutput(str);
} // endif (parsedData !== undefined)
else
{
return ContentService.createTextOutput("Error! Request body empty or in incorrect
format.");
}
}
function getData()
{
//var SS = SpreadsheetApp.openById('1nGeQAD-
UCJGZLDxY7jtjpf2bDd4AcbatYRUWEKLK2E8'); //Enter Your Sheet ID Got From Sheet URL L
ink
//var sheet = SS.getSheetByName('Sheet1');
</body>
</html>
3.6 ติดตั้งและแสดงผลการนำข้อมูลขึ้น Google sheet
ตั้งค่าอุณหภูมิที่ 32 องศา และติดตั้ง Broad ESP 32 ตาม Diagram จากนั้นให้แสดงผลขึ้นทาง Google
sheet ที่ตั้งค่าใน Code ไว้