جدول المحتويات:

محطة الطقس Raspberry PI LED: 8 خطوات
محطة الطقس Raspberry PI LED: 8 خطوات

فيديو: محطة الطقس Raspberry PI LED: 8 خطوات

فيديو: محطة الطقس Raspberry PI LED: 8 خطوات
فيديو: Raspberry Pi: 1 Channel Relay control with a Mobile Phone step by step 2024, يوليو
Anonim
محطة الطقس Raspberry PI LED
محطة الطقس Raspberry PI LED

أنشأنا محطة Raspberry PI Weather LED. إنه يخبر المستخدم عن مدى سخونة وبرودة المدينة من خلال إضاءة وتعتيم المصابيح. كما أنه يحتوي على دليل لإخبارهم ما إذا كانت السماء تمطر في المدينة التي كتبوها أم لا.

تم إنشاؤها بواسطة مايكل أندروز وتيو ماريلو.

اللوازم

أدوات

  1. لحام حديد
  2. دريميل
  3. رأى

المواد

  1. Raspberry Pi 3 B + ~ 40 دولار ~ 30 دولار
  2. أسلاك توصيل من أنثى إلى ذكر ~ 7 دولارات
  3. 3 ثنائيات LED زرقاء و 2 حمراء ~ 11 دولار
  4. 100 مقاومات أوم ~ 13 دولار
  5. 4 × 4 × 1/4 لوح خشب ~ 5 دولارات
  6. جندى ~ 10 دولارات
  7. الأسلاك النحاسية ~ 5 دولارات

الخطوة 1: البرمجة كحل للمشكلة

الترميز هو حل مشكلة

إذن ، في مشروعنا ، ما هي مشكلتنا؟ مشكلتنا هي الحصول على بيانات الطقس ثم استخدام تلك البيانات لإخبار LEDS الخاصة بنا ما إذا كانت مطفأة أو قيد التشغيل. هذا يقسم مشكلتنا إلى ثلاث مناطق.

1. الحصول على بيانات الطقس

2. استخدام تلك البيانات

3. استخدام المصابيح

ومع ذلك ، فإن اللغة التي استخدمناها لهذا المشروع ، Python ، والأجهزة التي يتم تشغيلها عليها ، Python ، توفر لنا طريقة سهلة لتحقيق هذه الأهداف.

لذا ، لنبدأ بالمشكلة الأولى ، وهي الحصول على بيانات الطقس.

الخطوة الثانية: الترميز: الحصول على بيانات الطقس

لا تستطيع Python في حد ذاتها الحصول على بيانات الطقس. علينا استيراد أداتين ، بالإضافة إلى خدمة خارجية ، للحصول على بيانات الطقس. للقيام بذلك ، نستخدم ثلاث أدوات.

1. الطلبات ، وحدة Python التي تسمح بالتقاط الويب

2. Json ، وحدة بيثون تسمح لنا باستخدام تنسيق ملف JSON

3. OpenWeather ، موقع إلكتروني يمكنه تزويدنا ببيانات الطقس

لذلك ، نحضر الوحدتين من خلال كتابة هذا الرمز في الجزء العلوي من نص Python الخاص بنا.

طلبات الاستيراد

استيراد 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 # أخيرًا نسمي طلبات الحصول على عنواننا ، ثم نقوم بتحويله إلى ملف json Response = request.get (full_call) WeatherData = Response.json () تحتوي ملفات #JSON على متغيرات مختلفة يمكننا الوصول إليها باستخدام بناء الجملة هذا # هنا نحصل على معرف الطقس ودرجة الحرارة في كلفن بالمدينة التي كتبها المستخدم في WeatherID = WeatherData ["الطقس"] [0] ["id"] City_TemperatureK = WeatherData ["main"] ["temp"]

هنا لدينا الكود الذي يعطينا بيانات الطقس. تأخذ الطلبات ، في شكل request.get ، عنوان موقع ويب وتعطينا ملفًا من هذا الموقع مرة أخرى. يعطينا OpenWeather عنوانًا للاتصال به لتزويدنا ببيانات الطقس في شكل json. نقوم بتجميع عنوان نقوم بإدخاله في الطلبات واستعادة ملف json. ثم نقوم بإنشاء متغيرين وخصصهما لدرجة الحرارة والظروف الجوية لمدينة المستخدم.

الآن ، بهذه الشفرة ، لدينا متغيرين. لدينا معرف الطقس ودرجة الحرارة في كلفن

