สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-23 15:12
สำหรับโครงการของโรงเรียน เราต้องสร้างอุปกรณ์ IoT ที่มีเว็บไซต์สำหรับการแสดงข้อมูลที่รวบรวมมาในลักษณะที่ดี ฉันเลือกที่จะสร้างสถานีตรวจอากาศที่ขับเคลื่อนโดย Raspberry Pi 3 ที่รัน Flask สำหรับเว็บไซต์ที่ตอบสนอง, MySQL (MariaDB) สำหรับฐานข้อมูลของฉัน และสคริปต์หลามสำหรับการรวบรวมข้อมูลด้วยเซ็นเซอร์ทั้งหมดของฉัน ฉันใช้เวลาประมาณ 2 สัปดาห์ตั้งแต่ต้นจนจบจนจบ
เราได้รับการสนับสนุนให้สร้างคำสั่งเพื่อแบ่งปันความคืบหน้าของเรากับชุมชน DIY ที่เหลือ นี่แหละ!
ขั้นตอนที่ 1: การเลือกชิ้นส่วน เครื่องมือและวัสดุ
อันดับแรก ฉันต้องหาว่าเซ็นเซอร์ชนิดใดที่จำเป็นสำหรับสถานีตรวจอากาศ ฉันตัดสินใจว่าต้องการวัดข้อมูลต่อไปนี้ทั้งหมด:
- อุณหภูมิ
- ความกดอากาศ
- ความชื้น
- ความเร็วลม
- ดัชนี UV
นี่คือเครื่องมือ วัสดุ และชิ้นส่วนทั้งหมดที่ฉันใช้
อะไหล่:
- DHT22/AM2302 สำหรับการอ่านค่าอุณหภูมิและความชื้น (15 ยูโร)
- Adafruit BMP280 สำหรับความดันบรรยากาศและอุณหภูมิ (12 ยูโร)
- Adafruit SI1145 สำหรับวัดดัชนี UV (10 ยูโร)
- Adafruit Analog Anemometer สำหรับวัดความเร็วลม (50 EUR)
- MCP3008 สำหรับแปลงสัญญาณแอนะล็อกเป็นดิจิตอล
- ตัวต้านทาน 10kOhm เป็นแบบดึงขึ้นสำหรับ AM2302 ของฉัน
- อะแดปเตอร์ 9V สำหรับ 'การจ่ายไฟ' ให้กับเครื่องวัดความเร็วลม
- อะแดปเตอร์ 5V สำหรับ Raspberry Pi
- Raspberry Pi 3 (Pi ใด ๆ ก็เพียงพอแล้ว)
วัสดุ:
ภาชนะพลาสติกสำหรับเก็บทุกอย่างและกันฝน
เครื่องมือ:
- หัวแร้งและดีบุก
- มัลติมิเตอร์
- ซิลิโคน
- บางเทป
ดังนั้นโดยรวมแล้ว เซ็นเซอร์ทั้งหมดทำให้ฉันเสียค่าใช้จ่ายประมาณ 85 ยูโร ซึ่งค่อนข้างสูงชัน แต่ฉันต้องการรวมเครื่องวัดความเร็วลมที่เหมาะสมด้วยจริงๆ ดังนั้นฉันจึงคิดว่ามันคุ้มค่า
คุณสามารถหารายละเอียดเพิ่มเติมเกี่ยวกับร้านค้าที่คุณสามารถซื้อทุกอย่างได้ที่ pdf ด้านล่าง:)
ขั้นตอนที่ 2: เชื่อมต่อฮาร์ดแวร์ของเรา
แน่นอน เราจะต้องเชื่อมต่อเซ็นเซอร์ของเรากับ Raspberry Pi ด้านบน คุณจะเห็นแผนผังที่คุณสามารถทำตามเพื่อเชื่อมต่อทุกอย่างได้อย่างเหมาะสม
ในแผนผัง คุณจะเห็นว่าแบตเตอรี่ขนาด 9V ถูกใช้เป็นแหล่งพลังงานสำหรับเครื่องวัดความเร็วลมของเรา ซึ่งเหมาะที่สุดสำหรับการทดสอบเท่านั้น เนื่องจากแบตเตอรี่จะใช้งานได้ไม่นานเกินไป คุณสามารถเปลี่ยนแบตเตอรี่ 9V สำหรับแหล่งพลังงาน 7-12V ใดก็ได้ เลือก.
เซ็นเซอร์ SI1145 และ BMP280 ของเราจะควบคุมโดยใช้โปรโตคอล I2C เนื่องจากเป็นวิธีที่ง่ายที่สุดในการทำงานและต้องใช้สายไฟน้อยลง
เครื่องวัดความเร็วลมบนแผนผังแสดงเป็น LDR ที่นี่ เนื่องจากมีการเดินสายที่ค่อนข้างเหมือนกันกับเครื่องวัดความเร็วลม และฉันไม่พบเครื่องวัดความเร็วลมจริงที่จะวางบนแผนผังของฉัน:)
ขั้นตอนที่ 3: เชื่อมต่อทุกอย่าง: การตั้งค่า Pi
ก่อนอื่น เราต้องตรวจสอบให้แน่ใจว่าเราเชื่อมต่อกับอินเทอร์เน็ตแล้ว
ในการดำเนินการนี้ในเทอร์มินัล คุณสามารถไปที่ไฟล์ wpa_supplicant ของคุณโดยเรียกใช้คำสั่งต่อไปนี้:sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
ในไฟล์คุณสามารถเพิ่มสิ่งนี้:
เครือข่าย={ssid= "Your_Wifi_SSID" psk="Your_Wifi_Password" key_mgmt=WPA-PSK
}
คุณยังสามารถเลือกที่จะตั้งค่าที่อยู่ IP ของคุณให้เป็นแบบคงที่เพื่อให้เข้าถึงได้ง่ายขึ้นในอนาคต ในการดำเนินการนี้ คุณต้องไปที่ไฟล์ dhcpcd.conf โดยเรียกใช้คำสั่งนี้:sudo nano /etc/dhcpcd.conf
เพิ่มสิ่งนี้ในไฟล์:
อินเทอร์เฟซ wlan0static ip_address=192.168.0.100/24
จากนั้นเราจะตรวจสอบให้แน่ใจว่าแพ็คเกจที่ติดตั้งบน Pi ของเราได้รับการอัปเดตอย่างสมบูรณ์:
sudo apt-get update && sudo apt-get upgrade
อาจใช้เวลาสักครู่จึงไม่ต้องกังวล
คุณจะต้องเปิดใช้งานโปรโตคอล I2C และ SPI ภายใน raspi config.you สามารถทำได้โดยเรียกใช้คำสั่งนี้:
sudo raspi-config
จากนั้นไปที่ตัวเลือกการเชื่อมต่อและเปิดใช้งานทั้ง I2C และ SPI
ก่อนอื่นคุณต้องสร้างไดเร็กทอรีที่คุณต้องการใส่โครงการของคุณ (เราจะตั้งชื่อว่า 'weatherstation'):
cd ~mkdir weatherstationcd weatherstation
จากนั้นเราตั้งค่าสภาพแวดล้อมเสมือน python3 ของเรา:
python3 -m pip install -- อัพเกรด pip setuptools wheel virtualenvpython3 -m venv --system-site-packages envsource env/bin/activatepython -m pip ติดตั้ง mysql-connector-python Flask flask-mysql mysql-connector-python passlib mysql-connector -python-rf
จากนั้นเราจะต้องติดตั้งแพ็คเกจอื่น ๆ ที่จำเป็นเพื่อให้ทุกอย่างทำงานได้อย่างถูกต้อง:
sudo apt ติดตั้ง -y python3-venv python3-pip python3-mysqldb mariadb-server uwsgi nginx uwsgi-plugin-python3
ตอนนี้เรากำลังจะสร้างฐานข้อมูลของเรา:
เรายังจำเป็นต้องตั้งค่าฐานข้อมูลของเรา คุณสามารถทำได้โดยเรียกใช้ไฟล์ code/sql ที่อยู่ในโฟลเดอร์ 'sql' ดังนี้:
sudo mariadb < sql/db_init.sql
แบบสอบถาม sql จะทำให้ตารางที่เราต้องการและยังทำให้ผู้ใช้ไม่กี่คนเพื่อทำให้ฐานข้อมูลของเราปลอดภัยขึ้นอีกเล็กน้อย
นอกจากนี้ยังจะใส่ข้อมูลประวัติตัวอย่างลงในฐานข้อมูลของเราเพื่อให้แน่ใจว่าเว็บไซต์ของเราแสดงทุกอย่างอย่างถูกต้องเมื่อยังไม่มีการรวบรวมข้อมูลจริง
ในการติดตั้ง Adafruit_GPIO และ MyPyDHT คุณจะต้องทำบางสิ่งเพิ่มเติม ขั้นแรกให้กลับไปที่โฟลเดอร์การใช้งานของคุณ จากนั้น:
โคลน git https://github.com/adafruit/Adafruit_Python_GPIO.gitcd Adafruit_Python_GPIO sudo python3 setup.py ติดตั้ง
cd..git โคลน --recursive https://github.com/freedom27/MyPyDHTsudo python3 setup.py ติดตั้ง
ขั้นตอนที่ 4: ซอฟต์แวร์ / รหัส
เราจำเป็นต้องตั้งค่าแบ็คเอนด์สำหรับ Weatherstation ซึ่งรวมถึง:
- ฐานข้อมูล mariadb สำหรับจัดเก็บการอ่านเซ็นเซอร์ของฉันและสิ่งอื่น ๆ เล็กน้อย- บริการขวดสำหรับการเรียกใช้เว็บไซต์- บริการอื่นที่เรียกใช้ไฟล์ Python ซึ่งอ่านเซ็นเซอร์ทั้งหมด ด้านบนคุณสามารถดูการตั้งค่าฐานข้อมูลที่ง่ายมากของฉัน ตารางผู้ใช้คือ ไม่จำเป็น แต่เนื่องจากฉันต้องการระบบเข้าสู่ระบบเพราะฉัน (แม้ว่าข้อมูลทั้งหมดจะเหมือนกันสำหรับผู้ใช้ทั้งหมด) ฉันจึงตัดสินใจรวมไว้ในฐานข้อมูลของฉัน
คุณสามารถไปข้างหน้าและโคลนรหัสโครงการของฉันจาก Github ลงในโฟลเดอร์โครงการของคุณ ไปที่โฟลเดอร์ผู้ใช้ของคุณและเรียกใช้:git clone https://github.com/BertVanhaeke/Weatherstation/ tempmv -v temp/* weatherstation/
จากนั้นไปที่โฟลเดอร์ conf ใน weatherstation และไฟล์ทั้งหมดในโฟลเดอร์
เปลี่ยนการเกิดขึ้นทั้งหมดของ 'USERNAME' เป็นชื่อผู้ใช้ของคุณ
คุณจะต้องคัดลอกไฟล์.service ทั้งสองไฟล์ไปยัง systemd และทดสอบดังนี้:
sudo cp conf/weatherstation-*.service /etc/systemd/system/sudo systemctl daemon-reloadsudo systemctl start weatherstation-flask.servicesudo systemctl start weatherstation-sensor.service
sudo systemctl สถานะ weatherstation-*
เราต้องแก้ไขการกำหนดค่า nginx
sudo cp conf/nginx /etc/nginx/sites-available/weatherstationsudo rm /etc/nginx/sites-enabled/defaultsudo ln -s /etc/nginx/sites-available/weatherstation /etc/nginx/sites-enabled/weatherstationsudo systemctl รีสตาร์ท nginx.servicesudo สถานะ systemctl nginx.service
หากทุกอย่างเป็นไปด้วยดี คุณควรจะสามารถเรียกใช้สิ่งนี้และพิมพ์ html บางส่วนในเทอร์มินัล:
wget -qO - localhost
ทุกอย่างควรจะทำงานได้ดีในขณะนี้ คุณสามารถท่องไปยังที่อยู่ IP ของราสเบอร์รี่ Pi ของคุณที่เราตั้งไว้ในตอนเริ่มต้นและได้รับการต้อนรับด้วยหน้าจอเข้าสู่ระบบ
ขั้นตอนที่ 5: สิ่งที่แนบมา
ตอนนี้ทุกอย่างใช้งานได้แล้ว เราต้องใส่สิ่งทั้งหมดลงในบางสิ่ง
ฉันเลือกกล่องพลาสติกธรรมดาที่มีฝาปิดโปร่งใส เครื่องวัดความเร็วลมติดตั้งอยู่ด้านบน และเป็นภาชนะรองขนาดเล็กที่มีเซ็นเซอร์ DHT22 และ BMP280
เซ็นเซอร์เหล่านี้ติดตั้งอยู่ภายในภาชนะที่แยกจากกันเนื่องจากต้องอยู่ในที่โล่ง (โดยที่ไม่ต้องตากฝน) แต่ราสเบอร์รี่ pi ไม่จำเป็นต้องอยู่
อย่างที่คุณเห็น ฉันเพิ่มซิลิโคนที่ขอบเพื่อให้กันน้ำได้ ฉันยังเจาะรูบางช่องในภาชนะด้านบนเพื่อรับอากาศบริสุทธิ์
ฉันหวังว่าคุณจะชอบคำแนะนำของฉันเกี่ยวกับวิธีสร้างสถานีตรวจอากาศ มันอาจจะดูหยาบๆ หน่อยเพราะเพิ่งเคยเขียนคู่มือแบบนี้เป็นครั้งแรก แต่ฉันหวังว่าคุณจะชอบมัน:)
แนะนำ:
Tweerstationneke A.k.a. Dutch WeatherStation: 4 ขั้นตอน
Tweerstationneke A.k.a. Dutch WeatherStation: พ่อของฉันสนใจข่าวล่าสุดและข้อมูลสภาพอากาศล่าสุดอยู่เสมอ นั่นนำฉันไปสู่ของขวัญวันเกิดที่สมบูรณ์แบบเมื่อเขาอายุ 76 ปี สถานีตรวจอากาศเล็กๆ ที่ไม่หยุดนิ่งและไร้สาระ มันแค่นั่งเงียบๆ อยู่ในมุมทั้งวันและให้
วิทยุอินเทอร์เน็ต / ทิกเกอร์ / WEATHERSTATION: 5 ขั้นตอน
INTERNET RADIO / TICKER / WEATHERSTATION: นี่เป็นวิทยุอินเทอร์เน็ตที่ดีมาก แต่ยิ่งไปกว่านั้น มันคือสถานีตรวจอากาศ ตัวแสดงสัญลักษณ์ และระบบ domotica เช่นกัน และมันก็คือ: ผลงานราคาถูกมาก ดีมาก ง่ายต่อการสร้างและใช้งาน พกพาสะดวกเพราะเชื่อมต่อ wifi ได้ง่าย
Wemos D1 Mini Weatherstation (พลักแอนด์เพลย์): 4 ขั้นตอน
Wemos D1 Mini Weatherstation (Plug & Play): โปรเจ็กต์นี้เป็นเรื่องเกี่ยวกับสถานีตรวจอากาศที่ง่ายที่สุดที่เป็นไปได้โดยอิงจาก WeMos D1 Mini ฉันเลือก WeMos D1 Mini เพราะมันมีประโยชน์:1. คุณสามารถตั้งโปรแกรมและรันได้โดยไม่ต้องเชื่อมต่อโมดูลภายนอก เพียงแค่ใช้สาย USB2. คุณไม่จำเป็นต้องมีการควบคุมแรงดันไฟฟ้า
ESP8266 - 12 Weatherstation: 4 ขั้นตอน (พร้อมรูปภาพ)
ESP8266 - 12 Weatherstation: โครงงานนี้เกี่ยวกับการสร้างและทดสอบสถานีตรวจอากาศตาม ESP8266 - 12 แนวคิดนี้ใช้พลังงานต่ำพร้อมชาร์จแบตเตอรี่โดยใช้เซลล์แสงอาทิตย์ คำแนะนำนี้อ้างอิงจากระบบการชาร์จ 2 โครงการก่อนหน้าของฉันและ esp logger.BOM:P
เซ็นเซอร์อุณหภูมิ / Weatherstation: 9 ขั้นตอน (พร้อมรูปภาพ)
เซ็นเซอร์อุณหภูมิ/สถานีตรวจอากาศ: สร้างสถานีตรวจอากาศหรือตัวตรวจสอบอุณหภูมิโดยใช้เซ็นเซอร์อุณหภูมิแบบดิจิทัลที่เจ๋งมาก DS1820 ฉันใช้การตั้งค่านี้เพื่อตรวจสอบห้องเซิร์ฟเวอร์และเป็นสถานีตรวจสภาพอากาศ โปรเจ็กต์นี้ประกอบด้วย:เครือข่ายบัส Dallas 1-Wire อินเทอร์เฟซระหว่าง RS- 232 และ