Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Raspberry pi pico 2w
100 min
Share

كيفية بناء محطة طقس باستخدام لوحة راسبيرى باى بيكو

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

Project Video

Overview

Getting the Items

Raspberry Pi Pico 2 wireless
Get Item
2×16 LCD with I2C Module
Get Item
DHT11 Temperature & Humidity Sensor
Get Item
Air Quality Sensor (MQ-135)
Get Item
Active Buzzer - 5V
Get Item
1/4 Watt Resistor (20 Pack)
Get Item
Full-size Breadboard
Get Item
Jumper Wires - Male to Male (40 Pack)
Get Item
Jumper Wires – Male to Female (40 Pack)
Get Item

Steps

Wiring it Up

قم بتوصيل الأسلاك بين لوحة راسبيرى باى بيكو 2W والشاشة الكريستالية وحساس الحرارة والرطوبة وحساس جودة الهواء والصفارة كما فى الصورة التالية:

التوصيلات من لوحة راسبيرى باى بيكو 2W :

•نقوم بتوصيل منفذ ال VBUS بلوحة راسبيرى باى بيكو2W   ← المنافذ الموجبة بلوحة التجارب

•منفذ ال GND بلوحة راسبيرى باى بيكو2W  ←المنافذ السالبة بلوحة التجارب

التوصيلات من حساس الحرارة والرطوبة :

• منفذ ال VCC  للحساس ← المنافذ الموجبة بلوحة التجارب

• منفذ ال GND  للحساس ← المنافذ السالبة بلوحة التجارب

•  منفذ الأشارة للحساس  ← منفذ رقم 27 فى لوحة راسبيرى باى بيكو 2W

التوصيلات من حساس جودة الهواء MQ135:

• منفذ الVCC لحساس جودة الهواء  ← المنافذ الموجبة للوحة التجارب

• منفذ ال GNDلحساس جودة الهواء ← المنافذ السالبة للوحة التجارب

• منفذ A0  لحساس جودة الهواء ← الطرف الحر للمقاومة ال10 كيلو أوم

• الطرف الأوسط بين المقاومة 10 كيلو اوم والمقاومة 20 كيلو اوم ← منفذ رقم 26 في بلوحة راسبيرى باى بيكو 2W

• الطرف الأخر للمقاومة ال 20 كيلو اوم ← المنافذ السالبة بلوحة التجارب

التوصيلات من الشاشة الكريستالية:

• منفذ ال VCC للشاشة الكريستالية ← المنافذ الموجبة بلوحة التجارب

• منفذ ال GND للشاشة الكريستالية ← المنافذ السالبة بلوحة التجارب

• منفذ SDA للشاشة الكريستالية ← منفذ رقم 0 بلوحة راسبيرى باى بيكو 2W

• منفذ SCL للشاشة الكريستالية ← منفذ رقم 1 بلوحة راسبيرى باى بيكو 2W

التوصيلات من الصفارة:

• الطرف الموجب للصفارة ← منفذ رقم 16 في بلوحة راسبيرى باى بيكو 2W

• الطرف السالب للصفارة ← المنافذ السالبة بلوحة التجارب

Coding

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

'''

Voltaat Learn (http://learn.voltaat.com)

Link to the full tutorial:

Tutorial: Building a weather station using a Raspberry Pi Pico board.

The function of this code is to display the temperature and humidity on the LCD screen, as well as the air quality.

Note: You can use this sketch with any Raspberry Pi Pico.

'''

import machine

from machine import Pin, I2C, ADC

import time

import dht

from lcd_api import LcdApi

from pico_i2c_lcd import I2cLcd

# إعدادات شاشة LCD

I2C_ADDR = 0x27       # العنوان (قد يكون 0x3F حسب شاشتك)

I2C_NUM_ROWS = 2

I2C_NUM_COLS = 16

# تهيئة I2C

i2c = I2C(0, sda=machine.Pin(0), scl=machine.Pin(1), freq=400000)