الخطوة 3: الترميز: استخدام تلك البيانات

الآن بعد أن أصبح لدينا هذين المتغيرين ، يتعين علينا إعدادهما لاستخدامهما لمؤشر LEDS الخاص بنا. بالنسبة لهذا الجانب ، لا يتعين علينا استيراد أي وحدات لهذا الغرض.

أولًا ، نحول كلفن إلى فهرنهايت.

نقوم بذلك عن طريق إنشاء متغير بهذه الصيغة

City_TemperatureF = (City_TemperatureK - 273) * 1.8 + 32

الذي يحول من كلفن إلى فهرنهايت (والذي يتم تحويله بالفعل من K -> C -> F)

التالي هو معرف الطقس لدينا. معرف الطقس هو معرف توفره Openweather والذي يخبرنا عن أحوال الطقس في المدينة.

openweathermap.org/weather-conditions فيما يلي قائمة بها.

لقد لاحظنا أن كل شيء أقل من 700 رقم كان نوعًا من هطول الأمطار ، لذلك قمنا بفحص ما إذا كان الرمز أقل من 700 لمعرفة ما إذا كانت السماء تمطر.

def CheckRain (IdCode): إذا كان IdCode <700: إرجاع True else: return False

مع ذلك ، لدينا متغيرين مُعدَّين للاستخدام مع دبابيس Raspberry PI وثنائيات LED.

الخطوة 4: التشفير: استخدام RPi. GPIO و LED Diodes

الترميز: استخدام RPi. GPIO وثنائيات LED
الترميز: استخدام RPi. GPIO وثنائيات LED

يأتي RaspberryPi مزودًا بمجموعة من المسامير الذكرية التي يمكننا استخدامها للتواصل مع مجموعة من المكونات الكهربائية ، والتي في هذه الحالة هي صمامات ثنائية LED ؛ إنه أقرب إلى Arduino ونظامه. ومع ذلك ، فإن Raspberry PI هو جهاز كمبيوتر للأغراض العامة ، على عكس المتحكم الدقيق مثل Arduino. لذا ، يتعين علينا بذل المزيد من الجهد لاستخدامها. يتكون هذا من إعداد المسامير على Raspberry Pi. نقوم بذلك باستخدام هذا الرمز.

استيراد RPi. GPIO كـ GPIO # نحن نستورد الوحدة حتى نتمكن من استخدامها

# قم بإعداد pinGPIO.setmode (GPIO. BCM) GPIO.set warnings (False)

# المسامير التي تم توصيل مصابيح LED بها. قد تكون هذه مختلفة إذا قمت ببنائها ، لذا تأكد من المقارنة والتغيير عند الضرورة

Extreme_Hot_LED_PIN = 26 Hot_LED_PIN = 16

Extreme_Cold_LED_PIN = 5

Cold_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.setup (Extreme_Hot_LED_OUTIN)

ومع ذلك ، سيسمح لنا هذا الرمز فقط باستخدام حالتين مع الصمام ، أي تشغيل وإيقاف. ومع ذلك ، نحن بحاجة إلى أن نكون قادرين على إطفاء الأنوار. للقيام بذلك ، نستخدم تعديل عرض النبض.

باستخدام تعديل عرض النبض

يتيح لنا تعديل عرض النبض إخراج إشارة تناظرية باستخدام دبوس رقمي. بشكل أساسي ، يتم تشغيل وإيقاف تشغيل مصدر الإشارة بمعدل مرتفع ، والذي يصل متوسطه إلى جهد معين. يسمح لنا 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

نظرًا لأن لدينا أربعة مصابيح LED مختلفة ، فنحن نريد أن نضيءها اعتمادًا على الكيفية. يكون الجو باردًا أو ساخنًا في مدينة المستخدم. قررنا أن يكون لدينا أربع مراحل للقيادة.

#المهام

def getmiddleleftledintensity (TemperatureinF): # المعادلة اليسرى: y = - (50/20) x + 175 # المعادلة اليمنى: y = (50/20) x - 75 return - (50/20) * درجة الحرارة inF + 175

def getmiddlerightledintensity (TemperatureinF):

# المعادلة اليسرى: y = - (50/20) x + 175 # المعادلة الصحيحة: y = (50/20) x - 75 إرجاع (50/20) * درجة الحرارة inF - 75

def getextremeleftled كثافة (درجة الحرارة في فهرنهايت):

