İçindekiler:
- Gereçler
- Adım 1: Problem Çözme Olarak Kodlama
- Adım 2: Kodlama: Hava Durumu Verilerini Alma
- Adım 3: Kodlama: Bu Verileri Kullanma
- Adım 4: Kodlama: RPi.GPIO ve LED Diyotları Kullanma
- Adım 5: Kodlama: LED Parlaklığını Alma
- Adım 6: Kodlama: Son Adımlar
- Adım 7: İnşa Etme ve Kablolama
- 8. Adım: Gösteri ve Sonuç
Video: Raspberry PI LED Hava İstasyonu: 8 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
Bir Raspberry PI Hava Durumu LED İstasyonu oluşturduk. Bir şehrin ne kadar sıcak ve soğuk olduğunu ledleri yakıp, kısarak kullanıcıya bildirir. Ayrıca yazdıkları şehirde yağmur yağıp yağmadığını onlara söylemeye de yol açmıştır.
Michael Andrews ve Tio Marello tarafından düzenlendi.
Gereçler
Aletler
- Havya
- Dremel
- Testere
Malzemeler
- Raspberry Pi 3 B+ ~40 Dolar ~ 30 Dolar
- Dişi-Erkek Jumper telleri ~7 Dolar
- 3 Mavi ve 2 Kırmızı LED Diyot ~ 11 Dolar
- 100 Ohm Direnç ~ 13 Dolar
- 4 x 4 x 1/4 Ahşap Kalas ~ 5 Dolar
- Lehim ~ 10 Dolar
- Bakır Tel ~ 5 Dolar
Adım 1: Problem Çözme Olarak Kodlama
Kodlama problem çözmektir
Peki, projemizde sorunumuz ne? Bizim sorunumuz hava durumu verilerini almak ve ardından bu verileri LED'lerimize kapalı mı yoksa açık mı olduğunu söylemek için kullanmak. Dolayısıyla bu, sorunumuzu üç alana bölüyor.
1. Hava Durumu Verilerini Alma
2. Bu Verileri Kullanmak
3. LED'leri Kullanma
Ancak, bu proje için kullandığımız dil olan Python ve üzerinde çalıştığı donanım olan Python, bu hedeflere ulaşmak için bize kolay bir yol sağlıyor.
Öyleyse, ilk problemle başlayalım, hava durumu verilerini alalım.
Adım 2: Kodlama: Hava Durumu Verilerini Alma
Python tek başına hava durumu verilerini alamaz. Hava durumu verilerini almak için harici bir hizmetin yanı sıra iki aracı içe aktarmamız gerekiyor. Bunu yapmak için üç araç kullanıyoruz.
1. İstekler, web kazıma işlemine izin veren bir python modülü
2. Json, JSON dosya biçimini kullanmamıza izin veren bir python modülü
3. Bize hava durumu verilerini verebilecek bir web sitesi olan OpenWeather
Bu yüzden python betiğimizin en üstüne bu kodu yazarak iki modülü getiriyoruz.
içe aktarma istekleri
json'u içe aktar
Ancak bu araçları kullanmadan önce Openweather'ı kullanmamız gerekiyor. Bunun için sitelerinde bir hesap oluşturmamız ve bir API anahtarı almamız gerekiyor. Web sitelerindeki talimatları izleyin ve hizmetlerini kullanmamıza izin verecek bir dizi harf ve sayı alacaksınız. Nasıl?
openweather_api_key = "260a23f27f5324ef2ae763c779c32d7e" #Bizim API Anahtarımız (Gerçek Değil)
base_call = "https://api.openweathermap.org/data/2.5/weather?q=" #OpenWeather Çağrı #Burada kullanıcının şehrini metin biçiminde alıyoruz print("Bir şehir yazın!") city_name = input () #Burada request.get'e ekleyeceğimiz adresi bir araya getirdik. Hava durumu verilerini almak için full_call = base_call+city_name+"&appid="+openweather_api_key #Son olarak request.get'i adresimizle birlikte çağırıyoruz, sonra onu bir json dosyasına dönüştürüyoruz Response = request.get(full_call) WeatherData = Response.json() #JSON dosyaları, bu sözdizimini kullanarak erişebileceğimiz farklı değişkenler içerir #Burada, kullanıcının WeatherID = WeatherData olarak yazdığı şehrin hava durumu kimliğini ve Kelvin cinsinden sıcaklığını alırız ["hava"][0]["kimlik"] City_TemperatureK = WeatherData["main"]["temp"]
Burada bize hava durumu verilerimizi alan koda sahibiz. request.get biçimindeki istekler, bir web sitesi adresini alır ve bize o web sitesinden bir dosya verir. OpenWeather bize hava durumu verilerini json biçiminde vermek için arayabileceğimiz bir adres verir. İsteklere eklediğimiz bir adres oluşturuyoruz ve bir json dosyası geri alıyoruz. Daha sonra iki değişken oluşturup bunları kullanıcının bulunduğu şehrin sıcaklığına ve hava durumuna göre atadık.
Şimdi, bu kodla iki değişkenimiz var. Kelvin'de hava durumu kimliği ve sıcaklığımız var
Adım 3: Kodlama: Bu Verileri Kullanma
Artık bu iki değişkene sahip olduğumuza göre, bunları LED'lerimizde kullanmak üzere hazırlamamız gerekiyor. Bu açıdan, bunun için herhangi bir modül içe aktarmamız gerekmiyor.
İlk olarak, kelvin'i Fahrenheit'e çeviriyoruz.
Bunu, bu sözdizimi ile bir değişken oluşturarak yapıyoruz.
Şehir_SıcaklığıF = (Şehir_SıcaklığıK - 273)*1.8 + 32
bu, Kelvin'den Fahrenheit'e dönüştürür (ki bu gerçekten K -> C -> F'den dönüştürülür)
Sıradaki hava durumu kimliğimiz. WeatherID, Openweather'ın sağladığı ve bize bir şehrin hava koşulları hakkında bilgi veren bir kimliktir.
openweathermap.org/weather-conditions İşte bunların bir listesi.
700 sayısının altındaki her şeyin bir çeşit yağış olduğunu fark ettik, bu yüzden yağmur yağıp yağmadığını görmek için kodun 700'ün altında olup olmadığını kontrol ettik.
def CheckRain(IdCode): IdCode < 700 ise: True döndürürse: False döndürür
Bununla, Raspberry PI pinlerimiz ve LED Diyotlarımızla kullanıma hazır iki değişkenimiz var.
Adım 4: Kodlama: RPi. GPIO ve LED Diyotları Kullanma
RaspberryPi, bu durumda LED Diyotlar olan bir dizi elektrikli bileşenle iletişim kurmak için kullanabileceğimiz bir dizi erkek pin ile birlikte gelir; Arduino ve sistemine benzer. Ancak Raspberry PI, Arduino gibi bir mikro denetleyicinin aksine genel amaçlı bir bilgisayardır. Bu yüzden onları kullanmak için biraz daha çalışmamız gerekiyor. Bu, Raspberry Pi'deki pinleri ayarlamaktan ibarettir. Bunu bu kodu kullanarak yapıyoruz.
RPi. GPIO'yu GPIO olarak içe aktar #Kullanabilmemiz için modülü içe aktarıyoruz
#PinsGPIO.setmode(GPIO. BCM) GPIO.setwarnings(Yanlış) ayarla
#LED'lerin takılı olduğu pinler. Oluşturursanız bunlar farklı olabilir, bu nedenle karşılaştırdığınızdan ve gerektiğinde değiştirdiğinizden emin olun.
Extreme_Hot_LED_PIN = 26 Hot_LED_PIN = 16
Extreme_Cold_LED_PIN = 5
Cold_LED_PIN = 6
Rain_LED_PIN = 23
#.setup komutunu kullanarak her pini inceliyoruz, numarasını giriyor ve çıkış pini olarak ayarlıyoruz
GPIO.setup(Rain_LED_PIN, GPIO. OUT)GPIO.setup(Extreme_Cold_LED_PIN, GPIO. OUT) GPIO.setup(Cold_LED_PIN, GPIO. OUT) GPIO.setup(Hot_LED_PIN, GPIO. OUT)GPIO_setup_PIO.
Ancak bu kod led ile sadece iki durum yani açık ve kapalı kullanmamıza izin verir. Ancak, ışıkları kısabilmek için buna ihtiyacımız var. Bunu yapmak için Darbe Genişlik Modülasyonu kullanıyoruz.
Darbe Genişliği Modülasyonunu Kullanma
Darbe Genişliği Modülasyonu, dijital bir pin kullanarak analog bir sinyal vermemizi sağlar. Esasen, sinyal kaynağını yüksek bir oranda açar ve kapatır, bu da ortalama olarak belirli bir voltaja eşittir. RPi. GPIO, bazı ekstra kodlarla da olsa bunu kullanmamıza izin veriyor.
#Bir kanal numarası alan GPIO. PWM komutunu kullanarak dört pinli nesne oluşturuyoruz
#İkinci sayı, saniyede güncelleme sayısıdır
ExtremeHotLED = GPIO. PWM(Extreme_Hot_LED_PIN, 100)HotLED = GPIO. PWM(Hot_LED_PIN, 100)
ExtremeColdLED = GPIO. PWM(Extreme_Cold_LED_PIN, 100)
ColdLED = GPIO. PWM(Cold_LED_PIN, 100)
Bir sonraki adım için, bu pinleri nasıl güncellediğimizi bilmeniz gerekecek.
Komutu kullanarak pinleri güncelliyoruz
ExtremeColdLED.start(x)ColdLED.start(x)
ExtremeHotLED.start(x)
HotLED.start(x)
bu durumda x, ne kadar darbe atacağını belirleyen görev döngüsü olacaktır. 0-100 arasında değişir, bu yüzden bir sonraki kodumuzu bu gerçeğe dayandırmalıyız.
Adım 5: Kodlama: LED Parlaklığını Alma
Dört farklı ledimiz olduğu için nasıl olduğuna bağlı olarak onları yakmak istiyoruz. soğuk veya sıcak kullanıcının şehrindedir. Led için dört aşamaya karar verdik.
#İşlevler
def getmiddleleftledintensity(TemperatureinF): #Left Denklem: y=-(50/20)x + 175 #Right Denklem: y = (50/20)x - 75 return -(50/20)*TemperatureinF + 175
def getmiddlerightledintensity(TemperatureinF):
#Sol Denklem: y=-(50/20)x + 175 #Sağ Denklem: y = (50/20)x - 75 dönüş (50/20)*TemperatureinF - 75
def getextremeleftledintensity(TemperatureinF):
#LeftEquation: y = -(100/30)x + 200 #RightEquation: y = (100/30)x - (400/3)
dönüş -(100/30)*TemperatureinF + 200
def getextremerightledintensity(TemperatureinF):
# LeftEquation: y = -(100/30)x + 200 # RightEquation: y = (100/30)x - (400/3)
dönüş (100/30)*TemperatureinF - (400/3)
#LED Işıkları Ayarlama
def GetLEDBrightness(temp):
eğer sıcaklık <= 0: aşırı soğuk = 100 soğuk = 100 sıcak = 0 aşırı soğuk = 0
print("Aşırı soğuk led:" + str(aşırı soğuk)
print("Soğuk led:" + str(soğuk)) print("Aşırı sıcak led" + str(aşırı sıcak)) print("Sıcak led:" + str(soğuk))
ExtremeColdLED.start(aşırı soğuk)
ColdLED.start (soğuk)
ExtremeHotLED.start(aşırı ateşli)
HotLED.start(hotled) elif temp >= 100: extremecoldled = 0 coldled = 0 hotled = 100 aşırıhotled = 100
print("Aşırı soğuk led:" + str(aşırı soğuk)
print("Soğuk led:" + str(soğuk)) print("Aşırı sıcak led" + str(aşırı sıcak)) print("Sıcak led:" + str(soğuk))
ExtremeColdLED.start(aşırı soğuk)
ColdLED.start (soğuk)
ExtremeHotLED.start (aşırı ateşli)
HotLED.start(hotled) elif 0 < temp <= 30: extremecoldled = getextremeleftledintensity(temp) - 100 coldled = 100 hotled = 0 extremehotled = 0
print("Aşırı soğuk led:" + str(aşırı soğuk)
print("Soğuk led:" + str(soğuk)) print("Aşırı sıcak led" + str(aşırı sıcak)) print("Sıcak led:" + str(soğuk))
ExtremeColdLED.start(aşırı soğuk)
ColdLED.start (soğuk)
ExtremeHotLED.start (aşırı ateşli)
HotLED.start(hotled) elif 100 > temp >= 70: extremecoldled = 0 coldled = 0 hotled = 100 extremehotled = getextremerightledintensity(temp) - 100
print("Aşırı soğuk led:" + str(aşırı soğuk)
print("Soğuk led:" + str(soğuk)) print("Aşırı sıcak led" + str(aşırı sıcak)) print("Sıcak led:" + str(soğuk))
ExtremeColdLED.start(aşırı soğuk)
ColdLED.start (soğuk)
ExtremeHotLED.start(aşırı ateşli)
HotLED.start(hotled) elif 30 < temp < 50: extremecoldled = 0 coldled = getmiddleleftledintensity(temp) hotled = 100 - coldled extremehotled = 0
print("Aşırı soğuk led:" + str(aşırı soğuk)
print("Soğuk led:" + str(soğuk)) print("Aşırı sıcak led" + str(aşırı sıcak)) print("Sıcak led:" + str(soğuk))
ExtremeColdLED.start(aşırı soğuk)
ColdLED.start (soğuk)
ExtremeHotLED.start(aşırı ateşli)
HotLED.start(hotled) elif 50 < temp < 70: hotled = getmiddlerightledintensity(temp) extremehotled = 0
coldled = 100 - hotled
aşırı soğuk = 0
print("Aşırı soğuk led:" + str(aşırı soğuk)
print("Soğuk led:" + str(soğuk)) print("Aşırı sıcak led" + str(aşırı sıcak)) print("Sıcak led:" + str(soğuk))
ExtremeColdLED.start(aşırı soğuk)
ColdLED.start (soğuk)
ExtremeHotLED.start(aşırı ateşli)
HotLED.start(hotled) elif temp == 50: extremecoldled = 0 coldled = 50 hotled = 50 aşırıhotled = 0
print("Aşırı soğuk led:" + str(aşırı soğuk)
print("Soğuk led:" + str(soğuk)) print("Aşırı sıcak led" + str(aşırı sıcak)) print("Sıcak led:" + str(soğuk))
ExtremeColdLED.start(aşırı soğuk)
ColdLED.start (soğuk)
ExtremeHotLED.start(aşırı ateşli)
HotLED.start(hotled)
Pekala, bu kod bölümü gerçekten uzun. Açıklaması da oldukça zor. Esasen, yukarıdaki kod, Fahrenheit cinsinden sıcaklığa bakar ve bir dizi aralıkta olup olmadığını belirler. Aralıklara göre her led için bir sayı ve parlaklığını verir ve start() komutunu çağırarak parlaklığı ayarlar. Hızlı açıklama bu. Yeterliyse bir sonraki adıma geçmenizi tavsiye ederim, ancak uzun ve sıkıcı açıklamayı görmek istiyorsanız okumaya devam edin.
Programladığımızda, bir sıcaklıktan bir değer almanın en kolay yolunun matematiksel bir fonksiyon şeklinde olduğuna karar verdik. Bu nedenle, sıcaklığımız ve led parlaklığımız arasındaki ilişkiyi temsil etmek için GeoGebra'da bir grafik oluşturduk; 100'ün üzerine çıkmasının nedeni, fazlalığın ikinci led'e gitmesidir. Ancak, tüm bu noktaları tek bir işleve eşlemek için tek bir işlev alma sorunuyla karşılaştık. Bir parabol kullanabileceğimizi düşündük, ancak bir dizi if ifadesi kullanmaya karar verdik. Özünde, bu kodun tamamı parçalı bir işlevdir.
Üstteki fonksiyonlar, ilgili doğru denklemleridir. Grafikte sıcaklığın nerede olduğunu belirledikten sonra o fonksiyondan geçirip parlaklığını alıp ledlere geçiriyoruz.
Adım 6: Kodlama: Son Adımlar
Son olarak, bu ifadeyi sonuna ekliyoruz.
denemek:
while(True): GetLEDBrightness(City_TemperatureF) GetRainLED(WeatherID) time.sleep(10) KeyboardInterrupt hariç: çıkış()
Try ve istisna ifadeleri, bir klavye kısayolu kullanarak koddan çıkmamıza izin verir; her iki durumda da, kodu yeniden başlatmak için Raspberry Pi'yi kapatmamız gerekecekti. Sonra sonsuza kadar çalışan bir süre döngümüz var. LED'leri güncelliyoruz, ayrıca yağmur LED'ini güncelliyoruz. On saniye duraklıyoruz; OpenWeather, veri için dakikada yalnızca 60 çağrıya izin verir ve 10 saniye çok sayıda güncellemedir.
Ve bununla kodumuz bitti. Bitmiş kod aşağıdadır.
RaspberryPIWeatherStation.py
ithalat talepleri |
importRPi. GPIOasGPIO |
importjson |
ithalat zamanı |
700'den az #Openweather idCodes'un tümü yağışlıdır |
defCheckRain(IdCode): |
ifIdCode<700: |
dönüşTrue |
Başka: |
dönüşYanlış |
defgetmiddleleftledintensity(TemperatureinF): |
#Sol Denklem: y=-(50/20)x + 175 |
#Doğru Denklem: y = (50/20)x - 75 |
dönüş-(50/20)*TemperatureinF+175 |
defgetmiddlerightledintensity(TemperatureinF): |
#Sol Denklem: y=-(50/20)x + 175 |
#Doğru Denklem: y = (50/20)x - 75 |
dönüş (50/20)*SıcaklıkF-75 |
defgetextremeleftledintensity(TemperatureinF): |
#LeftDenklem: y = -(100/30)x + 200 |
#RightEquation: y = (100/30)x - (400/3) |
dönüş-(100/30)*SıcaklıkinF+200 |
defgetextremerightledintensity(TemperatureinF): |
# LeftEquation: y = -(100/30)x + 200 |
# RightEquation: y = (100/30)x - (400/3) |
dönüş (100/30)*TemperatureinF- (400/3) |
#GPIO Kurulumu |
GPIO.setmode(GPIO. BCM) |
GPIO.setwarnings(Yanlış) |
#Pinler |
Extreme_Hot_LED_PIN=26 |
Hot_LED_PIN=16 |
Extreme_Cold_LED_PIN=5 |
Cold_LED_PIN=6 |
Rain_LED_PIN=23 |
#Pin Kurulumu |
GPIO.setup(Rain_LED_PIN, GPIO. OUT) |
GPIO.setup(Extreme_Cold_LED_PIN, GPIO. OUT) |
GPIO.setup(Cold_LED_PIN, GPIO. OUT) |
GPIO.setup(Hot_LED_PIN, GPIO. OUT) |
GPIO.setup(Extreme_Hot_LED_PIN, GPIO. OUT) |
ExtremeHotLED=GPIO. PWM(Extreme_Hot_LED_PIN, 100) |
HotLED=GPIO. PWM(Hot_LED_PIN, 100) |
ExtremeColdLED=GPIO. PWM(Extreme_Cold_LED_PIN, 100) |
ColdLED=GPIO. PWM(Cold_LED_PIN, 100) |
defGetLEDBrightness(temp): |
iftemp<=0: |
aşırı soğuk = 100 |
soğumuş=100 |
sıcak = 0 |
aşırı sıcak = 0 |
print("Aşırı soğuk led:"+str(aşırı soğuk) |
print("Soğuk led:"+str(soğuk)) |
print("Aşırı sıcak led"+str(aşırı ısınmış)) |
print("Sıcak led:"+str(hotled)) |
ExtremeColdLED.start(aşırı soğuk) |
ColdLED.start (soğuk) |
ExtremeHotLED.start(aşırı ateşli) |
HotLED.start(hotled) |
eliftemp>=100: |
aşırı soğuk = 0 |
soğuk = 0 |
kızgın=100 |
aşırı sıcak=100 |
print("Aşırı soğuk led:"+str(aşırı soğuk) |
print("Soğuk led:"+str(soğuk)) |
print("Aşırı sıcak led"+str(aşırı ısınmış)) |
print("Sıcak led:"+str(hotled)) |
ExtremeColdLED.start(aşırı soğuk) |
ColdLED.start (soğuk) |
ExtremeHotLED.start (aşırı ateşli) |
HotLED.start(hotled) |
elif0<temp<=30: |
extremecoldled=getextremeleftledintensity(temp) -100 |
soğumuş=100 |
sıcak = 0 |
aşırı sıcak = 0 |
print("Aşırı soğuk led:"+str(aşırı soğuk) |
print("Soğuk led:"+str(soğuk)) |
print("Aşırı sıcak led"+str(aşırı ısınmış)) |
print("Sıcak led:"+str(hotled)) |
ExtremeColdLED.start(aşırı soğuk) |
ColdLED.start (soğuk) |
ExtremeHotLED.start(aşırı ateşli) |
HotLED.start(hotled) |
elif100>temp>=70: |
aşırı soğuk = 0 |
soğuk = 0 |
kızgın=100 |
extremehotled=getextremerightledintensity(temp) -100 |
print("Aşırı soğuk led:"+str(aşırı soğuk) |
print("Soğuk led:"+str(soğuk)) |
print("Aşırı sıcak led"+str(aşırı ısınmış)) |
print("Sıcak led:"+str(hotled)) |
ExtremeColdLED.start(aşırı soğuk) |
ColdLED.start (soğuk) |
ExtremeHotLED.start(aşırı ateşli) |
HotLED.start(hotled) |
elif30<sıcaklık<50: |
aşırı soğuk = 0 |
coldled=getmiddleleftledintensity(temp) |
hotled=100-soğutulmuş |
aşırı sıcak = 0 |
print("Aşırı soğuk led:"+str(aşırı soğuk) |
print("Soğuk led:"+str(soğuk)) |
print("Aşırı sıcak led"+str(aşırı ısınmış)) |
print("Sıcak led:"+str(hotled)) |
ExtremeColdLED.start(aşırı soğuk) |
ColdLED.start (soğuk) |
ExtremeHotLED.start(aşırı ateşli) |
HotLED.start(hotled) |
elif50<sıcaklık<70: |
hotled=getmiddlerightledintensity(temp) |
aşırı sıcak = 0 |
coldled=100-hotled |
aşırı soğuk = 0 |
print("Aşırı soğuk led:"+str(aşırı soğuk) |
print("Soğuk led:"+str(soğuk)) |
print("Aşırı sıcak led"+str(aşırı ısınmış)) |
print("Sıcak led:"+str(hotled)) |
ExtremeColdLED.start(aşırı soğuk) |
ColdLED.start (soğuk) |
ExtremeHotLED.start(aşırı ateşli) |
HotLED.start(hotled) |
eliftemp==50: |
aşırı soğuk = 0 |
soğumuş=50 |
kızgın=50 |
aşırı sıcak = 0 |
print("Aşırı soğuk led:"+str(aşırı soğuk) |
print("Soğuk led:"+str(soğuk)) |
print("Aşırı sıcak led"+str(aşırı ısınmış)) |
print("Sıcak led:"+str(hotled)) |
ExtremeColdLED.start(aşırı soğuk) |
ColdLED.start (soğuk) |
ExtremeHotLED.start (aşırı ateşli) |
HotLED.start(hotled) |
defGetRainLED(idCode): |
ifCheckRain(idCode): |
GPIO.output(Rain_LED_PIN, GPIO. HIGH) |
Başka: |
GPIO.output(Rain_LED_PIN, GPIO. LOW) |
#Api bilgileri: API anahtarını oepnweather API anahtarınızla değiştirin |
openweather_api_key="460a23f27ff324ef9ae743c7e9c32d7e" |
base_call="https://api.openweathermap.org/data/2.5/weather?q=" |
print("Bir şehir giriniz!") |
city_name=input() |
full_call=base_call+city_name+"&appid="+openweather_api_key |
#Hava Durumu Verilerini Alma |
Response=requests.get(full_call) |
WeatherData=Response.json() |
WeatherID=WeatherData["hava"][0]["id"] |
City_TemperatureK=Hava Verileri["ana"]["temp"] |
City_TemperatureF= (City_TemperatureK-273)*1.8+32#Fahrenhayt'a Dönüştür |
#LED/GPIO Öğeleri |
print("K:"+str(Şehir_SıcaklıkK)) |
print("F:"+str(City_SıcaklıkF)) |
yazdır(Hava Durumu Kimliği) |
denemek: |
süre(Doğru): |
GetLEDBrightness(City_TemperatureF) |
GetRainLED(Hava Durumu Kimliği) |
zaman.uyku(10) |
hariçKeyboardInterrupt: |
çıkış yapmak() |
GitHub tarafından ❤ ile barındırılan rawRaspberryPIWeatherStation.py'yi görüntüleyin
Adım 7: İnşa Etme ve Kablolama
Vay! Tüm bu kodlamalardan sonra binaya ulaşıyoruz ki bu çok daha kolay. Korona evde kal emirleri nedeniyle okulda olmasını beklediğimiz araçların çoğuna ulaşamadık. Yani, bu kısım amaçladığımızdan biraz daha basit. Özelliklerin kendileri de esnektir. Önce bir tahta kalas üzerine bir dikdörtgen çizdik. Spesifik boyut gerçekten çok önemli değil, çünkü sadece led'leri ve elektroniği koymak için bir platform görevi görüyor.
Daha sonra tahta parçamızda beş adet 1/8'lik delikler açtık.
Daha sonra elektroniğimiz için platform olarak kullanmak üzere dikdörtgeni tahtadan kesiyoruz.
(Bu, başladığımız zamandı; daha büyük bir testere bulduk!)
Daha sonra ledin anot ve katot pinlerini deliklere itiyoruz; ledler, ampulleri dışarı çıkmalı, üstüne uzanmalıdır; Hangi bacağın daha uzun ve daha kısa olduğunu takip edin. Daha sonra telleri birlikte lehimlemeye başladık. Önce dirençleri LED'in anot bacağına (uzun bacak) lehimliyoruz.
Daha sonra LED'lerin katot ayaklarını toprak olarak kullanacağımız tek bir bakır tele lehimliyoruz. Bu gibi görünmelidir.
Bunu yaptıktan sonra dişi-erkek jumper kabloların erkek uçlarını her bir direncin uç uçlarına ve bakır topraklama teline lehimliyoruz. Bunu yaptıktan sonra kabloları ahududu PI GPIO pinlerine takmaya başlayabiliriz. İşte bir diyagram! Ancak, pinlerin daha önce değinilen koddaki pinler olduğunu unutmayın.
Hepsini bağladıktan sonra, şimdi tek yapmanız gereken Python dosyasını ahududu Pi'ye almak ve terminali açmak. "python3 RaspberryPIWeatherStation.py" dosyasını çalıştırın ve ardından gösterildiği gibi yapın.
8. Adım: Gösteri ve Sonuç
Baştan sona okuduğunuz için teşekkürler! Python betiğini aşağıya ekleyeceğim! Ekleyebileceğimiz şeyler olsaydı, muhtemelen…
1. Farklı girdi türleri için destek (şehirler, coğrafi noktalar vb.)
2. Daha fazla hava durumu bilgisi için destek
3. Bilgileri göstermek için küçük bir ekran ekleyin
Düşüncelerinizi bize bildirin! Bu inşa etmek için eğlenceli bir projeydi. Python kullanarak istekler ve internet belgelerini alma hakkında çok şey öğrendik ve ayrıca lehimleme hakkında çok şey öğrendik.
Önerilen:
Raspberry Pi İnternet Hava Durumu İstasyonu: 5 Adım (Resimlerle)
Raspberry Pi İnternet Hava Durumu İstasyonu: *** Güncelleme ***Bu Eğitim Tablosu güncelliğini yitirdi. Bu Talimatta kullanılan hava durumu verileri için hava durumu hizmetleri artık çalışmıyor. ANCAK, temelde aynı şeyi yapan alternatif bir proje var (sadece daha iyisi - bu Instructa
Raspberry Pi SÜPER Hava İstasyonu İnşa Edin: 8 Adım (Resimlerle)
Ahududu Pi SÜPER Hava İstasyonu İnşa Edin: Kabul edelim, biz insanlar hava hakkında çok konuşuruz ⛅️. Ortalama bir insan günde dört kez, ortalama 8 dakika 21 saniye boyunca hava durumu hakkında konuşur. Matematiği yapın ve bu, hayatınızın yaklaşık 10 ayını gevezelik ederek geçireceğiniz anlamına gelir
NaTaLia Hava İstasyonu: Arduino Güneş Enerjili Hava İstasyonu Doğru Şekilde Yapıldı: 8 Adım (Resimlerle)
NaTaLia Hava İstasyonu: Arduino Güneş Enerjili Hava İstasyonu Doğru Şekilde Yapıldı: 2 farklı lokasyonda 1 yıllık başarılı operasyonun ardından, güneş enerjili meteoroloji istasyonu proje planlarımı paylaşıyor ve gerçekten uzun süre hayatta kalabilen bir sisteme nasıl evrildiğini açıklıyorum. güneş enerjisinden dönemler. Takip ederseniz
DIY Hava İstasyonu ve WiFi Sensör İstasyonu: 7 Adım (Resimlerle)
DIY Hava İstasyonu ve WiFi Sensör İstasyonu: Bu projede size bir WiFi sensör istasyonu ile birlikte bir hava istasyonunun nasıl oluşturulacağını göstereceğim. Sensör istasyonu, yerel sıcaklık ve nem verilerini ölçer ve WiFi aracılığıyla hava durumu istasyonuna gönderir. Hava durumu istasyonu daha sonra t görüntüler
Raspberry Pi ve Weewx Kullanan Acurite 5'i 1 Arada Hava İstasyonu (Diğer Hava İstasyonları Uyumludur): 5 Adım (Resimlerle)
Acurite 5'i 1 Arada Hava İstasyonu Raspberry Pi ve Weewx Kullanarak (diğer Hava İstasyonları Uyumludur): Acurite 5'i 1 arada meteoroloji istasyonunu satın aldığımda, evde yokken hava durumunu kontrol edebilmek istedim. Eve gelip kurduğumda, ekranı bir bilgisayara bağlamam ya da akıllı hub'larını satın almam gerektiğini fark ettim,