Բովանդակություն:
- Պարագաներ
- Քայլ 1: Կոդավորումը որպես խնդրի լուծում
- Քայլ 2. Կոդավորում. Եղանակի տվյալների ձեռքբերում
- Քայլ 3. Կոդավորում. Օգտագործելով այդ տվյալները
- Քայլ 4: Կոդավորում. Օգտագործելով RPi.GPIO և LED դիոդներ
- Քայլ 5: Կոդավորում. Ստանալով LED լուսավորություն
- Քայլ 6: Կոդավորում. Վերջնական քայլեր:
- Քայլ 7: Կառուցում և մոնտաժում
- Քայլ 8: Demուցադրություն և եզրակացություն
Video: Ազնվամորի PI LED եղանակային կայան ՝ 8 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
Մենք ստեղծեցինք Ազնվամորի PI եղանակային LED կայան: Այն պատմում է օգտագործողին, թե որքան տաք և սառը է քաղաքը ՝ լուսավորելով և մթնելով, հանգեցնելով լուսադիոդներին: Այն նաև հնարավորություն է տալիս նրանց ասել ՝ անձրև է գալիս, թե ոչ այն քաղաքում, որտեղ նրանք մուտքագրել են:
Ստեղծել են Մայքլ Էնդրյուսը և Տիո Մարելլոն:
Պարագաներ
Գործիքներ
- Sոդման երկաթ
- Դրեմել
- Տեսավ
Նյութեր
- Raspberry Pi 3 B+ Dol 40 դոլար ~ 30 դոլար
- Իգականից արական ցատկող մետաղալարեր `7 դոլար ~
- 3 կապույտ և 2 կարմիր LED դիոդներ ~ 11 դոլար
- 100 Օմ դիմադրողներ ՝ 13 դոլար
- 4 x 4 x 1/4 Wood plank ~ 5 դոլար
- Sոդող 10 դոլար
- Պղնձե մետաղալար ՝ 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 դիոդներ
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 լուսավորություն
Քանի որ մենք ունենք չորս տարբեր լուսարձակներ, մենք ցանկանում ենք դրանք լուսավորել ՝ կախված նրանից, թե ինչպես: ցուրտ կամ տաք, այն գտնվում է օգտագործողի քաղաքում: Մենք որոշեցինք չորս փուլ ունենալ առաջնորդի համար:
#Գործառույթներ
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. Տեղեկատվությունը ցուցադրելու համար մի փոքր էկրան ավելացրեք
Տեղեկացրեք մեզ ձեր մտքերի մասին: Սա կառուցելու զվարճալի նախագիծ էր: Մենք շատ բան սովորեցինք խնդրանքների և պիթոնի միջոցով ինտերնետային փաստաթղթեր ստանալու մասին, ինչպես նաև շատ բան սովորեցինք զոդման օգտագործման մասին:
Խորհուրդ ենք տալիս:
NaTaLia եղանակային կայան. Arduino արևային էներգիայով աշխատող եղանակային կայանը կատարվել է ճիշտ ճանապարհով. 8 քայլ (նկարներով)
NaTaLia եղանակային կայան. Arduino արևային էներգիայով աշխատող եղանակային կայանը կատարվեց ճիշտ ճանապարհով. 2 տարբեր վայրերում 1 տարվա հաջող աշխատանքից հետո ես կիսում եմ իմ արևային էներգիայով աշխատող եղանակային կայանի նախագծի ծրագրերը և բացատրում, թե ինչպես այն վերածվեց համակարգի, որն իսկապես կարող է գոյատևել երկար ժամանակ: արևային էներգիայի ժամանակաշրջաններ: Եթե հետևեք
DIY եղանակային կայան և WiFi սենսորային կայան. 7 քայլ (նկարներով)
DIY եղանակային կայան և WiFi սենսորային կայան. Այս նախագծում ես ձեզ ցույց կտամ, թե ինչպես կարելի է եղանակային կայան ստեղծել WiFi սենսորային կայանի հետ միասին: Սենսորային կայանը չափում է տեղական ջերմաստիճանի և խոնավության տվյալները և այն WiFi- ի միջոցով ուղարկում է եղանակային կայանին: Օդերևութաբանական կայանն այնուհետև ցուցադրում է
Ազնվամորի PI ջերմաստիճանի և խոնավության գրանցում, ամպային եղանակային կայան, Wifi և բջջային վիճակագրություն. 6 քայլ
Ազնվամորի PI ջերմաստիճանի և խոնավության գրանցում, ամպերի եղանակային կայան, Wifi և բջջային վիճակագրություն. Raspberry PI սարքի միջոցով կարող եք մուտքագրել ջերմաստիճանի և խոնավության տվյալները դրսում, սենյակում, ջերմոցում, լաբորատորիայում, հովացման սենյակում կամ որևէ այլ վայրում ամբողջովին անվճար: Այս օրինակը մենք կօգտագործենք ջերմաստիճանը և խոնավությունը գրանցելու համար: Սարքը միացված կլինի ինտերնետին v
Ինչպես պատրաստել ազնվամորի Պի եղանակային կայան. 5 քայլ
Ինչպես պատրաստել Raspberry Pi եղանակային կայան. Այս ձեռնարկում ես կանցնեմ SenseHAT- ի տեղադրման և ներմուծման գործընթացի ընթացքի համար, որը պահանջվում է այն SenseHAT- ը վերածելու լիարժեք գործող եղանակային կայանի, որը կարող է գրանցել ջերմաստիճան, ճնշում և խոնավություն:
Acurite 5 in 1 եղանակային կայան ՝ օգտագործելով Raspberry Pi և Weewx (այլ եղանակային կայաններ համատեղելի են). 5 քայլ (նկարներով)
Acurite 5 in 1 եղանակային կայան ՝ օգտագործելով Raspberry Pi և Weewx (այլ եղանակային կայաններ համատեղելի են). Երբ ես գնել էի Acurite 5 in 1 օդերևութաբանական կայանը, ես ցանկանում էի, որ կարողանայի ստուգել եղանակը իմ տանը, երբ ես հեռու էի: Երբ տուն հասա և տեղադրեցի, հասկացա, որ կամ պետք է միացնեմ համակարգչին կամ գնեմ նրանց խելացի հանգույցը