# المعادلة اليسرى: y = - (100/30) x + 200 # المعادلة الصحيحة: y = (100/30) x - (400/3)

العودة - (100/30) * درجة الحرارة inF + 200

def getextremerightled كثافة (درجة الحرارة في فهرنهايت):

# المعادلة اليسرى: y = - (100/30) x + 200 # المعادلة اليمنى: y = (100/30) x - (400/3)

العودة (100/30) * درجة الحرارة inF - (400/3)

# إعداد مصابيح LED

def GetLEDBrightness (درجة الحرارة):

إذا كانت درجة الحرارة <= 0: شديدة البرودة = 100 باردة = 100 مسخن = 0 درجة حرارة عالية = 0

طباعة ("مصباح LED شديد البرودة:" + str (شديد البرودة))

طباعة ("LED بارد:" + str (بارد) طباعة ("مصباح LED شديد الحرارة" + str (Extremehotled)) طباعة ("LED ساخن:" + str (hotled))

ExtremeColdLED.start (شديد البرودة)

كولد ليد.ستارت (كولدليد)

ExtremeHotLED.start (المدقع)

HotLED.start (hotled) elif temp> = 100: أقصى درجة حرارة مبردة = 0 باردًا = 0 ساخنًا = 100 درجة حرارة عالية جدًا = 100

طباعة ("مصباح LED شديد البرودة:" + str (شديد البرودة))

طباعة ("LED بارد:" + str (بارد)) طباعة ("مصباح LED ساخن للغاية" + str (شديد الحرارة)) طباعة ("مصباح LED ساخن:" + str (hotled))

ExtremeColdLED.start (شديد البرودة)

كولد ليد.ستارت (كولدليد)

ExtremeHotLED.start (المدقع)

HotLED.start (ساخن) elif 0 <temp <= 30: maxecoldled = getextremeleftledintensity (temp) - 100 coldled = 100 hotled = 0 extrahotled = 0

طباعة ("مصباح LED شديد البرودة:" + str (شديد البرودة))

طباعة ("LED بارد:" + str (بارد) طباعة ("مصباح LED شديد الحرارة" + str (Extremehotled)) طباعة ("LED ساخن:" + str (hotled))

ExtremeColdLED.start (شديد البرودة)

كولد ليد.ستارت (كولدليد)

ExtremeHotLED.start (المدقع)

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

طباعة ("مصباح LED شديد البرودة:" + str (شديد البرودة))

طباعة ("LED بارد:" + str (بارد)) طباعة ("مصباح LED ساخن للغاية" + str (شديد الحرارة)) طباعة ("مصباح LED ساخن:" + str (hotled))

ExtremeColdLED.start (شديد البرودة)

كولد ليد.ستارت (كولدليد)

ExtremeHotLED.start (المدقع)

HotLED.start (hotled) elif 30 <temp <50: maxecoldled = 0 coldled = getmiddleleftledintensity (temp) hotled = 100 - coldled المدقع = 0

طباعة ("مصباح LED شديد البرودة:" + str (شديد البرودة))

طباعة ("LED بارد:" + str (بارد) طباعة ("مصباح LED شديد الحرارة" + str (Extremehotled)) طباعة ("LED ساخن:" + str (hotled))

ExtremeColdLED.start (شديد البرودة)

كولد ليد.ستارت (كولدليد)

ExtremeHotLED.start (المدقع)

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

بارد = 100 - يسخن

أقصى حد = 0

طباعة ("مصباح LED شديد البرودة:" + str (شديد البرودة))

طباعة ("LED بارد:" + str (بارد) طباعة ("مصباح LED شديد الحرارة" + str (Extremehotled)) طباعة ("LED ساخن:" + str (hotled))

ExtremeColdLED.start (شديد البرودة)

كولد ليد.ستارت (كولدليد)

ExtremeHotLED.start (المدقع)

HotLED.start (ساخن) elif temp == 50: أقصى درجة حرارة باردة = 0 باردًا = 50 ساخنًا = 50 درجة حرارة عالية جدًا = 0

طباعة ("مصباح LED شديد البرودة:" + str (شديد البرودة))

طباعة ("LED بارد:" + str (بارد)) طباعة ("مصباح LED ساخن للغاية" + str (شديد الحرارة)) طباعة ("مصباح LED ساخن:" + str (hotled))

ExtremeColdLED.start (شديد البرودة)

كولد ليد.ستارت (كولدليد)

ExtremeHotLED.start (المدقع)

HotLED.start (ساخن)

حسنًا ، هذا القسم من الكود طويل حقًا. من الصعب أيضًا شرح ذلك. بشكل أساسي ، ينظر الكود أعلاه إلى درجة الحرارة بالفهرنهايت ، ويحدد ما إذا كانت في مجموعة من النطاقات. اعتمادًا على النطاقات ، فإنه يعطي رقمًا لكل مؤشر سطوع وسطوعه ، ثم يضبط السطوع عن طريق استدعاء الأمر start (). هذا هو التفسير السريع. إذا كان ذلك كافياً ، فإنني أوصيك بالانتقال إلى الخطوة التالية ، ولكن إذا كنت تريد رؤية الشرح الطويل والممل ، فاستمر في القراءة.

عندما قمنا بالبرمجة ، قررنا أن أسهل طريقة للحصول على قيمة من درجة الحرارة هي في شكل دالة رياضية. لذلك ، أنشأنا رسمًا بيانيًا في GeoGebra لتمثيل العلاقة بين درجة حرارتنا والسطوع الذي يقودنا ؛ والسبب في ارتفاعه فوق 100 هو أن الزيادة ستنتقل إلى الصمام الثاني. ومع ذلك ، واجهنا مشكلة الحصول على وظيفة واحدة لتعيين كل هذه النقاط إلى وظيفة واحدة. اعتقدنا أنه يمكننا استخدام القطع المكافئ ، لكننا قررنا الاكتفاء باستخدام سلسلة من عبارات if. في جوهرها ، هذا الرمز بأكمله هو دالة متعددة التعريف.

الوظائف الموجودة في الجزء العلوي هي معادلة الخطوط ذات الصلة. بمجرد تحديد درجة الحرارة على الرسم البياني ، نقوم بتشغيلها من خلال هذه الوظيفة ، والحصول على السطوع ، ثم تمريرها إلى المصابيح.

الخطوة السادسة: البرمجة: الخطوات النهائية

أخيرًا ، نضيف هذا البيان في النهاية.

محاولة:

while (True): GetLEDBrightness (City_TemperatureF) GetRainLED (WeatherID) time.sleep (10) باستثناء KeyboardInterrupt: إنهاء ()

تسمح لنا عبارات try and except بالخروج من التعليمات البرمجية باستخدام اختصار لوحة المفاتيح ؛ على أي حال ، سيتعين علينا إغلاق Raspberry Pi لإعادة تشغيل الكود. ثم لدينا حلقة الوقت التي تعمل إلى الأبد. نقوم بتحديث المصابيح ، وكذلك تحديث LED للمطر. نتوقف لمدة عشر ثوان. يسمح OpenWeather فقط بـ 60 مكالمة للبيانات في الدقيقة ، و 10 ثوانٍ هي الكثير من التحديثات.

وبهذا ، تم الانتهاء من الكود الخاص بنا. يوجد أدناه الكود النهائي.

RaspberryPIWeatherStation.py

طلبات مهمة
importRPi. GPIOasGPIO
استيراد
وقت الاستيراد
#Openweather idCodes أقل من 700 هي كل الترسبات
defCheckRain (IdCode):
ifIdCode <700:
عودة صحيح
آخر:
عودة كاذبة
defgetmiddleleftled الشدة (درجة الحرارة في فهرنهايت):
# المعادلة اليسرى: y = - (50/20) x + 175
# المعادلة الصحيحة: y = (50/20) x - 75
العودة- (50/20) * درجة الحرارة inF + 175
defgetmiddler شدة الضوء (درجة الحرارة في فهرنهايت):
# المعادلة اليسرى: y = - (50/20) x + 175
# المعادلة الصحيحة: y = (50/20) x - 75
العودة (50/20) * درجة الحرارة inF-75
defgetextremeleftled كثافة (درجة الحرارة في فهرنهايت):
# المعادلة اليسرى: ص = - (100/30) × + 200
# المعادلة الصحيحة: y = (100/30) x - (400/3)
العودة- (100/30) * درجة الحرارة inF + 200
defgetextremer كثافة عالية (درجة الحرارة في فهرنهايت):
# المعادلة اليسرى: y = - (100/30) x + 200
# المعادلة الصحيحة: y = (100/30) x - (400/3)
العودة (100/30) * درجة الحرارة inF- (400/3)
إعداد #GPIO
GPIO.setmode (GPIO. BCM)
تحذيرات GPIO (خطأ)
# دبابيس
Extreme_Hot_LED_PIN = 26
Hot_LED_PIN = 16
Extreme_Cold_LED_PIN = 5
Cold_LED_PIN = 6
Rain_LED_PIN = 23
# إعداد بين
GPIO.setup (Rain_LED_PIN ، GPIO. OUT)
إعداد GPIO (Extreme_Cold_LED_PIN ، GPIO. OUT)
GPIO.setup (Cold_LED_PIN ، GPIO. OUT)
GPIO.setup (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)
defGetLED السطوع (درجة الحرارة):
iftemp <= 0:
أقصى حد = 100
كولدليد = 100
يسخن = 0
اكستريموتليد = 0
طباعة ("مصباح LED شديد البرودة:" + str (شديد البرودة))
طباعة ("LED بارد:" + str (coldled))
طباعة ("مصباح LED شديد الحرارة" + str (شديد الحرارة)
print ("Hot led:" + str (hotled))
ExtremeColdLED.start (شديد البرودة)
كولد ليد.ستارت (كولدليد)
ExtremeHotLED.start (المدقع)
HotLED.start (ساخن)
eliftemp> = 100:
أقصى حد = 0
كولدليد = 0
يسخن = 100
اكستريموتلد = 100
طباعة ("مصباح LED شديد البرودة:" + str (شديد البرودة))
طباعة ("LED بارد:" + str (coldled))
طباعة ("مصباح LED شديد الحرارة" + str (شديد الحرارة)
print ("Hot led:" + str (hotled))
ExtremeColdLED.start (شديد البرودة)
كولد ليد.ستارت (كولدليد)
ExtremeHotLED.start (المدقع)
HotLED.start (ساخن)
elif0 <درجة الحرارة <= 30:
أقصى شدة = getextremeleftledintensity (درجة الحرارة) -100
كولدليد = 100
يسخن = 0
اكستريموتليد = 0
طباعة ("مصباح LED شديد البرودة:" + str (شديد البرودة))
print ("Cold led:" + str (coldled))
طباعة ("مصباح LED شديد الحرارة" + str (شديد الحرارة)
print ("Hot led:" + str (hotled))
ExtremeColdLED.start (شديد البرودة)
كولد ليد.ستارت (كولدليد)
ExtremeHotLED.start (المدقع)
HotLED.start (ساخن)
elif100> درجة الحرارة> = 70:
أقصى حد = 0
كولدليد = 0
يسخن = 100
Extremehotled = getextremerightledintensity (درجة الحرارة) -100
طباعة ("مصباح LED شديد البرودة:" + str (شديد البرودة))
print ("Cold led:" + str (coldled))
طباعة ("مصباح LED شديد الحرارة" + str (شديد الحرارة)
print ("Hot led:" + str (hotled))
ExtremeColdLED.start (شديد البرودة)
كولد ليد.ستارت (كولدليد)
ExtremeHotLED.start (المدقع)
HotLED.start (ساخن)
elif30 <درجة الحرارة <50:
أقصى حد = 0
كولدليد = getmiddleleftledintensity (درجة الحرارة)
يسخن = 100 بارد
اكستريموتليد = 0
طباعة ("مصباح LED شديد البرودة:" + str (شديد البرودة))
print ("Cold led:" + str (coldled))
طباعة ("مصباح LED شديد الحرارة" + str (شديد الحرارة)
print ("Hot led:" + str (hotled))
ExtremeColdLED.start (شديد البرودة)
كولد ليد.ستارت (كولدليد)
ExtremeHotLED.start (المدقع)
HotLED.start (ساخن)
elif50 <درجة الحرارة <70:
hotled = getmiddlerightledintensity (درجة الحرارة)
اكستريموتليد = 0
كولدليد = 100-يسخن
أقصى حد = 0
طباعة ("مصباح LED شديد البرودة:" + str (شديد البرودة))
طباعة ("LED بارد:" + str (coldled))
طباعة ("مصباح LED شديد الحرارة" + str (شديد الحرارة)
print ("Hot led:" + str (hotled))
ExtremeColdLED.start (شديد البرودة)
كولد ليد.ستارت (كولدليد)
ExtremeHotLED.start (المدقع)
HotLED.start (ساخن)
eliftemp == 50:
أقصى حد = 0
كولدليد = 50
يسخن = 50
اكستريموتليد = 0
طباعة ("مصباح LED شديد البرودة:" + str (شديد البرودة))
طباعة ("LED بارد:" + str (coldled))
طباعة ("مصباح LED شديد الحرارة" + str (شديد الحرارة)
print ("Hot led:" + str (hotled))
ExtremeColdLED.start (شديد البرودة)
كولد ليد.ستارت (كولدليد)
ExtremeHotLED.start (المدقع)
HotLED.start (ساخن)
defGetRainLED (idCode):
ifCheckRain (idCode):
GPIO.output (Rain_LED_PIN ، GPIO. HIGH)
آخر:
GPIO.output (Rain_LED_PIN ، GPIO. LOW)
# معلوماتApi: Repalce API key باستخدام مفتاح oepnweather api الخاص بك
openweather_api_key = "460a23f27ff324ef9ae743c7e9c32d7e"
base_call = "https://api.openweathermap.org/data/2.5/weather؟q="
print ("اكتب في مدينة!")
city_name = المدخلات ()
full_call = base_call + city_name + "& appid =" + openweather_api_key
# الحصول على بيانات الطقس
الاستجابة = request.get (full_call)
WeatherData = Response.json ()
WeatherID = WeatherData ["الطقس"] [0] ["المعرف"]
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)
time.sleep (10) الوقت.
باستثناء لوحة المفاتيح
استقال()

عرض rawRaspberryPIWeatherStation.py مستضاف مع ❤ بواسطة GitHub

الخطوة 7: البناء والتوصيل

يا للعجب! بعد كل هذا الترميز ، نصل إلى المبنى ، وهو أسهل بكثير.بسبب كورونا البقاء في المنزل ، لم نتمكن من الحصول على العديد من الأدوات التي توقعنا الحصول عليها في المدرسة. إذن ، هذا الجزء أبسط قليلاً مما قصدناه. التفاصيل نفسها مرنة أيضًا. أولاً ، رسمنا مستطيلاً على لوح من الخشب. لا يهم الحجم المحدد كثيرًا حقًا ، لأنه يعمل ببساطة كمنصة لوضع المصابيح والإلكترونيات عليها.

ثم قمنا بحفر خمسة 1/8 في ثقوب في قطعة الخشب الخاصة بنا.

ثم قطعنا المستطيل من اللوح الخشبي لاستخدامه كمنصة لدينا للإلكترونيات.

(كان هذا عندما بدأنا ؛ وجدنا منشارًا أكبر!)

ثم نقوم بدفع دبابيس الأنود والكاثود في الفتحات ؛ يجب أن توضع المصابيح فوقها ، وأن تبرز مصابيحها ؛ تتبع أي ساق أطول وأقصر. ثم بدأنا في لحام الأسلاك معًا. أولاً نقوم بلحام المقاومات بساق الأنود الخاصة بمؤشر LED (الساق الأطول).

بعد ذلك ، نقوم بلحام أرجل الكاثود الخاصة بمصابيح LED بسلك نحاسي واحد سنستخدمه كأرضي. يجب أن تبدو هذه.

بعد القيام بذلك ، نقوم بتلحيم الأطراف الذكرية لكابلات التوصيل من أنثى إلى ذكر حتى نهايات كل مقاوم والسلك النحاسي الأرضي. بمجرد القيام بذلك ، يمكننا البدء في توصيل الأسلاك في دبابيس raspberry PI GPIO. هنا رسم تخطيطي! ومع ذلك ، لاحظ أن الدبابيس هي تلك الموجودة في الكود الذي تم لمسه مسبقًا.

بمجرد الانتهاء من كل ذلك ، كل ما عليك فعله الآن هو الحصول على ملف Python على raspberry Pi وفتح المحطة. قم بتشغيل "python3 RaspberryPIWeatherStation.py" ثم افعل ما يظهر.

الخطوة 8: العرض والاستنتاج

شكرا على القراءة طوال الطريق! سوف أرفق نص python أدناه! إذا كانت هناك أشياء يمكننا إضافتها ، فمن المحتمل أن تكون …

1. دعم أنواع المدخلات المختلفة (مدن ، نقاط جغرافية ، إلخ.)

2. دعم لمزيد من معلومات الطقس

3. أضف شاشة صغيرة لإظهار المعلومات

دعنا نعرف أفكارك! كان هذا مشروعًا ممتعًا للبناء. لقد تعلمنا الكثير عن الطلبات والحصول على مستندات الإنترنت باستخدام Python ، وتعلمنا أيضًا الكثير عن استخدام اللحام.

موصى به: