فهرست مطالب:
- تدارکات
- مرحله 1: کدگذاری به عنوان حل مشکل
- مرحله 2: کدگذاری: دریافت اطلاعات آب و هوا
- مرحله 3: کدگذاری: استفاده از آن داده ها
- مرحله 4: کدگذاری: استفاده از دیودهای RPi.GPIO و LED
- مرحله 5: کدگذاری: دریافت روشنایی LED
- مرحله 6: کدگذاری: مراحل نهایی
- مرحله 7: ساخت و ساز و سیم کشی
- مرحله 8: نمایش و نتیجه گیری
تصویری: Raspberry PI LED Weather Station: 8 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:53
ما یک ایستگاه LED هواشناسی Raspberry PI ایجاد کردیم. با روشن شدن و کم نور شدن چراغ ها به کاربر می گوید که یک شهر چقدر گرم و سرد است. همچنین این راهنما به آنها می گوید که آیا در شهرهایی که تایپ کرده اند باران می بارد یا نه.
ایجاد شده توسط مایکل اندروز و تیو مارلو.
تدارکات
ابزارها
- آهن لحیم کاری
- درمل
- اره
مواد
- Raspberry Pi 3 B+ 40 دلار ~ 30 دلار
- سیمهای جهنده زن تا مرد 7 دلار پوند
- 3 دیود آبی و 2 قرمز LED 11 دلار
- مقاومت 100 اهم 13 دلار
- 4 4 4 1/ 1/4 تخته چوب 5 دلار
- لحیم 10 دلار
- سیم مسی 5 دلار
مرحله 1: کدگذاری به عنوان حل مشکل
کد نویسی حل مشکل است
بنابراین ، در پروژه ما ، مشکل ما چیست؟ مشکل ما بدست آوردن اطلاعات آب و هوا و سپس استفاده از این داده ها برای اطلاع از روشن یا خاموش بودن LEDS ما است. بنابراین این مشکل ما را به سه حوزه تقسیم می کند.
1. دریافت اطلاعات آب و هوا
2. استفاده از آن داده ها
3. استفاده از LEDS
با این حال ، زبان مورد استفاده ما برای این پروژه ، پایتون ، و سخت افزاری که بر روی آن کار می کند ، پایتون ، راهی آسان برای دستیابی به این اهداف به ما می دهد.
بنابراین ، بیایید با اولین مشکل ، بدست آوردن اطلاعات آب و هوا ، شروع کنیم.
مرحله 2: کدگذاری: دریافت اطلاعات آب و هوا
پایتون به تنهایی نمی تواند اطلاعات آب و هوا را دریافت کند. ما باید دو ابزار و همچنین یک سرویس خارجی را برای دریافت اطلاعات آب و هوا وارد کنیم. برای این کار از سه ابزار استفاده می کنیم.
1. درخواستها ، یک ماژول پایتون که امکان وبگردی را فراهم می کند
2. Json ، ماژول پایتون که به ما اجازه می دهد از فرمت فایل 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 ="+keyweather_api_key #در نهایت به درخواست ها زنگ می زنیم. آدرس خود را دریافت کنید ، سپس آن را به فایل json تبدیل می کنیم Response = request.get (full_call) WeatherData = Response.json () فایلهای #JSON شامل متغیرهای متفاوتی هستند که با استفاده از این نحو می توانیم به آنها دسترسی داشته باشیم ["weather"] [0] ["id"] City_TemperatureK = WeatherData ["main"] ["temp"]
در اینجا ما کدی داریم که اطلاعات آب و هوا را به ما می دهد. درخواست ها ، در قالب request.get ، آدرس وب سایت را دریافت می کند و پرونده ای از آن وب سایت را به ما می دهد. OpenWeather به ما آدرس می دهد تا با آن تماس بگیریم تا اطلاعات آب و هوا را در قالب json به ما بدهد. ما آدرسی را که به درخواست ها وصل می کنیم جمع آوری کرده و یک فایل json را پس می گیریم. سپس دو متغیر ایجاد می کنیم و آنها را به دما و هوای شهر کاربر اختصاص می دهیم.
بنابراین ، در حال حاضر ، با این کد ، ما دو متغیر داریم. ما یک شناسه آب و هوا و دما در کلوین داریم
مرحله 3: کدگذاری: استفاده از آن داده ها
اکنون که این دو متغیر را داریم ، باید آنها را برای استفاده در LEDS خود آماده کنیم. برای این جنبه ، ما مجبور نیستیم هیچ ماژولی را برای این کار وارد کنیم.
ابتدا کلوین را به فارنهایت تبدیل می کنیم.
ما این کار را با ایجاد یک متغیر با این نحو انجام می دهیم
دمای شهر = = (دمای_شهر K - 273)*1.8 + 32
که از کلوین به فارنهایت تبدیل می شود (که واقعاً از K -> C -> F تبدیل می شود)
بعدی weatherID ما است. weatherID یک شناسه است که Openweather ارائه می دهد و در مورد شرایط آب و هوایی یک شهر به ما می گوید.
openweathermap.org/weather-conditions در اینجا لیستی از آنها وجود دارد.
ما متوجه شدیم که همه چیز زیر عدد 700 نوعی بارندگی است ، بنابراین ما فقط بررسی کردیم که کد زیر 700 است یا نه تا ببینیم باران می بارد.
def CheckRain (IdCode): اگر IdCode <700: return True other: return False
با استفاده از آن ، ما دو متغیر خود را برای استفاده با پین های Raspberry PI و LED Diodes آماده کرده ایم.
مرحله 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
Cold_LED_PIN = 6
باران_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. OTUP) GPIO_OT، GPIO. OT، GPIO_OT، GPIO_OT، GPIO_OT، GPIO_OT، GPIO_OT، GPIO_OT، GPIO_OT، GPIO_OT
با این حال ، این کد فقط به ما اجازه می دهد از دو حالت با led استفاده کنیم ، یعنی روشن و خاموش. با این حال ، ما به آن نیاز داریم تا بتوانیم نورها را کم کنیم. برای این کار از مدولاسیون عرض پالس استفاده می کنیم.
استفاده از مدولاسیون عرض پالس
مدولاسیون عرض پالس به ما امکان می دهد با استفاده از یک پین دیجیتال یک سیگنال آنالوگ را خروجی دهیم. در اصل ، منبع سیگنال را با سرعت بالا روشن می کند و به طور متوسط به ولتاژ خاصی می رسد. 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): #معادله چپ: y = -(50/20) x + 175 #معادله راست: y = (50/20) x -75 بازگشت -((50/20)*دما F + 175
def getmiddlerightledintensity (TemperatureinF):
#معادله چپ: y = - (50/20) x + 175 #معادله راست: y = (50/20) x - 75 بازگشت (50/20)*دما F - 75
def getextremeleftledintensity (TemperatureinF):
#سمت چپ: y = - (100/30) x + 200 #معادل درست: y = (100/30) x - (400/3)
بازگشت -(100/30)*دما در F + 200
def getextremerightledintensity (TemperatureinF):
# LeftEquation: y = - (100/30) x + 200 # rightEquation: y = (100/30) x - (400/3)
بازگشت (100/30)*دما در F - (400/3)
#تنظیم چراغ های LED
def GetLEDBrightness (temp):
اگر دما <= 0: extremecoldled = 100 coldled = 100 داغ = 0 extremehotled = 0
چاپ ("سرما شدید:" + str (سرد سرد))
چاپ ("سرد سرد:" + str (سرد شده)) چاپ ("led hot extreme" + str (extremehotled)) چاپ ("Hot led:" + str (hotled))
ExtremeColdLED.start (extremecoldled)
ColdLED.start (سرد شده)
ExtremeHotLED.start (extremehotled)
HotLED.start (hotled) elif temp> = 100: extremecoldled = 0 coldled = 0 داغ = 100 extremehotled = 100
چاپ ("سرما شدید:" + str (سرد سرد))
چاپ ("سرد سرد:" + str (سرد شده)) چاپ ("led hot extreme" + str (extremehotled)) چاپ ("Hot led:" + str (hotled))
ExtremeColdLED.start (extremecoldled)
ColdLED.start (سرد شده)
ExtremeHotLED.start (extremehotled)
HotLED.start (hotled) elif 0 <temp <= 30: extremecoldled = getextremeleftledintensity (temp) - 100 coldled = 100 hotled = 0 extremehotled = 0
چاپ ("سرما شدید:" + str (سرد سرد))
چاپ ("سرد سرد:" + str (سرد شده)) چاپ ("led hot extreme" + str (extremehotled)) چاپ ("Hot led:" + str (hotled))
ExtremeColdLED.start (extremecoldled)
ColdLED.start (سرد شده)
ExtremeHotLED.start (extremehotled)
HotLED.start (hotled) elif 100> temp> = 70: extremecoldled = 0 coldled = 0 hotled = 100 extremehotled = getextremerightledintensity (temp) - 100
چاپ ("سرما شدید:" + str (سرد سرد))
چاپ ("سرد سرد:" + str (سرد شده)) چاپ ("led hot extreme" + str (extremehotled)) چاپ ("Hot led:" + str (hotled))
ExtremeColdLED.start (extremecoldled)
ColdLED.start (سرد شده)
ExtremeHotLED.start (extremehotled)
HotLED.start (hotled) elif 30 <temp <50: extremecoldled = 0 coldled = getmiddleleftledintensity (temp) hotled = 100 - coldled extremehotled = 0
چاپ ("سرما شدید:" + str (سرد سرد))
چاپ ("سرد سرد:" + str (سرد شده)) چاپ ("led hot extreme" + str (extremehotled)) چاپ ("Hot led:" + str (hotled))
ExtremeColdLED.start (extremecoldled)
ColdLED.start (سرد شده)
ExtremeHotLED.start (extremehotled)
HotLED.start (hotled) elif 50 <temp <70: hotled = getmiddlerightledintensity (temp) extremehotled = 0
سرد شده = 100 - گرم شده
extremecoldled = 0
چاپ ("سرما شدید:" + str (سرد سرد))
چاپ ("چراغ سرد:" + str (سرد شده)) چاپ ("led hot extreme" + str (extremehotled)) چاپ ("hot led:" + str (hotled))
ExtremeColdLED.start (extremecoldled)
ColdLED.start (سرد شده)
ExtremeHotLED.start (extremehotled)
HotLED.start (hotled) elif temp == 50: extremecoldled = 0 coldled = 50 داغ = 50 extremehotled = 0
چاپ ("سرما شدید:" + str (سرد سرد))
چاپ ("چراغ سرد:" + str (سرد شده)) چاپ ("led hot extreme" + str (extremehotled)) چاپ ("hot led:" + str (hotled))
ExtremeColdLED.start (extremecoldled)
ColdLED.start (سرد شده)
ExtremeHotLED.start (extremehotled)
HotLED.start (داغ)
خوب ، این بخش کد واقعا طولانی است. توضیح آن نیز بسیار سخت است. در اصل ، کد بالا به دما در فارنهایت نگاه می کند و تعیین می کند که در مجموعه ای از محدوده ها باشد. بسته به دامنه ها ، برای هر led و روشنایی آن یک عدد می دهد و سپس با فراخوانی دستور start () روشنایی را تنظیم می کند. این توضیح سریع است. اگر کافی است ، توصیه می کنم به مرحله بعدی بروید ، اما اگر می خواهید توضیحات طولانی و خسته کننده را ببینید ، به خواندن ادامه دهید.
وقتی برنامه نویسی کردیم ، تصمیم گرفتیم ساده ترین راه برای بدست آوردن مقدار از دما ، در قالب یک تابع ریاضی است. بنابراین ، ما یک نمودار در GeoGebra ایجاد کردیم تا رابطه بین دما و روشنایی LED را نشان دهیم. دلیل بالاتر رفتن از 100 این است که اضافی به led دوم می رود. با این حال ، ما با مسئله دریافت یک تابع واحد برای ترسیم همه این نقاط به یک تابع مواجه شدیم. ما فکر می کردیم که می توانیم از یک پارابولا استفاده کنیم ، اما تصمیم گرفتیم فقط به استفاده از یک سری از دستورات بسنده کنیم. در اصل ، کل این کد یک تابع قطعه قطعه است.
توابع در بالا معادله مربوطه خطوط هستند. هنگامی که درجه حرارت را روی نمودار تعیین می کنیم ، آن را از طریق آن تابع اجرا می کنیم ، روشنایی را بدست می آوریم و آن را به led ها منتقل می کنیم.
مرحله 6: کدگذاری: مراحل نهایی
در نهایت ، این عبارت را در انتها اضافه می کنیم.
تلاش كردن:
while (True): GetLEDBrightness (City_TemperatureF) GetRainLED (WeatherID) time.sleep (10) به جز صفحه کلید وقفه: ترک ()
دستورات try و else به ما اجازه می دهد تا با استفاده از یک میانبر صفحه کلید ، کد را خارج کنیم. در هر صورت ، برای راه اندازی مجدد کد ، باید Raspberry Pi را خاموش کنیم. سپس یک حلقه while داریم که برای همیشه اجرا می شود. ما led ها را به روز می کنیم و همچنین LED باران را به روز می کنیم. ده ثانیه مکث می کنیم. OpenWeather فقط 60 تماس برای داده در دقیقه را امکان پذیر می کند و 10 ثانیه به روز رسانی فراوان است.
و با این کار ، کد ما به پایان رسید. در زیر کد به پایان رسیده است.
RaspberryPIWeatherStation.py
درخواست های وارداتی |
importRPi. GPIOasGPIO |
importjson |
زمان واردات |
کدهای #Openweather کمتر از 700 بارندگی هستند |
defCheckRain (IdCode): |
ifIdCode <700: |
returnTrue |
دیگری: |
returnFalse |
defgetmiddleleftledintensity (TemperatureinF): |
#معادله چپ: y =-(50/20) x + 175 |
#معادله راست: y = (50/20) x - 75 |
بازگشت- (50/20)*دما در F+175 |
defgetmiddlerightledintensity (TemperatureinF): |
#معادله چپ: y =-(50/20) x + 175 |
#معادله راست: y = (50/20) x - 75 |
بازگشت (50/20)*دما در F-75 |
defgetextremeleftledintensity (TemperatureinF): |
#SeftEquation: y = -(100/30) x + 200 |
#معادله راست: y = (100/30) x - (400/3) |
بازگشت- (100/30)*دما در F+200 |
defgetextremerightledintensity (TemperatureinF): |
# LeftEquation: y = -(100/30) x + 200 |
# حق معادله: y = (100/30) x - (400/3) |
بازگشت (100/30)*دما در F- (400/3) |
راه اندازی #GPIO |
GPIO.setmode (GPIO. BCM) |
GPIO.setwarnings (False) |
#پین |
Extreme_Hot_LED_PIN = 26 |
Hot_LED_PIN = 16 |
Extreme_Cold_LED_PIN = 5 |
Cold_LED_PIN = 6 |
باران_LED_PIN = 23 |
#راه اندازی پین |
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) |
defGetLEDBrightness (temp): |
iftemp <= 0: |
extremecoldled = 100 |
سرد شده = 100 |
داغ = 0 |
extremehotled = 0 |
چاپ ("سرما شدید:"+str (سرد سرد)) |
چاپ ("چراغ سرد:"+خیابان (سرد شده)) |
چاپ ("led hot extreme"+str (extremehotled)) |
چاپ ("چراغ گرم:"+str (گرم)) |
ExtremeColdLED.start (extremecoldled) |
ColdLED.start (سرد شده) |
ExtremeHotLED.start (extremehotled) |
HotLED.start (داغ) |
eliftemp> = 100: |
extremecoldled = 0 |
سرد شده = 0 |
داغ = 100 |
extremehotled = 100 |
چاپ ("سرما شدید:"+str (سرد سرد)) |
چاپ ("چراغ سرد:"+خیابان (سرد شده)) |
چاپ ("led hot extreme"+str (extremehotled)) |
چاپ ("چراغ گرم:"+str (گرم)) |
ExtremeColdLED.start (extremecoldled) |
ColdLED.start (سرد شده) |
ExtremeHotLED.start (extremehotled) |
HotLED.start (داغ) |
elif0 <temp <= 30: |
extremecoldled = getextremeleftledintensity (temp) -100 |
سرد شده = 100 |
داغ = 0 |
extremehotled = 0 |
چاپ ("سرما شدید:"+str (سرد سرد)) |
چاپ ("چراغ سرد:"+خیابان (سرد شده)) |
چاپ ("led hot extreme"+str (extremehotled)) |
چاپ ("چراغ گرم:"+str (گرم)) |
ExtremeColdLED.start (extremecoldled) |
ColdLED.start (سرد شده) |
ExtremeHotLED.start (extremehotled) |
HotLED.start (داغ) |
elif100> temp> = 70: |
extremecoldled = 0 |
سرد شده = 0 |
داغ = 100 |
extremehotled = getextremerightledintensity (temp) -100 |
چاپ ("سرما شدید:"+str (سرد سرد)) |
چاپ ("چراغ سرد:"+خیابان (سرد شده)) |
چاپ ("led hot extreme"+str (extremehotled)) |
چاپ ("چراغ گرم:"+str (گرم)) |
ExtremeColdLED.start (extremecoldled) |
ColdLED.start (سرد شده) |
ExtremeHotLED.start (extremehotled) |
HotLED.start (داغ) |
elif30 <temp <50: |
extremecoldled = 0 |
coldled = getmiddleleftledintensity (temp) |
داغ = 100-سرد شده |
extremehotled = 0 |
چاپ ("سرما شدید:"+str (سرد سرد)) |
چاپ ("چراغ سرد:"+خیابان (سرد شده)) |
چاپ ("led hot extreme"+str (extremehotled)) |
چاپ ("چراغ گرم:"+str (گرم)) |
ExtremeColdLED.start (extremecoldled) |
ColdLED.start (سرد شده) |
ExtremeHotLED.start (extremehotled) |
HotLED.start (داغ) |
elif50 <temp <70: |
hotled = getmiddlerightledintensity (temp) |
extremehotled = 0 |
سرد شده = 100 گرم |
extremecoldled = 0 |
چاپ ("سرما شدید:"+str (سرد سرد)) |
چاپ ("چراغ سرد:"+خیابان (سرد شده)) |
چاپ ("led hot extreme"+str (extremehotled)) |
print ("چراغ گرم:"+str (hotled)) |
ExtremeColdLED.start (extremecoldled) |
ColdLED.start (سرد شده) |
ExtremeHotLED.start (extremehotled) |
HotLED.start (داغ) |
eliftemp == 50: |
extremecoldled = 0 |
سرد شده = 50 |
داغ = 50 |
extremehotled = 0 |
چاپ ("سرما شدید:"+str (سرد سرد)) |
چاپ ("چراغ سرد:"+خیابان (سرد شده)) |
چاپ ("led hot extreme"+str (extremehotled)) |
چاپ ("چراغ گرم:"+str (گرم)) |
ExtremeColdLED.start (extremecoldled) |
ColdLED.start (سرد شده) |
ExtremeHotLED.start (extremehotled) |
HotLED.start (داغ) |
defGetRainLED (idCode): |
ifCheckRain (idCode): |
GPIO.output (Rain_LED_PIN ، GPIO. HIGH) |
دیگری: |
GPIO.output (Rain_LED_PIN ، GPIO. LOW) |
اطلاعات #Api: کلید API را با کلید apiweather خود جایگزین کنید |
openweather_api_key = "460a23f27ff324ef9ae743c7e9c32d7e" |
base_call = "https://api.openweathermap.org/data/2.5/weather؟q=" |
print ("در یک شهر تایپ کنید!") |
نام شهر = ورودی () |
full_call = base_call+city_name+"& appid ="+openweather_api_key |
#دریافت اطلاعات آب و هوا |
پاسخ = request.get (full_call) |
WeatherData = Response.json () |
WeatherID = WeatherData ["weather"] [0] ["id"] |
City_TemperatureK = WeatherData ["main"] ["temp"] |
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) |
به جز KeyboardIntruptrupt: |
ترک () |
مشاهده rawRaspberryPIWeatherStation.py با ❤ توسط GitHub میزبانی شده است
مرحله 7: ساخت و ساز و سیم کشی
وای! پس از آن همه کدگذاری ، به ساختمان می رسیم ، که بسیار ساده تر است.به دلیل سفارشات کرونا در خانه ماندن ، نتوانستیم به بسیاری از وسایلی که انتظار داشتیم در مدرسه داشته باشیم برسیم. بنابراین ، این بخش کمی ساده تر از آن چیزی است که ما در نظر داشتیم. مشخصات خود نیز قابل انعطاف است. ابتدا مستطیلی را روی تخته ای از چوب کشیدیم. اندازه خاص آن چندان اهمیت چندانی ندارد ، زیرا به سادگی به عنوان بستری برای قرار دادن LED و وسایل الکترونیکی عمل می کند.
سپس پنج پنجم 1/8 سوراخ قطعه چوب خود را حفر کردیم.
سپس مستطیل را از روی تخته برش می دهیم تا از آن بعنوان سکوی خود برای وسایل برقی خود استفاده کنیم.
(این زمانی بود که ما شروع کردیم ؛ ما اره بزرگتری پیدا کردیم!)
سپس پین های آند و کاتد led را به سوراخ ها فشار می دهیم. لامپها باید روی سطح قرار بگیرند ، لامپهای آنها بیرون زده است. پیگیری کنید که کدام پا بلندتر و کوتاهتر است. سپس تنظیم کردیم که سیم ها را با هم لحیم کنیم. ابتدا مقاومت ها را به پای آند LED (پای بلندتر) لحیم می کنیم.
سپس ، پایه های کاتدی LED ها را به یک سیم مسی لحیم می کنیم که از آن به عنوان زمین استفاده می کنیم. می بایست شبیه به این باشه.
پس از انجام این کار ، انتهای نر کابل های جهنده زن و مرد را به انتهای انتهای هر مقاومت و سیم مسی اتصال می دهیم. پس از انجام این کار ، می توانیم سیم ها را به پین های تمشک PI GPIO متصل کنیم. اینجا نمودار است! با این حال ، توجه داشته باشید ، پین ها همانهایی هستند که قبلاً در کد لمس شده بودند.
هنگامی که همه چیز را به هم متصل کردید ، اکنون تنها کاری که باید انجام دهید این است که فایل پایتون را روی رزبری پای ببرید و ترمینال را باز کنید. "python3 RaspberryPIWeatherStation.py" را اجرا کنید و سپس همانطور که نشان می دهد عمل کنید.
مرحله 8: نمایش و نتیجه گیری
ممنون که تمام راه را خواندید! اسکریپت پایتون را در زیر پیوست می کنم! اگر مواردی وجود داشت که می توانستیم اضافه کنیم ، احتمالاً…
1. پشتیبانی از انواع مختلف ورودی (شهرها ، نقاط جغرافیایی و غیره)
2. پشتیبانی از اطلاعات بیشتر آب و هوا
3. یک صفحه کوچک برای نشان دادن اطلاعات اضافه کنید
افکار خود را با ما درمیان بگذار! ساخت این پروژه سرگرم کننده بود. ما اطلاعات زیادی در مورد درخواست ها و دریافت اسناد اینترنتی با استفاده از پایتون آموختیم و همچنین در مورد استفاده از لحیم کاری اطلاعات زیادی آموختیم.
توصیه شده:
Raspberry Pi Internet Weather Station: 5 مرحله (همراه با تصاویر)
Raspberry Pi Internet Weather Station: *** Update *** این دستورالعمل قدیمی شده است. خدمات آب و هوا برای داده های آب و هوا ، در این دستورالعمل استفاده می شود ، دیگر کار نمی کند. با این حال ، یک پروژه جایگزین وجود دارد که اساساً همان کار را انجام می دهد (فقط بهتر - این دستورالعمل
ESP32 Weathercloud Weather Station: 16 مرحله (همراه با تصاویر)
ESP32 Weathercloud Weather Station: سال گذشته ، من بزرگترین Instructable تا به امروز ایستگاه هواشناسی Arduino Weathercloud Weather Station را منتشر کردم. من می گویم بسیار محبوب بود. در صفحه اصلی Instructables ، وبلاگ Arduino ، موزه Wiznet ، Instructables Instagram ، Arduino Instagr
Particle Photon IoT Personal Weather Station: 4 مرحله (همراه با تصاویر)
Particle Photon IoT Personal Weather Station:
Pocket ESP8266 Weather Station [No ThingsSpeak] [باتری کار می کند]: 11 مرحله
Pocket ESP8266 Weather Station [No ThingsSpeak] [باتری کار می کند]: ایستگاه هواشناسی جیبی که مخصوص کسانی است که برای متخصصان فناوری در آنجا نشسته و نظاره گر آموزش من هستند. بنابراین ، اجازه دهید در مورد این ایستگاه هواشناسی جیبی به شما بگویم. عمدتا این آب و هوای جیبی دارای مغز ESP8266 است و باتری را کار می کند زیرا H
Acoustic DISDRO Meter: Raspebbery Pi Open Weather Station (Part 2): 4 مرحله (همراه با تصاویر)
Acoustic DISDRO Meter: Raspebbery Pi Open Weather Station (Part 2): DISDRO مخفف توزیع قطره است. دستگاه اندازه هر قطره را با مهر زمان ثبت می کند. این داده ها برای برنامه های مختلف ، از جمله تحقیقات هواشناسی (آب و هوا) و کشاورزی مفید است. اگر disdro بسیار دقیق باشد ، می توانم