lcd = I2cLcd(i2c, I2C_ADDR, I2C_NUM_ROWS, I2C_NUM_COLS)

# تهيئة حساس DHT11 على المنفذ GPIO0

sensor = dht.DHT11(Pin(27))

# تهيئة حساس MQ135 للجودة الهواء

mq135 = ADC(Pin(26))

buzzer = Pin(16, Pin.OUT)                  

# قيم معايرة حساس MQ135 (يمكن تعديلها حسب الحاجة)

CLEAN_AIR_VOLTAGE = 0.5    # الجهد في الهواء النظيف

POLLUTED_AIR_VOLTAGE = 2.5 # الجهد في الهواء الملوث

THRESHOLD_PERCENT = 80     # العتبة كنسبة مئوية (إذا تجاوزت 60% يتم تشغيل الإنذار)

lcd.clear()

lcd.putstr("Weather Station")

time.sleep(2)

def read_air_quality():

   """قراءة جودة الهواء وإرجاع الجهد والنسبة المئوية"""

   raw_value = mq135.read_u16()

   voltage = (raw_value / 65535) * 3.3

   

   # حساب النسبة المئوية لجودة الهواء

   # نطاق الجهد من CLEAN_AIR_VOLTAGE إلى POLLUTED_AIR_VOLTAGE

   if voltage <= CLEAN_AIR_VOLTAGE:

       air_quality_percent = 0

   elif voltage >= POLLUTED_AIR_VOLTAGE:

       air_quality_percent = 100

   else:

       # حساب النسبة المئوية بين القيمتين

       air_quality_percent = ((voltage - CLEAN_AIR_VOLTAGE) /

                            (POLLUTED_AIR_VOLTAGE - CLEAN_AIR_VOLTAGE)) * 100

   

   return voltage, int(air_quality_percent), raw_value

def check_air_quality(air_quality_percent):

   """التحقق من جودة الهواء وتشغيل الإنذار إذا لزم الأمر"""

   if air_quality_percent > THRESHOLD_PERCENT:

       # إذا كانت جودة الهواء سيئة → تشغيل الإنذار

       buzzer.value(1)

       time.sleep(0.1)

       buzzer.value(0)

       return "POOR"

   else:

       # إذا كانت جودة الهواء جيدة → إيقاف الإنذار

       buzzer.value(0)

       return "GOOD"

def get_air_quality_level(percent):

   """الحصول على مستوى جودة الهواء بناء على النسبة المئوية"""

   if percent <= 30:

       return "EXCELLENT"

   elif percent <= 60:

       return "GOOD"

   elif percent <= 80:

       return "MODERATE"

   else:

       return "POOR"

while True:

   try:

       # قراءة درجة الحرارة والرطوبة

       sensor.measure()

       temperature_celsius = sensor.temperature()

       humidity_percent = sensor.humidity()

       

       # قراءة جودة الهواء

       air_voltage, air_quality_percent, air_raw = read_air_quality()

       air_quality_status = check_air_quality(air_quality_percent)

       air_quality_level = get_air_quality_level(air_quality_percent)

       

       # عرض البيانات على الشاشة

       lcd.clear()

       lcd.move_to(0, 0)

       lcd.putstr("T:{}C H:{}%".format(temperature_celsius, humidity_percent))

       lcd.move_to(0, 1)

       lcd.putstr("Air:{}% {}".format(air_quality_percent, air_quality_level))

           

       # طباعة البيانات على Serial Monitor

       print("Temperature: {}°C, Humidity: {}%".format(temperature_celsius, humidity_percent))

       print("Air Quality: {}V, {}%, Status: {}, Level: {}".format(

           round(air_voltage, 2),

           air_quality_percent,

           air_quality_status,

           air_quality_level))

       print("Raw ADC: {}".format(air_raw))

       print("-" * 40)

       

       #time.sleep(1)

           

   except OSError as e:

       lcd.clear()

       lcd.putstr("Sensor Error")

       print("Failed to read sensor:", e)

       time.sleep(2)

Testing it Out

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

Resources

No items found.