Агуулгын хүснэгт:
- Хангамж
- Алхам 1: Асуудлыг шийдвэрлэхийн тулд кодлох
- Алхам 2: Кодлох: Цаг агаарын мэдээлэл авах
- Алхам 3: Кодлох: Энэ өгөгдлийг ашиглах
- Алхам 4: Кодлох: RPi.GPIO болон LED диодыг ашиглах
- Алхам 5: Кодлох: LED тод байдлыг олж авах
- Алхам 6: Кодлох: Эцсийн алхамууд
- Алхам 7: Байшин барих, утас холбох
- Алхам 8: Жагсаал, дүгнэлт
Видео: Raspberry PI LED цаг уурын станц: 8 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:01
Бид Raspberry PI цаг агаарын LED станцыг бий болгосон. Энэ нь гэрлийг гэрэлтүүлж, гэрлийг нь гэрэлтүүлснээр хот хэр хүйтэн, хүйтэн байдгийг хэрэглэгчдэд хэлж өгдөг. Энэ нь мөн тэдний бичсэн хотод бороо орж байгаа эсэхээс үл хамааран тэдэнд хариулах болно.
Майкл Эндрюс, Тио Марелло нарын бүтээсэн.
Хангамж
Багаж хэрэгсэл
- Гагнуурын төмөр
- Дремел
- Харсан
Материал
- Raspberry Pi 3 B+ ~ 40 доллар ~ 30 доллар
- Эмэгтэй, эрэгтэй холбогч утас ~ 7 доллар
- 3 хөх, 2 улаан LED диод ~ 11 доллар
- 100 Ом эсэргүүцэл ~ 13 доллар
- 4 x 4 x 1/4 Модон банз ~ 5 доллар
- Гагнуур ~ 10 доллар
- Зэс утас ~ 5 доллар
Алхам 1: Асуудлыг шийдвэрлэхийн тулд кодлох
Кодлох нь асуудлыг шийдвэрлэх явдал юм
Тиймээс, манай төсөлд манай асуудал юу байна вэ? Бидний асуудал бол цаг агаарын мэдээллийг олж авах, дараа нь эдгээр өгөгдлийг ашиглан LED -үүдийг унтраасан эсвэл асаалттай байгаа эсэхийг хэлэх явдал юм. Тиймээс энэ нь бидний асуудлыг гурван чиглэлээр хуваадаг.
1. Цаг агаарын мэдээлэл авах
2. Тэр өгөгдлийг ашиглах нь
3. LED ашиглах
Гэсэн хэдий ч бидний энэ төсөлд ашигладаг 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 = хүсэлтүүд.get (full_call) WeatherData = Response.json () #JSON файлууд нь энэ синтаксийг ашиглан өөр өөр хувьсагчуудыг агуулдаг #Эндээс бид цаг агаарын ID болон тухайн хотын Келвин хотын температурыг WeatherID = WeatherData гэж бичдэг. ["цаг агаар"] [0] ["id"] City_TemperatureK = Цаг агаарын мэдээлэл ["үндсэн"] ["temp"]
Энд бидэнд цаг агаарын мэдээллийг авах код байна. Request.get хэлбэрийн хүсэлт нь вэбсайтын хаягийг авч тухайн вэбсайтын файлыг бидэнд буцааж өгдөг. OpenWeather нь бидэнд цаг агаарын мэдээллийг json хэлбэрээр өгөх үүднээс дуудлага хийх хаягийг өгдөг. Бид хүсэлтээ залгасан хаягаа угсарч, json файлыг буцааж авдаг. Дараа нь бид хоёр хувьсагч үүсгэж, хэрэглэгчийн хотын температур, цаг агаарын нөхцөл байдалд хуваарилдаг.
Тиймээс одоо энэ кодын тусламжтайгаар бидэнд хоёр хувьсагч байна. Бид Келвинд цаг агаарын хэм, температуртай байна
Алхам 3: Кодлох: Энэ өгөгдлийг ашиглах
Одоо эдгээр хоёр хувьсагчтай болсон тул бид тэдгээрийг LED -д ашиглахад бэлтгэх ёстой. Үүний тулд бид үүнд ямар ч модулийг импортлох шаардлагагүй болно.
Нэгдүгээрт, бид келвиныг Фаренгейт болгон хөрвүүлнэ.
Бид үүнийг энэхүү синтакс ашиглан хувьсагч үүсгэх замаар хийдэг
Хотын температур_F = (Хотын температур_K - 273)*1.8 + 32
Келвинээс Фаренгейт рүү хөрвүүлдэг (энэ нь үнэхээр K -> C -> F -ээс хөрвүүлж байна)
Дараагийнх нь бидний цаг агаарын ID. WeatherID бол Openweather -ийн өгсөн ID бөгөөд энэ нь хотын цаг агаарын нөхцөл байдлын талаар өгүүлдэг.
openweathermap.org/weather-conditions Тэдний жагсаалтыг энд оруулав.
700 дугаараас доош бүх зүйл ямар нэгэн хур тунадас орсон болохыг бид анзаарсан тул код 700 -аас доош байгаа эсэхийг шалгаж, бороо орж байгаа эсэхийг олж мэдэв.
def CheckRain (IdCode): if IdCode <700: return True else else: False буцаана
Үүний тусламжтайгаар бид хоёр хувьсагчаа Raspberry PI тээглүүр болон LED диодтой хамт ашиглахаар бэлтгэсэн болно.
Алхам 4: Кодлох: RPi. GPIO болон LED диодыг ашиглах
RaspberryPi нь олон тооны цахилгаан эд ангиудтай харилцахад ашиглаж болох эрэгтэй тээглүүртэй ирдэг бөгөөд энэ тохиолдолд LED диодууд байдаг. Энэ нь Arduino болон түүний системтэй төстэй юм. Гэсэн хэдий ч Raspberry PI нь Arduino шиг микроконтроллероос ялгаатай нь ерөнхий зориулалттай компьютер юм. Тиймээс бид тэдгээрийг ашиглахын тулд арай илүү их ажил хийх ёстой. Энэ нь Raspberry Pi дээр зүү тавихаас бүрдэнэ. Бид энэ кодыг ашиглан үүнийг хийдэг.
RPi. GPIO -г GPIO болгон импортлох #Бид модулийг импортлодог тул үүнийг ашиглаж болно
PinsGPIO.setmode (GPIO. BCM) GPIO.setwarnings -ийг тохируулах (Худал)
#LED -ийг зүүгээр холбосон байна. Хэрэв та үүнийг барьж байгаа бол эдгээр нь өөр байж магадгүй тул шаардлагатай бол харьцуулж, өөрчлөх хэрэгтэй
Extreme_Hot_LED_PIN = 26 Hot_LED_PIN = 16
Хэт хүйтэн_LED_PIN = 5
Хүйтэн_LED_PIN = 6
Rain_LED_PIN = 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) GPIO.
Гэсэн хэдий ч энэ код нь зөвхөн удирдсан, асаалттай, унтраасан хоёр төлөвийг ашиглах боломжийг бидэнд олгоно. Гэсэн хэдий ч гэрлийг бүдгэрүүлэхийн тулд бидэнд хэрэгтэй байна. Үүнийг хийхийн тулд бид импульсийн өргөн модуляцийг ашигладаг.
Импульсийн өргөний модуляцийг ашиглах
Импульсийн өргөний модуляци нь дижитал зүү ашиглан аналог дохиог гаргах боломжийг бидэнд олгодог. Үндсэндээ энэ нь дохионы эх үүсвэрийг өндөр хурдтайгаар асааж, тодорхой хүчдэлд дунджаар өгдөг. 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): #Зүүн тэгшитгэл: y = -(50/20) x + 175 #Баруун тэгшитгэл: y = (50/20) x -75 буцах -(50/20)*ТемпературFF 175
def getmiddlerightledintensity (TemperatureinF):
#Зүүн тэгшитгэл: y = - (50/20) x + 175 #Баруун тэгшитгэл: y = (50/20) x - 75 буцах (50/20)*Температур F - 75
def getexteleftftledensity (TemperatureinF):
#Зүүн тэнцүү: y = - (100/30) x + 200 #Зөв тэгшитгэл: y = (100/30) x - (400/3)
буцах -(100/30)*Температур inF + 200
def getextremerightledintensity (TemperatureinF):
# Зүүн тэнцүү: y = - (100/30) x + 200 # Баруун тэгшитгэл: y = (100/30) x - (400/3)
буцах (100/30)*Температур inF - (400/3)
#LED гэрлийг тохируулах
def GetLEDBrightness (температур):
хэрэв temp <= 0: extremecoldled = 100 coldled = 100 hotled = 0 extremehotled = 0
хэвлэх ("Хэт хүйтэн гэрэл:" + str (туйлширсан))
хэвлэх ("Хүйтэн хөтөч:" + str (хөргөсөн)) хэвлэх ("Хэт халуун LED" + str (туйлын өндөр)) хэвлэх ("Халуун LED:" + str (халуун болгосон))
ExtremeColdLED.start (туйлширсан)
ColdLED. эхлэх (хөргөсөн)
ExtremeHotLED.start (хэт хэтрүүлсэн)
HotLED.start (hotled) elif temp> = 100: extremecoldled = 0 coldled = 0 hotled = 100 extremehotled = 100
хэвлэх ("Хэт хүйтэн гэрэл:" + str (туйлширсан))
хэвлэх ("Cold led:" + str (coldled)) print ("Хэт халуун LED" + str (хэт өндөр)) хэвлэх ("Hot led:" + str (hotled))
ExtremeColdLED.start (хэт туйлширсан)
ColdLED. эхлэх (хөргөсөн)
ExtremeHotLED.start (хэт хэтрүүлсэн)
HotLED.start (hotled) elif 0 <temp <= 30: extremecoldled = getextremeleftledintensity (temp) - 100 coldled = 100 hotled = 0 extremehotled = 0
хэвлэх ("Хэт хүйтэн гэрэл:" + str (туйлширсан))
хэвлэх ("Хүйтэн хөтөч:" + str (хөргөсөн)) хэвлэх ("Хэт халуун LED" + str (туйлын өндөр)) хэвлэх ("Халуун LED:" + str (халуун болгосон))
ExtremeColdLED.start (туйлширсан)
ColdLED. эхлэх (хөргөсөн)
ExtremeHotLED.start (хэт хэтрүүлсэн)
HotLED.start (hotled) elif 100> temp> = 70: extremecoldled = 0 coldled = 0 hotled = 100 extremehotled = getextremerightledintensity (temp) - 100
хэвлэх ("Хэт хүйтэн гэрэл:" + str (туйлширсан))
хэвлэх ("Cold led:" + str (coldled)) print ("Хэт халуун LED" + str (хэт өндөр)) хэвлэх ("Hot led:" + str (hotled))
ExtremeColdLED.start (хэт туйлширсан)
ColdLED. эхлэх (хөргөсөн)
ExtremeHotLED.start (хэт хэтрүүлсэн)
HotLED.start (hotled) elif 30 <temp <50: extremecoldled = 0 coldled = getmiddleleftledintensity (temp) hotled = 100 - coldled extremehotled = 0
хэвлэх ("Хэт хүйтэн гэрэл:" + str (туйлширсан))
хэвлэх ("Хүйтэн хөтөч:" + str (хөргөсөн)) хэвлэх ("Хэт халуун LED" + str (туйлын өндөр)) хэвлэх ("Халуун LED:" + str (халуун болгосон))
ExtremeColdLED.start (хэт туйлширсан)
ColdLED. эхлэх (хөргөсөн)
ExtremeHotLED.start (хэт хэтрүүлсэн)
HotLED.start (hotled) elif 50 <temp <70: hotled = getmiddlerightledintensity (temp) extremehotled = 0
хөргөсөн = 100 - халсан
туйлширсан = 0
хэвлэх ("Хэт хүйтэн гэрэл:" + str (туйлширсан))
хэвлэх ("Cold led:" + str (coldled)) print ("Хэт халуун LED" + str (хэт өндөр)) хэвлэх ("Hot led:" + str (hotled))
ExtremeColdLED.start (хэт туйлширсан)
ColdLED. эхлэх (хөргөсөн)
ExtremeHotLED.start (хэт хэтрүүлсэн)
HotLED.start (hotled) elif temp == 50: extremecoldled = 0 coldled = 50 hotled = 50 extremehotled = 0
хэвлэх ("Хэт хүйтэн гэрэл:" + str (туйлширсан))
хэвлэх ("Cold led:" + str (coldled)) print ("Хэт халуун LED" + str (хэт өндөр)) хэвлэх ("Hot led:" + str (hotled))
ExtremeColdLED.start (туйлширсан)
ColdLED. эхлэх (хөргөсөн)
ExtremeHotLED.start (хэт хэтрүүлсэн)
HotLED.start (халуун)
За, энэ кодын хэсэг үнэхээр урт байна. Үүнийг тайлбарлах нь бас нэлээд хэцүү юм. Үндсэндээ дээрх код нь Фаренгейт дэх температурыг хардаг бөгөөд энэ нь хэд хэдэн мужид байгаа эсэхийг тодорхойлдог. Хамрах хүрээнээс хамааран энэ нь гэрэл тус бүрийн дугаар, түүний гэрэлтүүлгийг өгч, дараа нь start () командыг дуудаж гэрэлтүүлгийг тохируулна. Энэ бол хурдан тайлбар юм. Хэрэв хангалттай бол дараагийн алхам руу шилжихийг зөвлөж байна, гэхдээ хэрэв та урт, уйтгартай тайлбарыг үзэхийг хүсч байвал үргэлжлүүлэн уншаарай.
Бид програмчлахдаа температураас утгыг олж авах хамгийн хялбар аргыг математик функц хэлбэрээр шийдсэн. Тиймээс бид GeoGebra -д бидний температур ба бидний гэрэлтүүлгийн хооронд ямар хамаарал байгааг харуулсан график үүсгэсэн. 100 -аас дээш гарсан шалтгаан нь нэмэлтийг хоёр дахь залгуурт оруулах болно. Гэсэн хэдий ч бид эдгээр бүх цэгүүдийг нэг функцтэй харьцуулах ганц функцтэй болох асуудал тулгарсан. Бид парабола ашиглаж болно гэж бодсон боловч хэд хэдэн if илэрхийллийг ашиглахаар шийдсэн. Үндсэндээ энэ бүх код нь хэсэгчилсэн функц юм.
Дээд талын функцууд нь шугамын харгалзах тэгшитгэл юм. График дээр температур хаана байгааг тодорхойлсны дараа бид үүнийг функцээр дамжуулж, гэрэлтүүлгийг олж, гэрэл рүү дамжуулдаг.
Алхам 6: Кодлох: Эцсийн алхамууд
Эцэст нь бид энэ мэдэгдлийг төгсгөлд нь нэмж оруулав.
оролдоно уу:
while (True): GetLEDBrightness (City_TemperatureF) GetRainLED (WeatherID) time.sleep (10), KeyboardInterrupt -ээс бусад
Try and except мэдэгдлүүд нь гарын товчлол ашиглан кодоос гарах боломжийг бидэнд олгодог; Эс тэгвэл бид кодыг дахин эхлүүлэхийн тулд Raspberry Pi -г хаах хэрэгтэй болно. Дараа нь бидэнд үүрд ажилладаг хэсэг хугацааны давталт бий. Бид гэрэлтүүлгийг шинэчлэхээс гадна борооны LED -ийг шинэчилдэг. Бид арван секундын турш түр зогсооно; OpenWeather нь минутанд ердөө 60 дуудлага хийх боломжийг олгодог бөгөөд 10 секунд бол маш олон шинэчлэлтүүд юм.
Тэгээд манай код дууссан. Дууссан код доор байна.
RaspberryPIWeatherStation.py
импортын хүсэлт |
importRPi. GPIOasGPIO |
importjson |
импортын цаг |
#Openweather idCodes 700 -аас бага бол бүгд хур тунадас орно |
defCheckRain (IdCode): |
ifIdCode <700: |
буцах Үнэн |
өөр: |
буцах Хуурамч |
defgetdiddleftled нягтрал (TemperatureFF): |
#Зүүн тэгшитгэл: y =-(50/20) x + 175 |
#Зөв тэгшитгэл: y = (50/20) x - 75 |
буцах-(50/20)*Температур inF+175 |
дунд зэргийн бага нягтрал (F температур) |
#Зүүн тэгшитгэл: y =-(50/20) x + 175 |
#Зөв тэгшитгэл: y = (50/20) x - 75 |
буцах (50/20)*F-75 температур |
defgetextremeleftftledensity (TemperatureinF): |
#SolEquation: y = -(100/30) x + 200 |
#ЗөвТэнцвэр: y = (100/30) x - (400/3) |
буцах-(100/30)*Температур inF+200 |
defgetex хэт улаан туяа (TemperatureinF): |
# Зүүн тэнцүү: y = -(100/30) x + 200 |
# Зөв тэгшитгэл: y = (100/30) x - (400/3) |
буцах (100/30)*Температур inF- (400/3) |
#GPIO тохиргоо |
GPIO.setmode (GPIO. BCM) |
GPIO.setwarnings (Худал) |
#Зүү |
Extreme_Hot_LED_PIN = 26 |
Hot_LED_PIN = 16 |
Хэт хүйтэн_LED_PIN = 5 |
Хүйтэн_LED_PIN = 6 |
Rain_LED_PIN = 23 |
#Зүү тохируулах |
GPIO. тохиргоо (Rain_LED_PIN, GPIO. OUT) |
GPIO. тохиргоо (Extreme_Cold_LED_PIN, GPIO. OUT) |
GPIO. тохиргоо (Cold_LED_PIN, GPIO. OUT) |
GPIO. тохиргоо (Hot_LED_PIN, GPIO. OUT) |
GPIO. тохиргоо (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) |
defGetLEDBrightness (температур): |
iftemp <= 0: |
туйлширсан = 100 |
хөргөсөн = 100 |
халуун = 0 |
туйлширсан = 0 |
хэвлэх ("Хэт хүйтэн гэрэл:"+str (туйлширсан)) |
хэвлэх ("Cold led:"+str (хөргөсөн)) |
хэвлэх ("Хэт халуун LED"+str (туйлын өндөр)) |
хэвлэх ("Hot led:"+str (hotled)) |
ExtremeColdLED.start (хэт туйлширсан) |
ColdLED. эхлэх (хөргөсөн) |
ExtremeHotLED.start (хэт хэтрүүлсэн) |
HotLED.start (халуун) |
eliftemp> = 100: |
туйлширсан = 0 |
хөргөсөн = 0 |
халуун = 100 |
туйлширсан = 100 |
хэвлэх ("Хэт хүйтэн гэрэл:"+str (туйлширсан)) |
хэвлэх ("Cold led:"+str (хөргөсөн)) |
хэвлэх ("Хэт халуун LED"+str (туйлын өндөр)) |
хэвлэх ("Hot led:"+str (hotled)) |
ExtremeColdLED.start (туйлширсан) |
ColdLED. эхлэх (хөргөсөн) |
ExtremeHotLED.start (хэт хэтрүүлсэн) |
HotLED.start (халуун) |
elif0 <temp <= 30: |
Extrecoldled = getextremeleftledintensity (temp) -100 |
хөргөсөн = 100 |
халуун = 0 |
туйлширсан = 0 |
хэвлэх ("Хэт хүйтэн гэрэл:"+str (туйлширсан)) |
хэвлэх ("Cold led:"+str (хөргөсөн)) |
хэвлэх ("Хэт халуун LED"+str (туйлын өндөр)) |
хэвлэх ("Hot led:"+str (hotled)) |
ExtremeColdLED.start (туйлширсан) |
ColdLED. эхлэх (хөргөсөн) |
ExtremeHotLED.start (хэт хэтрүүлсэн) |
HotLED.start (халуун) |
elif100> температур> = 70: |
туйлширсан = 0 |
хөргөсөн = 0 |
халуун = 100 |
extremehotled = getextremerightledintensity (temp) -100 |
хэвлэх ("Хэт хүйтэн гэрэл:"+str (туйлширсан)) |
хэвлэх ("Cold led:"+str (хөргөсөн)) |
хэвлэх ("Хэт халуун LED"+str (туйлын өндөр)) |
хэвлэх ("Hot led:"+str (hotled)) |
ExtremeColdLED.start (хэт туйлширсан) |
ColdLED. эхлэх (хөргөсөн) |
ExtremeHotLED.start (хэт хэтрүүлсэн) |
HotLED.start (халуун) |
elif30 <температур <50: |
туйлширсан = 0 |
хүйтэрсэн = олж авах дундаж |
халуун болгосон = 100 хүйтэн |
туйлширсан = 0 |
хэвлэх ("Хэт хүйтэн гэрэл:"+str (туйлширсан)) |
хэвлэх ("Cold led:"+str (хөргөсөн)) |
хэвлэх ("Хэт халуун LED"+str (туйлын өндөр)) |
хэвлэх ("Hot led:"+str (hotled)) |
ExtremeColdLED.start (туйлширсан) |
ColdLED. эхлэх (хөргөсөн) |
ExtremeHotLED.start (хэт хэтрүүлсэн) |
HotLED.start (халуун) |
elif50 <температур <70: |
hotled = getmiddlerightledintensity (temp) |
туйлширсан = 0 |
хүйтэн болгосон = 100 халуун |
туйлширсан = 0 |
хэвлэх ("Хэт хүйтэн гэрэл:"+str (туйлширсан)) |
хэвлэх ("Cold led:"+str (хөргөсөн)) |
хэвлэх ("Хэт халуун LED"+str (туйлын өндөр)) |
хэвлэх ("Hot led:"+str (hotled)) |
ExtremeColdLED.start (туйлширсан) |
ColdLED. эхлэх (хөргөсөн) |
ExtremeHotLED.start (хэт хэтрүүлсэн) |
HotLED.start (халуун) |
eliftemp == 50: |
туйлширсан = 0 |
хүйтэн = 50 |
халуун = 50 |
туйлширсан = 0 |
хэвлэх ("Хэт хүйтэн гэрэл:"+str (туйлширсан)) |
хэвлэх ("Cold led:"+str (хөргөсөн)) |
хэвлэх ("Хэт халуун LED"+str (туйлын өндөр)) |
хэвлэх ("Hot led:"+str (hotled)) |
ExtremeColdLED.start (туйлширсан) |
ColdLED. эхлэх (хөргөсөн) |
ExtremeHotLED.start (хэт хэтрүүлсэн) |
HotLED.start (халуун) |
defGetRainLED (idCode): |
ifCheckRain (idCode): |
GPIO. гаралт (Rain_LED_PIN, GPIO. HIGH) |
өөр: |
GPIO. гаралт (Rain_LED_PIN, GPIO. LOW) |
#Api мэдээлэл: API түлхүүрийг өөрийн oepnweather api түлхүүрээр солино |
openweather_api_key = "460a23f27ff324ef9ae743c7e9c32d7e" |
base_call = "https://api.openweathermap.org/data/2.5/weather?q=" |
хэвлэх ("Хотод бичээрэй!") |
city_name = оролт () |
full_call = base_call+city_name+"& appid ="+openweather_api_key |
#Цаг агаарын мэдээ авах |
Хариулт = хүсэлтүүд.get (full_call) |
WeatherData = Response.json () |
WeatherID = WeatherData ["цаг агаар"] [0] ["id"] |
City_TemperatureK = Цаг агаарын мэдээлэл ["үндсэн"] ["температур"] |
City_TemperatureF = (City_TemperatureK-273)*1.8+32#Фаренгейт рүү хөрвүүлэх |
#LED/GPIO зүйлс |
хэвлэх ("K:"+str (City_TemperatureK)) |
хэвлэх ("F:"+str (City_TemperatureF)) |
хэвлэх (WeatherID) |
оролдоно уу: |
байхад (Үнэн): |
GetLEDBrightness (City_TemperatureF) |
GetRainLED (WeatherID) |
цаг унтах (10) |
Keyboard тасалдалаас бусад: |
гарах () |
rawRaspberryPIWeatherStation.py -ийг GitHub -аас ❤ -р зохион байгуулалттайгаар үзэх
Алхам 7: Байшин барих, утас холбох
Хөөе! Энэ бүх кодчилолыг хийсний дараа бид барилга руу ордог бөгөөд энэ нь хамаагүй хялбар юм. Корона гэртээ үлдэх захиалгын улмаас бид сургууль дээрээ хүлээж байсан олон хэрэгслээ авч чадаагүй. Тиймээс энэ хэсэг нь бидний төлөвлөснөөс арай хялбар юм. Тодорхойлолтууд нь бас уян хатан байдаг. Эхлээд бид модон банзан дээр тэгш өнцөгт зурсан. Тодорхой хэмжээ нь тийм ч их ач холбогдолгүй, учир нь энэ нь лед, электроникийг асаах тавцан болж өгдөг.
Дараа нь бид модныхоо хэсэг дээр 1/8 дахь таван цооног өрөмдсөн.
Дараа нь бид электроникийн платформ болгон ашиглахын тулд банзнаас тэгш өнцөгтийг хайчилж авав.
(Энэ бол бид эхлэх үед байсан; бид илүү том хөрөө олсон!)
Дараа нь бид анод ба катодын голыг нүх рүү түлхдэг; гэрэл нь булцуугаа наалдсан байх ёстой. аль хөл урт, богино байгааг анхаарч үзээрэй. Дараа нь бид утаснуудаа гагнах ажлыг эхлүүлсэн. Эхлээд бид резисторыг LED анод хөл рүү гагнана (урт хөл).
Дараа нь бид LED -ийн катодын хөлийг нэг зэс утсаар гагнана. Энэ нь иймэрхүү харагдах ёстой.
Үүнийг хийсний дараа бид эмэгтэй-эрэгтэй холбогч кабелийн эрэгтэй үзүүрийг резистор бүрийн төгсгөлд болон зэс газардуулгын утас руу гагнана. Үүнийг хийсний дараа бид бөөрөлзгөнө PI GPIO тээглүүрт утсыг залгаж эхлэх боломжтой. Энд диаграм байна! Гэсэн хэдий ч тээглүүрүүд нь өмнө нь хөндөгдөж байсан кодууд юм гэдгийг анхаарна уу.
Үүнийг хийсний дараа Python файлыг бөөрөлзгөнө Pi дээр аваад терминалыг нээхэд л хангалттай. "python3 RaspberryPIWeatherStation.py" -ийг ажиллуулаад дараа нь үзүүлсэн шиг хий.
Алхам 8: Жагсаал, дүгнэлт
Бүтэн хүртэл уншсан танд баярлалаа! Би доорхи питон скриптийг хавсаргах болно! Хэрэв бидний нэмж болох зүйл байсан бол магадгүй …
1. Янз бүрийн оролтын төрлийг дэмжих (хот, газарзүйн цэг гэх мэт)
2. Цаг агаарын дэлгэрэнгүй мэдээллийг авахад дэмжлэг үзүүлэх
3. Мэдээллийг харуулахын тулд жижиг дэлгэц нэмнэ үү
Та санал бодлоо бидэнд хэлээрэй! Энэ бол бүтээх хөгжилтэй төсөл байв. Бид питон ашиглан хүсэлт гаргах, интернет бичиг баримт авах талаар маш их зүйлийг сурч мэдсэн, мөн гагнуур ашиглах талаар маш их зүйлийг сурсан.
Зөвлөмж болгож буй:
Raspberry Pi интернет цаг уурын станц: 5 алхам (зурагтай)
Raspberry Pi интернет цаг уурын станц: *** Шинэчлэх *** Энэхүү зааварчилгаа хуучирсан байна. Энэхүү зааварчилгаанд ашигласан цаг агаарын мэдээнд зориулсан цаг агаарын үйлчилгээ ажиллахаа больсон. Гэсэн хэдий ч үндсэндээ ижил зүйлийг хийдэг өөр төсөл байдаг (зөвхөн илүү сайн - энэ заавар
Java дахь BME280 -тай Raspberry Pi ашиглан хувийн цаг уурын станц: 6 алхам
Java дахь BME280 -тай Raspberry Pi -ийг ашиглаж буй хувийн цаг уурын станц: Цаг агаар муу байгаа нь цонхоор үргэлж муу харагдаж байдаг. Бид мөн халаалт, агааржуулалтын системдээ илүү сайн хяналт тавихыг хүсч байсан. Хувийн цаг уурын станц барих нь маш чухал
NaTaLia цаг уурын станц: Arduino нарны эрчим хүчээр ажилладаг цаг уурын станц зөв замаар хийсэн: 8 алхам (зурагтай)
NaTaLia цаг уурын станц: Arduino нарны эрчим хүчээр ажилладаг цаг уурын станц зөв замаар хийсэн: 1 жилийн турш 2 өөр байршилд амжилттай ажилласны дараа би нарны эрчим хүчээр ажилладаг цаг уурын станцын төслийн төлөвлөгөөгөө хуваалцаж, хэрхэн урт хугацаанд үнэхээр оршин тогтнож чадах систем болж хөгжсөн тухай тайлбарлаж байна. нарны эрчим хүчнээс үүссэн үе. Хэрэв та дагах бол
DIY цаг уурын станц ба WiFi мэдрэгч станц: 7 алхам (зурагтай)
DIY цаг уурын станц ба WiFi мэдрэгч станц: Энэхүү төсөлд би WiFi мэдрэгч станцын хамт цаг агаарын станцыг хэрхэн яаж хийхийг танд үзүүлэх болно. Мэдрэгч станц нь орон нутгийн температур, чийгшлийн өгөгдлийг хэмжиж, WiFi -ээр цаг уурын станц руу илгээдэг. Цаг уурын станц дараа нь
RPi цаг уурын станц ба дижитал цаг: 4 алхам (зурагтай)
RPi цаг уурын станц ба дижитал цаг: Энэ бол хурдан бөгөөд хялбар төсөл бөгөөд үзүүлэх сайхан дэлгэц юм. Энэ нь цаг хугацаа, цаг агаарын нөхцөл байдал, температурыг хоёуланг нь харуулдаг. Хэрэв танд харсан зүйл тань таалагдаж байвал миний хийсэн зүйлийг дагаж мөрдөхийн тулд намайг Instagram, Twitter (@Anders644PI) дээр дагаарай