ble_temperature.py

# هذا العمل مرخص بموجب ترخيص MIT.
# حقوق النشر (c) 2013-2023 OpenMV LLC. جميع الحقوق محفوظة.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# مثال حساس درجة الحرارة عبر BLE.

import time
from hts221 import HTS221
from board import LED
from machine import Pin, I2C
from ubluepy import Service, Characteristic, UUID, Peripheral, constants


def event_handler(id, handle, data):
    global periph, service, notif_enabled

    if id == constants.EVT_GAP_CONNECTED:
        # يشير إلى 'متصل'
        LED(1).on()
    elif id == constants.EVT_GAP_DISCONNECTED:
        # يشير إلى 'غير متصل'
        LED(1).off()
        # إعادة تشغيل البث الإعلاني (advertisement)
        periph.advertise(device_name="Temperature Sensor", services=[service])
    elif id == constants.EVT_GATTS_WRITE:
        # الكتابة إلى هذه الخاصية (Characteristic) موجهة إلى CCCD
        if int(data[0]) == 1:
            notif_enabled = True
        else:
            notif_enabled = False


# البدء مع إطفاء LED(1)
LED(1).off()

notif_enabled = False
uuid_service = UUID("0x181A")  # خدمة استشعار البيئة
uuid_temp = UUID("0x2A6E")  # خاصية درجة الحرارة

service = Service(uuid_service)
temp_props = Characteristic.PROP_READ | Characteristic.PROP_NOTIFY
temp_attrs = Characteristic.ATTR_CCCD
temp_char = Characteristic(uuid_temp, props=temp_props, attrs=temp_attrs)
service.addCharacteristic(temp_char)

periph = Peripheral()
periph.addService(service)
periph.setConnectionHandler(event_handler)
periph.advertise(device_name="Temperature Sensor", services=[service])

bus = I2C(1, scl=Pin(15), sda=Pin(14))
try:
    hts = HTS221(bus)
except OSError:
    from hs3003 import HS3003

    hts = HS3003(bus)

while True:
    if notif_enabled:
        temp = int(hts.temperature() * 100)
        temp_char.write(bytearray([temp & 0xFF, temp >> 8]))
    time.sleep_ms(100)

results matching ""

    No results matching ""