สารบัญ:
- ขั้นตอนที่ 1: สิ่งที่คุณต้องการ…
- ขั้นตอนที่ 2: เริ่มต้นด้วยการตั้งค่าฮาร์ดแวร์เซ็นเซอร์ BME 280
- ขั้นตอนที่ 3: รหัส BME 280 Nodemcu ESP8266
- ขั้นตอนที่ 4: อุปกรณ์เซ็นเซอร์ BME280 สำเร็จ + การแก้ไขปัญหา
- ขั้นตอนที่ 5: การตั้งค่าฮาร์ดแวร์ Soilsensor
- ขั้นตอนที่ 6: รหัส DS18B20 Nodemcu ESP8266
- ขั้นตอนที่ 7: เซ็นเซอร์วัดความสำเร็จและการแก้ไขปัญหา
- ขั้นตอนที่ 8: เสร็จสิ้น
วีดีโอ: Extension Sensors Nodemcu ESP8266 สำหรับ Weewx: 8 ขั้นตอน (พร้อมรูปภาพ)
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
นี่เป็นคำแนะนำในการเพิ่มเซ็นเซอร์ให้กับซอฟต์แวร์สถานีตรวจอากาศ weewx
หากคุณยังไม่มี weewx คุณสามารถเรียนรู้บางสิ่งในบทช่วยสอนนี้
คุณต้องมีความรู้พื้นฐานเกี่ยวกับโค้ด Arduino และวิธีอัปโหลดบนอุปกรณ์
คุณพบข้อมูล weewx ได้ที่นี่:
สิ่งที่คุณสร้างคือ 2 อุปกรณ์:
1 อุปกรณ์ส่งอุณหภูมิและความชื้นไปยังซอฟต์แวร์ weewx
1 อุปกรณ์ส่งอุณหภูมิดินของพื้นดินที่แตกต่างกันไปยังซอฟต์แวร์ weewx
อุปกรณ์แรกของเราคือเซ็นเซอร์ BME 280
อุปกรณ์ที่สองของเราคือห่วงโซ่ของเซ็นเซอร์อุณหภูมิ DS18B20 3 ตัว (สามารถเพิ่มเติมได้ถ้าต้องการ)
เริ่มกันเลย:
ขั้นตอนที่ 1: สิ่งที่คุณต้องการ…
Weewx เริ่มทำงาน + เข้าถึงเซิร์ฟเวอร์ weewx (เช่น ราสเบอร์รี่ PI 3)
2 โมดูล Nodemcu ESP8266
เซนเซอร์ DS18B20 3 ตัวขึ้นไป
1 BME 280 คอมโบเซนเซอร์
1 ท่ออลูมิเนียมหรือใกล้เคียงที่มีเส้นผ่านศูนย์กลาง 10 มม. และความหนาของผนัง 1 มม. และโดยประมาณ ยาว 1 เมตร
1 กล่องกันน้ำพร้อมต่อมสายเคเบิลและน็อตล็อค
1 5V แหล่งพลังงาน (เช่น ตัวโหลดมือถือ)
สายไฟและอุปกรณ์บัดกรีบางส่วน
คุณพบเซ็นเซอร์ BME280 และโมดูล Nodemcu บนอีเบย์
สำหรับท่ออลูมิเนียม ผมเลือกร้านฮาร์ดแวร์ในพื้นที่
สำหรับ DS18B20 และเคสกันน้ำ ฉันใช้ www.reichelt.de
www.reichelt.de/DS-18B20/3/index.html?ACTI…
www.reichelt.de/EL-FK-110/3/index.html?ACT…
และกลุ่มของเคเบิลแกลนด์พร้อมน็อตล็อค
www.reichelt.de/Kabelverschraubungen-Bopla…
สำหรับ bme280 คุณสามารถใช้การแตกกิ่งก้านได้
www.reichelt.de/Installationsmaterial/EL-D…
ขั้นตอนที่ 2: เริ่มต้นด้วยการตั้งค่าฮาร์ดแวร์เซ็นเซอร์ BME 280
บัดกรีแถบใน BME280
จากนั้นเดินสาย BME ไปที่ Nodemcu:
BME VIN เป็น 3.3V
BME GND เป็น GND
SCL เป็น D4
SDA เป็น D3
หากคุณต้องการ คุณสามารถใส่อุปกรณ์ในเคสได้ แต่ต้องแน่ใจว่ามีรูบางรูอยู่ในเคส เพื่อให้ค่าความชื้นและอุณหภูมิถูกต้อง
ขั้นตอนที่ 3: รหัส BME 280 Nodemcu ESP8266
สำหรับรหัสคุณสามารถใช้ที่เก็บ github ของฉัน:
github.com/Landixus/BME280_TO_SERVER_WEEWX
ไฟล์ ino ต้องการส่วนแทรกจากคุณ:
ที่อยู่ IP ของเซิร์ฟเวอร์ weewx หรือ URL
และเส้นทางที่คุณมีไฟล์ php ตรวจสอบให้แน่ใจว่าพื้นที่นั้นสามารถเขียนได้
ฉันเลือก public_html dir เพราะเป็นโฮมเซิร์ฟเวอร์
หากคุณต้องการโคลนที่เก็บ git และติดตั้ง git บนเซิร์ฟเวอร์ของคุณ คุณสามารถโคลนด้วยคำสั่ง:
"git โคลน"https://github.com/Landixus/BME280_TO_SERVER_WEEWX"
ตอนนี้เราจำเป็นต้องทำบางสิ่งบนเซิร์ฟเวอร์ weewx ของเรา
คุณต้องสร้างเส้นทางไปยังการตั้งค่าของคุณ!
ใน
/home/weewx/public_html
สร้างโฟลเดอร์ data
ในโฟลเดอร์ data ให้สร้าง bme.txt ตัวอย่างเช่นด้วย:
นาโน bme.txt
ไฟล์ควรว่างเปล่า
ทำให้สามารถเขียนได้ด้วย:
chmod -R 777 bme.txt
(คุณไม่เคยทำสิ่งนี้บนเซิร์ฟเวอร์ที่เข้าถึงอินเทอร์เน็ตได้!)
ในโฟลเดอร์
/home/weewx/public_html
คุณใส่ bme.php ของ github repo ของฉัน
เคล็ดลับคือไฟล์ INO ส่งค่าไปที่ bme.php และ bme.php เขียนข้อมูลใน bme.txt
ต่อไปเราต้องเพิ่มบริการใน weewx
ใส่ bme.py ลงในโฟลเดอร์
/home/weewx/bin/user
เปิด weewx.conf ของคุณในโฟลเดอร์
/home/weewx
การสำรองข้อมูลก่อนแก้ไขไฟล์นี้เป็นเรื่องที่ดีเสมอ!
ไปที่บรรทัด Engine และทำให้บรรทัดดูเหมือนของฉัน:
[เครื่องยนต์]
# ส่วนนี้ระบุบริการที่ควรเรียกใช้ พวกเขาคือ
#จัดกลุ่มตามประเภทและลำดับบริการภายในแต่ละกลุ่ม
# กำหนดลำดับที่จะเรียกใช้บริการ
data_services = user.pond. PondService, user.bme.bme
รีสตาร์ท weewx ด้วย:
sudo /etc/init.d/weewx stop
sudo /etc/init.d/weewx start
ด้วยคำสั่ง
tail -f /var/log/syslog
คุณสามารถค้นหาข้อผิดพลาดหรือความสำเร็จในล็อกไฟล์ ค้นหาผลลัพธ์ bme: ค่าที่พบของ…
ให้เวลาเซิร์ฟเวอร์ของคุณในการสร้างผลลัพธ์ใน weewx.conf "ของฉัน" ทุกๆ 5 นาที
หากคุณมีข้อความแสดงข้อผิดพลาด ให้ตรวจสอบเส้นทางของคุณ
หากคุณมีค่าคุณสามารถไปแสดงบนหน้าเว็บได้:
เปิด skin.conf ใน
/home/weewx/skins/มาตรฐาน
ไปที่:
# อันนี้น่าจะเป็นเฉพาะสถานีของฉัน! add
extraTemp3 = BME1 TemperatureextraHumid1 = BME1 ความชื้น
บันทึกไฟล์และเปิดในโฟลเดอร์เดียวกัน
index.html.tmpl
มองหาบรรทัด:
#ถ้า $day.extraTemp..
#จบถ้า
หลังจาก #end แรก หากคุณพบให้ใส่ BME Sensor ของคุณด้วย:
^^ ขออภัย ไม่สามารถใส่เป็นข้อความได้:(บันทึกไฟล์และออก
ไม่จำเป็นต้องรีสตาร์ท weewx
ตอนนี้คุณต้องป้อน NODEMCU ESP8266 ด้วยไฟล์ Arduino
อย่าลืมตั้งค่า wifi และที่อยู่ในไฟล์
หลังจากโหลดแล้ว ให้ตรวจสอบเอาต์พุตแบบอนุกรมเพื่อหาข้อผิดพลาด
หลังจากช่วงเวลาสั้นๆ คุณจะเห็นค่าบนเว็บไซต์ weewx ของคุณ
ขั้นตอนที่ 4: อุปกรณ์เซ็นเซอร์ BME280 สำเร็จ + การแก้ไขปัญหา
เคล็ดลับสำหรับคุณ:
เปิดมากกว่า 1 คอนโซลผ่าน putty
ใน 1 คอนโซลทำการเปลี่ยนแปลงของคุณและในคอนโซลอื่นอ่าน syslog ของคุณแบบสดด้วย:
tail -f /var/log/syslog
หากคุณมีข้อผิดพลาด ให้ดูที่ไฟล์บันทึกของคุณก่อน
ผลลัพธ์ของคุณควรคล้ายกับของฉัน:
ขั้นตอนที่ 5: การตั้งค่าฮาร์ดแวร์ Soilsensor
สำหรับเซ็นเซอร์ DS18B20 เราจำเป็นต้องสร้างระบบบัสด้วยสายไฟและการบัดกรี
ตรวจสอบ DS18B20. ของคุณ
ข้อมูล, GND, VCC
ระหว่าง VCC และ DATA คุณต้องมีตัวต้านทาน 4.7K ก็เพียงพอแล้วถ้าคุณมีตัวต้านทานที่ DS18B20. ตัวแรก
DS18B20 อีกเครื่องหนึ่งขนานกัน
วัดความยาวตามความต้องการของคุณ ประสานโซ่เข้าด้วยกันฉันยึดหมุดด้วยท่อหด
สำหรับการทดสอบ คุณต้องเชื่อมต่อ DATA กับ D3 และ VCC กับ VCC (3.3V) และ GND กับ GND
สำหรับตัวเลือกการนอนหลับลึก คุณต้องแนบสะพานเชื่อมระหว่าง RST และ D0 (GPIO16)
ตอนนี้ไม่ควรใส่โซ่ลงในท่ออลูมิเนียม ทำการทดสอบก่อน!
ขั้นตอนที่ 6: รหัส DS18B20 Nodemcu ESP8266
สำหรับรหัสคุณสามารถใช้ที่เก็บ GITHUB ของฉัน:
github.com/Landixus/multipleDS18B20WeeWX
นอกจากนี้ ไฟล์ ino ต้องการการแทรกจากคุณ: ที่อยู่ IP ของเซิร์ฟเวอร์ weewx หรือ URL และเส้นทางที่คุณใส่ไฟล์ php ตรวจสอบให้แน่ใจว่าพื้นที่นั้นสามารถเขียนได้ ฉันเลือก public_html dir เพราะเป็นโฮมเซิร์ฟเวอร์
หากคุณต้องการโคลนที่เก็บ git และติดตั้ง git บนเซิร์ฟเวอร์ของคุณ คุณสามารถโคลนด้วยคำสั่ง git clone
ตอนนี้เราจำเป็นต้องทำบางสิ่งที่ใช้งานได้ทั้งหมดบนเซิร์ฟเวอร์ weewx ของเรา
คุณต้องสร้างเส้นทางไปยังการตั้งค่าของคุณใน
/home/weewx/public_html
สร้างโฟลเดอร์ "data" ในโฟลเดอร์ data สร้าง ds18b20.txt เช่น nano ds18b20.txt txt ควรเป็น emtpy ทำให้สามารถเขียนได้ด้วย chmod -R 777 ds18b20.txt (คุณไม่เคยทำสิ่งนี้บนเซิร์ฟเวอร์ที่เข้าถึงอินเทอร์เน็ตได้!) ในโฟลเดอร์ /home/weewx/public_html คุณใส่ ground.php ของตัวแทน github ของฉัน เคล็ดลับคือไฟล์ INO ส่งค่าไปที่ ground.php และ ground.php เขียนข้อมูลใน ds18b20.txt ต่อไปเราต้องเพิ่มบริการใน weewx ใส่ ds18b20.py ในโฟลเดอร์ /home/weewx/bin/ ผู้ใช้
เปิด weewx.conf ของคุณในโฟลเดอร์ /home/weewx
การสำรองข้อมูลก่อนแก้ไขไฟล์นี้เป็นเรื่องที่ดีเสมอ!
ลงไปที่บรรทัด:
[เครื่องยนต์]
#จัดกลุ่มตามประเภทและลำดับบริการภายในแต่ละกลุ่ม
# กำหนดลำดับที่จะเรียกใช้บริการ
prep_services = weewx.engine. StdTimeSynch, data_services = user.pond. PondService, user.bme.bme, user.ds18b20.ds18b20 เพิ่มอินไลน์หลังเครื่องหมายจุลภาค
"user.ds18b20.ds18b20" ควรมีลักษณะเหมือนบรรทัดบน^^
รีสตาร์ท weewx ด้วย:
sudo /etc/init.d/weewx stop
sudo /etc/init.d/weewx start
ด้วยคำสั่ง tail -f /var/log/syslog คุณสามารถดูข้อผิดพลาดใน logfile หรือค้นหาผลลัพธ์ที่สำเร็จ ds18b20: ค่าที่พบของ Give your server บางนาทีในการสร้าง ใน weewx.conf ของฉันทุกๆ 5 นาที ใส่. หากคุณมีข้อความแสดงข้อผิดพลาด ให้ตรวจสอบเส้นทางของคุณ หากคุณมีค่าคุณสามารถไปแสดงบนหน้า: open
skin.conf in /home/weewx/skins/Standard ไปที่:
# อันนี้น่าจะเฉพาะสถานีของฉัน!
เพิ่ม
ดินTemp1 = DS18B201
อุณหภูมิดิน2 = DS18B202
ดินTemp3 = DS18B203
บันทึกไฟล์และเปิดในโฟลเดอร์เดียวกัน index.html.tmpl มองหาบรรทัด:
#ถ้า $day.extraTemp.. …
#จบถ้า
หลังจาก #end แรก หากคุณพบว่าใส่ GroundSensor Sensor ด้วย:
^^ ขออภัย ไม่สามารถใส่สิ่งนี้เป็นข้อความ:(บันทึกไฟล์และออก ไม่จำเป็นต้องรีสตาร์ท weewx ตอนนี้คุณต้องป้อน NODEMCU ESP8266 ด้วยไฟล์ Arduino
อย่าลืมตั้งค่า wifi และที่อยู่ในไฟล์ หลังจากโหลดแล้ว ให้ตรวจสอบเอาต์พุตแบบอนุกรมเพื่อหาข้อผิดพลาด
หลังจากช่วงเวลาสั้นๆ คุณจะเห็นค่าบนเว็บไซต์ weewx ของคุณ
ขั้นตอนที่ 7: เซ็นเซอร์วัดความสำเร็จและการแก้ไขปัญหา
หากคุณมีงานทั้งหมดและเห็นค่าแล้วให้ออกไปข้างนอกแล้ววางท่ออลูมิเนียมลงดิน
วิธีที่ดีคือทากาวร้อนที่ด้านหนึ่งของท่อแล้วกดท่อเข้าด้วยกัน คุณจะได้ท๊อปที่สวยงามเพื่อให้ลงพื้นได้ง่ายขึ้น
วางท่อของคุณลงบนพื้นก่อน คุณสามารถทุบให้นุ่มด้วยแผ่นไม้ได้
หากท่อลึกเพียงพอ คุณสามารถใส่โซ่ ds18b20 และสายไฟในกล่องกันน้ำได้
ตรวจสอบให้แน่ใจว่า wifi ของคุณทำงานที่นี่!
หากคุณไม่รู้ว่าเซ็นเซอร์ใดลึกแค่ไหน มีความเป็นไปได้ 2 อย่าง
ฉันทดสอบเฟสใส่ 1 ds18b20 ระหว่างนิ้วของคุณ อุณหภูมิจะสูงขึ้นสำหรับอันนี้
เมื่อท่ออยู่ในพื้นดินแล้ว Normaly คือค่าสูงสุดที่ลึกที่สุด
ขั้นตอนที่ 8: เสร็จสิ้น
แค่ตอนจบ
โพสต์คำถามของคุณและแสดงอุณหภูมิพื้นของคุณในความคิดเห็น!
สำหรับความช่วยเหลือเพิ่มเติม เข้าร่วม weewx google Groups บน:
groups.google.com/forum/#!forum/weewx-user