Talaan ng mga Nilalaman:

Raspberry PI LED Weather Station: 8 Hakbang
Raspberry PI LED Weather Station: 8 Hakbang

Video: Raspberry PI LED Weather Station: 8 Hakbang

Video: Raspberry PI LED Weather Station: 8 Hakbang
Video: ESP8266 Weather Station with Color TFTLCD 2024, Nobyembre
Anonim
Raspberry PI LED Weather Station
Raspberry PI LED Weather Station

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

  1. Panghinang
  2. Dremel
  3. Saw

Mga Kagamitan

  1. Raspberry Pi 3 B + ~ 40 Dollars ~ 30 Dollars
  2. Mga wires ng Babae hanggang Lalaki na Jumper ~ 7 Mga Dolyar
  3. 3 Blue at 2 Red LED Diode ~ 11 Dollars
  4. 100 Ohm Resistors ~ 13 Dollars
  5. 4 x 4 x 1/4 Wood Plank ~ 5 Mga Dolyar
  6. Solder ~ 10 Dolyar
  7. 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

Coding: Paggamit ng RPi. GPIO at LED Diodes
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

Coding: Pagkuha ng Liwanag ng LED
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: