Thời tiết RPi với trang web đáp ứng: 5 bước
Thời tiết RPi với trang web đáp ứng: 5 bước
Anonim
Thời tiết RPi với trang web đáp ứng
Thời tiết RPi với trang web đáp ứng
Thời tiết RPi với trang web đáp ứng
Thời tiết RPi với trang web đáp ứng

Đối với một dự án trường học, chúng tôi phải tạo một thiết bị IoT với một trang web để hiển thị thông tin thu thập được một cách tốt đẹp. Tôi đã chọn tạo thời tiết được hỗ trợ bởi Raspberry Pi 3 đang chạy Flask cho trang web đáp ứng, MySQL (MariaDB) cho cơ sở dữ liệu của tôi và một tập lệnh python để thu thập thông tin bằng tất cả các cảm biến của tôi. Tôi mất khoảng 2 tuần từ đầu đến cuối để hoàn thành.

Chúng tôi được khuyến khích tạo ra một hướng dẫn để chia sẻ sự tiến bộ của chúng tôi với phần còn lại của cộng đồng DIY, vì vậy nó đây!

Bước 1: Lựa chọn bộ phận, công cụ và vật liệu

Trước tiên, tôi cần tìm ra loại cảm biến nào cần thiết cho một trạm thời tiết. Tôi quyết định muốn đo tất cả các dữ liệu sau:

  • Nhiệt độ
  • Áp suất không khí
  • Độ ẩm
  • Tốc độ gió
  • Chỉ số UV

Đây là tất cả các Công cụ, Vật liệu và Bộ phận mà tôi đã sử dụng

Các bộ phận:

  • DHT22 / AM2302 để đọc nhiệt độ và độ ẩm. (15 EUR)
  • Adafruit BMP280 cho Áp suất khí quyển và nhiệt độ. (12 EUR)
  • Adafruit SI1145 để đo Chỉ số UV. (10 EUR)
  • Adafruit Analog Anemometer để đo tốc độ gió (50 EUR)
  • MCP3008 để chuyển đổi tín hiệu tương tự sang kỹ thuật số.
  • Điện trở 10kOhm như kéo lên cho AM2302 của tôi.
  • Bộ chuyển đổi 9V để 'cấp nguồn' cho Máy đo gió
  • Bộ điều hợp 5V cho Raspberry Pi
  • Raspberry Pi 3 (Bất kỳ Pi nào cũng được)

Vật liệu:

Một hộp nhựa để đựng đồ đạc và chống mưa

Công cụ:

  • Sắt hàn và thiếc
  • Đồng hồ vạn năng
  • Silicone
  • Một số băng

Vì vậy, tổng cộng tất cả các cảm biến tiêu tốn của tôi khoảng 85 Euro, khá là dốc nhưng tôi thực sự muốn bao gồm một đồng hồ đo tốc độ gió phù hợp nên tôi nghĩ nó rất xứng đáng.

Bạn có thể tìm thấy danh sách chi tiết hơn với các cửa hàng bạn có thể mua mọi thứ tại bản pdf bên dưới:)

Bước 2: Kết nối phần cứng của chúng tôi

Kết nối phần cứng của chúng tôi
Kết nối phần cứng của chúng tôi
Kết nối phần cứng của chúng tôi
Kết nối phần cứng của chúng tôi

Tất nhiên, chúng ta sẽ cần kết nối các cảm biến của mình với Raspberry Pi. Về cơ bản, bạn có thể thấy sơ đồ phức tạp mà bạn có thể làm theo để kết nối mọi thứ đúng cách.

Trên giản đồ, bạn có thể thấy pin 9V được sử dụng làm nguồn điện cho máy đo gió của chúng tôi, pin này chỉ được sử dụng đúng cách tốt nhất để thử nghiệm vì nó sẽ không kéo dài quá lâu, bạn có thể thay pin 9V cho bất kỳ nguồn điện 7-12V nào bạn nhé. lựa chọn.

Cảm biến SI1145 và BMP280 của chúng tôi đều sẽ được điều khiển bằng giao thức I2C vì đây là cảm biến dễ làm việc nhất và cần ít dây hơn.

Máy đo gió trên giản đồ được hiển thị dưới dạng LDR ở đây vì nó có hệ thống dây điện khá giống với máy đo gió và tôi không thể tìm thấy một máy đo gió thực sự để đặt trên giản đồ đang nóng nảy của mình:)

Bước 3: Kết nối Everthing: Thiết lập Pi

Kết nối Everthing: Thiết lập Pi
Kết nối Everthing: Thiết lập Pi

Trước hết, chúng ta phải đảm bảo rằng chúng ta đã kết nối với internet.

Để thực hiện việc này trong terminal, bạn có thể truy cập tệp wpa_supplicant của mình bằng cách chạy lệnh sau: sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Trong tệp, bạn có thể thêm cái này:

network = {ssid = "Your_Wifi_SSID" psk = "Your_Wifi_Password" key_mgmt = WPA-PSK

}

Bạn cũng có thể chọn đặt địa chỉ IP của mình thành tĩnh để truy cập dễ dàng hơn trong tương lai. Để thực hiện việc này, bạn cần truy cập tệp dhcpcd.conf bằng cách chạy lệnh sau: sudo nano /etc/dhcpcd.conf

Thêm cái này vào tệp:

giao diện wlan0static ip_address = 192.168.0.100/24

Sau đó, chúng tôi sẽ đảm bảo các gói đã được cài đặt trên Pi của chúng tôi được cập nhật đầy đủ:

sudo apt-get update && sudo apt-get nâng cấp

Quá trình này có thể mất một chút thời gian, vì vậy đừng lo lắng

Bạn sẽ cần kích hoạt giao thức I2C và SPI bên trong raspi config. Bạn có thể thực hiện điều này bằng cách chạy lệnh sau:

sudo raspi-config

Sau đó, chuyển đến tùy chọn giao diện và bật cả hai, I2C và SPI

Trước tiên, bạn cần tạo một thư mục mà bạn muốn đưa dự án của mình vào (chúng tôi sẽ đặt tên là 'thời tiết'):

cd ~ mkdir weatherstationcd thời tiết

Sau đó, chúng tôi thiết lập môi trường ảo python3 của mình:

python3 -m pip install - nâng cấp pip setuptools wheel virtualenvpython3 -m venv --system-site-package envsource env / bin / activepython -m pip install mysql-connector-python Flask flask-mysql mysql-connector-python passlib mysql-connector -python-rf

Sau đó, chúng tôi sẽ cần cài đặt một số gói khác cần thiết để làm cho mọi thứ hoạt động chính xác:

sudo apt install -y python3-venv python3-pip python3-mysqldb mariadb-server uwsgi nginx uwsgi-plugin-python3

Bây giờ chúng ta sẽ tạo cơ sở dữ liệu của mình:

Tuy nhiên, chúng tôi vẫn cần thiết lập cơ sở dữ liệu của mình. Bạn có thể thực hiện việc này bằng cách chạy tệp mã / sql nằm trong thư mục 'sql' như sau:

sudo mariadb <sql / db_init.sql

Truy vấn sql sẽ tạo các bảng chúng ta cần và cũng tạo ra một vài người dùng để làm cho cơ sở dữ liệu của chúng ta an toàn hơn một chút.

Điều này cũng sẽ đưa một số dữ liệu lịch sử mẫu vào cơ sở dữ liệu của chúng tôi để đảm bảo trang web của chúng tôi hiển thị mọi thứ chính xác khi chưa có dữ liệu thực nào được thu thập.

Để cài đặt Adafruit_GPIO và MyPyDHT, bạn sẽ cần thực hiện thêm một số thao tác nữa, trước tiên hãy quay lại thư mục sử dụng của bạn và sau đó:

git clone https://github.com/adafruit/Adafruit_Python_GPIO.gitcd Adafruit_Python_GPIO sudo python3 setup.py cài đặt

cd..git clone --recursive https://github.com/freedom27/MyPyDHTsudo python3 setup.py install

Bước 4: Phần mềm / Mã

Phần mềm / Mã
Phần mềm / Mã
Phần mềm / Mã
Phần mềm / Mã
Phần mềm / Mã
Phần mềm / Mã

Chúng ta cần thiết lập back-end cho quá trình phong hóa, bao gồm:

- Một cơ sở dữ liệu mariadb để lưu trữ các bài đọc cảm biến của tôi và một số thứ nhỏ khác - Một dịch vụ bình để chạy trang web. - Một dịch vụ khác chạy tệp Python để đọc tất cả các cảm biến. không cần thiết, nhưng vì tôi muốn có một hệ thống đăng nhập vì tôi (mặc dù tất cả dữ liệu đều giống nhau cho tất cả người dùng) nên tôi quyết định đưa vào cơ sở dữ liệu của mình.

Bạn có thể tiếp tục và sao chép mã dự án của tôi từ Github vào thư mục dự án của bạn. Đi tới thư mục người dùng của bạn và chạy: git clone https://github.com/BertVanhaeke/Weatherstation/ tempmv-v temp/ * weatherstation/

Sau đó, điều hướng đến thư mục conf trong thời tiết và tất cả các tệp trong thư mục.

Thay đổi tất cả các lần xuất hiện của 'USERNAME' thành tên người dùng của bạn

Bạn cũng sẽ cần sao chép cả hai tệp.service vào systemd và kiểm tra chúng như sau:

sudo cp conf / weatherstation - *. service / etc / systemd / system / sudo systemctl daemon-reloadsudo systemctl start weatherstation-flask.servicesudo systemctl start weatherstation-sensor.service

trạng thái phong hóa sudo systemctl- *

Sau đó, chúng ta cần chỉnh sửa cấu hình nginx.

sudo cp conf / nginx / etc / nginx / sites-available / weatherstationsudo rm / etc / nginx / sites-enable / defaultsudo ln -s / etc / nginx / sites-available / weatherstation / etc / nginx / sites-enable / weatherstationsudo systemctl khởi động lại nginx.servicesudo trạng thái systemctl nginx.service

Nếu mọi thứ diễn ra tốt đẹp, bạn sẽ có thể chạy nó và lấy một số html được in ra trong terminal:

wget -qO - localhost

Bây giờ mọi thứ sẽ hoạt động tốt. Bạn có thể lướt đến địa chỉ IP của raspberry Pi mà chúng tôi đã đặt lúc đầu và được chào đón bằng màn hình đăng nhập.

Bước 5: Bao vây

Bao vây
Bao vây
Bao vây
Bao vây
Bao vây
Bao vây

Bây giờ mọi thứ đều hoạt động, chúng ta cần phải đặt toàn bộ vào một thứ gì đó.

Tôi đã chọn một hộp nhựa đơn giản có nắp đậy bộ chuyển vị, máy đo gió được gắn trên đầu và một hộp nhỏ thứ cấp chứa các cảm biến DHT22 và BMP280 cũng vậy.

Các cảm biến này được gắn bên trong một thùng chứa riêng biệt vì chúng cần ở ngoài trời (không bị mưa hắt vào), nhưng raspberry pi thì không cần như vậy.

Như bạn có thể thấy, tôi đã thêm một ít silicone xung quanh các cạnh để làm cho nó không thấm nước. Tôi cũng khoan một số lỗ trên hộp chứa phía trên để lấy không khí trong lành vào đó.

Tôi hy vọng bạn thích hướng dẫn của tôi về cách xây dựng thời tiết, nó có thể hơi khó khăn xung quanh các cạnh vì đây là lần đầu tiên tôi viết một hướng dẫn như thế này, nhưng tôi hy vọng bạn thích nó:)

Đề xuất: