RPi Weatherstation Dengan Laman Web Responsif: 5 Langkah
RPi Weatherstation Dengan Laman Web Responsif: 5 Langkah
Anonim
RPi Weatherstation Dengan Laman Web Responsif
RPi Weatherstation Dengan Laman Web Responsif
RPi Weatherstation Dengan Laman Web Responsif
RPi Weatherstation Dengan Laman Web Responsif

Untuk projek sekolah, kami harus membuat peranti IoT dengan laman web untuk memvisualisasikan maklumat yang dikumpulkan dengan cara yang baik. Saya memilih untuk membuat weatherstation yang dikuasakan oleh Raspberry Pi 3 menjalankan Flask untuk laman web responsif, MySQL (MariaDB) untuk pangkalan data saya dan skrip python untuk mengumpulkan maklumat dengan semua sensor saya. Saya mengambil masa sekitar 2 minggu dari awal hingga akhir hingga selesai.

Kami didorong untuk membuat petunjuk untuk berkongsi kemajuan kami dengan seluruh komuniti DIY, jadi ini dia!

Langkah 1: Pemilihan Bahagian, Alat dan Bahan

Mula-mula saya perlu mengetahui jenis sensor yang penting untuk stesen cuaca. Saya memutuskan saya mahu mengukur semua data berikut:

  • Suhu
  • Tekanan udara
  • Kelembapan
  • Kelajuan angin
  • Indeks UV

Berikut adalah semua Alat, Bahan dan Bahagian yang saya gunakan

Bahagian:

  • DHT22 / AM2302 untuk bacaan suhu dan kelembapan. (15 EUR)
  • Adafruit BMP280 untuk Tekanan dan suhu Barometrik. (12 EUR)
  • Adafruit SI1145 untuk mengukur Indeks UV. (10 EUR)
  • Anafometer Analog Adafruit untuk mengukur kelajuan angin (50 EUR)
  • MCP3008 untuk menukar isyarat analog ke digital.
  • Resistor 10kOhm sebagai penarik untuk AM2302 saya.
  • Adaptor 9V untuk 'menghidupkan' Anemometer
  • Penyesuai 5V untuk Raspberry Pi
  • Raspberry Pi 3 (Mana-mana Pi mesti mencukupi)

Bahan:

Bekas plastik untuk menyimpan segala barang dan menjadikannya tahan hujan

Alat:

  • Besi Pateri dan Timah
  • Multimeter
  • Silikon
  • Sebilangan pita

Oleh itu, secara keseluruhan, semua sensor berharga saya kira-kira 85 Euro, yang cukup curam tetapi saya benar-benar mahu memasukkan meter kelajuan angin yang betul jadi saya fikir ia sangat berbaloi.

Anda boleh mendapatkan senarai yang lebih terperinci dengan kedai di mana anda boleh membeli semuanya di dalam pdf di bawah:)

Langkah 2: Menyambungkan Perkakasan Kami

Menyambungkan Perkakasan Kami
Menyambungkan Perkakasan Kami
Menyambungkan Perkakasan Kami
Menyambungkan Perkakasan Kami

Sudah tentu kita perlu menghubungkan sensor kita ke Raspberry Pi kita. Di atas anda dapat melihat skema fritzing yang boleh anda ikuti untuk menghubungkan semuanya dengan betul.

Pada skema anda dapat melihat bateri 9V digunakan sebagai sumber kuasa untuk anemometer kami, ini paling baik digunakan untuk pengujian hanya kerana ia tidak akan bertahan terlalu lama, anda boleh mengganti bateri 9V untuk mana-mana sumber kuasa 7-12V yang anda pilih.

Sensor SI1145 dan BMP280 kami akan dikendalikan menggunakan protokol I2C kerana ini adalah yang paling mudah untuk digunakan dan memerlukan lebih sedikit wayar.

Anemometer pada skematik ditunjukkan sebagai LDR di sini kerana ia mempunyai pendawaian yang hampir sama dengan anemometer dan saya tidak dapat mencari anemometer sebenar untuk meletakkan skema saya yang sangat menarik:)

Langkah 3: Menghubungkan Semuanya: Menyiapkan Pi

Menghubungkan Semuanya: Menyiapkan Pi
Menghubungkan Semuanya: Menyiapkan Pi

Pertama sekali, kita mesti memastikan kita berhubung dengan internet.

Untuk melakukan ini di terminal, anda boleh pergi ke fail wpa_supplicant anda dengan menjalankan perintah berikut: sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Dalam fail anda boleh menambahkan ini:

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

}

Anda juga boleh memilih untuk menetapkan alamat IP anda ke statik untuk akses yang lebih mudah pada masa akan datang. Untuk melakukan ini, anda perlu pergi ke fail dhcpcd.conf dengan menjalankan perintah ini: sudo nano /etc/dhcpcd.conf

Tambahkan ini dalam fail:

antara muka wlan0static ip_address = 192.168.0.100 / 24

Kemudian kami akan memastikan pakej yang sudah dipasang pada Pi kami dikemas kini sepenuhnya:

sudo apt-get update && sudo apt-get upgrade

Ini mungkin memerlukan sedikit masa, jadi jangan risau

Anda perlu mengaktifkan protokol I2C dan SPI di dalam konfigurasi raspi. Anda boleh melakukannya dengan menjalankan perintah ini:

sudo raspi-config

Kemudian pergi ke pilihan antara muka, dan aktifkan kedua-duanya, I2C dan SPI

Mula-mula anda perlu membuat direktori yang anda mahu masukkan projek anda (kami akan menamakannya 'weatherstation'):

cd ~ mkdir weatherstationcd weatherstation

Kemudian kami menyediakan persekitaran maya python3 kami:

python3 -m pip install --upgrade pip setuptools wheel virtualenvpython3 -m venv --system-site-package envsource env / bin / activatepython -m pip install mysql-connector-python Flask flask-mysql mysql-connector-python passlib mysql-penyambung -python-rf

Kemudian kita perlu memasang beberapa pakej lain yang diperlukan untuk menjadikan segala sesuatu berfungsi dengan betul:

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

Sekarang kami akan membuat pangkalan data kami:

Kami masih perlu menyediakan pangkalan data kami. Anda boleh melakukannya dengan menjalankan fail kod / sql yang terletak di folder 'sql' seperti ini:

sudo mariadb <sql / db_init.sql

Pertanyaan sql akan membuat jadual yang kita perlukan dan juga membuat sebilangan pengguna menjadikan pangkalan data kita sedikit lebih selamat.

Ini juga akan memasukkan beberapa data sejarah sampel ke dalam pangkalan data kami untuk memastikan laman web kami memaparkan semuanya dengan betul apabila belum ada data sebenar yang dikumpulkan.

Untuk memasang Adafruit_GPIO dan MyPyDHT, anda perlu melakukan beberapa perkara lagi. Mula-mula kembali ke folder penggunaan anda dan kemudian:

git clone https://github.com/adafruit/Adafruit_Python_GPIO.gitcd Adafruit_Python_GPIO sudo python3 setup.py pasang

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

Langkah 4: Perisian / Kod

Perisian / Kod
Perisian / Kod
Perisian / Kod
Perisian / Kod
Perisian / Kod
Perisian / Kod

Kita perlu membuat back-end untuk weatherstation, yang merangkumi:

- Pangkalan data mariadb untuk menyimpan bacaan sensor saya dan beberapa perkara kecil lain - Perkhidmatan termos untuk menjalankan laman web. - Perkhidmatan lain yang menjalankan fail Python yang membaca semua sensor. Di atas anda dapat melihat penyediaan pangkalan data saya yang sangat mudah. Jadual pengguna adalah tidak perlu, tetapi kerana saya mahukan sistem log masuk kerana saya (walaupun semua data adalah sama untuk semua pengguna) saya memutuskan untuk memasukkannya ke dalam pangkalan data saya.

Anda boleh meneruskan dan mengklon kod projek saya dari Github ke folder projek anda. Pergi ke folder pengguna anda dan jalankan: git clone https://github.com/BertVanhaeke/Weatherstation/ tempmv -v temp / * weatherstation /

Kemudian arahkan ke folder conf di weatherstation dan semua fail di folder tersebut.

Tukar semua kejadian 'USERNAME' ke nama pengguna anda

Anda juga perlu menyalin kedua-dua fail perkhidmatan ke systemd dan mengujinya seperti ini:

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

sudo systemctl status weatherstation- *

Kita kemudian perlu mengedit konfigurasi 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 mulakan semula nginx.servicesudo systemctl status nginx.service

Sekiranya semuanya berjalan lancar, anda seharusnya dapat menjalankannya dan mencetak beberapa html di terminal:

wget -qO - localhost

Semuanya mesti berfungsi dengan baik sekarang. Anda boleh melayari alamat IP raspberry Pi yang kami tetapkan pada awalnya dan disambut dengan skrin log masuk.

Langkah 5: Kandang

Pagar
Pagar
Pagar
Pagar
Pagar
Pagar

Sekarang semuanya berfungsi, kita perlu memasukkan keseluruhannya ke dalam sesuatu.

Saya memilih kotak plastik sederhana dengan penutup lutsinar. Anemometer dipasang di atasnya, begitu juga bekas kecil sekunder yang mengandungi sensor DHT22 dan BMP280.

Sensor ini dipasang di dalam bekas yang berasingan kerana mereka harus berada di udara terbuka (tanpa hujan), tetapi raspberry pi tidak semestinya.

Seperti yang anda lihat, saya menambahkan beberapa silikon di sekitar tepi untuk menjadikannya kalis air. Saya juga menggerudi beberapa lubang di bekas atas untuk mendapatkan udara segar di dalamnya.

Saya harap anda menikmati panduan saya mengenai cara membina jalan weatherstation, ini mungkin sedikit kasar kerana ini pertama kali saya menulis panduan seperti ini, tetapi saya harap anda tetap menyukainya:)

Disyorkan: