İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-23 15:13
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
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
Ö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
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
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:
IFTTT ile Web Sitesi Ziyaretçi Bildirimi: 6 Adım
IFTTT ile Web Sitesi Ziyaretçi Bildirimi: Bu talimatta, birisi Web Sitenizi ziyaret ettiğinde bir Android bildirimi alacaksınız. Bunun için bu IFTTT Uygulamasının nasıl olduğunu bilmek için biraz PHP programlama dili ve Basit C Dili hakkında temel bilgiye sahip olmanız gerekir. İşler (
Raspberry Pi ile Web Sitesi/WiFi Kontrollü LED Şerit: 9 Adım (Resimlerle)
Raspberry Pi ile Web Sitesi/WiFi Kontrollü LED Şerit: Arka plan: Ben bir gencim ve robotik yarışmalarına katılmanın yanı sıra son birkaç yıldır küçük elektronik projeleri tasarlıyor ve programlıyorum. Geçenlerde masa kurulumumu güncellemeye çalışıyordum ve güzel bir eklentinin
Node.js, Express ve MongoDB ile Raspberry Pi Üzerinde Web Sitesi Nasıl Kurulur Bölüm 1: 6 Adım
Node.js, Express ve MongoDB ile Raspberry Pi'de Web Sitesi Nasıl Kurulur… Bölüm 1: node.js web uygulaması eğitimimin 1. KISIMına hoş geldiniz. Bölüm 1, node.js uygulama geliştirme için kullanılan gerekli yazılımı, bağlantı noktası yönlendirmenin nasıl kullanılacağını, Express kullanarak bir uygulamanın nasıl oluşturulacağını ve uygulamanızın nasıl çalıştırılacağını inceleyecektir. Bunun ikinci kısmı
Canlı Web Sitesi Kullanma Web Sürücüsü IO Eğitimi ve Çalışma Örnekleri: 8 Adım
Canlı Web Sitesi Kullanan Web Sürücüsü IO Eğitimi ve Çalışma Örnekleri: Canlı Bir Web Sitesi Kullanan Web Sürücüsü IO Eğitimi ve Çalışan Örnekler Son Güncelleme: 26/07/2015(Bu talimatları daha fazla ayrıntı ve örnekle güncellerken sık sık kontrol edin)Arka Plan Yakın zamanda sahip olduğum bana sunulan ilginç bir meydan okuma. ihtiyacım vardı
Google'ın Sayfa Oluşturucusu ile Bir Web Sitesi Kurmak: 6 Adım
Google'ın Sayfa Oluşturucusu ile Web Sitesi Kurma: Google Labs'ın yeni Sayfa Oluşturucusu ile bir web sitesi nasıl kurulur. (100mb'lik basit bir web sitesi nasıl ücretsiz yapılır ve bir öğleden sonra açılır.) Nasıl yapılır, form sayfasını sayfaya bağlama, diğer sayfalara bağlantı, yüklenen html dosyalarına bağlantı, resimler dahil etme, bir