RPi Weatherstation พร้อมเว็บไซต์ที่ตอบสนอง: 5 ขั้นตอน
RPi Weatherstation พร้อมเว็บไซต์ที่ตอบสนอง: 5 ขั้นตอน
Anonim
RPi Weatherstation พร้อมเว็บไซต์ที่ตอบสนอง
RPi Weatherstation พร้อมเว็บไซต์ที่ตอบสนอง
RPi Weatherstation พร้อมเว็บไซต์ที่ตอบสนอง
RPi Weatherstation พร้อมเว็บไซต์ที่ตอบสนอง

สำหรับโครงการของโรงเรียน เราต้องสร้างอุปกรณ์ 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

เชื่อมต่อทุกอย่าง: การตั้งค่า Pi
เชื่อมต่อทุกอย่าง: การตั้งค่า 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 ไม่จำเป็นต้องอยู่

อย่างที่คุณเห็น ฉันเพิ่มซิลิโคนที่ขอบเพื่อให้กันน้ำได้ ฉันยังเจาะรูบางช่องในภาชนะด้านบนเพื่อรับอากาศบริสุทธิ์

ฉันหวังว่าคุณจะชอบคำแนะนำของฉันเกี่ยวกับวิธีสร้างสถานีตรวจอากาศ มันอาจจะดูหยาบๆ หน่อยเพราะเพิ่งเคยเขียนคู่มือแบบนี้เป็นครั้งแรก แต่ฉันหวังว่าคุณจะชอบมัน:)

แนะนำ: