You are on page 1of 37

รายงาน

เรื่ อง IoT Thermometer

จัดทำโดย
นำย อนันตชัย วังดอน 6220501136

เสนอ
อำจำรย์ กิติพงษ์ เจำจำรึก

ภำคกำรศึกษำเทอมต้น ปี กำรศึกษำ2565 ภำควิชำวิศวกรรมเครื่ องกล คณะ


วิศวกรรมศำสตร์ กำแพงแสน มหำวิทยำลัยเกษตรศำสตร์ วิทยำเขตกำแพงแสน
จ.นครปฐม วันที่ 7 เดือน พฤศจิกำยน ปี พ.ศ. 2565
บทคัดย่อ
Iot Thermometer โดยใช้บอร์ด ESP32, ThermistorและThermocouple ต่อตามBlock Diagram ใน
การทำเมื่ออ่านอุณหภูมิ ได้จะส่งค่าอุณหภูมิที่วัดได้ไปยัง Google Sheet ทำการบันทึกข้อมูลเพื่อสะดวกในการ
จัดเก็บหรือดูประวัติ ย้อนหลังในการเขียนโปรแกรมมีการใช้โปรแกรม Arduino IDEและ Google script ในการ
เขียนโปรแกรมเพื่อ อ่านค่าจาก ThermistorและThermocouple จะใช้โปรแกรม Arduino IDE ส่วนในการรับ
ค่าจาก ESP32 และ ทำการบันทึกลง Google Sheet จะใช้Google script เมื่อทำการประกอบและติดตั้งพบว่า
การอ่านค่าของอุณหภูมิเกิดความคลานเคลื่อนประมาณ 2 องศาที่แสดงที่ จอOLED
สารบัญ
บทที่ 1 ................................................................................................................................................. 6
บทนำ ............................................................................................................................................. 6
วัตถุประสงค์................................................................................................................................... 6
เอกสารที่เกี่ยวช้อง ............................................................................................................................... 7
2.1 การวัดอุณหภูมิต่างๆ ............................................................................................................... 7
2.1.1 Thermocouple................................................................................................................... 7
2.1.2 Thermistor .......................................................................................................................... 8
2.1.3 RTD ...................................................................................................................................... 9
2.2 จอ OLED ที่ขนาด 128 x 32 .................................................................................................. 9
2.3 บอร์ด ESP-32 .......................................................................................................................10
2.4 โปรแกรม Arduino IDE ........................................................................................................11
วิธีการดำเนินการ ...............................................................................................................................13
3.1 Block Diagram....................................................................................................................13
3.2 ตั้งค่าเริ่มต้นในโปรแกรม Arduino ........................................................................................13
3.2.1 ตั้งค่าเริ่มต้น........................................................................................................................ 13
3.2.2 ติดตั้งโปรแกรม Board ....................................................................................................... 15
3.2.3 การติดตั้ง Library สำหรับจอ OLED.................................................................................. 16
3.3 ทำการทดสอบโดยการวัดอุณหภูมิ .........................................................................................17
3.3.1 วัดอุณหภูมิที่ 20 องศา ....................................................................................................... 17
3.3.2 วัดอุณหภูมิ 25 องศา ......................................................................................................... 17
3.3.3 วัดอุณหภูมิ 30 องศา ......................................................................................................... 18
3.4 Code ในการสั่งการทำงานของระบบโดยให้ขึ้นจอ OLED .....................................................19
3.5 การทดสอบโดยส่งข้อมูลในการวัดขึ้น Google Sheet ..........................................................29
3.5.1 แสดง Code ที่ใช้งาน ......................................................................................................... 30
3.5.2 เพิ่ม Code html ............................................................................................................... 33
3.6 ติดตั้งและแสดงผลการนำข้อมูลขึ้น Google sheet ..............................................................34
อภิปรายผลการทดสอบ ......................................................................................................................36
สรุปผล...............................................................................................................................................36
บรรณานุกรม .....................................................................................................................................37
สารบัญรูป
รูปที่ 2.1 หลักการทำงานของ Thermocouple .................................................................................. 8
รูปที่ 2.2 สาย Thermistor (NTC) ..................................................................................................... 8
รูปที่ 2.3 Transmitter ....................................................................................................................... 9
รูปที่ 2.4 จอ OLED ............................................................................................................................. 9
รูปที่ 2.5 บอร์ด Esp32 ......................................................................................................................10
รูปที่ 2.6 โปรแกรม Arduino ............................................................................................................12
รูปที่ 3.1 แสดง Block Diagram การต่อเพื่อหาอุณหภูมิแสดงขึ้นจอ OLED .....................................13
รูปที่ 3.2 การตั้งค่าโปรแกรม ..............................................................................................................14
รูปที่ 3.3 การตั้งค่าโปรแกรม ..............................................................................................................14
รูปที่ 3.4 ติดตั้งบอร์ด .........................................................................................................................15
รูปที่ 3.5 ดาวโหลด ESP 32 ..............................................................................................................15
รูปที่ 3.6 ติดตั้ง และ ดาวโหลดจอ .....................................................................................................16
รูปที่ 3.7 วัดอุณหภูมิที่ 20 องศา........................................................................................................17
รูปที่ 3.8 วัดอุณหภูมิที่ 25 องศา........................................................................................................17
รูปที่ 3.9 วัดอุณหภูมิที่ 30 องศา........................................................................................................18
รูปที่ 3.10 เปิด App script ..............................................................................................................29
รูปที่ 3.11 เปลี่ยน URL เป็นของ Sheet เรา .....................................................................................30
รูปที่ 3.12 ตั้งค่า Deploy ให้เป็น Anyone .......................................................................................30
รูปที่ 3.14 ตั้งค่าอุณหภูมิ ...................................................................................................................34
รูปที่ 3.15 OLED แสดงผลในการวัดค่าอุณหภูมิ ................................................................................34
รูปที่ 3.16 Google sheet แสดงผล ..................................................................................................35
บทที่ 1
บทนำ
การวัดอุณหภูมินั้นมีอุปกรณ์หลากประเภทที่สามารถวัดได้แต่ในรายงานเล่มนี้จะใช้อุปกรณ์ 2 ชนิดคือ
1.Thermistor 2.Thermocouple โดยต่อเข้ากับบอร์ด ESP32 เพื่อให้ตัวบอร์ดแปลงเป็นสัญญาณ Digital และ
นำมาคำนวณเพื่อหาค่าอุณหภูมิของวัตถุที่วัดแล้วจึงทำการส่งค่าอุณหภูมิที่วัดได้ไปแสดงผลที่หน้าจอ OLED และ
บันทึกลงใน Google Sheet แบบอัตโนมัติ
วัตถุประสงค์
1.เพื่อศึกษาการต่อวงจรไฟฟ้า
2.เพื่อศึกษาการเขียนโปรแกรมโดยใช้ Arduino IDE และ Google script
3.เพื่อศึกษาการทำ IoT อย่างง่ายโดยใช้ Google Sheet
บทที่ 2
เอกสารที่เกี่ยวช้อง
2.1 การวัดอุณหภูมิต่างๆ
ด้วยเทคโนโลยีของการวัดอุณหภูมิมีการรุดหน้าอย่างรวดเร็วในปัจจุบันสามารถวัดได้อย่างแม่นยำ รวดเร็ว
และสามารถเปลี่ยนหน่วยการวัดได้ทันทีโดยไม่ต้องมีการคำนวณใดๆ เครื่องมือมีหลายชนิด บางชนิดวัดอุณหภูมิ
จากการสัมผัสกับวัตถุบางชนิดวัดจากรังสีอินฟราเรด (รังสีความร้อน) ดังนั้นการเลือกซื้อเครื่องวัดวัดอุณหภูมิที่
เหมาะสมเป็นสิ่งจำเป็น สิ่งแรกที่ควรพิจารณาคือความเหมาะสมสำหรับการใช้งาน ช่วงการวัดอุณหภูมิที่
ต้องการ ความแม่นยำและรายละเอียดปลีกย่อยเช่นการบันทึกข้อมูล หน่วยความจำภายในเป็นต้น
2.1.1 Thermocouple

คือเซ็นเซอร์สำหรับวัดอุณหภูมิเซ็นเซอร์นี้ประกอบด้วยลวดโลหะที่แตกต่างกันสองเส้นต่อเข้าที่ปลายด้าน
หนึ่งและเชื่อมต่อกับเครื่องมือวัดอุณหภูมิหรืออุปกรณ์ที่สามารถรองรับการใช้งาน Thermocouple ชนิดต่างๆ
เมื่อกำหนดค่าอย่างถูกต้องด้วยคุณสมบัติเฉพาะทำให้สามารถวัดระดับความร้อนได้ในช่วงระดับความร้อนที่สูงได้
เซ็นเซอร์อุณหภูมิชนิดนี้เป็นที่ทราบกันดีว่ามีคุณสมบัติรอบด้านในฐานะเซ็นเซอร์อุณหภูมิ ดังนั้นจึงนิยมใช้
กับการใช้งานที่หลากหลายตั้งแต่ใช้งานในอุตสาหกรรมไปจนถึงงานทั่วไปที่พบในสาธารณูปโภคและเครื่องใช้ทั่วไป
เนื่องจากมีรูปแบบและข้อกำหนดทางเทคนิคที่หลากหลายจึงจำเป็นอย่างยิ่งที่จะต้องทำความเข้าใจโครงสร้าง
พื้นฐานวิธีการทำงานช่วงของมันเพื่อกำหนดประเภทและวัสดุที่เหมาะสมสำหรับการใช้งาน
เทอร์โมคัปเปิ้ลในเชิงพาณิชย์มีราคาไม่แพง ใช้แทนกันได้มาพร้อมกับขั้วต่อมาตรฐานและสามารถวัด
อุณหภูมิได้หลากหลาย ในทางตรงกันข้ามกับการวัดระดับความร้อนวิธีอื่นๆ ส่วนใหญ่เซ็นเซอร์อุณหภูมิชนิดนี้ไม่
ต้องการพลังงานจากภายนอก ข้อจำกัดหลักคือความแม่นยำ ข้อผิดพลาดของระบบที่น้อยกว่าหนึ่งองศาเซลเซียส
(° C) ใช้กันอย่างแพร่หลายในวงการวิทยาศาสตร์และอุตสาหกรรม การใช้งานรวมถึงการวัดระดับความร้อนสำหรับ
เตาเผา ไอเสีย กังหันก๊าซเครื่องยนต์ดีเซลและกระบวนการทางอุตสาหกรรมอื่นๆ และยังใช้ในบ้านสำนักงานและ
ธุรกิจเป็นเซ็นเซอร์อุณหภูมิในเทอร์โมสตัทและยังใช้เป็นเซ็นเซอร์ตรวจจับเปลวไฟในอุปกรณ์ความปลอดภัยสำหรับ
เครื่องใช้ที่ใช้ก๊าซ
เทอร์โมคัปเปิลประกอบด้วยโลหะที่แตกต่างกันที่ปลายทั้งสองข้างและปลายด้านหนึ่งถูกให้ความร้อนจะมี
กระแสต่อเนื่องซึ่งไหลในวงจรเทอร์โมอิเล็กทริก ซึ่งหมายความว่าเมื่อจุดเชื่อมต่อของโลหะทั้งสองถูกทำให้ร้อน
หรือเย็นลงจะเกิดแรงดันไฟฟ้าที่สามารถเชื่อมโยงและรู้ค่าระดับความร้อนได้ดังรูปที่ 2.1

รูปที่ 2.1 หลักการทำงานของ Thermocouple


(ที่มา : https://www.neonics.co.th/thermometers/thermocouple.html)
2.1.2 Thermistor
เป็นเซ็นเซอร์อุณหภูมิชนิดหนึ่งซึ่งเป็นตัวต้านทานทางไฟฟ้าชนิดหนึ่งที่ ไวต่อความร้อนโดยมีค่าความ
ต้านทานขึ้นอยู่กับอุณหภูมิ โดยเทอร์มิสเตอร์มีการเปลี่ยนแปลงความต้านทานที่ แม่นยำและคำนวณได้ตามสัดส่วน
กับการเปลี่ยนแปลงเล็กน้อยของอุณหภูมิเทอร์มิสเตอร์แบ่งออกเป็น 2 ชนิดดังนี้
1) ชนิด Negative Temperature Coefficient (NTC) เมื่ออุณหภูมิเพิ่มขึ้นความต้านทานจะ ลดลงและ
ในทางตรงกันข้ามเมื่ออุณหภูมิลดลงความต้านทานจะเพิ่มขึ้น ถูกใช้มากที่สุด
2) ชนิด Positive Temperature Coefficient (PTC) เมื่ออุณหภูมิเพิ่มขึ้นความ ต้านทานจะเพิ่มขึ้นและ
เมื่ออุณหภูมิลดลงความต้านทานจะลดลง

รูปที่ 2.2 สาย Thermistor (NTC)


( ที่มา https://th.mouser.com/new/vishay/vishay-bcc-ntclp450e3104h-ntc-thermistors/)
2.1.3 RTD
RTD ย่อมาจาก Resistance Temperature Detector คือเซ็นเซอร์วัดอุณหภูมิที่ใช้หลักการของความ
ต้านทานเปลี่ยนตามอุณหภูมิที่วัดได้ เมื่อนำเซ็นเซอร์วัดอุณหภูมิชนิด RTD ต่อเข้ากับตัว Temperature
Transmitter (ทรานสมิตเตอร์วัดอุณหภูมิ) ก็จะทำการวัดค่าความต้านทานแปลงและคำนวณเป็นค่าอุณหภูมิ เพื่อ
แสดงผล หรือส่งเป็นสัญญาณมาตรฐานไปยังอุปกรณ์ต่อไป

รูปที่ 2.3 Transmitter


(ที่มา : https://www.instrument.engineer/2021/03/what-is-temperature-transmitter.html)

2.2 จอ OLED ที่ขนำด 128 x 32


รับแรงดันไฟฟ้าที่ 3V ถึง 5V สามารถใช้งานได้ง่ายเพียงโหลด Library AdafruitSSD1306,
Adafruit_GX_Library และ Adafruit_BusIO มาก็สามารถเรียกใช้งานได้เลย

รูปที่ 2.4 จอ OLED


(ที่มา :https://www.alibaba.com/pla/091-inch-Blue-OLED-LCD-Display_60731409453.html)
2.3 บอร์ด ESP-32

รูปที่ 2.5 บอร์ด Esp32


ESP32 เป็นชื่อของไอซีไมโครคอนโทรลเลอร์ที่รองรับการเชื่อมต่อ WiFi และ Bluetooth 4.2 BLE ในตัว
ผลิตโดยบริษัท Espressif จากประเทศจีน โดยราคา ณ ที่เขียนบทความอยู่นี้ มีราคาไม่เกิน 500 บาท (บอร์ด
พัฒนาสำเร็จรูป) โดยตัวไอซี ESP32 มีสเปคโดยละเอียด ดังนี้
ซีพียูใช้สถาปัตยกรรม Tensilica LX6 แบบ 2 แกนสมอง สัญญาณนาฬิกา 240MHz
มีแรมในตัว 512KB
รองรับการเชื่อมต่อรอมภายนอกสูงสุด 16MB
มาพร้อมกับ WiFi มาตรฐาน 802.11 b/g/n รองรับการใช้งานทั้งในโหมด Station softAP และ Wi-Fi
direct
มีบลูทูธในตัว รองรับการใช้งานในโหมด 2.0 และโหมด 4.0 BLE
ใช้แรงดันไฟฟ้าในการทำงาน 2.6V ถึง 3V

ทำงานได้ที่อุณหภูมิ -40◦C ถึง 125◦C


นอกจากนี้ ESP32 ยังมีเซ็นเซอร์ต่าง ๆ มาในตัวด้วย ดังนี้
วงจรกรองสัญญาณรบกวนในวงจรขยายสัญญาณ
เซ็นเซอร์แม่เหล็ก
เซ็นเซอร์สัมผัส (Capacitive touch) รองรับ 10 ช่อง
รองรับการเชื่อมต่อคลิสตอล 32.768kHz สำหรับใช้กับส่วนวงจรนับเวลาโดยเฉพาะ
ขาใช้งานต่าง ๆ ของ ESP32 รองรับการเชื่อมต่อบัสต่าง ๆ ดังนี้
มี GPIO จำนวน 32 ช่อง
รองรับ UART จำนวน 3 ช่อง
รองรับ SPI จำนวน 3 ช่อง
รองรับ I2C จำนวน 2 ช่อง
รองรับ ADC จำนวน 12 ช่อง
รองรับ DAC จำนวน 2 ช่อง
รองรับ I2S จำนวน 2 ช่อง
รองรับ PWM / Timer ทุกช่อง
รองรับการเชื่อมต่อกับ SD-Card
นอกจากนี้ ESP32 ยังรองรับฟังก์ชั่นเกี่ยวกับความปลอดภัยต่าง ๆ ดังนี้
รองรับการเข้ารหัส WiFi แบบ WEP และ WPA/WPA2 PSK/Enterprise
มีวงจรเข้ารหัส AES / SHA2 / Elliptical Curve Cryptography / RSA-4096 ในตัว
2.4 โปรแกรม Arduino IDE
เป็นเเพลตฟอร์มอิเล็กทรอนิกส์แบบโอเพนซอร์สบนพื้นฐานของฮาร์ดแวร์และซอฟท์แวร์ที่ง่ายต่อการใช้งาน
สามารถนำไปประยุกต์ใช้งานได้หลายอย่าง เช่น ควบคุมอุปกรณ์อิเล็กทรอนิกส์ขนาดเล็ก อ่านค่าเซ็นเซอร์วัด
สภาพแวดล้อมต่างๆแล้วแสดงค่าที่เซ็นเซอร์สามารถอ่านได้ออกมาทางจอแสดงผล นำไปประยุกต์เข้าเป็นชิ้นงาน
ทางอิเล็กทรอนิกส์เพื่ออำนวยความสะดวกในการใช้ชีวิตประจำวัน เป็นต้น
ปัจจุบัน Arduino ถือได้ว่าเป็นเเพลตฟอร์มที่ได้รับความนิยมสูงจากทั่วโลก เนื่องมากจากราคาของ
ตัวบอร์ด Arduino ไม่ค่อยสูงมาก เป็นโอเพนซอร์สทั้งทางด้านฮาร์ดแวร์และซอร์ฟแวร์ คอมมิวนิตี้และฟออรัมน์ใน
การถามตอบเรื่องเกี่ยวกับการใช้งานร่วมกับอุปกรณ์อิเล็กทรอนิกส์ต่างๆ ตัวอย่างโปรแกรมเบื้องต้นและไลบรารี่
สำหรับใช้งาน และอื่นๆ ในแพลตฟอร์มของ Arduino ประกอบไปด้วยส่วนหลักๆ 2 ส่วน คือ
1) ส่วนของฮาร์ดแวร์
บอร์ด Arduinoเป็นวงจรอิเล็กทรอนิกส์ขนาดเล็กที่มีไอซีหรือชิพประมวลผลของไมโครคอนโทรเลอร์
ประกอบอยู่กับวงจรอิเล็กทรอนิกส์อื่นๆ ตัวบอร์ดของ Arduino จะมีอยู่หลายโมเดลให้เลือกใช้ โดยบอร์ดแต่ละ
โมเดลจะมีความแตกต่างกันในเรื่องของสเป็ค จำนวนพอร์ตต่างๆสำหรับใช้งาน พื้นที่ในการเขียนโปรแกรม ขนาด
ของบอร์ด เป็นต้น เปรียบเทียบบอร์ด Arduino แต่ละโมเดลได้จาก
2) ส่วนของซอร์ฟแวร์
ซอร์ฟแวร์ Arduinoหรือที่เรียกว่า Arduino IDE (Integrated Development Environment) เป็น
เครื่องมือที่ใช้ในการพัฒนาโปรแกรมบนแพลตฟอร์ม Arduino และอัพโหลดโปรแกรมที่พัฒนาสำเร็จเเล้วลงบนตัว
บอร์ด

รูปที่ 2.6 โปรแกรม Arduino


บทที่ 3
วิธีการดำเนินการ
3.1 Block Diagram
ใช้ ESP 32 ในการใช้งานโดยจะต่อกับอุปกรณ์ 4 อย่างประกอบด้วย 1) OLED จอแสดงผล 2) ความ
ต้านทาน 20 ohm 3) Thermistor (NTC) และ 4) คอมพิวเตอร์ ดังรูปที่ 3.1

รูปที่ 3.1 แสดง Block Diagram การต่อเพื่อหาอุณหภูมิแสดงขึ้นจอ OLED


3.2 ตั้งค่าเริ่มต้นในโปรแกรม Arduino
3.2.1 ตั้งค่าเริ่มต้น

เปิ ดโปรแกรม Arduino IDE ไปที่ File ----> Preferences ----> Additional Boards Manager URLs:
ทำกำรแก้ลิงก์เป็ น https://dl.espressif.com/dl/package_esp32_index.json แล้วกด ok ดังรูปที่ 3.2
รูปที่ 3.2 การตั้งค่าโปรแกรม

รูปที่ 3.3 การตั้งค่าโปรแกรม


3.2.2 ติดตั้งโปรแกรม Board

ไปที่ Tools ----> Board ----> Board Manage ----> ค้นหำ ESP 32 ทำกำรติดตั้ง

รูปที่ 3.4 ติดตั้งบอร์ด

รูปที่ 3.5 ดาวโหลด ESP 32


3.2.3 การติดตั้ง Library สำหรับจอ OLED

รูปที่ 3.6 ติดตั้ง และ ดาวโหลดจอ


3.3 ทำการทดสอบโดยการวัดอุณหภูมิ
ทำการทดสอบโดยวัดอุณหภูมิโดยจะเปลี่ยนแปลงอุณหภูมิและวัดค่าการทดลองที่ได้
3.3.1 วัดอุณหภูมิที่ 20 องศา
เมื่อทำการตั้งค่าเครื่องทำความเย็นเรียบร้อยจากนั้นจะรอให้อุณหภูมิคงที่และวัดค่าที่ได้ คือ 20.13 องศา

รูปที่ 3.7 วัดอุณหภูมิที่ 20 องศา


3.3.2 วัดอุณหภูมิ 25 องศา
เมื่อทำการตั้งค่าเครื่องทำความเย็นเรียบร้อยจากนั้นจะรอให้อุณหภูมิคงที่และวัดค่าที่ได้ คือ 25.88 องศา

รูปที่ 3.8 วัดอุณหภูมิที่ 25 องศา


3.3.3 วัดอุณหภูมิ 30 องศา
เมื่อทำการตั้งค่าเครื่องทำความเย็นเรียบร้อยจากนั้นจะรอให้อุณหภูมิคงที่และวัดค่าที่ได้ คือ 31.40 องศา

รูปที่ 3.9 วัดอุณหภูมิที่ 30 องศา


3.4 Code ในการสั่งการทำงานของระบบโดยให้ขึ้นจอ OLED
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <WiFi.h>
#include <HTTPClient.h>

#define SCREEN_WIDTH 128 // pixel ความกว้าง


#define SCREEN_HEIGHT 64 // pixel ความสูง

// กำหนดขาต่อ I2C กับจอ OLED


#define OLED_RESET -1 //ขา reset เป็น -1 ถ้าใช้รว่ มกับขา Arduino reset
Adafruit_SSD1306 OLED(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

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;

const char* ssid = "Anantachai";


const char* password = "An9029071";

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

/*if (t> 200)


t = 20;
t = t+2;*/
String temp1 = String(T) + String(" C");
//String humid = String(2) + String(" %");
// String temp2 = String(3) + String(" C");
//String temp3 = String(4) + String(" C");
//String tof = String(u) + String("mm");
String payload = "{\"command\": \"appendRow\",
\"sheet_name\":\"Sheet1\",\"values\":\"" + temp1 + "," + "\"}" ; // + "\"" + temp + "," + humid +
"\"}";
//String payload = "{\"command\": \"appendRow\",
\"sheet_name\":\"sheet1\",\"values\":\"" + temp1 + "," + humid + "\"}" ; // + "\"" + temp + "," +
humid + "\"}";
if(WiFi.status()== WL_CONNECTED) //Check WiFi connection status
{
if (first)
delay(10000);
HTTPClient http;

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 จากนั้นทำการวัดค่าอุณหภูมิ

รูปที่ 3.10 เปิด App script


รูปที่ 3.11 เปลี่ยน URL เป็นของ Sheet เรา

รูปที่ 3.12 ตั้งค่า Deploy ให้เป็น Anyone


3.5.1 แสดง Code ที่ใช้งาน
function doGet()
{
//return HtmlService.createHtmlOutputFromFile('32').evaluate();
return HtmlService.createTemplateFromFile("32").evaluate();
}

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 onOpen() //เป็ นฟังก์ชนั ใช้สำหรับสร้ำงแถบเมนูบนหน้ำspreadsheet ui=user Interface


{
var ui = SpreadsheetApp.getUi();
ui.createMenu('Esp32')
.addItem('Clear', 'Clear')
.addToUi();
}

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

if (parsedData !== undefined)


{
var flag = parsedData.format;

if (flag === undefined){


flag = 0;
}

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');

var rowdata = sheet.getLastRow();


var temp1 = sheet.getRange(rowdata, 2).getValue();
var temp2 = sheet.getRange(rowdata, 3).getValue();
var temp3 = sheet.getRange(rowdata, 4).getValue();
var humid = sheet.getRange(rowdata, 5).getValue();
var distance = sheet.getRange(rowdata, 6).getValue();
var flow_air1 = sheet.getRange(rowdata,7).getValue();
var flow_air2 = sheet.getRange(rowdata,8).getValue();
//var flow2 = sheet.getRange(rowdata, 7).getValue();

if (temp1 != null) return temp1 +":"+temp2+ ":"+temp3+ ":"+humid+ ":"+distance+":


"+flow_air1+":"+flow_air2+":";
else return "no data : no data";
//Logger.log(temp +":"+humid);
}
function include(filename)
{
return HtmlService.createHtmlOutputFromFile(filename).getContent();
}
3.5.2 เพิ่ม Code html

รูปที่ 3.13 เพิ่ม HTML


แสดง Code ที่ใช้
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>

</body>
</html>
3.6 ติดตั้งและแสดงผลการนำข้อมูลขึ้น Google sheet
ตั้งค่าอุณหภูมิที่ 32 องศา และติดตั้ง Broad ESP 32 ตาม Diagram จากนั้นให้แสดงผลขึ้นทาง Google
sheet ที่ตั้งค่าใน Code ไว้

รูปที่ 3.14 ตั้งค่าอุณหภูมิ

รูปที่ 3.15 OLED แสดงผลในการวัดค่าอุณหภูมิ


รูปที่ 3.16 Google sheet แสดงผล
บทที่ 4
อภิปรายผลการทดสอบ
จากการทดลองโดยใช้บอร์ด ESP 32 ในการต่อเข้ากับจอ OLED และความต้านทานในการวัดอุณหภูมิซึ่งทำ
การวัดอุณหภูมิที่แตกต่างกันโดยการทดสอบนี้จะเกิดความคลานเคลื่อนหรือ Error ที่เกิดขึ้นเนื่องจากความคลาด
เคลื่อนที่เกิดจากสายเป็นส่วนหนึ่งของการทำให้ค่าอุณหภูมิเปลี่ยนแปลงความคาดเคลื่อนกันอยู่ประมาณ 2 องศา
เซลเซียสค่าอุณหภูมิที่วัดได้ถูกส่งไปแสดงที่จอ OLED รวมทั้งการส่งขึ้น Google sheet
สรุปผล
เข้าใจการต่อวงจรไฟฟ้าด้วยบอร์ด ESP32 ที่ต่อเข้ากับอุปกรณ์แสดงผลต่างๆโดยใช้โปรแกรม Arduino IDE
ในการเขียนโปรแกรมเพื่อทำให้ระบบเกิดการคำนวณข้อมูลที่ได้จากการต่อวงจรวัดอุณหภูมิที่ตั้งไว้ให้ใกล้เคียงกัน
โดยทำการทดสอบหลายครั้งพบว่ามีการคลานเคลื่อนของอุณหภูมิที่แสดงทางจอนั้นไม่มากนัก (ประมาณ 2 องศา)
และนำข้อมูลที่ได้ไปตั้งค่าในระบบ Google Sheet โดยใช้ Email Ku ในการใช้งานซึ่งเป็นการใช้งานฟรีอาจจะเกิด
ข้อจำกัดบางอย่างขึ้น
บรรณานุกรม
Thermocouple https://www.neonics.co.th/thermometers/thermocouple.html
Thermistor (NTC) https://th.mouser.com/new/vishay/vishay-bcc-ntclp450e3104h-ntc-
thermistors/
Transmitter https://www.instrument.engineer/2021/03/what-is-temperature-
transmitter.html
จอ OLED https://www.alibaba.com/pla/091-inch-Blue-OLED-LCD-
Display_60731409453.html
การวัดอุณหภูมิ https://www.neonics.co.th/thermometers/temperature-units.html

You might also like