Talaan ng mga Nilalaman:
- Mga gamit
- Hakbang 1: Pag-coding Bilang Paglutas ng Suliranin
- Hakbang 2: Coding: Pagkuha ng Data ng Panahon
- Hakbang 3: Coding: Paggamit ng Data na Iyon
- Hakbang 4: Coding: Paggamit ng RPi.GPIO at LED Diodes
- Hakbang 5: Coding: Pagkuha ng Liwanag ng LED
- Hakbang 6: Pag-coding: Mga Huling Hakbang
- Hakbang 7: Pagbubuo at Pag-kable ng Up
- Hakbang 8: Pagpapakita at Kongklusyon
Video: Raspberry PI LED Weather Station: 8 Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:11
Lumikha kami ng isang Raspberry PI Weather LED Station. Sinasabi nito sa gumagamit kung gaano kainit at lamig ang isang lungsod sa pamamagitan ng pag-iilaw, at paglabo, ng mga leds. Mayroon din itong pinuno upang sabihin sa kanila kung umuulan o hindi sa lungsod na kanilang nai-type.
Nilikha nina Michael Andrews at Tio Marello.
Mga gamit
Mga kasangkapan
- Panghinang
- Dremel
- Saw
Mga Kagamitan
- Raspberry Pi 3 B + ~ 40 Dollars ~ 30 Dollars
- Mga wires ng Babae hanggang Lalaki na Jumper ~ 7 Mga Dolyar
- 3 Blue at 2 Red LED Diode ~ 11 Dollars
- 100 Ohm Resistors ~ 13 Dollars
- 4 x 4 x 1/4 Wood Plank ~ 5 Mga Dolyar
- Solder ~ 10 Dolyar
- Copper Wire ~ 5 Mga Dolyar
Hakbang 1: Pag-coding Bilang Paglutas ng Suliranin
Ang pag-coding ay paglutas ng problema
Kaya, sa aming proyekto, ano ang aming problema? Ang aming problema ay ang pagkuha ng data ng panahon at pagkatapos ay ang paggamit ng data na iyon upang sabihin sa aming LEDS kung naka-off o naka-on ang mga ito. Kaya't pinaghahati nito ang aming problema sa tatlong mga lugar.
1. Pagkuha ng Data ng Panahon
2. Paggamit ng Data na Iyon
3. Paggamit ng LEDS
Gayunpaman, ang wikang ginamit namin para sa proyektong ito, ang Python, at ang hardware na ginagawa nito, Python, ay nagbibigay sa amin ng isang madaling paraan upang magawa ang mga layuning ito.
Kaya, magsisimula tayo sa unang problema, pagkuha ng data ng panahon.
Hakbang 2: Coding: Pagkuha ng Data ng Panahon
Ang Python mismo ay hindi makakakuha ng data ng panahon. Kailangan naming mag-import ng dalawang mga tool, pati na rin isang panlabas na serbisyo, upang makakuha ng data ng panahon. Upang magawa ito, gumagamit kami ng tatlong mga tool.
1. Mga Kahilingan, isang module ng sawa na nagbibigay-daan sa webscraping
2. Json, isang module ng sawa na nagpapahintulot sa amin na gamitin ang format ng file na JSON
3. OpenWeather, isang website na maaaring magbigay sa amin ng data ng panahon
Kaya, dinadala namin ang dalawang mga module sa pamamagitan ng pagsulat ng code na ito sa tuktok ng aming script sa sawa.
mag-import ng mga kahilingan
import json
Bago namin gamitin ang mga tool na ito, gayunpaman, kailangan naming gumamit ng Openweather. Para doon, kailangan naming lumikha ng isang account sa kanilang site at kumuha ng isang API key. Sundin ang mga tagubilin sa kanilang website at makakakuha ka ng isang hanay ng mga titik at numero na magbibigay-daan sa amin na gamitin ang kanilang serbisyo. Paano?
openweather_api_key = "260a23f27f5324ef2ae763c779c32d7e" # Ang aming API Key (Hindi Totoo)
base_call = "https://api.openweathermap.org/data/2.5/weather?q=" #OpenWeather Call #Dito makuha namin ang lungsod ng gumagamit sa anyo ng pag-print ng teksto ("Mag-type sa isang lungsod!") city_name = input () # Dito namin natipon ang address na isasaksak namin sa mga requests.get upang makatanggap ng data ng panahon full_call = base_call + city_name + "& appid =" + openweather_api_key # Panghuli ay tumatawag kami sa mga kahilingan. Kumuha sa aming address, pagkatapos ay i-convert namin ito sa isang json file Response = requests.get (full_call) WeatherData = Response.json () Ang mga file na #JSON ay naglalaman ng iba't ibang mga variable na maaari nating ma-access gamit ang syntax na ito # Dito nakukuha namin ang ID ng panahon at ang temperatura sa Kelvin ng lungsod na na-type ng gumagamit sa WeatherID = WeatherData ["panahon"] [0] ["id"] City_TemperatureK = WeatherData ["main"] ["temp"]
Narito mayroon kaming code na makakakuha sa amin ng aming data ng panahon. Ang mga kahilingan, sa anyo ng mga request.get, ay kumukuha ng isang address ng website at binibigyan kami ng isang file mula sa website na iyon pabalik. Binibigyan kami ng OpenWeather ng isang address upang tawagan upang bigyan kami ng data ng panahon sa anyo ng isang json. Nag-iipon kami ng isang address kung saan nag-plug kami sa mga kahilingan at nakakakuha ng isang json file pabalik. Pagkatapos ay lumikha kami ng dalawang variable at itatalaga ang mga ito sa temperatura at lagay ng panahon ng lungsod ng gumagamit.
Kaya ngayon, sa code na ito, mayroon kaming dalawang variable. Mayroon kaming isang WeatherID at isang temperatura sa Kelvin
Hakbang 3: Coding: Paggamit ng Data na Iyon
Ngayon na mayroon kaming dalawang variable na ito, kailangan naming ihanda ang mga ito para magamit sa aming LEDS. Para sa aspektong ito, hindi namin kailangang mag-import ng anumang mga module para dito.
Una, iko-convert namin ang kelvin sa Fahrenheit.
Ginagawa namin ito sa pamamagitan ng paglikha ng isang variable na may syntax na ito
City_TemperatureF = (City_TemperatureK - 273) * 1.8 + 32
na nagko-convert mula sa Kelvin patungong Fahrenheit (na talagang nagko-convert mula K -> C -> F)
Susunod ay ang ating panahonID. Ang WeatherID ay isang ID na ibinibigay ng Openweather na nagsasabi sa amin tungkol sa mga kondisyon ng panahon ng isang lungsod.
openweathermap.org/weather-conditions Narito ang isang listahan ng mga ito.
Napansin namin na ang lahat sa ibaba ng 700 na numero ay ilang uri ng pag-ulan, kaya't nasuri lamang namin kung ang code ay mas mababa sa 700 upang makita kung umuulan.
def CheckRain (IdCode): kung IdCode <700: ibalik Totoo pa: ibalik ang Mali
Sa pamamagitan nito, mayroon kaming aming dalawang mga variable na prepped para magamit sa aming mga pin ng Raspberry PI at LED Diode.
Hakbang 4: Coding: Paggamit ng RPi. GPIO at LED Diodes
Ang RaspberryPi ay mayroong isang hanay ng mga lalaking pin na maaari naming magamit upang makipag-usap sa isang host ng mga de-koryenteng sangkap, na sa kasong ito, ay LED Diode; ito ay katulad ng Arduino at ang system nito. Gayunpaman, ang Raspberry PI ay isang pangkalahatang layunin na computer, taliwas sa isang microcontroller tulad ng Arduino. Kaya, kailangan nating gumawa ng kaunti pang gawain upang magamit ang mga ito. Binubuo ito ng pagse-set up ng mga pin sa Raspberry Pi. Ginagawa namin ito sa pamamagitan ng paggamit ng code na ito.
i-import ang RPi. GPIO bilang GPIO # Ina-import namin ang module upang magamit namin ito
#I-set up ang mga pinGPIO.setmode (GPIO. BCM) GPIO.setwarnings (Mali)
# Ang mga pin na naka-plug ang mga LED. Maaaring magkakaiba ang mga ito kung itatayo mo ito, kaya tiyaking ihambing at baguhin kung kinakailangan
Extreme_Hot_LED_PIN = 26 Mainit_LED_PIN = 16
Extreme_Cold_LED_PIN = 5
Cold_LED_PIN = 6
Ulan_LED_PIN = 23
# Dumaan kami sa bawat pin, gamit ang.setup na utos, inilalagay ang bilang nito at itinatakda ito bilang isang output pin
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_LEDOUT)
Gayunpaman, papayagan lamang kami ng code na ito na gumamit ng dalawang estado na may led, iyon ay, on at off. Gayunpaman, kailangan namin ito upang ma-dim ang mga ilaw. Upang magawa ito, gumagamit kami ng Pulse Width Modulation.
Paggamit ng Pulse Width Modulation
Nagbibigay-daan sa amin ang Pulse Width Modulation na maglabas ng isang analog signal gamit ang isang digital pin. Mahalaga, ito ay lumiliko at patayin ang pinagmulan ng signal sa isang mataas na rate, na nag-average sa ilang mga boltahe. Pinapayagan kami ng RPi. GPIO na gamitin ito, kahit na may ilang labis na code.
# Lumilikha kami ng apat na pin na bagay gamit ang utos ng GPIO. PWM, na kumukuha ng isang numero ng channel
Ang # Ang pangalawang numero ay ang bilang ng mga beses na na-update bawat segundo
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)
Para sa susunod na hakbang, malalaman mo ang paraan ng pag-update namin sa mga pin na ito.
Ina-update namin ang mga pin gamit ang utos
ExtremeColdLED.start (x) ColdLED.start (x)
ExtremeHotLED.start (x)
HotLED.start (x)
x sa kasong ito ay ang magiging cycle ng tungkulin, na tumutukoy kung magkano ang pulso nito. Saklaw ito mula 0-100, kaya kailangan nating ibase ang aming susunod na code sa katotohanang iyon.
Hakbang 5: Coding: Pagkuha ng Liwanag ng LED
Dahil mayroon kaming apat na magkakaibang mga leds, nais naming sindihan ang mga ito depende sa kung paano. malamig o mainit ito ay sa lungsod ng gumagamit. Napagpasyahan naming magkaroon ng apat na yugto para sa nangunguna.
#Function
def getmiddleleftledintensity (TemperatureinF): #Left Equation: y = - (50/20) x + 175 #Right Equation: y = (50/20) x - 75 return - (50/20) * TemperatureinF + 175
def getmiddlerightledintensity (TemperatureinF):
#Left Equation: y = - (50/20) x + 175 #Right Equation: y = (50/20) x - 75 return (50/20) * TemperatureinF - 75
def getextremeleftledintensity (TemperatureinF):
#LeftEquation: y = - (100/30) x + 200 #RightEquation: y = (100/30) x - (400/3)
bumalik - (100/30) * TemperaturainF + 200
def getextremerightledintensity (TemperatureinF):
# LeftEquation: y = - (100/30) x + 200 # RightEquation: y = (100/30) x - (400/3)
bumalik (100/30) * TemperatureinF - (400/3)
#Nagtatakda ng mga LED Light
def GetLEDBightness (temp):
kung temp <= 0: extremecoldled = 100 coldled = 100 hotled = 0 extremehotled = 0
i-print ("Extreme cold led:" + str (extremecoldled))
print ("Cold led:" + str (coldled)) print ("Extreme hot led" + str (extremehotled)) print ("Hot led:" + str (hotled))
ExtremeColdLED.start (extremecoldled)
ColdLED.start (coldled)
ExtremeHotLED.start (labis na pamagat)
HotLED.start (hotled) elif temp> = 100: extremecoldled = 0 coldled = 0 hotled = 100 extremehotled = 100
i-print ("Extreme cold led:" + str (extremecoldled))
print ("Cold led:" + str (coldled)) print ("Extreme hot led" + str (extremehotled)) print ("Hot led:" + str (hotled))
ExtremeColdLED.start (extremecoldled)
ColdLED.start (coldled)
ExtremeHotLED.start (labis na pamagat)
HotLED.start (hotled) elif 0 <temp <= 30: extremecoldled = getextremeleftledintensity (temp) - 100 coldled = 100 hotled = 0 extremehotled = 0
i-print ("Extreme cold led:" + str (extremecoldled))
print ("Cold led:" + str (coldled)) print ("Extreme hot led" + str (extremehotled)) print ("Hot led:" + str (hotled))
ExtremeColdLED.start (extremecoldled)
ColdLED.start (coldled)
ExtremeHotLED.start (labis na pamagat)
HotLED.start (hotled) elif 100> temp> = 70: extremecoldled = 0 coldled = 0 hotled = 100 extremehotled = getextremerightledintensity (temp) - 100
i-print ("Extreme cold led:" + str (extremecoldled))
print ("Cold led:" + str (coldled)) print ("Extreme hot led" + str (extremehotled)) print ("Hot led:" + str (hotled))
ExtremeColdLED.start (extremecoldled)
ColdLED.start (coldled)
ExtremeHotLED.start (labis na pamagat)
HotLED.start (hotled) elif 30 <temp <50: extremecoldled = 0 coldled = getmiddleleftledintensity (temp) hotled = 100 - coldled extremehotled = 0
i-print ("Extreme cold led:" + str (extremecoldled))
print ("Cold led:" + str (coldled)) print ("Extreme hot led" + str (extremehotled)) print ("Hot led:" + str (hotled))
ExtremeColdLED.start (extremecoldled)
ColdLED.start (coldled)
ExtremeHotLED.start (labis na pamagat)
HotLED.start (hotled) elif 50 <temp <70: hotled = getmiddlerightledintensity (temp) extremehotled = 0
pinalamig = 100 - nag-init
extremecoldled = 0
i-print ("Extreme cold led:" + str (extremecoldled))
print ("Cold led:" + str (coldled)) print ("Extreme hot led" + str (extremehotled)) print ("Hot led:" + str (hotled))
ExtremeColdLED.start (extremecoldled)
ColdLED.start (coldled)
ExtremeHotLED.start (labis na pamagat)
HotLED.start (hotled) elif temp == 50: extremecoldled = 0 coldled = 50 hotled = 50 extremehotled = 0
i-print ("Extreme cold led:" + str (extremecoldled))
print ("Cold led:" + str (coldled)) print ("Extreme hot led" + str (extremehotled)) print ("Hot led:" + str (hotled))
ExtremeColdLED.start (extremecoldled)
ColdLED.start (coldled)
ExtremeHotLED.start (labis na pamagat)
HotLED.start (hotled)
O sige, ang seksyon ng code na ito ay talagang mahaba. Medyo mahirap din ipaliwanag. Mahalaga, ang code sa itaas ay tumitingin sa temperatura sa Fahrenheit, at tinutukoy kung ito ay nasa isang hanay ng mga saklaw. Nakasalalay sa mga saklaw, nagbibigay ito ng isang numero para sa bawat pinangunahan at ang ningning nito at pagkatapos ay itinatakda ang ningning sa pamamagitan ng pagtawag sa panimulang () utos. Iyon ang mabilis na paliwanag. Kung sapat na, inirerekumenda kong lumipat ka sa susunod na hakbang, ngunit kung nais mong makita ang mahaba at nakakapagod na paliwanag, patuloy na basahin.
Kapag nag-program kami, napagpasyahan namin ang pinakamadaling paraan upang makakuha ng isang halaga mula sa isang temperatura ay sa anyo ng isang pagpapaandar sa matematika. Kaya, lumikha kami ng isang grapiko sa GeoGebra upang kumatawan kung ano ang ugnayan sa pagitan ng aming temperatura at ng aming pinangunahan na ilaw; ang dahilan kung bakit napupunta sa itaas ng 100 ay ang labis na magiging pagpunta sa pangalawang humantong. Gayunpaman, natakbo namin ang isyu ng pagkuha ng isang solong pag-andar upang mapa ang lahat ng mga puntong ito sa isang solong pag-andar. Naisip namin na makakagamit kami ng isang parabola, ngunit nagpasya kaming tumira lamang para sa paggamit ng isang serye ng kung mga pahayag. Sa esensya, ang buong code na ito ay isang pagpapaunlad na magkatulad.
Ang mga pagpapaandar sa tuktok ay ang kani-kanilang equation ng mga linya. Kapag natukoy namin kung nasaan ang temperatura sa grap, pinapatakbo namin ito sa pagpapaandar na iyon, makuha ang liwanag, at ipasa ito sa mga leds.
Hakbang 6: Pag-coding: Mga Huling Hakbang
Panghuli, idinagdag namin ang pahayag na ito sa dulo.
subukan:
habang (Totoo): GetLEDBightness (City_TemperatureF) GetRainLED (WeatherID) time.s Sleep (10) maliban sa KeyboardInterrupt: quit ()
Pinapayagan kaming subukan at maliban sa mga pahayag na lumabas sa code sa pamamagitan ng paggamit ng isang keyboard cut; alinman sa paraan, kailangan naming isara ang Raspberry Pi upang i-restart ang code. Pagkatapos ay mayroon kaming isang habang loop na tatakbo magpakailanman. Ina-update namin ang mga leds, pati na rin ang pag-update ng ulan LED. Huminto kami ng sampung segundo; Pinapayagan lamang ng OpenWeather na 60 tawag para sa data bawat minuto, at 10 segundo ay maraming pag-update.
At kasama nito, natapos ang aming code. Nasa ibaba ang natapos na code.
RaspberryPIWeatherStation.py
mga importrequest |
importRPi. GPIOasGPIO |
importjson |
importime |
#Openweather idCodes mas mababa sa 700 ang lahat ng pag-ulan |
defCheckRain (IdCode): |
ifIdCode <700: |
pagbabalik Totoo |
iba pa: |
returnFalse |
defgetmiddleleftledintensity (TemperatureinF): |
#Kaliwang Equation: y = - (50/20) x + 175 |
#Right Equation: y = (50/20) x - 75 |
pagbabalik- (50/20) * TemperaturainF + 175 |
defgetmiddlerightledintensity (TemperatureinF): |
#Kaliwang Equation: y = - (50/20) x + 175 |
#Right Equation: y = (50/20) x - 75 |
bumalik (50/20) * TemperatureinF-75 |
defgetextremeleftledintensity (TemperatureinF): |
#LeftEquation: y = - (100/30) x + 200 |
#RightEquation: y = (100/30) x - (400/3) |
bumalik- (100/30) * TemperaturainF + 200 |
defgetextremerightledintensity (TemperatureinF): |
# LeftEquation: y = - (100/30) x + 200 |
# RightEquation: y = (100/30) x - (400/3) |
bumalik (100/30) * TemperatureinF- (400/3) |
Pag-setup ng #GPIO |
GPIO.setmode (GPIO. BCM) |
GPIO.setwarnings (Mali) |
#Pins |
Extreme_Hot_LED_PIN = 26 |
Mainit_LED_PIN = 16 |
Extreme_Cold_LED_PIN = 5 |
Cold_LED_PIN = 6 |
Ulan_LED_PIN = 23 |
#Pin Setup |
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) |
defGetLEDBightness (temp): |
iftemp <= 0: |
extremecoldled = 100 |
pinalamig = 100 |
nag-init = 0 |
matindi ang ulo = 0 |
i-print ("Extreme cold led:" + str (extremecoldled)) |
print ("Cold led:" + str (coldled)) |
i-print ("Extreme hot led" + str (extremehotled)) |
print ("Hot led:" + str (hotled)) |
ExtremeColdLED.start (extremecoldled) |
ColdLED.start (coldled) |
ExtremeHotLED.start (labis na pamagat) |
HotLED.start (hotled) |
eliftemp> = 100: |
extremecoldled = 0 |
coldled = 0 |
nag-init = 100 |
ekstrehotle = 100 |
i-print ("Extreme cold led:" + str (extremecoldled)) |
print ("Cold led:" + str (coldled)) |
i-print ("Extreme hot led" + str (extremehotled)) |
print ("Hot led:" + str (hotled)) |
ExtremeColdLED.start (extremecoldled) |
ColdLED.start (coldled) |
ExtremeHotLED.start (labis na pamagat) |
HotLED.start (hotled) |
elif0 <temp <= 30: |
extremecoldled = getextremeleftledintensity (temp) -100 |
pinalamig = 100 |
nag-init = 0 |
matindi ang ulo = 0 |
i-print ("Extreme cold led:" + str (extremecoldled)) |
print ("Cold led:" + str (coldled)) |
i-print ("Extreme hot led" + str (extremehotled)) |
print ("Hot led:" + str (hotled)) |
ExtremeColdLED.start (extremecoldled) |
ColdLED.start (coldled) |
ExtremeHotLED.start (labis na pamagat) |
HotLED.start (hotled) |
elif100> temp> = 70: |
extremecoldled = 0 |
coldled = 0 |
nag-init = 100 |
extremehotled = getextremerightledintensity (temp) -100 |
i-print ("Extreme cold led:" + str (extremecoldled)) |
print ("Cold led:" + str (coldled)) |
i-print ("Extreme hot led" + str (extremehotled)) |
print ("Hot led:" + str (hotled)) |
ExtremeColdLED.start (extremecoldled) |
ColdLED.start (coldled) |
ExtremeHotLED.start (labis na pamagat) |
HotLED.start (hotled) |
elif30 <temp <50: |
extremecoldled = 0 |
coldled = getmiddleleftledintensity (temp) |
nag-init = 100-coldled |
matindi ang ulo = 0 |
i-print ("Extreme cold led:" + str (extremecoldled)) |
print ("Cold led:" + str (coldled)) |
i-print ("Extreme hot led" + str (extremehotled)) |
print ("Hot led:" + str (hotled)) |
ExtremeColdLED.start (extremecoldled) |
ColdLED.start (coldled) |
ExtremeHotLED.start (labis na pamagat) |
HotLED.start (hotled) |
elif50 <temp <70: |
hotled = getmiddlerightledintensity (temp) |
matindi ang ulo = 0 |
pinalamig = 100-hotled |
extremecoldled = 0 |
i-print ("Extreme cold led:" + str (extremecoldled)) |
print ("Cold led:" + str (coldled)) |
i-print ("Extreme hot led" + str (extremehotled)) |
print ("Hot led:" + str (hotled)) |
ExtremeColdLED.start (extremecoldled) |
ColdLED.start (coldled) |
ExtremeHotLED.start (labis na pamagat) |
HotLED.start (hotled) |
eliftemp == 50: |
extremecoldled = 0 |
pinalamig = 50 |
nag-init = 50 |
matindi ang ulo = 0 |
i-print ("Extreme cold led:" + str (extremecoldled)) |
print ("Cold led:" + str (coldled)) |
i-print ("Extreme hot led" + str (extremehotled)) |
print ("Hot led:" + str (hotled)) |
ExtremeColdLED.start (extremecoldled) |
ColdLED.start (coldled) |
ExtremeHotLED.start (labis na pamagat) |
HotLED.start (hotled) |
defGetRainLED (idCode): |
ifCheckRain (idCode): |
GPIO.output (Rain_LED_PIN, GPIO. HIGH) |
iba pa: |
GPIO.output (Ulan_LED_PIN, GPIO. LOW) |
Impormasyon #Api: Muling ibalik ang key ng API gamit ang iyong oepnweather api key |
openweather_api_key = "460a23f27ff324ef9ae743c7e9c32d7e" |
base_call = "https://api.openweathermap.org/data/2.5/weather?q=" |
print ("Mag-type sa isang lungsod!") |
city_name = input () |
full_call = base_call + city_name + "& appid =" + openweather_api_key |
# Pagkuha ng Data ng Panahon |
Tugon = mga kahilingan.get (full_call) |
WeatherData = Response.json () |
WeatherID = WeatherData ["panahon"] [0] ["id"] |
City_TemperatureK = WeatherData ["main"] ["temp"] |
City_TemperatureF = (City_TemperatureK-273) * 1.8 + 32 # I-convert sa Fahrenheit |
# LED / GPIO Bagay-bagay |
i-print ("K:" + str (City_TemperatureK)) |
i-print ("F:" + str (City_TemperatureF)) |
print (WeatherID) |
subukan: |
habang (Totoo): |
GetLEDBightness (City_TemperatureF) |
GetRainLED (WeatherID) |
oras. tulog (10) |
malibanKeyboardInterrupt: |
umalis () |
tingnan ang rawRaspberryPIWeatherStation.py naka-host sa ❤ ng GitHub
Hakbang 7: Pagbubuo at Pag-kable ng Up
Whew! Matapos ang lahat ng pag-coding, nakarating kami sa gusali, na kung saan ay mas madali. Dahil sa pananatili ng corona sa mga order sa bahay, hindi kami makarating sa maraming mga tool na inaasahan naming magkaroon sa paaralan. Kaya, ang bahaging ito ay medyo mas simple kaysa sa inilaan namin. Ang kanilang mga pagtutukoy ay nababaluktot din. Una kaming gumuhit ng isang rektanggulo sa isang tabla ng kahoy. Ang tiyak na sukat ay hindi talaga mahalaga, dahil ito ay nagsisilbing isang platform upang ilagay ang mga leds at electronics.
Pagkatapos ay nag-drill kami ng limang 1/1 sa mga butas sa aming piraso ng kahoy.
Pagkatapos ay pinutol namin ang rektanggulo mula sa tabla upang magamit bilang aming platform para sa aming electronics.
(Ito ay noong nagsimula kami; nakakita kami ng mas malaking lagari!)
Pagkatapos ay itulak namin ang mga anode at cathode pin ng humantong sa mga butas; ang mga leds ay dapat na nakalagay sa ibabaw, ang kanilang mga bombilya ay dumidikit; subaybayan kung aling binti ang mas mahaba at mas maikli. Natapos namin pagkatapos upang simulan ang paghihinang na magkasama ang mga wire. Una naming hinihinang ang mga resistors sa anode leg ng LED (ang mas mahabang binti).
Pagkatapos, hinihinang namin ang mga binti ng katod ng mga LED sa isang solong kawad na tanso na gagamitin namin bilang lupa. Dapat ganito ang hitsura.
Pagkatapos naming gawin iyon, hinihinang namin ang mga dulo ng lalaki ng mga kable na jumper ng babae-lalaki sa mga dulo ng bawat risistor at ang wire na tanso sa lupa. Kapag nagawa na natin iyon, maaari nating simulang i-plug ang mga wire sa mga pin ng raspberry PI GPIO. Narito ang isang diagram! Gayunpaman, tandaan, ang mga pin ay ang mga dating na-touch sa code.
Kapag natapos mo na ang lahat ng naka-wire, ngayon ang kailangan mo lang gawin ay makuha ang file ng Python sa raspberry Pi at buksan ang terminal. patakbuhin ang "python3 RaspberryPIWeatherStation.py" at pagkatapos ay gawin ang ipinapakita nito.
Hakbang 8: Pagpapakita at Kongklusyon
Salamat sa pagbabasa ng lahat! Ikakabit ko ang python script sa ibaba! Kung may mga bagay na maaari nating idagdag, maaaring…
1. Suporta para sa iba't ibang mga uri ng pag-input (mga lungsod, mga puntos na pangheograpiya, atbp.)
2. Suporta para sa karagdagang impormasyon sa panahon
3. Magdagdag ng isang maliit na screen upang ipakita ang impormasyon
Ipaalam sa amin ang iyong mga saloobin! Ito ay isang nakakatuwang proyekto na maitatayo. Marami kaming natutunan tungkol sa mga kahilingan at pagkuha ng mga dokumento sa internet gamit ang sawa, at marami din kaming natutunan tungkol sa paggamit ng paghihinang.
Inirerekumendang:
Bumuo ng isang Raspberry Pi SUPER Weather Station: 8 Hakbang (na may Mga Larawan)
Bumuo ng isang Raspberry Pi SUPER Weather Station: Harapin natin ito, tayong mga tao ay maraming pinag-uusapan ang panahon ⛅️. Ang average na tao ay nagsasalita tungkol sa panahon ng apat na beses sa isang araw, para sa isang average ng 8 minuto at 21 segundo. Gawin ang matematika at na may kabuuan ng 10 buwan ng iyong buhay na gugugol mo sa pag-uusap tungkol sa
NaTaLia Weather Station: Arduino Solar Powered Weather Station Tapos na sa Tamang Daan: 8 Hakbang (na may Mga Larawan)
NaTaLia Weather Station: Arduino Solar Powered Weather Station Tapos na ang Tamang Daan: Matapos ang 1 taon ng matagumpay na operasyon sa 2 magkakaibang mga lokasyon binabahagi ko ang aking mga plano sa proyekto ng istasyon ng solar Powered na solar at ipinapaliwanag kung paano ito nabago sa isang system na maaaring mabuhay nang matagal panahon mula sa solar power. Kung susundin mo
DIY Weather Station at WiFi Sensor Station: 7 Hakbang (na may Mga Larawan)
DIY Weather Station & WiFi Sensor Station: Sa proyektong ito ipapakita ko sa iyo kung paano lumikha ng isang istasyon ng panahon kasama ang isang istasyon ng sensor ng WiFi. Sinusukat ng istasyon ng sensor ang lokal na data ng temperatura at kahalumigmigan at ipinapadala ito, sa pamamagitan ng WiFi, sa istasyon ng panahon. Ipinapakita ng istasyon ng panahon ang
Natatanging Deskpiece ng Station ng Weather Weather: 5 Hakbang (na may Mga Larawan)
Natatanging Deskpiece ng Weather Weather Station: Hey Guys! Para sa proyekto sa buwan na ito ay gumawa ako ng isang istasyon ng panahon sa anyo ng isang Desk Plant o maaari mo itong tawagan bilang isang Desk Showpiece. Ang istasyon ng panahon na ito ay kumukuha ng data sa ESP8266 mula sa isang Website na pinangalanang openwethermap.org at binabago ang mga kulay ng RGB sa
Kumpletuhin ang DIY Raspberry Pi Weather Station Na May Software: 7 Hakbang (na may Mga Larawan)
Kumpletuhin ang DIY Raspberry Pi Weather Station Gamit ang Software: Bumalik sa huling bahagi ng Pebrero nakita ko ang post na ito sa site na Raspberry Pi. http://www.raspberrypi.org/school-weather-station-..Nilikha nila ang Raspberry Pi Weather Stations para sa Mga Paaralan. Gustung-gusto ko ang isa! Ngunit sa oras na iyon (at naniniwala pa rin ako tulad ng pagsulat