Orodha ya maudhui:

Kituo cha hali ya hewa cha Raspberry PI LED: Hatua 8
Kituo cha hali ya hewa cha Raspberry PI LED: Hatua 8

Video: Kituo cha hali ya hewa cha Raspberry PI LED: Hatua 8

Video: Kituo cha hali ya hewa cha Raspberry PI LED: Hatua 8
Video: Cheki jama alivyo paa na ndege ya kichawi utashangaa 2024, Novemba
Anonim
Kituo cha hali ya hewa cha Raspberry PI LED
Kituo cha hali ya hewa cha Raspberry PI LED

Tuliunda Kituo cha LED cha Raspberry PI Weather. Inamwambia mtumiaji jinsi jiji lilivyo moto na baridi kwa kuangazia, na kufifia, viunzi. Pia imeongoza kuwaambia ikiwa mvua inanyesha au la katika jiji waliloandika.

Iliundwa na Michael Andrews na Tio Marello.

Vifaa

Zana

  1. Chuma cha kulehemu
  2. Dremel
  3. Saw

Vifaa

  1. Raspberry Pi 3 B + ~ Dola 40 ~ 30 Dola
  2. Waya wa Jumper wa Kiume hadi wa Kiume ~ Dola 7
  3. 3 Bluu na 2 Nyekundu Diode za LED ~ Dola 11
  4. 100 Ohm Resistors ~ 13 Dola
  5. 4 x 4 x 1/4 Plank Wood ~ 5 Dola
  6. Solder ~ Dola 10
  7. Waya wa Shaba ~ Dola 5

Hatua ya 1: Kuweka alama kama Kutatua Tatizo

Usimbuaji ni utatuzi wa shida

Kwa hivyo, katika mradi wetu, shida yetu ni nini? Shida yetu ni kupata data ya hali ya hewa na kisha kutumia data hiyo kuwaambia LED zetu ikiwa wamezimwa au wamewasha. Kwa hivyo hii hugawanya shida yetu katika maeneo matatu.

1. Kupata Takwimu za Hali ya Hewa

2. Kutumia Takwimu Hizo

3. Kutumia LEDS

Walakini, lugha tuliyoitumia kwa mradi huu, Python, na vifaa vinavyoendelea, Python, inatupa njia rahisi ya kutimiza malengo haya.

Kwa hivyo, tutaanza na shida ya kwanza, kupata data ya hali ya hewa.

Hatua ya 2: Kuandika: Kupata Takwimu za Hali ya Hewa

Chatu yenyewe haiwezi kupata data ya hali ya hewa. Tunapaswa kuagiza zana mbili, pamoja na huduma ya nje, kupata data ya hali ya hewa. Ili kufanya hivyo, tunatumia zana tatu.

1. Maombi, moduli ya chatu ambayo inaruhusu utaftaji wa wavuti

2. Json, moduli ya chatu ambayo inatuwezesha kutumia fomati ya faili ya JSON

3. OpenWeather, tovuti ambayo inaweza kutupa data ya hali ya hewa

Kwa hivyo, tunaleta moduli mbili kwa kuandika nambari hii juu ya hati yetu ya chatu.

kuagiza maombi

kuagiza json

Kabla ya kutumia zana hizi, hata hivyo, tunahitaji kutumia Openweather. Kwa hiyo, tunapaswa kuunda akaunti kwenye wavuti yao na kupata ufunguo wa API. Fuata maagizo kwenye wavuti yao na utapata safu ya herufi na nambari ambazo zitaturuhusu tutumie huduma yao. Vipi?

openweather_api_key = "260a23f27f5324ef2ae763c779c32d7e" #Kifunguo chetu cha API (Sio Halisi)

base_call = "https://api.openweathermap.org/data/2.5/weather?q=" #OpenWeather Call #Hapa tunapata jiji la mtumiaji kwa njia ya kuchapisha maandishi ("Type in a city!") city_name = input () #Hapa tulikusanya anwani tutaingiza maombi.pata kupokea data ya hali ya hewa full_call = base_call + city_name + "& appid =" + openweather_api_key # Mwishowe tunaita maombi. Pata na anwani yetu, kisha tunaibadilisha kuwa faili ya json Jibu = maombi.pata (full_call) WeatherData = Response. ["hali ya hewa"] [0] ["id"] City_TemperatureK = WeatherData ["kuu"] ["temp"]

Hapa tuna nambari inayotupatia data yetu ya hali ya hewa. Maombi, kwa njia ya ombi.pata, huchukua anwani ya wavuti na hutupa faili kutoka kwa wavuti hiyo nyuma. OpenWeather inatupa anwani ya kupiga simu ili itupe data ya hali ya hewa kwa njia ya json. Tunakusanya anwani ambayo tunaingiza maombi na kurudisha faili ya json. Kisha tunaunda vigeuzi viwili na kuwapa joto na hali ya hewa ya jiji la mtumiaji.

Kwa hivyo sasa, na nambari hii, tuna vigeuzi viwili. Tuna hali ya hewa na hali ya joto huko Kelvin

Hatua ya 3: Kuandika: Kutumia Takwimu hizo

Sasa kwa kuwa tuna vigezo hivi viwili, lazima tuzitayarishe kwa matumizi ya LED zetu. Kwa hali hii, sio lazima tuingize moduli yoyote kwa hii.

Kwanza, tunabadilisha kelvin kuwa Fahrenheit.

Tunafanya hivyo kwa kuunda kutofautisha na sintaksia hii

Joto la JijiF = (Joto_JotoK - 273) * 1.8 + 32

ambayo hubadilika kutoka Kelvin kwenda Fahrenheit (ambayo inabadilika kutoka K -> C -> F)

Ifuatayo ni hali yetu ya hewa. WeatherID ni kitambulisho ambacho Openweather hutoa ambayo inatuambia juu ya hali ya hewa ya jiji.

openweathermap.org/leather-conditions Hapa kuna orodha yao.

Tuligundua kuwa kila kitu chini ya nambari 700 kilikuwa cha mvua, kwa hivyo tuliangalia tu ikiwa nambari ilikuwa chini ya 700 ili kuona ikiwa inanyesha.

def CheckRain (IdCode): ikiwa IdCode <700: rudi Kweli nyingine: rudisha Uongo

Pamoja na hayo, tuna vigeuzi vyetu viwili vilivyotayarishwa kutumiwa na pini zetu za Raspberry PI na Diode za LED.

Hatua ya 4: Kuandika: Kutumia RPi. GPIO na Diode za LED

Kuandika: Kutumia RPi. GPIO na Diode za LED
Kuandika: Kutumia RPi. GPIO na Diode za LED

RaspberryPi inakuja na seti ya pini za kiume ambazo tunaweza kutumia kuwasiliana na idadi kubwa ya vifaa vya umeme, ambavyo katika kesi hii, ni Diode za LED; ni sawa na Arduino na mfumo wake. Walakini, Raspberry PI ni kompyuta ya kusudi la jumla, tofauti na mdhibiti mdogo kama Arduino. Kwa hivyo, lazima tufanye kazi kidogo zaidi kuzitumia. Hii inajumuisha kuweka pini kwenye Raspberry Pi. Tunafanya hivyo kwa kutumia nambari hii.

kuagiza RPi. GPIO kama GPIO #Tunaingiza moduli ili tuweze kuitumia

#Weka piniGPIO.setmode (GPIO. BCM) Maonyo ya GPIO.

#Pini ambazo LED zinaingiliwa ndani. Hizi zinaweza kuwa tofauti ikiwa utaijenga, kwa hivyo hakikisha kulinganisha na kubadilisha inapobidi

Extreme_Hot_LED_PIN = 26 Moto_LED_PIN = 16

Uliokithiri_Cold_LED_PIN = 5

Baridi_LED_PIN = 6

Mvula_LED_PIN = 23

#Tunapita kila pini, kwa kutumia amri ya kuanzisha, kuweka nambari yake na kuiweka kama pini ya pato

GPIO.setup (Mvula_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.

Walakini, nambari hii ingeturuhusu tutumie majimbo mawili na iliyoongozwa, ambayo ni, kuzima na kuzima. Walakini, tunaihitaji ili kuweza kupunguza taa. Ili kufanya hivyo, tunatumia Pulse Modulation Width.

Kutumia Pulse Modulation Upana

Moduli ya Upana wa Pulse inatuwezesha kutoa ishara ya Analog kutumia pini ya dijiti. Kwa kweli, inawasha na kuzima chanzo cha ishara kwa kiwango cha juu, ambacho wastani wa voltage fulani. RPi. GPIO inaturuhusu kutumia hii, pamoja na nambari zingine za ziada.

#Tunaunda vitu vinne vya pini kwa kutumia amri ya GPIO. PWM, ambayo inachukua nambari ya kituo

# Nambari ya pili ni idadi ya mara inasasishwa kwa sekunde

ExtremeHotLED = GPIO. PWM (Extreme_Hot_LED_PIN, 100) HotLED = GPIO. PWM (Hot_LED_PIN, 100)

ExtremeColdLED = GPIO. PWM (uliokithiri_Cold_LED_PIN, 100)

ColdLED = GPIO. PWM (Baridi_LED_PIN, 100)

Kwa hatua inayofuata, itabidi ujue jinsi tunavyosasisha pini hizi.

Tunasasisha pini kwa kutumia amri

AnzaColdLED. Kuanza (x) ColdLED. Anza (x)

KuanzaKuwashwa Moto (x)

Anza HotLED. (X)

x katika kesi hii itakuwa mzunguko wa ushuru, ambao huamua ni kiasi gani hutoka. Ni kati ya 0-100, kwa hivyo tunalazimika kuweka nambari yetu inayofuata kutoka kwa ukweli huo.

Hatua ya 5: Kuandika: Kupata Mwangaza wa LED

Kuandika: Kupata Mwangaza wa LED
Kuandika: Kupata Mwangaza wa LED

Kwa sababu tuna viongozo vinne tofauti, tunataka kuwasha kulingana na jinsi. baridi au moto iko katika jiji la mtumiaji. Tuliamua kuwa na hatua nne za kuongozwa.

#Kazi

def Getmiddleleftledintensity (TemperatureinF): # Equation Equation: y = - (50/20) x + 175 # Equation Right: y = (50/20) x - 75 kurudi - (50/20) * JotoinF + 175

def getmiddlerightledintensity (JotoinF):

Mlinganyo wa kushoto: y = - (50/20) x + 175 # Usawa wa kulia: y = (50/20) x - 75 kurudi (50/20) * JotoinF - 75

def getextremeleftledintensity (JotoinF):

#LiftEquation: y = - (100/30) x + 200 #Kiwango cha Haki: y = (100/30) x - (400/3)

kurudi - (100/30) * Joto katikaF + 200

def getextremerightledintensity (JotoinF):

# KushotoKuacha: y = - (100/30) x + 200 # Swala la kulia: y = (100/30) x - (400/3)

kurudi (100/30) * Joto katika F - (400/3)

#Kuweka Taa za LED

def GetLEDBrightness (temp):

ikiwa muda

chapisha ("Baridi kali iliyoongozwa:" + str (iliyofungwa kwa miguu miwili))

chapisha ("Baridi iliyoongozwa:" + str (iliyopozwa)) chapa ("Iliyoongozwa na moto mkali" + str (iliyotiwa moto sana)) chapa ("Iliyoongozwa moto:" + str (hotled))

KuanziaColdLED. Anza (kushikiliwa na mikono miwili)

Anza ColdLED. Kuanza (baridi)

KuanzaKuwashwa Moto.kuanza (moto uliokithiri)

Kuanza (hotled) elif temp> = 100: extremecoldled = 0 coldled = 0 hotled = 100 hothotled = 100

chapisha ("Baridi kali iliyoongozwa:" + str (iliyofungwa kwa miguu miwili))

chapisha ("Baridi iliyoongozwa:" + str (iliyopozwa)) chapa ("Iliyoongozwa na moto mkali" + str (iliyotiwa moto sana)) chapa ("Iliyoongozwa moto:" + str (hotled))

AnzaColdLED. Anza (kushikiliwa na mikono miwili)

Anza ColdLED. Kuanza (baridi)

KuanzaKuwashwa Moto.kuanza (moto uliokithiri)

Kuanza (hotled) elif 0

chapisha ("Baridi kali iliyoongozwa:" + str (iliyofungwa kwa miguu miwili))

chapisha ("Baridi iliyoongozwa:" + str (iliyopozwa)) chapa ("Iliyoongozwa na moto mkali" + str (iliyotiwa moto sana)) chapa ("Iliyoongozwa moto:" + str (hotled))

KuanziaColdLED. Anza (kushikiliwa na mikono miwili)

Anza ColdLED. Kuanza (baridi)

KuanzaKuwashwa Moto.kuanza (moto uliokithiri)

Kuanza (hotled) elif 100> temp> = 70: extremecoldled = 0 coldled = 0 hotled = 100 extremehotled = kupata nguvu zaidi (temp) - 100

chapisha ("Baridi kali iliyoongozwa:" + str (iliyofungwa kwa miguu miwili))

chapisha ("Baridi iliyoongozwa:" + str (iliyopozwa)) chapa ("Iliyoongozwa na moto mkali" + str (iliyotiwa moto sana)) chapa ("Iliyoongozwa moto:" + str (hotled))

AnzaColdLED. Anza (kushikiliwa na mikono miwili)

Anza ColdLED. Kuanza (baridi)

KuanzaKuwashwa Moto.kuanza (moto uliokithiri)

Kuanza (hotled) elif 30

chapisha ("Baridi kali iliyoongozwa:" + str (iliyofungwa kwa miguu miwili))

chapisha ("Baridi iliyoongozwa:" + str (iliyopozwa)) chapa ("Iliyoongozwa na moto mkali" + str (iliyotiwa moto sana)) chapa ("Iliyoongozwa moto:" + str (hotled))

KuanziaColdLED. Anza (kushikiliwa na mikono miwili)

Anza ColdLED. Kuanza (baridi)

KuanzaKuwashwa Moto. Kuanza (moto uliokithiri)

Kuanza (hotled) elif 50 <temp <70: hotled = getmiddlerightledintensity (temp) extremehotled = 0

baridi = 100 - moto

iliyofungwa sana = 0

chapisha ("Baridi kali iliyoongozwa:" + str (iliyofungwa kwa miguu miwili))

chapisha ("Baridi iliyoongozwa:" + str (iliyopozwa)) chapa ("Iliyoongozwa na moto mkali" + str (iliyotiwa moto sana)) chapa ("Iliyoongozwa moto:" + str (hotled))

AnzaColdLED. Anza (kushikiliwa na mikono miwili)

Anza ColdLED. Kuanza (baridi)

KuanzaKuwashwa Moto.kuanza (moto uliokithiri)

Kuanza (hotled) elif temp == 50: uliokithiri = 0 umepoa = 50 umepigwa moto = 50 umepigwa moto = 0

chapisha ("Baridi kali iliyoongozwa:" + str (iliyofungwa kwa miguu miwili))

chapisha ("Baridi iliyoongozwa:" + str (iliyopozwa)) chapa ("Iliyoongozwa na moto mkali" + str (iliyotiwa moto sana)) chapa ("Iliyoongozwa moto:" + str (hotled))

AnzaColdLED. Anza (kushikiliwa na mikono miwili)

Anza ColdLED. Kuanza (baridi)

KuanzaKuwashwa Moto.kuanza (moto uliokithiri)

Anza HotLED. (Hotled)

Sawa, sehemu hii ya nambari ni ndefu sana. Pia ni ngumu kuelezea. Kwa kweli, nambari iliyo hapo juu inaangalia hali ya joto katika Fahrenheit, na huamua ikiwa iko katika safu ya safu. Kulingana na masafa, inatoa nambari kwa kila iliyoongozwa na mwangaza wake na kisha huweka mwangaza kwa kupiga amri ya kuanza (). Hiyo ndiyo maelezo ya haraka. Ikiwa inatosha, ninapendekeza uende kwenye hatua inayofuata, lakini ikiwa unataka kuona maelezo marefu na ya kuchosha, endelea kusoma.

Tulipopanga, tuliamua njia rahisi zaidi ya kupata thamani kutoka kwa joto ilikuwa katika mfumo wa kazi ya hesabu. Kwa hivyo, tuliunda grafu katika GeoGebra kuwakilisha uhusiano gani kati ya joto letu na mwangaza wetu ulioongozwa; sababu inakwenda juu ya 100 ni kwamba nyongeza ingekuwa ikienda kwenye mwongozo wa pili. Walakini, tuliingia kwenye suala la kupata kazi moja ya kuchora alama hizi zote kwa kazi moja. Tulifikiri tunaweza kutumia parabola, lakini tuliamua kukaa tu kwa kutumia safu ya taarifa. Kwa asili, nambari hii yote ni kazi ya kipande.

Kazi zilizo juu ni usawa sawa wa mistari. Mara tu tunapoamua ni wapi joto iko kwenye grafu, tunaiendesha kupitia kazi hiyo, kupata mwangaza, na kuipitisha kwenye viunga.

Hatua ya 6: Uandikaji: Hatua za Mwisho

Mwishowe, tunaongeza taarifa hii mwishoni.

jaribu:

wakati (Kweli): GetLEDBrightness (City_TemperatureF) GetRainLED (WeatherID) wakati.

Kauli za kujaribu na isipokuwa zinaturuhusu kutoka kwa nambari kwa kutumia njia fupi ya kibodi; la sivyo, itabidi tuzime Raspberry Pi ili kuanza tena nambari. Halafu tuna kitanzi cha muda ambacho kinaendelea milele. Tunasasisha viongozo, na pia kusasisha LED ya mvua. Tunatulia kwa sekunde kumi; OpenWeather inaruhusu simu 60 tu kwa data kwa dakika, na sekunde 10 ni sasisho nyingi.

Na kwa hayo, nambari yetu ya simu imekamilika. Chini ni nambari iliyomalizika.

RaspberryPIWeatherStation.py

maombi ya kuagiza
kuagizaRPi. GPIOasGPIO
kuagiza
muda wa kuagiza
#Openweather idCodes chini ya 700 zote ni mvua
defCheckRain (IdCode):
ikiwaIdCode <700:
kurudiTrue
mwingine:
ReturnFalse
upungufu wa nguvu ndogo (JotoinF):
Mlinganyo wa kushoto: y = - (50/20) x + 175
Usawa wa #Haki: y = (50/20) x - 75
kurudi- (50/20) * JotoinF + 175
kiwango cha kupungua kwa nguvu (JotoinF):
Mlinganyo wa kushoto: y = - (50/20) x + 175
Usawa wa #Haki: y = (50/20) x - 75
kurudi (50/20) * Joto katikaF-75
kiwango cha defgetextremeleftledintensity (TemperatureinF):
#LiftEquation: y = - (100/30) x + 200
#Sifa ya Haki: y = (100/30) x - (400/3)
kurudi- (100/30) * JotoinF + 200
upungufu wa nguvu
# KushotoEquation: y = - (100/30) x + 200
# Maulizo ya Kulia: y = (100/30) x - (400/3)
kurudi (100/30) * JotoinF- (400/3)
Usanidi wa #GPIO
GPIO.setmode (GPIO. BCM)
Maonyo ya GPIO (Uongo)
#Pini
Uliokithiri_Hot_LED_PIN = 26
Moto_LED_PIN = 16
Uliokithiri_Cold_LED_PIN = 5
Baridi_LED_PIN = 6
Mvula_LED_PIN = 23
Usanidi wa #Pini
Kuanzisha kwa GPIO (Mvua_LED_PIN, GPIO. OUT)
Usanidi wa GPIO (Extreme_Cold_LED_PIN, GPIO. OUT)
Kuanzisha GPIO (Cold_LED_PIN, GPIO. OUT)
Kuanzisha GPIO (Hot_LED_PIN, GPIO. OUT)
Kuanzisha GPIO (Extreme_Hot_LED_PIN, GPIO. OUT)
ExtremeHotLED = GPIO. PWM (Extreme_Hot_LED_PIN, 100)
HotLED = GPIO. PWM (Moto_LED_PIN, 100)
ExtremeColdLED = GPIO. PWM (uliokithiri_Cold_LED_PIN, 100)
ColdLED = GPIO. PWM (Baridi_LED_PIN, 100)
defGetLEDBrightness (temp):
iftemp <= 0:
wenye ncha kali = 100
baridi = 100
moto = 0
uliokithiri = 0
chapisha ("Baridi kali iliyoongozwa:" + str (iliyofungwa kwa miguu miwili))
chapisha ("Baridi iliyoongozwa:" + str (imeganda))
chapisha ("Moto mkali uliosababishwa" + str (uliokithiri))
chapisha ("Hot led:" + str (hotled))
KuanziaColdLED. Anza (kushikiliwa na mikono miwili)
Anza ColdLED. Kuanza (baridi)
KuanzaKuwashwa Moto.kuanza (moto uliokithiri)
Anza Moto (anza moto)
mwinuko> = 100:
iliyofungwa sana = 0
baridi = 0
moto = 100
moto uliokithiri = 100
chapisha ("Baridi kali iliyoongozwa:" + str (iliyofungwa kwa miguu miwili))
chapisha ("Baridi iliyoongozwa:" + str (imeganda))
chapisha ("Moto mkali uliosababishwa" + str (uliokithiri))
chapisha ("Hot led:" + str (hotled))
AnzaColdLED. Anza (kushikiliwa na mikono miwili)
Anza ColdLED. Kuanza (baridi)
KuanzaKuwashwa Moto.kuanza (moto uliokithiri)
Anza HotLED. (Hotled)
elif0 <muda <= 30:
uliokithiri = getextremeleftledintensity (temp) -100
baridi = 100
moto = 0
uliokithiri = 0
chapisha ("Baridi kali iliyoongozwa:" + str (iliyofungwa kwa miguu miwili))
chapisha ("Baridi iliyoongozwa:" + str (imeganda))
chapisha ("Moto mkali uliosababishwa" + str (uliokithiri))
chapisha ("Hot led:" + str (hotled))
KuanziaColdLED. Anza (kushikiliwa na mikono miwili)
Anza ColdLED. Kuanza (baridi)
KuanzaKuwashwa Moto.kuanza (moto uliokithiri)
Anza Moto (anza moto)
elif100> temp> = 70:
iliyofungwa sana = 0
baridi = 0
moto = 100
uliokithirihoteli = kupata nguvu zaidi (temp) -100
chapisha ("Baridi kali iliyoongozwa:" + str (iliyofungwa kwa miguu miwili))
chapisha ("Baridi iliyoongozwa:" + str (imeganda))
chapisha ("Moto uliosababishwa sana" + str (uliokithiri))
chapisha ("Hot led:" + str (hotled))
AnzaColdLED. Anza (kushikiliwa na mikono miwili)
Anza ColdLED. Kuanza (baridi)
KuanzaKuwashwa Moto.kuanza (moto uliokithiri)
Anza Moto (anza moto)
elif30 <muda <50:
iliyofungwa sana = 0
baridi = kupinduka kwa nguvu (temp)
moto = 100-baridi
uliokithiri = 0
chapisha ("Baridi kali iliyoongozwa:" + str (iliyofungwa kwa miguu miwili))
chapisha ("Baridi iliyoongozwa:" + str (imeganda))
chapisha ("Moto mkali uliosababishwa" + str (uliokithiri))
chapisha ("Hot led:" + str (hotled))
KuanziaColdLED. Anza (kushikiliwa na mikono miwili)
Anza ColdLED. Kuanza (baridi)
KuanzaKuwashwa Moto.kuanza (moto uliokithiri)
Anza HotLED. (Hotled)
elif50 <muda <70:
hotled = ujazo mkali (temp)
uliokithiri = 0
baridi = 100-moto
iliyofungwa sana = 0
chapisha ("Baridi kali iliyoongozwa:" + str (iliyofungwa kwa miguu miwili))
chapisha ("Baridi iliyoongozwa:" + str (imeganda))
chapisha ("Moto mkali uliosababishwa" + str (uliokithiri))
chapisha ("Hot led:" + str (hotled))
KuanziaColdLED. Anza (kushikiliwa na mikono miwili)
Anza ColdLED. Kuanza (baridi)
KuanzaKuwashwa Moto.kuanza (moto uliokithiri)
Anza HotLED. (Hotled)
eliftemp == 50:
iliyofungwa sana = 0
baridi = 50
moto = 50
uliokithiri = 0
chapisha ("Baridi kali iliyoongozwa:" + str (iliyofungwa kwa miguu miwili))
chapisha ("Baridi iliyoongozwa:" + str (imeganda))
chapisha ("Moto mkali uliosababishwa" + str (uliokithiri))
chapisha ("Hot led:" + str (hotled))
KuanziaColdLED. Anza (kushikiliwa na mikono miwili)
Anza ColdLED. Kuanza (baridi)
KuanzaKuwashwa Moto.kuanza (moto uliokithiri)
Anza Moto (anza moto)
defGetRainLED (idCode):
ikiwaCheckRain (idCode):
Pato la GPIO (Mvua_LED_PIN, GPIO. HIGH)
mwingine:
Pato la GPIO (Mvua_LED_PIN, GPIO. LOW)
Habari ya #Api: Toa kifunguo cha API na ufunguo wako wa oepnweather api
openweather_api_key = "460a23f27ff324ef9ae743c7e9c32d7e"
base_call = "https://api.openweathermap.org/data/2.5/weather?q="
chapisha ("Chapa katika mji!")
mji_name = ingizo ()
full_call = base_call + city_name + "& appid =" + openweather_api_key
#Kupata Takwimu za Hali ya Hewa
Jibu = maombi.pata (full_call)
WeatherData = Jibu.json ()
WeatherID = WeatherData ["hali ya hewa"] [0] ["id"]
Joto_TemperatureK = WeatherData ["kuu"] ["temp"]
Joto la JijiF = (Joto_JotoK-273) * 1.8 + 32 # Badilisha kuwa Fahrenheit
Vitu vya LED / GPIO
chapisha ("K:" + str (Joto_TemperatureK))
chapisha ("F:" + str (Joto_JotoF))
chapisha (WeatherID)
jaribu:
wakati (Kweli):
Kupata Haki ya Haki (Jiji la JotoF)
KupataRainLED (WeatherID)
saa. kulala (10)
isipokuwaKeyboardInterrupt:
acha ()

angalia rawRaspberryPIWeatherStation.py iliyohifadhiwa na ❤ na GitHub

Hatua ya 7: Kujenga na Kuunganisha Wiring Up

We! Baada ya usimbuaji huo wote, tunafika kwenye jengo, ambalo ni rahisi sana. Kwa sababu ya korona kukaa kwenye maagizo ya nyumbani, hatukuweza kupata zana nyingi ambazo tulitarajia kuwa nazo shuleni. Kwa hivyo, sehemu hii ni rahisi kidogo kuliko kile tulichokusudia. Uainishaji wenyewe pia ni rahisi. Kwanza tulichora mstatili kwenye ubao wa kuni. Ukubwa maalum haujalishi sana, kwani hutumika tu kama jukwaa la kuweka risasi na vifaa vya elektroniki.

Kisha tukachimba 1/8 ya mashimo kwenye kipande chetu cha kuni.

Kisha tukakata mstatili kutoka kwa ubao ili utumie kama jukwaa letu la umeme wetu.

(Hii ndio wakati tulianza; tulipata msumeno mkubwa!)

Sisi kisha kushinikiza anode na cathode pini ya kuongozwa ndani ya mashimo; viunzi vinapaswa kuwekewa juu, balbu zao zinatoka nje; fuatilia ni mguu gani mrefu na mfupi. Kisha tukaanza kuanza kuunganisha waya. Kwanza tuliuza vipinga kwenye mguu wa anode wa LED (mguu mrefu).

Kisha, tuliunganisha miguu ya cathode ya LED kwenye waya moja wa shaba ambao tutatumia kama ardhi. Inapaswa kuonekana kama hii.

Baada ya kufanya hivyo, tunaunganisha ncha za kiume za nyaya za kuruka za kike-kiume hadi mwisho wa kila kontena na waya wa ardhi wa shaba. Mara tu tutakapofanya hivyo, tunaweza kuanza kuziba waya kwenye pini za rasipberry PI GPIO. Hapa kuna mchoro! Walakini, angalia, pini ndizo zilizo kwenye nambari iliyoguswa hapo awali.

Mara baada ya kuwa na waya wote, sasa unachotakiwa kufanya ni kupata faili ya Python kwenye Risiberi na kufungua kituo. run "python3 RaspberryPIWeatherStation.py" na kisha fanya kama inavyoonyesha.

Hatua ya 8: Maonyesho na Hitimisho

Asante kwa kusoma njia yote! Nitaambatanisha hati ya chatu hapa chini! Ikiwa kungekuwa na vitu ambavyo tunaweza kuongeza, labda ingekuwa…

1. Msaada wa aina tofauti za kuingiza (miji, sehemu za kijiografia, nk.)

2. Msaada kwa habari zaidi ya hali ya hewa

3. Ongeza skrini kidogo kuonyesha habari

Hebu tujue mawazo yako! Huu ulikuwa mradi wa kufurahisha kujenga. Tulijifunza mengi juu ya maombi na kupata nyaraka za mtandao kwa kutumia chatu, na pia tulijifunza mengi juu ya kutumia soldering.

Ilipendekeza: