สารบัญ:

เครื่องวัดอุณหภูมิและความชื้น: 6 ขั้นตอน (พร้อมรูปภาพ)
เครื่องวัดอุณหภูมิและความชื้น: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เครื่องวัดอุณหภูมิและความชื้น: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เครื่องวัดอุณหภูมิและความชื้น: 6 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: XIAOMI MIIIW THEMOMITER HYGROMETER เครื่องวัดอุณหภูมิและวัดความชื้น แบบดิจิตอล 2024, กรกฎาคม
Anonim
เครื่องวัดอุณหภูมิและความชื้น
เครื่องวัดอุณหภูมิและความชื้น
เครื่องวัดอุณหภูมิและความชื้น
เครื่องวัดอุณหภูมิและความชื้น

ในคำแนะนำนี้ฉันจะแสดงให้คุณเห็นถึงวิธีการตรวจสอบอุณหภูมิและความชื้นสำหรับห้องนั่งเล่นของคุณ อุปกรณ์ยังมีความสามารถ WiFi เพื่อวัตถุประสงค์ในการบันทึกข้อมูลบนเซิร์ฟเวอร์ระยะไกล (เช่น Raspberry Pi) และเข้าถึงได้ในภายหลังผ่านอินเทอร์เฟซเว็บที่เรียบง่าย

ส่วนประกอบหลักของอุปกรณ์คือไมโครคอนโทรลเลอร์ ESP8266 เซ็นเซอร์อุณหภูมิและความชื้น DHT11 และจอ LCD ขนาด 16x4 โปรเจ็กต์นี้เป็นโอเพ่นซอร์สอย่างสมบูรณ์ ดังนั้นอย่าลังเลที่จะดาวน์โหลดไฟล์แผนผัง เลย์เอาต์ของบอร์ด และการออกแบบสำหรับกล่องหุ้ม และทำการเปลี่ยนแปลงใดๆ ตามที่คุณต้องการ

ขั้นตอนที่ 1: เครื่องมือและชิ้นส่วน

เครื่องมือและอะไหล่
เครื่องมือและอะไหล่
เครื่องมือและอะไหล่
เครื่องมือและอะไหล่
เครื่องมือและอะไหล่
เครื่องมือและอะไหล่
เครื่องมือและอะไหล่
เครื่องมือและอะไหล่

ในการสร้างจอภาพ คุณจะต้องมีชิ้นส่วนต่อไปนี้:

1 x ESP-12F [2€] - เท่าที่ฉันรู้โดยพื้นฐานแล้ว ESP-12E และ ESP-12F นั้นเหมือนกัน โดยมีความแตกต่างที่ ESP-12F มีเสาอากาศที่ดีกว่า

1 x DHT11 Temperature and Humidity Sensor [0.80€] - DHT22 ก็ใช้งานได้เช่นกัน แต่จำเป็นต้องทำการเปลี่ยนแปลงบางอย่างในโมเดล 3 มิติของกล่องหุ้ม DHT22 ก็มีราคาแพงกว่าเล็กน้อยเช่นกัน

1 x 16x4 Character LCD 5V [3.30€] - ใช่ คุณจะต้องใช้ 5V เนื่องจาก PCB ได้รับการออกแบบมา ดังนั้น LCD จะใช้พลังงานโดยตรงจาก 5V แทนที่จะเป็นตัวควบคุมแรงดันไฟฟ้า สิ่งนี้ทำเพื่อลดภาระของตัวควบคุมแรงดันไฟฟ้า แต่เนื่องจากจอแสดงผล 5V มักจะถูกกว่าด้วย แต่ไม่ต้องกังวล แม้ว่า ESP8266 จะทำงานที่ 3.3V แต่ก็ยังทำงานได้ดี

1 x LD1117V33 ตัวควบคุมแรงดันไฟฟ้า SMD หรือที่เรียกว่า LD33 (แพ็คเกจ SOT223) [0.80 €]

1 x 100nF ตัวเก็บประจุเซรามิก SMD (แพ็คเกจ 0603)

1 x 10uF ตัวเก็บประจุแทนทาลัม SMD (แพ็คเกจ 3528)

ตัวต้านทาน SMD 1 x 10K (แพ็คเกจ 0805)

1 x 10K Trimmer หม้อ (ผ่านรู)

ตัวต้านทาน SMD 1 x 47Ω (แพ็คเกจ 0805) - นี่เป็นเพียงเพื่อจำกัดกระแสที่ไปที่แบ็คไลท์ของ LCD อย่าลังเลที่จะทดลองกับค่าความต้านทานต่างๆ และเลือกความเข้มที่คุณต้องการ

1 x SMD Momentary Switch [0.80€] - เฉพาะที่ฉันใช้คือสิ่งนี้ แต่คุณสามารถใช้สวิตช์ชั่วขณะใดก็ได้ที่คุณต้องการด้วยรอยเท้าเดียวกัน ฉันยังสามารถค้นหาสวิตช์แบบเดียวกันบน eBay ในราคาที่ถูกกว่าได้ด้วยการซื้อมากกว่า 1 ตัว

1 x 5.5x2.1mm DC Jack (Panel mount) [0.50€] - อันที่ฉันใช้มีเส้นผ่านศูนย์กลางช่องเจาะแผง 8 มม. และความยาว 9 มม. สามารถพบได้ง่ายบน eBay โดยการค้นหา "Panel Mount DC Jack" (ดูภาพที่แนบมา)

1 x 2.54 มม. (100mil) หัวเข็มหมุดตัวผู้ 40 พิน (ผ่านรู)

1 x 2.54 มม. (100mil) หัวเข็มหมุดตัวเมีย 40 พิน (ผ่านรู)

จัมเปอร์ขนาด 1 x 2.54 มม. (100 มม.) - เหมือนกับที่ใช้กับเมนบอร์ดคอมพิวเตอร์

4 x M3 8mm Bolts

เม็ดมีดเกลียวขนาด 4 x M3 4x4 มม. - หาได้ง่ายโดยการค้นหา "เม็ดมีดทองแดงทองเหลืองกด M3" บน eBay (ดูภาพที่แนบมา)

4 x M2 12mm Bolts

4 x M2 ถั่ว

1 x USB Type A ถึง 5.5x2.1mm DC Plug Cable [1.5€] - สิ่งนี้จะช่วยให้อุปกรณ์ของคุณใช้เครื่องชาร์จโทรศัพท์มาตรฐานหรือคอมพิวเตอร์เครื่องใดก็ได้ที่มีพอร์ต USB อุปกรณ์ดึงเฉพาะกรณีที่แย่ที่สุด 300mA และ 250mA โดยเฉลี่ย ดังนั้นแม้แต่พอร์ต USB 2.0 ก็ยังทำได้

1 x PCB - ความหนาของบอร์ดไม่สำคัญ ดังนั้นให้เลือก 1.6 มม. ซึ่งมักจะเป็นตัวเลือกที่ถูกที่สุดสำหรับผู้ผลิต PCB ส่วนใหญ่

3 x ลวดพันเกลียว (แต่ละชิ้นประมาณ 60 มม.)

3 x ท่อ Heatshrink (แต่ละชิ้นประมาณ 10 มม.)

และเครื่องมือดังต่อไปนี้

หัวแร้ง

USB to Serial Converter - คุณจะต้องใช้สิ่งนี้เพื่อตั้งโปรแกรม ESP8266 บนบอร์ด

ไขควงปากแฉกและ/หรือประแจหกเหลี่ยม - ขึ้นอยู่กับประเภทของสกรูที่คุณจะใช้

เครื่องพิมพ์ 3 มิติ - หากคุณไม่มีเครื่องพิมพ์ 3 มิติ คุณสามารถใช้กล่องโปรเจ็กต์พลาสติกทั่วไปและทำการตัดด้วยเดรเมลได้ ขนาดภายในขั้นต่ำสำหรับกล่องดังกล่าวจะต้องมีความสูง 24 มม. ยาว 94 มม. และกว้าง 66 มม. คุณจะต้องใช้ขาตั้ง M2 ขนาด 8 มม. เพื่อติดตั้ง LCD

Dremel - จำเป็นเฉพาะถ้าคุณไม่เลือกใช้กล่องหุ้มที่พิมพ์ 3 มิติ

ขั้นตอนที่ 2: การสร้าง PCB

การทำ PCB
การทำ PCB
การทำ PCB
การทำ PCB
การทำ PCB
การทำ PCB

ขั้นตอนแรกคือการทำ PCB คุณสามารถทำได้โดยการแกะสลักด้วยตัวเองหรือเพียงแค่ไปที่เว็บไซต์ของผู้ผลิต PCB ที่คุณชื่นชอบแล้วสั่งซื้อ หากคุณไม่ได้วางแผนที่จะเปลี่ยนแปลงเลย์เอาต์ของบอร์ด คุณสามารถคว้าไฟล์ ZIP ที่มีไฟล์เกอร์เบอร์ที่แนบมาในขั้นตอนนี้แล้วส่งไปยังผู้ผลิตโดยตรง ในกรณีที่คุณต้องการทำการเปลี่ยนแปลง ไฟล์ KiCAD schematic และ board layout สามารถพบได้ที่นี่

หลังจากวางมือบนกระดานแล้วก็ถึงเวลาประสานส่วนประกอบต่างๆ สิ่งนี้ควรจะตรงไปตรงมามาก แต่มีบางสิ่งที่ควรสังเกต ขั้นแรก อย่าเพิ่งบัดกรี PCB บนหัวต่อ LCD ในตอนนี้ จำเป็นต้องทำในระหว่างการประกอบขั้นสุดท้ายเนื่องจากวิธีการออกแบบกล่องหุ้ม หากคุณกำลังสร้างกรงของคุณเอง อย่าลังเลที่จะเพิกเฉยต่อคำแนะนำนั้น

ขั้วต่อ U3 คือตำแหน่งที่จะเชื่อมต่อเซ็นเซอร์ DHT11 ตามหลักการแล้ว คุณควรใช้หัวเข็มหมุดตัวเมียที่ทำมุม 90° เพื่อจุดประสงค์นั้น แต่ถ้าชอบผมหาไม่เจอก็หาตัวตรงมาดัดเองครับ หากคุณทำในภายหลัง ลีดของ DHT11 ก็จะสั้นไปหน่อย ดังนั้นคุณจะต้องประสานส่วนขยายบางส่วน ระยะห่างระหว่างส่วนหัวของพินและเซ็นเซอร์เมื่อเชื่อมต่อแล้วจะต้องประมาณ 5 มม.

เหตุผลที่คุณต้องการใช้ส่วนหัวของหมุดกลึงนั้นเป็นเพราะรูมีขนาดเล็กกว่าเมื่อเทียบกับส่วนหัวของหมุดตัวเมียทั่วไป ดังนั้นลีดของเซ็นเซอร์จึงสามารถนั่งอยู่ที่นั่นอย่างแน่นหนาเพื่อสร้างการเชื่อมต่อที่แน่นหนา แต่คุณสามารถลองบัดกรี DHT11 กับส่วนหัวของหมุดตัวผู้แล้วเชื่อมต่อด้วยวิธีนี้กับส่วนหัวของหมุดตัวเมียที่ทำมุมปกติซึ่งน่าจะใช้ได้เช่นกัน

ขั้นตอนที่ 3: การสร้างสิ่งที่แนบมา

การทำสิ่งที่แนบมา
การทำสิ่งที่แนบมา
การทำสิ่งที่แนบมา
การทำสิ่งที่แนบมา
การทำสิ่งที่แนบมา
การทำสิ่งที่แนบมา
การทำสิ่งที่แนบมา
การทำสิ่งที่แนบมา

เมื่อบัดกรี PCB ได้แล้ว ก็ถึงเวลาสร้างกล่องหุ้ม ส่วนที่จำเป็นต้องพิมพ์มี 2 ส่วน คือ ส่วนหลักของกล่องหุ้มและฝาปิด ฝาปิดยังมีรูสำหรับติดไว้กับผนังของคุณ

ทั้งสองส่วนสามารถพิมพ์ด้วยหัวฉีดขนาดมาตรฐาน 0.4 มม. ที่ความสูงของชั้น 0.2 มม. สำหรับกรณีของฉัน เวลาพิมพ์ประมาณ 4 ชั่วโมงสำหรับทั้งสองส่วนรวมกัน ฝาปิดไม่ต้องการส่วนรองรับใดๆ ของส่วนหุ้ม แต่ส่วนใหญ่ใช้สำหรับส่วนที่อยู่ใต้ซ็อกเก็ตสกรู หลังจากการพิมพ์ โปรดใช้ความระมัดระวังอย่างมากในการถอดส่วนรองรับออก ฉันสามารถทำลายหนึ่งในข้อกีดขวางสำหรับ LCD ในขณะที่ทำเช่นนั้น และต้องกาวกลับเข้าไปใหม่ด้วย superglue

โครงตู้ได้รับการออกแบบบน FreeCAD ดังนั้นหากคุณต้องการเปลี่ยนแปลงใดๆ ก็ควรจะตรงไปตรงมามาก ไฟล์ STL สำหรับการพิมพ์กล่องหุ้มและไฟล์การออกแบบ FreeCAD สามารถพบได้ใน Thingiverse

ขั้นตอนที่ 4: การประกอบจอภาพ

เมื่อพิมพ์กล่องหุ้มแล้ว ถึงเวลารวมทุกอย่างเข้าด้วยกัน ขั้นแรก วาง LCD ไว้ในเคสแล้วเลื่อนไปทางซ้าย เพื่อให้มีช่องว่างระหว่าง LCD กับรูสำหรับเซ็นเซอร์

ภาพ
ภาพ

ถัดไป วาง PCB ไว้ด้านบน โดยติดเซ็นเซอร์ไว้ที่ส่วนหัวของพินแล้ว

ภาพ
ภาพ

หลังจากนั้น ดันเซ็นเซอร์เข้าไปในรู เลื่อน LCD กลับไปที่ตำแหน่งแล้วใส่ PCB ที่ส่วนหัวของพิน ตอนนี้แก้ไข LCD ให้เข้าที่โดยใช้น็อตและสลักเกลียว M2 แล้วบัดกรี PCB ที่ส่วนหัวของพิน

ภาพ
ภาพ

ถัดไป วางแจ็คไฟเข้าที่ ต่อสายไฟเข้ากับมันแล้วประสานปลายอีกด้านเข้ากับ PCB การใช้ท่อหดแบบฮีทซิงค์อาจเป็นความคิดที่ดีเช่นกัน

ภาพ
ภาพ

ขั้นตอนสุดท้ายคือการติดตั้งเม็ดมีดเกลียวโลหะเพื่อให้สามารถขันฝาให้เข้าที่ด้วยสลักเกลียว M3 เพื่อจุดประสงค์นั้น คุณจะต้องใช้หัวแร้งในการทำความร้อน เพื่อให้สามารถดันเข้าไปในรูได้ คุณสามารถดูคำแนะนำนี้ได้หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับการเพิ่มเกลียวโลหะลงในงานพิมพ์ 3 มิติของคุณ

ภาพ
ภาพ

ขั้นตอนที่ 5: การตั้งค่าเซิร์ฟเวอร์

การตั้งค่าเซิร์ฟเวอร์
การตั้งค่าเซิร์ฟเวอร์

ก่อนที่จะอัปโหลดเฟิร์มแวร์ไปยัง ESP8266 มีอีกสิ่งหนึ่งที่ต้องทำ นั่นคือการตั้งค่าเซิร์ฟเวอร์สำหรับบันทึกข้อมูลที่ได้รับจากอุปกรณ์ เพื่อจุดประสงค์นี้ คุณสามารถใช้เครื่อง Linux ใดก็ได้ที่คุณต้องการ ตั้งแต่ Raspberry Pi บนเครือข่ายส่วนตัวของคุณ ไปจนถึง DigitalOcean droplet ฉันไปกับในภายหลัง แต่กระบวนการค่อนข้างเหมือนกันไม่ว่าคุณจะเลือกอะไร

การติดตั้ง Apache, MySQL (MariaDB) และ PHP

อันดับแรก เราต้องติดตั้ง LAMP หรืออีกนัยหนึ่งคือ ติดตั้ง Apache, MySQL (MariaDB) และ PHP บนเซิร์ฟเวอร์ เพื่อที่คุณจะต้องใช้ตัวจัดการแพ็คเกจของ distro ของคุณสำหรับตัวอย่างฉันจะใช้ apt ซึ่งเป็นตัวจัดการแพ็คเกจที่ใช้โดย distro ที่ใช้ Debian รวมถึง Raspbian

sudo apt อัปเดต

sudo apt ติดตั้ง apache2 mysql-server mysql-client php libapache2-mod-php php-mysql

หลังจากนั้น หากคุณใส่ที่อยู่ IP ของเซิร์ฟเวอร์ลงในแถบที่อยู่ของเบราว์เซอร์ คุณจะสามารถเห็นหน้าเริ่มต้นของ Apache ได้

การตั้งค่าฐานข้อมูล

ตอนนี้เราต้องการฐานข้อมูลสำหรับบันทึกข้อมูล ขั้นแรกให้เชื่อมต่อกับ MySQL เป็น root โดยเรียกใช้

sudo mysql

และสร้างฐานข้อมูลและผู้ใช้ที่เข้าถึงได้ดังนี้

สร้างฐานข้อมูล `เซ็นเซอร์'

ใช้ `เซ็นเซอร์'; สร้างตาราง `อุณหภูมิ` (`id` bigint (20) ไม่ใช่ NULL AUTO_INCREMENT, `client_id` smallint (6) ไม่ใช่ NULL, `value' smallint (6) ไม่ใช่ NULL, `created_at` เวลาประทับไม่ใช่ค่าเริ่มต้น CURRENT_TIMESTAMP, คีย์หลัก (` id`)) เครื่องยนต์=InnoDB; สร้างตาราง `ความชื้น` (`id` bigint (20) ไม่ใช่ NULL AUTO_INCREMENT, `client_id` smallint (6) ไม่ใช่ NULL, `ค่า` smallint(6) ไม่ใช่ NULL, `created_at` เวลาประทับไม่ใช่ค่าเริ่มต้น CURRENT_TIMESTAMP, คีย์หลัก (` id`)) เครื่องยนต์=InnoDB; สร้างผู้ใช้ '[ชื่อผู้ใช้]'@'localhost' ระบุโดย '[รหัสผ่าน]'; ให้สิทธิ์ทั้งหมดใน 'เซ็นเซอร์' * ถึง 'เซ็นเซอร์'@'localhost'; ออก

อย่าลืมแทนที่ [ชื่อผู้ใช้] และ [รหัสผ่าน] ด้วยชื่อผู้ใช้และรหัสผ่านจริงสำหรับผู้ใช้ MySQL ที่คุณต้องการ จดบันทึกเอาไว้เพราะคุณจะต้องการสำหรับขั้นตอนต่อไป

การกำหนดค่าสคริปต์การบันทึกและเว็บอินเตอร์เฟส

เปลี่ยนเป็นไดเร็กทอรี /var/www/html ซึ่งเป็นรูทเอกสารของโฮสต์เสมือนเริ่มต้นของ Apache ลบไฟล์ HTML ที่มีหน้าเว็บเริ่มต้นและดาวน์โหลดสคริปต์การบันทึกและเว็บอินเทอร์เฟซภายใน

cd /var/www/html

sudo rm index.html sudo wget https://raw.githubusercontent.com/magkopian/esp-arduino-temp-monitor/master/server/log.php sudo wget https://raw.githubusercontent.com/magkopian/esp- arduino-temp-monitor/master/server/index.php

ตอนนี้แก้ไขสคริปต์การบันทึกโดยใช้นาโน

sudo nano log.php

คุณจะต้องแทนที่ [ชื่อผู้ใช้] และ [รหัสผ่าน] ด้วยชื่อผู้ใช้และรหัสผ่านสำหรับผู้ใช้ MySQL ที่คุณสร้างในขั้นตอนก่อนหน้า นอกจากนี้ ให้แทนที่ [คีย์ไคลเอ็นต์] ด้วยสตริงเฉพาะและจดบันทึกไว้ นี่จะถูกใช้เป็นรหัสผ่านเพื่อให้มอนิเตอร์สามารถตรวจสอบตัวเองกับเซิร์ฟเวอร์ได้

สุดท้ายแก้ไข index.php ด้วย nano

sudo nano index.php

และแทนที่ [ชื่อผู้ใช้] และ [รหัสผ่าน] ด้วยชื่อผู้ใช้และรหัสผ่านสำหรับผู้ใช้ MySQL เช่นเดียวกับที่คุณทำกับสคริปต์การบันทึก

การตั้งค่า HTTPS (ไม่บังคับ)

นี่อาจเป็นทางเลือก แต่ถ้าการเชื่อมต่อระหว่าง ESP8266 และเซิร์ฟเวอร์ผ่านทางอินเทอร์เน็ต ขอแนะนำให้ใช้การเข้ารหัสบางอย่าง

น่าเสียดายที่คุณไม่สามารถดำเนินการบางอย่างเช่น Let's Encrypt เพื่อรับใบรับรองได้ นั่นเป็นเพราะว่าอย่างน้อยในขณะที่เขียน ไลบรารีไคลเอนต์ HTTP สำหรับ ESP8266 ยังคงต้องการลายนิ้วมือของใบรับรองเพื่อให้เป็นอาร์กิวเมนต์ที่สองเมื่อเรียกใช้ http.begin() ซึ่งหมายความว่าหากคุณใช้บางอย่างเช่น Let's Encrypt คุณจะต้องรีเฟรชเฟิร์มแวร์ไปยังชิปทุก 3 เดือนเพื่ออัปเดตลายนิ้วมือของใบรับรองหลังจากการต่ออายุแต่ละครั้ง

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

ก่อนที่เราจะเริ่มต้น ฉันจะถือว่าคุณเป็นเจ้าของชื่อโดเมนอยู่แล้ว และคุณสามารถสร้างโดเมนย่อยได้ ดังนั้น ในการสร้างใบรับรองที่หมดอายุหลังจาก 10 ปี ให้รันคำสั่งต่อไปนี้และตอบคำถาม

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/sensors.key -out /etc/ssl/certs/sensors.crt

เนื่องจากเป็นใบรับรองที่ลงนามเอง สิ่งที่คุณตอบในคำถามส่วนใหญ่จึงไม่สำคัญมากนัก ยกเว้นคำถามที่ขอชื่อสามัญ นี่คือที่ที่คุณจะต้องระบุโดเมนย่อยแบบเต็มที่จะใช้สำหรับโฮสต์เสมือนนี้ โดเมนย่อยที่คุณจะให้ที่นี่จะต้องเหมือนกับ ServerName ที่คุณจะตั้งค่าในภายหลังในการกำหนดค่าโฮสต์เสมือนของคุณ

ถัดไปสร้างการกำหนดค่าโฮสต์เสมือนใหม่

sudo nano /etc/apache2/sites-available/sensors-ssl.conf

โดยมีเนื้อหาดังนี้

ชื่อเซิร์ฟเวอร์ [โดเมนย่อย] DocumentRoot /var/www/sensors SSLEngine ON SSLCertificateKeyFile /etc/ssl/private/sensors.key SSLCertificateFile /etc/ssl/certs/sensors.crt ตัวเลือก +FollowSymlinks -Indexes AllowOverride All ErrorLog ${APACHE_LOG_Ds error-ssl.log CustomLog ${APACHE_LOG_DIR}/sensors-access-ssl.log รวมกัน

อีกครั้ง อย่าลืมแทนที่ [โดเมนย่อย] ด้วยโดเมนย่อยเดียวกันกับที่คุณใช้กับใบรับรอง ณ จุดนี้คุณจะต้องปิดการใช้งานโฮสต์เสมือนเริ่มต้นของ Apache

sudo a2dissite 000-default

เปลี่ยนชื่อของไดเรกทอรีรากของเอกสาร

sudo mv /var/www/html /var/www/sensors

และสุดท้ายเปิดใช้งานโฮสต์เสมือนใหม่และรีสตาร์ท Apache

sudo a2ensite เซ็นเซอร์-ssl

sudo systemctl รีสตาร์ท apache2

สิ่งสุดท้ายที่ต้องทำคือการรับลายนิ้วมือของใบรับรอง เพราะคุณจะต้องใช้ในรหัสเฟิร์มแวร์

openssl x509 -noout -fingerprint -sha1 -inform pem -in /etc/ssl/certs/sensors.crt

http.begin() คาดว่าตัวคั่นระหว่างไบต์ของลายนิ้วมือจะเป็นช่องว่าง ดังนั้น คุณจะต้องแทนที่เครื่องหมายทวิภาคด้วยช่องว่างก่อนที่จะใช้ในโค้ดของคุณ

ตอนนี้ หากคุณไม่ต้องการใช้ใบรับรองที่ลงนามเองสำหรับเว็บอินเตอร์เฟส ให้ตั้งค่าโดเมนย่อยใหม่และสร้างการกำหนดค่าโฮสต์เสมือนใหม่

sudo nano /etc/apache2/sites-available/sensors-web-ssl.conf

โดยมีเนื้อหาดังนี้

ชื่อเซิร์ฟเวอร์ [โดเมนย่อย] DocumentRoot /var/www/sensors #SSLEngine ON #SSLCertificateFile /etc/letsencrypt/live/[subdomain]/cert.pem #SSLCertificateKeyFile /etc/letsencrypt/live/[subdomain]/privkey.pem #SSLCertificateChainFile /etc /letsencrypt/live/[subdomain]/chain.pem Options +FollowSymlinks -Indexes AllowOverride All ErrorLog ${APACHE_LOG_DIR}/sensors-web-error-ssl.log CustomLog ${APACHE_LOG_DIR}/sensors-web-access-ssl.log รวมกัน

อย่าลืมแทนที่ [โดเมนย่อย] ด้วยโดเมนย่อยที่คุณตั้งค่าไว้สำหรับเว็บอินเตอร์เฟส ถัดไปเปิดใช้งานโฮสต์เสมือนใหม่ รีสตาร์ท Apache ติดตั้ง certbot และรับใบรับรองสำหรับโดเมนย่อยใหม่จาก Let's Encrypt

sudo a2ensite เซ็นเซอร์-web-ssl

sudo systemctl รีสตาร์ท apache2 sudo apt อัปเดต sudo apt ติดตั้ง certbot sudo certbot certonly --apache -d [โดเมนย่อย]

หลังจากได้รับใบรับรองแล้ว ให้แก้ไขการกำหนดค่าโฮสต์เสมือนอีกครั้งเพื่อยกเลิกการแสดงข้อคิดเห็นในบรรทัด SSLEngine, SSLCertificateFile, SSLCertificateKeyFile และ SSLCertificateChainFile และรีสตาร์ท Apache

และตอนนี้ คุณสามารถใช้โดเมนย่อยแรกซึ่งใช้ใบรับรองที่ลงนามเองเพื่อส่งข้อมูลจาก ESP8266 ไปยังเซิร์ฟเวอร์ ในขณะที่ใช้โดเมนที่สองในการเข้าถึงเว็บอินเทอร์เฟซจากเบราว์เซอร์ของคุณ Certbot จะดูแลการต่ออายุใบรับรอง Let's Encrypt ให้คุณโดยอัตโนมัติทุกๆ 3 เดือน โดยใช้ตัวจับเวลา systemd ซึ่งควรเปิดใช้งานโดยค่าเริ่มต้น

ขั้นตอนที่ 6: การเขียนโปรแกรม ESP8266

การเขียนโปรแกรม ESP8266
การเขียนโปรแกรม ESP8266

สุดท้าย สิ่งเดียวที่ต้องทำคือโหลดเฟิร์มแวร์บนไมโครคอนโทรลเลอร์ โดยดาวน์โหลดซอร์สโค้ดสำหรับเฟิร์มแวร์จากที่นี่ และเปิดโดยใช้ Arduino IDE คุณจะต้องแทนที่ [SSID] และ [Password] ด้วย SSID และรหัสผ่านจริงของเครือข่าย WiFi ของคุณ คุณจะต้องแทนที่ [Client ID] และ [Client Key] ในการเรียกใช้ฟังก์ชัน sprintf ด้วยอันที่คุณใช้ในสคริปต์ PHP บนเซิร์ฟเวอร์ สุดท้าย คุณจะต้องแทนที่ [โฮสต์] ด้วยชื่อโดเมนหรือที่อยู่ IP ของเซิร์ฟเวอร์ หากคุณใช้ HTTPS คุณจะต้องระบุลายนิ้วมือของใบรับรองของคุณเป็นอาร์กิวเมนต์ที่สองในการเรียกใช้ฟังก์ชันของ http.begin() ฉันได้อธิบายวิธีรับลายนิ้วมือของใบรับรองที่ส่วน "การตั้งค่า HTTPS" ในขั้นตอนก่อนหน้า

ต่อไป หากคุณยังไม่ได้ติดตั้ง คุณจะต้องติดตั้งแพ็คเกจหลักของชุมชน ESP8266 โดยใช้ Board Manager ของ Arduino IDE เมื่อเสร็จแล้ว ให้เลือก NodeMCU 1.0 (โมดูล ESP-12E) จากเมนูบอร์ด ถัดไป คุณจะต้องติดตั้งไลบรารี SimpleDHT โดยใช้ Library Manager สุดท้าย ให้กดปุ่มยืนยันที่มุมซ้ายบนของหน้าต่าง IDE ของคุณเพื่อให้แน่ใจว่าโค้ดจะคอมไพล์โดยไม่มีข้อผิดพลาด

และในที่สุดก็ถึงเวลาเบิร์นเฟิร์มแวร์ไปยังไมโครคอนโทรลเลอร์ ในการทำเช่นนั้น ให้ย้ายจัมเปอร์ JP1 ทางด้านขวา ดังนั้น GPIO0 ของ ESP8266 จะเชื่อมต่อกับกราวด์ ซึ่งจะเปิดใช้งานโหมดการเขียนโปรแกรม จากนั้น ต่อ USB เข้ากับตัวแปลงอนุกรมโดยใช้สายจัมเปอร์กับส่วนหัวของโปรแกรมที่ติดป้ายว่า P1 พิน 1 ของส่วนหัวการเขียนโปรแกรมเป็นกราวด์ พิน 2 คือพินรับของ ESP8266 และพิน 3 ของการส่ง คุณต้องได้รับ ESP8266 เพื่อไปที่การส่งสัญญาณของ USB ของคุณไปยังตัวแปลงอนุกรม การส่งสัญญาณไปยังตัวรับสัญญาณ และแน่นอนว่ากราวด์ไปยังกราวด์

สุดท้ายให้จ่ายไฟให้กับอุปกรณ์ 5V โดยใช้สายแจ็ค USB เป็น DC และเชื่อมต่อ USB เป็นตัวแปลงอนุกรมกับคอมพิวเตอร์ของคุณ ในตอนนี้ คุณควรจะสามารถเห็นพอร์ตอนุกรมเสมือนที่เชื่อมต่อ ESP8266 ได้ทันทีที่คุณเปิดเมนูเครื่องมือบน IDE ของคุณ ตอนนี้ เพียงกดปุ่มอัปโหลด เท่านี้ก็เรียบร้อย! หากทุกอย่างเป็นไปตามที่คาดไว้ คุณจะสามารถเห็นการอ่านค่าอุณหภูมิและความชื้นบน LCD ของอุปกรณ์ได้ หลังจากที่ ESP8266 เชื่อมต่อกับเครือข่ายของคุณและเริ่มสื่อสารกับเซิร์ฟเวอร์แล้ว วันที่และเวลาปัจจุบันควรปรากฏบนจอแสดงผลด้วย

หลังจากผ่านไปสองสามชั่วโมง เมื่อเซิร์ฟเวอร์ได้รวบรวมข้อมูลจำนวนมาก คุณจะสามารถดูแผนภูมิอุณหภูมิและความชื้นได้โดยไปที่ http(s)://[host]/index.php?client_id=[client id]โดยที่ [host] เป็นที่อยู่ IP ของเซิร์ฟเวอร์ของคุณหรือโดเมนย่อยที่คุณใช้สำหรับเว็บอินเตอร์เฟส และ [client id] ไคลเอ็นต์ id ของอุปกรณ์ ซึ่งหากคุณปล่อยให้มันเป็นค่าเริ่มต้น ควรเป็น 1

แนะนำ: