Բովանդակություն:

Ազնվամորի PI LED եղանակային կայան ՝ 8 քայլ
Ազնվամորի PI LED եղանակային կայան ՝ 8 քայլ

Video: Ազնվամորի PI LED եղանակային կայան ՝ 8 քայլ

Video: Ազնվամորի PI LED եղանակային կայան ՝ 8 քայլ
Video: Տնային դեմքի բուժում 50 տարի անց: Կոսմետոլոգի խորհուրդ. Հակատարիքային խնամք հասուն մաշկի համար: 2024, Նոյեմբեր
Anonim
Ազնվամորի PI LED եղանակային կայան
Ազնվամորի PI LED եղանակային կայան

Մենք ստեղծեցինք Ազնվամորի PI եղանակային LED կայան: Այն պատմում է օգտագործողին, թե որքան տաք և սառը է քաղաքը ՝ լուսավորելով և մթնելով, հանգեցնելով լուսադիոդներին: Այն նաև հնարավորություն է տալիս նրանց ասել ՝ անձրև է գալիս, թե ոչ այն քաղաքում, որտեղ նրանք մուտքագրել են:

Ստեղծել են Մայքլ Էնդրյուսը և Տիո Մարելլոն:

Պարագաներ

Գործիքներ

  1. Sոդման երկաթ
  2. Դրեմել
  3. Տեսավ

