Mục lục:
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-23 15:15
Đố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
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
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ã
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
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:
Trạm thời tiết NaTaLia: Trạm thời tiết sử dụng năng lượng mặt trời Arduino Đã thực hiện đúng cách: 8 bước (có hình ảnh)
Trạm thời tiết NaTaLia: Trạm thời tiết sử dụng năng lượng mặt trời Arduino Đã hoàn thành đúng cách: Sau 1 năm hoạt động thành công trên 2 địa điểm khác nhau, tôi đang chia sẻ kế hoạch dự án trạm thời tiết sử dụng năng lượng mặt trời của mình và giải thích cách nó phát triển thành một hệ thống thực sự có thể tồn tại trong thời gian dài thời kỳ từ năng lượng mặt trời. Nếu bạn theo dõi
Trạm thời tiết ESP8266 hiển thị dữ liệu trên trang web: 7 bước
Trạm thời tiết ESP8266 hiển thị dữ liệu trên trang web: Lưu ý: Các phần của hướng dẫn này có thể có ở định dạng video trên Kênh YouTube của tôi - Tech Tribe. Trong hướng dẫn này, tôi sẽ chỉ cách tạo trạm thời tiết gửi trực tiếp dữ liệu đến trang web của bạn . Do đó, bạn sẽ cần miền của riêng mình (Ví dụ:
Nến thời tiết - Xem nhanh thời tiết và nhiệt độ: 8 bước
Nến thời tiết - Xem nhanh thời tiết và nhiệt độ: Sử dụng ngọn nến kỳ diệu này, bạn có thể cho biết nhiệt độ hiện tại và điều kiện bên ngoài ngay lập tức
Vòi rảnh tay hoặc vòi có bàn đạp hoặc vòi tiết kiệm nước: 5 bước
Vòi rảnh tay hoặc vòi có bàn đạp hoặc vòi tiết kiệm nước: Đây là một phương pháp đơn giản và rẻ để chuyển vòi thoát nước thành vòi rảnh tay (hợp vệ sinh). rửa cả hai tay cùng một lúc và tiết kiệm nước
Acurite 5 trong 1 Trạm thời tiết sử dụng Raspberry Pi và Weewx (các trạm thời tiết khác tương thích): 5 bước (có Hình ảnh)
Trạm thời tiết Acurite 5 trong 1 Sử dụng Raspberry Pi và Weewx (các Trạm thời tiết khác Tương thích): Khi tôi mua trạm thời tiết Acurite 5 trong 1, tôi muốn có thể kiểm tra thời tiết tại nhà của mình khi tôi đi vắng. Khi tôi về nhà và thiết lập nó, tôi nhận ra rằng tôi phải có màn hình kết nối với máy tính hoặc mua trung tâm thông minh của họ,