İçindekiler:

Raspberry PI LED Hava İstasyonu: 8 Adım
Raspberry PI LED Hava İstasyonu: 8 Adım

Video: Raspberry PI LED Hava İstasyonu: 8 Adım

Video: Raspberry PI LED Hava İstasyonu: 8 Adım
Video: eMuderris, IOT ödev02, Raspberry Pi ile Iot Hava İstasyonu 2024, Temmuz
Anonim
Raspberry PI LED Hava İstasyonu
Raspberry PI LED Hava İstasyonu

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

  1. Havya
  2. Dremel
  3. Testere

Malzemeler

  1. Raspberry Pi 3 B+ ~40 Dolar ~ 30 Dolar
  2. Dişi-Erkek Jumper telleri ~7 Dolar
  3. 3 Mavi ve 2 Kırmızı LED Diyot ~ 11 Dolar
  4. 100 Ohm Direnç ~ 13 Dolar
  5. 4 x 4 x 1/4 Ahşap Kalas ~ 5 Dolar
  6. Lehim ~ 10 Dolar
  7. 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

Kodlama: RPi. GPIO ve LED Diyotları Kullanma
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

Kodlama: LED Parlaklığını Alma
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: