İçindekiler:

Duyarlı Web Sitesi ile RPi Weatherstation: 5 Adım
Duyarlı Web Sitesi ile RPi Weatherstation: 5 Adım

Video: Duyarlı Web Sitesi ile RPi Weatherstation: 5 Adım

Video: Duyarlı Web Sitesi ile RPi Weatherstation: 5 Adım
Video: Her Şeyi Açıklıyorum..! 2024, Temmuz
Anonim
Duyarlı Web Sitesi ile RPi Weatherstation
Duyarlı Web Sitesi ile RPi Weatherstation
Duyarlı Web Sitesi ile RPi Weatherstation
Duyarlı Web Sitesi ile RPi Weatherstation

Bir okul projesi için, toplanan bilgileri güzel bir şekilde görselleştirmek için bir web sitesine sahip bir IoT cihazı yapmamız gerekiyordu. Duyarlı web sitesi için Raspberry Pi 3 çalıştıran bir Flask tarafından desteklenen bir hava durumu istasyonu, veritabanım için MySQL (MariaDB) yapmayı seçtim. ve tüm sensörlerimle bilgi toplamak için bir python betiği. Baştan sona tamamlamam yaklaşık 2 haftamı aldı.

İlerlememizi DIY topluluğunun geri kalanıyla paylaşmak için bir talimat vermeye teşvik edildik, işte burada!

Adım 1: Parça Seçimi, Araçlar ve Malzemeler

Önce bir hava durumu istasyonu için ne tür sensörlerin gerekli olduğunu bulmam gerekiyordu. Aşağıdaki verilerin tümünü ölçmek istediğime karar verdim:

  • Sıcaklık
  • Hava basıncı
  • Nem
  • Rüzgar hızı
  • UV Endeksi

İşte kullandığım tüm Araçlar, Malzemeler ve Parçalar

Parçalar:

  • Sıcaklık ve nem okumaları için DHT22/AM2302. (15 EUR)
  • Barometrik Basınç ve sıcaklık için Adafruit BMP280. (12 EUR)
  • UV İndeksini ölçmek için Adafruit SI1145. (10 EUR)
  • Rüzgar hızını ölçmek için Adafruit Analog Anemometre (50 EUR)
  • Analog sinyalleri dijitale dönüştürmek için bir MCP3008.
  • AM2302 cihazım için pull-up olarak 10kOhm Direnç.
  • Anemometreyi 'güçlendirmek' için 9V Adaptör
  • Raspberry Pi için 5V Adaptör
  • Raspberry Pi 3 (Herhangi bir Pi yeterli olacaktır)

Malzemeler:

Her şeyi saklamak ve yağmur geçirmez hale getirmek için plastik bir kap

Aletler:

  • Havya ve Kalay
  • multimetre
  • silikon
  • biraz bant

Yani toplamda tüm sensörler bana 85 Euro'ya mal oldu, bu oldukça yüksek ama gerçekten uygun bir rüzgar hızı ölçer eklemek istedim, bu yüzden buna değdiğini düşünüyorum.

Her şeyi alabileceğiniz mağazaların yer aldığı daha detaylı bir listeyi aşağıdaki pdf'de bulabilirsiniz:)

2. Adım: Donanımımızı Bağlama

Donanımımızı Bağlama
Donanımımızı Bağlama
Donanımımızı Bağlama
Donanımımızı Bağlama

Elbette Raspberry Pi'mize sensörlerimizi bağlamamız gerekecek. Her şeyi düzgün bir şekilde bağlamak için takip edebileceğiniz fritzing şemasını yukarıda görebilirsiniz.

Şemada, anemometremiz için güç kaynağı olarak 9V pil kullanıldığını görebilirsiniz, bu en iyi şekilde yalnızca test için kullanılır, çünkü çok uzun sürmez, 9V pili herhangi bir 7-12V güç kaynağı için değiştirebilirsiniz. Seç.

SI1145 ve BMP280 sensörlerimizin her ikisi de, çalışması en kolay olan ve daha az kabloya ihtiyaç duyan I2C protokolü kullanılarak kontrol edilecektir.

Şematikteki anemometre, anemometre ile hemen hemen aynı kablolara sahip olduğu ve fritzing şemamı koymak için gerçek bir anemometre bulamadığım için burada bir LDR olarak gösterilmiştir:)

Adım 3: Her Şeyi Bağlama: Pi'yi Ayarlama

Her Şeyi Bağlamak: Pi'yi Ayarlamak
Her Şeyi Bağlamak: Pi'yi Ayarlamak

Öncelikle internete bağlı olduğumuzdan emin olmalıyız.

Bunu terminalde yapmak için aşağıdaki komutu çalıştırarak wpa_supplicant dosyanıza gidebilirsiniz:sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Dosyaya şunu ekleyebilirsiniz:

ağ={ssid= "Your_Wifi_SSID" psk="Your_Wifi_Password" key_mgmt=WPA-PSK

}

Ayrıca gelecekte daha kolay erişim için IP adresinizi statik olarak ayarlamayı da seçebilirsiniz. Bunu yapmak için şu komutu çalıştırarak dhcpcd.conf dosyasına gitmeniz gerekir:sudo nano /etc/dhcpcd.conf

Bunu dosyaya ekleyin:

arayüz wlan0static ip_adresi=192.168.0.100/24

Ardından, Pi'mizde kurulu olan paketlerin tamamen güncellendiğinden emin olacağız:

sudo apt-get güncelleme && sudo apt-get yükseltme

Bu biraz zaman alabilir, bu yüzden endişelenme

Raspi config. içindeki I2C ve SPI protokolünü etkinleştirmeniz gerekecek. Bunu şu komutu çalıştırarak yapabilirsiniz:

sudo raspi yapılandırması

Ardından arabirim seçeneklerine gidin ve hem I2C hem de SPI'yi etkinleştirin

Öncelikle projenizi koymak istediğiniz bir dizin oluşturmanız gerekir (biz ona 'hava durumu' adını vereceğiz):

cd ~mkdir meteoroloji istasyonucd meteoroloji istasyonu

Ardından python3 sanal ortamımızı kurduk:

python3 -m pip kurulumu --upgrade pip kurulum araçları tekerlek virtualenvpython3 -m venv --system-site-packages envsource env/bin/activatepython -m pip kurulumu mysql-connector-python Flask flask-mysql mysql-connector-python passlib mysql-connector -python-rf

Ardından, her şeyin düzgün çalışması için gerekli olan bazı diğer paketleri kurmamız gerekecek:

sudo apt kurulum -y python3-venv python3-pip python3-mysqldb mariadb-sunucu uwsgi nginx uwsgi-plugin-python3

Şimdi veritabanımızı oluşturacağız:

Yine de veritabanımızı kurmamız gerekiyor. Bunu, 'sql' klasöründe bulunan code/sql dosyasını şu şekilde çalıştırarak yapabilirsiniz:

sudo mariadb < sql/db_init.sql

Sql sorgusu ihtiyacımız olan tabloları ve ayrıca birkaç kullanıcının veritabanımızı biraz daha güvenli hale getirmesini sağlayacaktır.

Bu aynı zamanda, henüz gerçek bir veri toplanmadığında web sitemizin her şeyi düzgün bir şekilde gösterdiğinden emin olmak için bazı örnek geçmiş verilerini veritabanımıza koyacaktır.

Adafruit_GPIO ve MyPyDHT'yi kurmak için birkaç şey daha yapmanız gerekecek. Önce kullanım klasörünüze dönün ve ardından:

git klon https://github.com/adafruit/Adafruit_Python_GPIO.gitcd Adafruit_Python_GPIO sudo python3 setup.py kurulumu

cd..git klonu -- özyinelemeli https://github.com/freedom27/MyPyDHTsudo python3 setup.py kurulumu

Adım 4: Yazılım / Kod

Yazılım / Kod
Yazılım / Kod
Yazılım / Kod
Yazılım / Kod
Yazılım / Kod
Yazılım / Kod

Aşağıdakileri içeren hava durumu istasyonu için arka uç kurmamız gerekiyor:

- Sensör okumalarımı ve diğer bazı küçük şeyleri saklamak için bir mariadb veritabanı - Web sitesini çalıştırmak için bir flask servisi. - Tüm sensörleri okuyan Python dosyasını çalıştıran başka bir servis. Yukarıda benim çok basit veritabanı kurulumumu görebilirsiniz. Kullanıcılar tablosu gereksiz, ama ben bir login sistemi istediğim için (her ne kadar tüm kullanıcılar için tüm veriler aynı olsa da) veritabanıma dahil etmeye karar verdim.

Devam edip projemin kodunu Github'dan proje klasörünüze kopyalayabilirsiniz. Kullanıcı klasörünüze gidin ve şunu çalıştırın:git klon https://github.com/BertVanhaeke/Weatherstation/ tempmv -v temp/* weatherstation/

Ardından, meteoroloji istasyonundaki conf klasörüne ve klasördeki tüm dosyalara gidin.

'KULLANICI ADI' tüm oluşumlarını kullanıcı adınızla değiştirin

Ayrıca.service dosyalarının ikisini de systemd'ye kopyalamanız ve şu şekilde test etmeniz gerekir:

sudo cp conf/weatherstation-*.service /etc/systemd/system/sudo systemctl arka plan programı-reloadsudo systemctl weatherstation-flask.service'i başlat sudo systemctl weatherstation-sensor.service'i başlat

sudo systemctl durumu hava durumu istasyonu-*

Daha sonra nginx yapılandırmasını düzenlememiz gerekiyor.

sudo cp conf/nginx /etc/nginx/sites-available/weatherstationsudo rm /etc/nginx/sites-etkin/defaultsudo ln -s /etc/nginx/sites-available/weatherstation /etc/nginx/sites-enabled/weatherstationsudo systemctl nginx.servicesudo systemctl durumunu yeniden başlatın nginx.service

Her şey yolunda giderse, bunu çalıştırabilmeli ve terminalde bir miktar html yazdırabilmelisiniz:

wget -qO - yerel ana bilgisayar

Artık her şey yolunda gidiyor olmalı. Raspberry Pi'nizin başlangıçta belirlediğimiz IP adresine gezinebilir ve bir giriş ekranı ile karşılaşabilirsiniz.

Adım 5: Muhafaza

Kuşatma
Kuşatma
Kuşatma
Kuşatma
Kuşatma
Kuşatma

Artık her şey çalıştığına göre, her şeyi bir şeye koymamız gerekiyor.

Şeffaf kapaklı basit bir plastik kutu seçtim. Anemometre bunun üzerine monte edildi ve DHT22 ve BMP280 sensörlerini içeren ikincil küçük bir kap da öyle.

Bu sensörler ayrı bir kap içine monte edilmiştir çünkü açık havada (üzerine yağmur yağmadan) olmaları gerekir, ancak ahududu pi'nin olması gerekmez.

Gördüğünüz gibi su geçirmez hale getirmek için kenarlarına biraz silikon ekledim. Ayrıca temiz hava alması için üst kapta delikler açtım.

Bir meteoroloji istasyonunun nasıl kurulacağına dair rehberimi umarım beğenmişsinizdir, ilk defa böyle bir rehber yazdığım için biraz kaba olabilir, ama yine de umarım beğenmişsinizdir:)

Önerilen: