• Skip to primary navigation
  • Skip to main content

IoTmaker

사물인터넷에 대한 모든 것 여기서 해결하셔요!

  • 홈
  • 책:마이크로파이썬을 활용한 사물인터넷
  • 책:따라 하면서 배우는 사물인터넷
  • 온라인 교육 코스
  • 새로운 소식
  • 의견보내기
  • 내 수강정보
  • 로그인
  • 회원가입

AI 프롬프트 실습 9-3: BH1750Sensor 클래스 만들기

마이크로파이썬 > AI 프롬프트

프롬프트

file: ai-9-3-BH1750Sensor-클래스-만들기.md

  프롬프트 영역으로 마우스를 옮기고 Copy 버튼을 누르면 클립보드에 프롬프트의 내용이 복사됩니다.
(여기에 'ai-9-1-센서-클래스-템플릿.md'의 내용을 붙여 넣으세요)

components:
- sensor_calss:
    센서_모델: BH1750
    클래스_이름: BH1750Sensor
    pin_type: i2c_bus
    key_1: Brightness, 정수
    라이브러리: |
        import bh1750fvi 하지 말고 직접 코드 만들어 줘.

def main(): 
    import pinno as P 
    from parse import Parse

    i2c = I2C(0, scl=Pin(P.SCL), sda=Pin(P.SDA))
    sensor = BH1750Sensor(i2c_bus=i2c)
    while True:        
        data = sensor.read()
        print(data)
        p = Parse(data) 
        print(f'name: {p.name}, {p.key}: {p.value}')   

        time.sleep_ms(5000)

if __name__ == '__main__':
    main()  

AI가 만든 코드

프로그램: \lib\bh1750sensor.py

from machine import I2C, Pin
import time

class BH1750Sensor:
    """
    :param i2c_bus: I2C 버스를 사용하여 BH1750 센서를 초기화
    :param ser: 센서의 고유 식별자 (옵션)
    """
    def __init__(self, i2c_bus, ser=None) -> None:
        self.pin_or_bus = i2c_bus
        self.sensor_instance = i2c_bus  # i2c_bus 인스턴스 사용
        self.address = 0x23  # BH1750 기본 주소
        self._model: str = "BH1750"
        self._model_ser: str = f"{self._model}_{ser}" if ser else self._model
        self._sensor_count: int = 1  # BH1750은 하나의 센서로 동작
        self._names: list[str] = []
        self.name_first = True
        self._key: list[str] = ["Brightness"]
        self._value: list[any] = [None]
        self._dict = {}

        try:
            # 센서 초기화: 연속 고해상도 모드
            self.sensor_instance.writeto(self.address, b'\x10')
            time.sleep_ms(180)
        except OSError as e:
            print(f"오류: 장치 연결 실패 {e}")
            self._value = [None]

    def make_data(self):
        """
        센서 데이터를 읽어와서 _value에 저장
        """
        try:
            # BH1750 데이터 읽기
            data = self.sensor_instance.readfrom(self.address, 2)
            brightness = (data[0] << 8 | data[1]) / 1.2  # 조도 값 계산 (1.2로 나누기)
            self._value[0] = round(brightness)  # 조도 값은 소수점 0자리로 처리
        except OSError as e:
            print(f"오류 발생: {e}")
            self._value = [None]

    def make_dict(self):
        """
        _value 리스트의 데이터를 _dict로 변환
        """
        sensor_data = {self._key[0]: self._value[0]}
        self._dict[self._model_ser] = sensor_data

    def read(self):
        """
        센서 데이터를 읽고, 딕셔너리 형태로 반환
        """
        self.make_data()  # 센서 데이터를 먼저 읽음
        self.make_dict()  # 데이터를 딕셔너리로 구성
        return self._dict

def main(): 
    import pinno as P 
    from parse import Parse

    i2c = I2C(0, scl=Pin(P.SCL), sda=Pin(P.SDA))

    sensor = BH1750Sensor(i2c_bus=i2c)
    while True:        
        data = sensor.read()
        print(data)
        p = Parse(data)
        print(f'name: {p.name}, {p.key}: {p.value}')   

        time.sleep_ms(5000)

if __name__ == '__main__':
    main()

Copyright © 2025 ·로그인