Նյութեր

  1. Raspberry Pi 3 B+ Dol 40 դոլար ~ 30 դոլար
  2. Իգականից արական ցատկող մետաղալարեր `7 դոլար ~
  3. 3 կապույտ և 2 կարմիր LED դիոդներ ~ 11 դոլար
  4. 100 Օմ դիմադրողներ ՝ 13 դոլար
  5. 4 x 4 x 1/4 Wood plank ~ 5 դոլար
  6. Sոդող 10 դոլար
  7. Պղնձե մետաղալար ՝ 5 դոլար

Քայլ 1: Կոդավորումը որպես խնդրի լուծում

Կոդավորումը խնդիրների լուծում է

Այսպիսով, մեր նախագծում ո՞րն է մեր խնդիրը: Մեր խնդիրը եղանակի մասին տվյալներ ստանալն է, այնուհետև այդ տվյալների օգտագործումը `մեր LEDS- ին տեղեկացնելու համար` անջատված են, թե միացված: Այսպիսով, սա մեր խնդիրը բաժանում է երեք ոլորտների.

1. Եղանակի տվյալների ստացում

2. Օգտագործելով այդ տվյալները

3. Օգտագործելով LEDS

Այնուամենայնիվ, այս ծրագրի համար օգտագործվող լեզուն ՝ Python- ը և այն սարքավորումները, որոնցով այն աշխատում է ՝ Python- ը մեզ տալիս են այս նպատակներին հասնելու հեշտ միջոց:

Այսպիսով, եկեք սկսենք առաջին խնդրից ՝ եղանակի տվյալներ ստանալուց:

Քայլ 2. Կոդավորում. Եղանակի տվյալների ձեռքբերում

Python- ն ինքնին չի կարող եղանակի տվյալներ ստանալ: Եղանակի տվյալներ ստանալու համար մենք պետք է ներմուծենք երկու գործիք, ինչպես նաև արտաքին ծառայություն: Դա անելու համար մենք օգտագործում ենք երեք գործիք:

1. Հարցումներ, պիթոնի մոդուլ, որը թույլ է տալիս վեբ -տեսագրում կատարել

2. Json, python մոդուլ, որը թույլ է տալիս մեզ օգտագործել JSON ֆայլի ձևաչափը

3. OpenWeather, կայք, որը կարող է մեզ եղանակի տվյալներ հաղորդել

Այսպիսով, մենք բերում ենք երկու մոդուլ ՝ այս ծածկագիրը գրելով մեր պիտոն գրերի վերևում:

ներմուծման հարցումներ

ներմուծել json

Մինչև այս գործիքները օգտագործելը, մենք պետք է օգտագործենք Openweather: Դրա համար մենք պետք է հաշիվ ստեղծենք նրանց կայքում և ստանանք API բանալին: Հետևեք նրանց վեբ կայքի հրահանգներին և կստանաք տառերի և թվերի տող, որը թույլ կտա մեզ օգտվել նրանց ծառայությունից: Ինչպե՞ս:

openweather_api_key = "260a23f27f5324ef2ae763c779c32d7e" #Մեր API բանալին (իրական չէ)

base_call = "https://api.openweathermap.org/data/2.5/weather?q=" #OpenWeather Call #Այստեղ մենք ստանում ենք օգտվողի քաղաքը տեքստային տպագրության տեսքով ("Մուտքագրեք քաղաքում!") city_name = մուտքագրում () #Այստեղ մենք հավաքեցինք հասցեն, որը մենք միացնելու ենք հարցումների: ստանալու եղանակի տվյալներ full_call = base_call+city_name+"& appid ="+openweather_api_key #Վերջապես մենք կանչում ենք request.get- ը մեր հասցեով, այնուհետև այն վերածում ենք json ֆայլի: Response = Requires.get (full_call) WeatherData = Response.json () #JSON ֆայլերը պարունակում են տարբեր փոփոխականներ, որոնց հասանելի ենք այս շարահյուսության միջոցով: ["եղանակ"] [0] ["id"] City_TemperatureK = WeatherData ["main"] ["temp"]

Այստեղ մենք ունենք ծածկագիր, որը մեզ ստանում է մեր եղանակի տվյալները: Հարցումները ՝ request.get- ի տեսքով, վերցնում են վեբ կայքի հասցեն և հետ են տալիս այդ կայքի ֆայլը: OpenWeather- ը մեզ տալիս է զանգահարելու հասցե ՝ եղանակային տվյալներ տրամադրելու համար json- ի տեսքով: Մենք հավաքում ենք հասցե, որը միացնում ենք հարցումների մեջ և հետ ենք ստանում json ֆայլը: Այնուհետև մենք ստեղծում ենք երկու փոփոխական և դրանք վերագրում ենք օգտվողի քաղաքի ջերմաստիճանին և եղանակին:

Այսպիսով, այժմ, այս ծածկագրով, մենք ունենք երկու փոփոխական: Մենք ունենք weatherID և ջերմաստիճան Քելվինում:

Քայլ 3. Կոդավորում. Օգտագործելով այդ տվյալները

Այժմ, երբ մենք ունենք այս երկու փոփոխականները, մենք պետք է դրանք նախապատրաստենք ՝ մեր LEDS- ների համար օգտագործելու համար: Այս առումով մենք կարիք չունենք դրա համար որևէ մոդուլ ներմուծել:

Նախ, մենք կելվինը վերածում ենք Ֆարենհայտի:

Մենք դա անում ենք ՝ այս շարահյուսությամբ փոփոխական ստեղծելով

City_TemperatureF = (City_TemperatureK - 273)*1.8 + 32

որը փոխակերպվում է Կելվինից Ֆարենհեյթ (որն իսկապես փոխակերպվում է K -> C -> F)

Հաջորդը մեր եղանակի ID- ն է: WeatherID- ը OpenWather- ի տրամադրած ID- ն է, որը մեզ պատմում է քաղաքի եղանակային պայմանների մասին:

openweathermap.org/weather-conditions Ահա դրանց ցանկը:

Մենք նկատեցինք, որ 700 համարից ցածր ամեն ինչ ինչ -որ տեղումներ էին, ուստի մենք պարզապես ստուգեցինք, արդյոք ծածկագիրը 700 -ից ցածր է, որպեսզի տեսնենք ՝ անձրև է գալիս:

def CheckRain (IdCode). եթե IdCode <700: return True other: return False

Դրանով մենք ունենք մեր երկու փոփոխականները, որոնք պատրաստված են մեր Raspberry PI կապում և LED դիոդների օգտագործման համար:

Քայլ 4: Կոդավորում. Օգտագործելով RPi. GPIO և LED դիոդներ

Կոդավորում ՝ օգտագործելով RPi. GPIO և LED դիոդներ
Կոդավորում ՝ օգտագործելով RPi. GPIO և LED դիոդներ

RaspberryPi- ն գալիս է մի շարք արական կապումներով, որոնք մենք կարող ենք օգտագործել մի շարք էլեկտրական բաղադրիչների հետ հաղորդակցվելու համար, որն այս դեպքում LED դիոդներն են. դա նման է Արդուինոյին և նրա համակարգին: Այնուամենայնիվ, Raspberry PI- ն ընդհանուր նշանակության համակարգիչ է, ի տարբերություն Arduino- ի նման միկրոկոնտրոլերի: Այսպիսով, դրանք օգտագործելու համար մենք պետք է մի փոքր ավելի շատ աշխատանք կատարենք: Սա բաղկացած է Raspberry Pi- ի կապում տեղադրելուց: Մենք դա անում ենք ՝ օգտագործելով այս կոդը:

ներմուծեք RPi. GPIO- ն որպես GPIO #Մենք ներմուծում ենք մոդուլը, որպեսզի կարողանանք օգտագործել այն

#Կարգավորեք կապում GPIO.setmode (GPIO. BCM) GPIO.setwarnings (False)

#LED- ները միացված են: Դրանք կարող են տարբեր լինել, եթե այն կառուցեք, ուստի համոզվեք, որ համեմատեք և փոխեք անհրաժեշտության դեպքում

Extreme_Hot_LED_PIN = 26 Թեժ_LED_PIN = 16

Extreme_Cold_LED_PIN = 5

Սառը_LED_PIN = 6

Անձրև_ԼԵԴ_ՊԻՆ = 23

#Մենք անցնում ենք յուրաքանչյուր քորոց ՝ օգտագործելով.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. POT)

Այնուամենայնիվ, այս ծածկագիրը թույլ կտա մեզ օգտագործել երկու վիճակ ՝ led- ով, այսինքն ՝ միացված և անջատված: Այնուամենայնիվ, դա մեզ պետք է, որպեսզի կարողանանք լուսավորել լույսերը: Դա անելու համար մենք օգտագործում ենք Pulse Width Modulation:

Օգտագործելով զարկերակային լայնության մոդուլյացիա

Pulse Width Modulation- ը մեզ թույլ է տալիս թողարկել անալոգային ազդանշան `օգտագործելով թվային քորոց: Ըստ էության, այն միացնում և անջատում է ազդանշանի աղբյուրը բարձր արագությամբ, որը միջինից դուրս է գալիս որոշակի լարման: RPi. GPIO- ն թույլ է տալիս մեզ օգտագործել դա, չնայած որևէ լրացուցիչ կոդով:

#Մենք ստեղծում ենք չորս կապի օբյեկտ ՝ օգտագործելով GPIO. PWM հրամանը, որը վերցնում է ալիքի համարը

#Երկրորդ թիվը վայրկյանում թարմացվող քանակի քանակն է

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)

Հաջորդ քայլի համար դուք պետք է իմանաք, թե ինչպես ենք մենք թարմացնում այս կապում:

Մենք թարմացնում ենք կապերը ՝ օգտագործելով հրամանը

ExtremeColdLED.start (x) ColdLED.start (x)

ExtremeHotLED.start (x)

HotLED.start (x)

x- ն այս դեպքում կլինի աշխատանքային ցիկլը, որը որոշում է, թե որքան է այն զարկվում: Այն տատանվում է 0-100-ի սահմաններում, այնպես որ մենք պետք է մեր հաջորդ կոդը հիմնավորենք այդ փաստից:

Քայլ 5: Կոդավորում. Ստանալով LED լուսավորություն

Կոդավորում. Ստանալով LED պայծառություն
Կոդավորում. Ստանալով LED պայծառություն

Քանի որ մենք ունենք չորս տարբեր լուսարձակներ, մենք ցանկանում ենք դրանք լուսավորել ՝ կախված նրանից, թե ինչպես: ցուրտ կամ տաք, այն գտնվում է օգտագործողի քաղաքում: Մենք որոշեցինք չորս փուլ ունենալ առաջնորդի համար:

#Գործառույթներ

def getmiddleleftledintensity (TemperatureinF).

def getmiddlerightledintensity (TemperatureinF):

#Ձախ հավասարում. Y = - (50/20) x + 175 #աջ հավասարություն. Y = (50/20) x - 75 վերադարձ (50/20)*ջերմաստիճան F - 75

def getextremeleftledintensity (TemperatureinF):

#LeftEquation: y = - (100/30) x + 200 #RightEquation: y = (100/30) x - (400/3)

վերադարձ -(100/30)*peratերմաստիճանը F + 200

def getextremerightledintensity (TemperatureinF):

# LeftEquation: y = - (100/30) x + 200 # աջ

վերադարձ (100/30)*peratերմաստիճանը Ֆ - (400/3)

#LED լուսարձակների տեղադրում

def GetLEDBrightness (ջերմաստիճան):

եթե ջերմաստիճանը <= 0: extremecoldled = 100 coldled = 100 hotled = 0 extremehotled = 0

տպել ("coldայրահեղ ցուրտ." + փող (ծայրահեղ սառեցված))

տպել («Cold led:» + str (coldled)) print («Extreme hot led» + str (extremehotled)) print («Hot led:» + str (hotled))

ExtremeColdLED.start (ծայրահեղ սառը)

ColdLED.start (սառեցված)

ExtremeHotLED.start (ծայրահեղ տաքացված)

HotLED.start (hotled) elif temp> = 100: extremecoldled = 0 coldled = 0 hotled = 100 extremehotled = 100

տպել ("coldայրահեղ ցուրտ լույս." + փող (ծայրահեղ սառը))

տպել («Cold led:» + str (coldled)) print («Extreme hot led» + str (extremehotled)) print («Hot led:» + str (hotled))

ExtremeColdLED.start (ծայրահեղ սառը)

ColdLED.start (սառեցված)

ExtremeHotLED.start (ծայրահեղ տաքացված)

HotLED.start (hotled) elif 0 <temp <= 30: extremecoldled = getextremeleftledintensity (temp) - 100 coldled = 100 hotled = 0 extremehotled = 0

տպել ("coldայրահեղ ցուրտ." + փող (ծայրահեղ սառեցված))

տպել («Cold led:» + str (coldled)) print («Extreme hot led» + str (extremehotled)) print («Hot led:» + str (hotled))

ExtremeColdLED.start (ծայրահեղ սառը)

ColdLED.start (սառեցված)

ExtremeHotLED.start (ծայրահեղ տաքացված)

HotLED.start (hotled) elif 100> temp> = 70: extremecoldled = 0 coldled = 0 hotled = 100 extremehotled = getextremerightledintensity (temp) - 100

տպել ("coldայրահեղ ցուրտ լույս." + փող (ծայրահեղ սառը))

տպել («Cold led:» + str (coldled)) print («Extreme hot led» + str (extremehotled)) print («Hot led:» + str (hotled))

ExtremeColdLED.start (ծայրահեղ սառը)

ColdLED.start (սառեցված)

ExtremeHotLED.start (ծայրահեղ տաքացված)

HotLED.start (hotled) elif 30 <temp <50: extremecoldled = 0 coldled = getmiddleleftledintensity (temp) hotled = 100 - coldled extremehotled = 0

տպել ("coldայրահեղ ցուրտ." + փող (ծայրահեղ սառեցված))

տպել («Cold led:» + str (coldled)) print («Extreme hot led» + str (extremehotled)) print («Hot led:» + str (hotled))

ExtremeColdLED.start (ծայրահեղ սառը)

ColdLED.start (սառեցված)

ExtremeHotLED.start (ծայրահեղ տաքացված)

HotLED.start (hotled) elif 50 <temp <70: hotled = getmiddlerightledintensity (temp) extremehotled = 0

սառը = 100 - տաքացված

ծայրահեղ սառեցված = 0

տպել ("coldայրահեղ ցուրտ լույս." + փող (ծայրահեղ սառը))

տպել («Cold led:» + str (coldled)) print («Extreme hot led» + str (extremehotled)) print («Hot led:» + str (hotled))

ExtremeColdLED.start (ծայրահեղ սառը)

ColdLED.start (սառեցված)

ExtremeHotLED.start (ծայրահեղ տաքացված)

HotLED.start (hotled) elif temp == 50: extremecoldled = 0 coldled = 50 hotled = 50 extremehotled = 0

տպել ("coldայրահեղ ցուրտ լույս." + փող (ծայրահեղ սառը))

տպել («Cold led:» + str (coldled)) print («Extreme hot led» + str (extremehotled)) print («Hot led:» + str (hotled))

ExtremeColdLED.start (ծայրահեղ սառը)

ColdLED.start (սառեցված)

ExtremeHotLED.start (ծայրահեղ տաքացված)

HotLED.start (տաքացված)

Լավ, կոդի այս հատվածը իսկապես երկար է: Նաև բավականին դժվար է բացատրել: Ըստ էության, վերևի ծածկագիրը նայում է Ֆարենհեյթի ջերմաստիճանին և որոշում, թե արդյոք այն գտնվում է մի շարք միջակայքերում: Կախված տիրույթներից, այն տալիս է մի շարք յուրաքանչյուր led- ի և դրա պայծառության համար, այնուհետև սահմանում է պայծառությունը ՝ կանչելով start () հրամանը: Դա արագ բացատրությունն է: Եթե դա բավարար է, խորհուրդ եմ տալիս անցնել հաջորդ քայլին, բայց եթե ցանկանում եք տեսնել երկար ու ձանձրալի բացատրությունը, շարունակեք կարդալ:

Երբ մենք ծրագրում էինք, մենք որոշեցինք ջերմաստիճանից արժեք ստանալու ամենահեշտ ձևը մաթեմատիկական ֆունկցիայի տեսքով: Այսպիսով, մենք ստեղծեցինք գրաֆիկ GeoGebra- ում, որը ցույց կտա, թե ինչ հարաբերություններ կան մեր ջերմաստիճանի և մեր լուսավորված պայծառության միջև. 100 -ից բարձր լինելու պատճառն այն է, որ հավելյալը կգնա երկրորդ լեդ: Այնուամենայնիվ, մենք բախվեցինք մեկ գործառույթ ստանալու այս բոլոր կետերը մեկ գործառույթի քարտեզագրման հետ: Մենք կարծում էինք, որ կարող ենք օգտագործել պարաբոլա, բայց որոշեցինք պարզապես բավարարվել մի շարք if հայտարարությունների օգտագործմամբ: Ըստ էության, այս ամբողջ ծածկագիրը մաս -մաս գործառույթ է:

Վերևի գործառույթները տողերի համապատասխան հավասարումն են: Երբ մենք որոշում ենք, թե որտեղ է ջերմաստիճանը գրաֆիկի վրա, այն անցնում ենք այդ գործառույթի միջով, ստանում պայծառությունը և այն փոխանցում լուսարձակների վրա:

Քայլ 6: Կոդավորում. Վերջնական քայլեր:

Ի վերջո, մենք վերջում ավելացնում ենք այս հայտարարությունը:

փորձել:

while (True): GetLEDBrightness (City_TemperatureF) GetRainLED (WeatherID) time.sleep (10) բացառությամբ KeyboardIntruptrupt: quit ()

Փորձարկող և բացառիկ հայտարարությունները թույլ են տալիս դուրս գալ կոդից ՝ օգտագործելով ստեղնաշարի կարճ կտրվածք; ամեն դեպքում, մենք ստիպված կլինենք փակել Raspberry Pi- ն ՝ ծածկագիրը վերագործարկելու համար: Այնուհետև մենք ունենք մի հանգույց, որն աշխատում է ընդմիշտ: Մենք թարմացնում ենք լուսարձակները, ինչպես նաև թարմացնում անձրևի LED- ը: Մենք կանգ ենք առնում տասը վայրկյան; OpenWeather- ը թույլ է տալիս ընդամենը 60 զանգ մեկ րոպեի համար, իսկ 10 վայրկյանը շատ թարմացումներ են:

Եվ դրանով մեր ծածկագիրն ավարտված է: Ստորև բերված է պատրաստի ծածկագիրը:

RaspberryPIWeatherStation.py

ներմուծման պահանջներ
importRPi. GPIOasGPIO
ներմուծող
ներմուծման ժամանակը
#Բաց եղանակի idCodes- ից 700 -ից պակաս բոլորը տեղումներ են
defCheckRain (IdCode):
ifIdCode <700:
returnTrue
այլ:
returnFalse
defgetmiddleleftledintensity (TemperatureinF):
#Ձախ հավասարում. Y =-(50/20) x + 175
#Equիշտ հավասարում. Y = (50/20) x - 75
վերադարձ- (50/20)*peratերմաստիճանը F+175
defgetmiddlerightledintensity (TemperatureinF):
#Ձախ հավասարում. Y =-(50/20) x + 175
#Equիշտ հավասարում. Y = (50/20) x - 75
վերադարձ (50/20)*peratերմաստիճանը F-75
defgetextremeleftledintensity (TemperatureinF):
#LeftEquation: y = -(100/30) x + 200
#RightEquation: y = (100/30) x - (400/3)
վերադարձ- (100/30)*peratերմաստիճանը F+200
defgetextremerightledintensity (TemperatureinF):
# LeftEquation: y = -(100/30) x + 200
# Աջ հավասարություն. Y = (100/30) x - (400/3)
վերադարձ (100/30)*peratերմաստիճանը F- (400/3)
#GPIO կարգավորում
GPIO.setmode (GPIO. BCM)
GPIO.setwarnings (Կեղծ)
#Կապում
Extreme_Hot_LED_PIN = 26
Թեժ_LED_PIN = 16
Extreme_Cold_LED_PIN = 5
Սառը_LED_PIN = 6
Անձրև_ԼԵԴ_ՊԻՆ = 23
#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 (Թեժ_LED_PIN, GPIO. OUT)
GPIO.setup (Extreme_Hot_LED_PIN, GPIO. OUT)
ExtremeHotLED = GPIO. PWM (Extreme_Hot_LED_PIN, 100)
HotLED = GPIO. PWM (Թեժ_LED_PIN, 100)
ExtremeColdLED = GPIO. PWM (Extreme_Cold_LED_PIN, 100)
ColdLED = GPIO. PWM (Cold_LED_PIN, 100)
defGetLEDBrightness (ջերմաստիճան):
iftemp <= 0:
ծայրահեղ սառեցված = 100
սառը = 100
տաքացրած = 0
ծայրահեղ տաք = 0
տպել ("coldայրահեղ ցուրտ լույս."+փող (ծայրահեղ սառը))
տպել ("Cold led:"+str (coldled))
տպել ("Extreme hot led"+str (extremehotled))
տպել («Թեժ լույս.»+փող (տաքացվող))
ExtremeColdLED.start (ծայրահեղ սառը)
ColdLED.start (սառեցված)
ExtremeHotLED.start (ծայրահեղ տաքացված)
HotLED.start (տաքացված)
eliftemp> = 100:
ծայրահեղ սառեցված = 0
սառեցված = 0
տաքացրած = 100
ծայրահեղ տաք = 100
տպել ("coldայրահեղ ցուրտ լույս."+փող (ծայրահեղ սառը))
տպել ("Cold led:"+str (coldled))
տպել ("Extreme hot led"+str (extremehotled))
տպել («Թեժ լույս.»+փող (տաքացվող))
ExtremeColdLED.start (ծայրահեղ սառը)
ColdLED.start (սառեցված)
ExtremeHotLED.start (ծայրահեղ տաքացված)
HotLED.start (տաքացված)
elif0 <temp <= 30:
extremecoldled = getextremeleftledintensity (ջերմաստիճան) -100
սառը = 100
տաքացրած = 0
ծայրահեղ տաք = 0
տպել ("coldայրահեղ ցուրտ."+փող (ծայրահեղ սառեցված))
տպել ("Cold led:"+str (coldled))
տպել ("Extreme hot led"+str (extremehotled))
տպել («Թեժ լույս.»+փող (տաքացվող))
ExtremeColdLED.start (ծայրահեղ սառը)
ColdLED.start (սառեցված)
ExtremeHotLED.start (ծայրահեղ տաքացված)
HotLED.start (տաքացված)
elif100> temp> = 70:
ծայրահեղ սառեցված = 0
սառեցված = 0
տաքացրած = 100
extremehotled = getextremerightledintensity (ջերմաստիճան) -100
տպել ("coldայրահեղ ցուրտ լույս."+փող (ծայրահեղ սառը))
տպել ("Cold led:"+str (coldled))
տպել ("Extreme hot led"+str (extremehotled))
տպել («Թեժ լույս.»+փող (տաքացվող))
ExtremeColdLED.start (ծայրահեղ սառը)
ColdLED.start (սառեցված)
ExtremeHotLED.start (ծայրահեղ տաքացված)
HotLED.start (տաքացված)
elif30 <ջերմաստիճան <50:
ծայրահեղ սառեցված = 0
coldled = getmiddleleftledintensity (ջերմաստիճան)
տաքացած = 100-սառը
ծայրահեղ տաք = 0
տպել ("coldայրահեղ ցուրտ լույս."+փող (ծայրահեղ սառը))
տպել ("Cold led:"+str (coldled))
տպել ("Extreme hot led"+str (extremehotled))
տպել («Թեժ լույս.»+փող (տաքացվող))
ExtremeColdLED.start (ծայրահեղ սառը)
ColdLED.start (սառեցված)
ExtremeHotLED.start (ծայրահեղ տաքացված)
HotLED.start (տաքացված)
elif50 <ջերմաստիճան <70:
hotled = getmiddlerightledintensity (ջերմաստիճան)
ծայրահեղ տաք = 0
coldled = 100-hotled
ծայրահեղ սառեցված = 0
տպել ("coldայրահեղ ցուրտ լույս."+փող (ծայրահեղ սառը))
տպել ("Cold led:"+str (coldled))
տպել ("Extreme hot led"+str (extremehotled))
տպել («Թեժ լույս.»+փող (տաքացվող))
ExtremeColdLED.start (ծայրահեղ սառը)
ColdLED.start (սառեցված)
ExtremeHotLED.start (ծայրահեղ տաքացված)
HotLED.start (տաքացված)
eliftemp == 50:
ծայրահեղ սառեցված = 0
սառը = 50
տաքացրած = 50
ծայրահեղ տաք = 0
տպել ("coldայրահեղ ցուրտ."+փող (ծայրահեղ սառեցված))
տպել ("Cold led:"+str (coldled))
տպել ("Extreme hot led"+str (extremehotled))
տպել («Թեժ լույս.»+փող (տաքացվող))
ExtremeColdLED.start (ծայրահեղ սառը)
ColdLED.start (սառեցված)
ExtremeHotLED.start (ծայրահեղ տաքացված)
HotLED.start (տաքացված)
defGetRainLED (idCode):
ifCheckRain (idCode):
GPIO.putput (Rain_LED_PIN, GPIO. HIGH)
այլ:
GPIO.output (Rain_LED_PIN, GPIO. LOW)
#Api տեղեկատվություն. Փոխարինեք API ստեղնը oepnweather api ստեղնով
openweather_api_key = "460a23f27ff324ef9ae743c7e9c32d7e"
base_call = "https://api.openweathermap.org/data/2.5/weather?q="
տպել («Մուտքագրեք քաղաք»)
քաղաքի անուն = մուտքագրում ()
full_call = base_call+city_name+"& appid ="+openweather_api_key
#Եղանակի տվյալներ ստանալը
Պատասխան = request.get (full_call)
WeatherData = Response.json ()
WeatherID = WeatherData ["եղանակ"] [0] ["id"]
City_TemperatureK = Եղանակի տվյալներ ["հիմնական"] ["ջերմաստիճան"]
City_TemperatureF = (City_TemperatureK-273)*1.8+32#Փոխարկել Ֆարենհայտ
#LED/GPIO իրեր
տպել ("K:"+փող (City_TemperatureK))
տպել ("F:"+փող (City_TemperatureF))
տպել (WeatherID)
փորձել:
while (True):
GetLEDBrightness (City_TemperatureF)
GetRainLED (Եղանակի ճանաչում)
ժամանակ. քուն (10)
բացառությամբ KeyboardIntrupt:
դուրս գալ ()

դիտել rawRaspberryPIWeatherStation.py- ն, որը տեղակայված է it -ի կողմից GitHub- ի կողմից

Քայլ 7: Կառուցում և մոնտաժում

Վայ! Այդ ամբողջ կոդավորումից հետո մենք հասնում ենք շենքին, ինչը զգալիորեն ավելի հեշտ է:Պսակի պատճառով տանը մնալու պատճառով մենք չկարողացանք հասնել այն գործիքներից շատերին, որոնք ակնկալում էինք ունենալ դպրոցում: Այսպիսով, այս հատվածը մի փոքր ավելի պարզ է, քան մենք նախատեսում էինք: Առանձնահատկություններն ինքնին նույնպես ճկուն են: Սկզբում մենք փայտե տախտակի վրա գծեցինք ուղղանկյուն: Հատուկ չափը իրականում այնքան էլ նշանակություն չունի, քանի որ այն պարզապես ծառայում է որպես լուսարձակներ և էլեկտրոնիկա տեղադրելու հարթակ:

Հետո մենք 5/1/8 հորատեցինք մեր փայտի կտորների մեջ:

Դրանից հետո մենք կտրեցինք ուղղանկյունը տախտակից, որպեսզի այն օգտագործվի որպես հարթակ մեր էլեկտրոնիկայի համար:

(Սա այն ժամանակ էր, երբ մենք սկսեցինք. Մենք գտանք ավելի մեծ սղոց):

Այնուհետև մենք led- ի անոդի և կաթոդի կապում ենք մղում անցքերի մեջ; լուսարձակները պետք է դրված լինեն գագաթին, իսկ լամպերը դուրս են ցցված. հետևեք, թե որ ոտքն է ավելի երկար և կարճ: Այնուհետև սկսեցինք սկսել լարերը միասին զոդել: Սկզբում մենք ռեզիստորները կպցրեցինք LED- ի անոդի ոտքին (ավելի երկար ոտքը):

Այնուհետև մենք LED- ների կաթոդի ոտքերը կպցնում ենք մեկ պղնձե մետաղալարի, որը մենք կօգտագործենք որպես հիմք: Այն պետք է ունենա այս տեսքը.

Դա անելուց հետո մենք կպցնում ենք կին-արու ցատկող մալուխների արական ծայրերը յուրաքանչյուր դիմադրության և պղնձե գրունտի լարերի ծայրերին: Դա անելուց հետո մենք կարող ենք սկսել լարերը միացնել ազնվամորի PI GPIO կապում: Ահա դիագրամ! Այնուամենայնիվ, նկատի ունեցեք, որ քորոցներն այն կոդերն են, որոնք նախկինում շոշափվել էին:

Երբ ամեն ինչ լարված լինի, այժմ մնում է միայն Python ֆայլը ներմուծել ազնվամորի Pi- ի վրա և բացել տերմինալը: գործարկեք «python3 RaspberryPIWeatherStation.py» և ապա արեք այնպես, ինչպես ցույց է տալիս:

Քայլ 8: Demուցադրություն և եզրակացություն

Շնորհակալություն ամբողջ ճանապարհը կարդալու համար: Ստորև կցեմ python սցենարը: Եթե ինչ -որ բաներ կարողանայինք ավելացնել, հավանաբար դա կլիներ…

1. Աջակցություն մուտքի տարբեր տեսակների (քաղաքներ, աշխարհագրական կետեր և այլն)

2. Աջակցություն եղանակի մասին ավելի շատ տեղեկությունների համար

3. Տեղեկատվությունը ցուցադրելու համար մի փոքր էկրան ավելացրեք

Տեղեկացրեք մեզ ձեր մտքերի մասին: Սա կառուցելու զվարճալի նախագիծ էր: Մենք շատ բան սովորեցինք խնդրանքների և պիթոնի միջոցով ինտերնետային փաստաթղթեր ստանալու մասին, ինչպես նաև շատ բան սովորեցինք զոդման օգտագործման մասին:

Խորհուրդ ենք տալիս: