• Skip to primary navigation
  • Skip to main content

IoTmaker

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

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

AI 프롬프트 실습 : 공통 패턴 프롬프트

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

프롬프트

file: ai-patterns.md

  프롬프트 영역으로 마우스를 옮기고 Copy 버튼을 누르면 클립보드에 프롬프트의 내용이 복사됩니다.
patterns:
    code:
        설명: '입력 받은 내용을 그대로 코드변환합니다'
        매개변수: text
        코드변환: |
            {{text}}    
    i2c:
        설명: 'i2c bus를 만든다.'
        매개변수: 
            i2c_bus: i2c       
            no: 0        
            scl_pin: Pin(P.SCL)
            sda_pin: Pin(P.SDA)
        코드변환: |
            from machine import I2C
            {{i2c_bus}} = I2C({{no}}, scl={{scl_pin}}, sda={{sda_pin}})
    spi:
        설명: 'spi bus를 만든다.'
        매개변수:
            spi_bus: spi
            no: 1
            sck_pin: P.SCK
            mosi_pin: P.MOSI
            miso_pin: P.MISO
        코드변환: |
            from machine import SPI
            {{spi_bus}} = SPI({{no}}, sck={{sck_pin}}, mosi={{mosi_pin}}, miso={{miso_pin}})
    sdcard_mount_make_next_file:
        매개변수:
            cs_pin: P.CS
            file_prefix: data
            file_digits: 3
            file_ext: json
        코드변환: |
            from usesdcard import UseSDCard 
            sd = UseSDCard(spi_bus=spi,cs_gpio={{cs_pin}})
            ok,msg = sd.mount_sdcard()
            ok, message = sd.make_next_file(prefix='{{file_prefix}}',digits={{file_digits}},ext='{{file_ext}}')
            print(f'file 초기화({sd.get_file()})')
    rtc:
        매개변수: 
            이름: rtc
            i2c_bus: i2c
        코드변환:
            from ds1307 import DS1307
            {{이름}} = ds1307.DS1307(i2c={{i2c_bus}})
    date_time_str_func:
        방법: rtc.datetime()으로 바꾸지 말 것
        코드변환:
            def data_time_str_func():
                year, month, day, hour, minute, second, week_day, sub_second = rtc.datetime
                date_time_str = f'{year:02d}-{month:02d}-{day:02d} {hour:02d}:{minute:02d}:{second:02d}'
                return date_time_str
    
    바이너리_센서:
        설명: '바이너리 센서를 작동한다'
        매개변수:
            pin_instance: 
            run_instance: run
            inverted: False
            callback_on:
            callback_off:
        코드변환: |
            from binarysensor import BinarySensor 
            {{이름}} = BinarySensor(pin_instance={{pin_instance}},inverted={{inverted}},callback_on={{callback_on}},callback_off={{callback_off}}) 
            {{run_instance}}.add({{이름}}.run)
    DHT22:
        매개변수:
            이름: dht
            pin_gpio: P.DHT
        코드변환: |
            from dht22sensor import DHT22Sensor
            {{이름}} = DHT22Sensor(pin_gpio={{pin_gpio}})

    dht22:
        매개변수:
            이름: dht22
            pin_gpio: P.DHT
        코드변환: |
            from dht22sensor import DHT22Sensor
            {{이름}} = DHT22Sensor(pin_gpio={{pin_gpio}})

    조도: 
        매개변수:
            이름: bh1750
            i2c_bus: i2c
        from bh1750sensor import BH1750Sensor
        {{이름}} = BH1750Sensor({{i2c_bus}})

    bh1750: 
        alias: 조도

    LED:
        매개변수:
            이름: 
            pin_instance:  
            inverted: False             
        코드변환: |
            from blink import Blink
            {{이름}} = Blink(pin_instance={{pin_instance}},inverted={{inverted}})
            run.add({{이름}}.run)
    릴레이:
        매개변수:
            이름: 
            pin_instance:  
            inverted: False      
        코드변환: |            
            from blink import Blink
            {{이름}} = Blink(pin_instance={{pin_instance}},inverted={{inverted}})
            run.add({{이름}}.run)
    아날로그 센서:
        매개변수:
            이름: 
            pin_instance: 
        코드변환: |
            from machine import ADC
            {{이름}} = ADC({{pin_instance}})
            gas.atten(ADC.ATTN_11DB)
    버튼_PRESSED: 
        방법: {{callback}}은 문자열로 처리하지 말 것. 
        매개변수:
            이름: 
            pin_instance: 
            inverted: True
            callback:            
        코드변환: |            
            from button import Button
            {{이름}} = Button(pin_instance={{pin_instance}},inverted={{inverted}})
            {{이름}}.add(Button.PRESSED,callback={{callback}})
            run.add({{이름}}.run)
    부저:
        매개변수:
            이름: 
            pin_instance: 
            inverted: False
            callback:   
        코드변환: |
            from blink import Blink
            {{이름}} = Blink(pin_instance={{pin_instance}},inverted={{inverted}})
            run.add({{이름}}.run)
    타이머: 
        방법: {{callback}}은 문자열로 처리하지 말 것. 
        매개변수:
            이름:
            period: 
            callback:   
        코드변환: |
            from timerrun import TimerRun
            {{이름}} = TimerRun(period={{period}},callback={{callback}}) 
            run.add({{이름}}.run)

    OLED: 
        코드변환: |
            from ssd1306 import SSD1306_I2C  # OLED 라이브러리
            from hangul import draw_hangul, V2, H2, X4  # 한글 출력 모듈
            WIDTH = 64
            HEIGHT = 48
            oled = SSD1306_I2C(WIDTH, HEIGHT, i2c)
    oled: 
        alias: OLED

    set_on_off_str:
        매개변수:
            이름: 
            토픽: 
        코드변환:|
            if topic == f'cmnd/{C.DEVICE}/{{토픽}}':
                {{이름}}.set_on_off_str(msg)
                mqtt.publish(f'stat/{C.DEVICE}/{{토픽}}',{{이름}}.on_off()) 
    variable_int:
        방법: {{prefix}}가 없으면 ''로 처리할 것
        매개변수:
            prefix: 
            토픽: 
            변수:
        코드변환: |
            {{prefix}}if topic == f'cmnd/{C.DEVICE}/{{토픽}}':
                {{변수}}  = int(msg)
                print(f'new {{변수}}: {{{변수}}}')  
                mqtt.publish(f'stat/{C.DEVICE}/{{토픽}}',str({{변수}}))
    cmnd_TELEPERIOD:
        코드변환: |
            if topic == f'cmnd/{C.DEVICE}/TELEPERIOD':
            TELEPERIOD = int(msg)
            timer_sensor.set(period=TELEPERIOD * 1000)
            tele_msg = {'TELEPERIOD': msg}
            mqtt.publish(f'stat/{C.DEVICE}/TELEPERIOD', msg, retain=True)
            mqtt.publish(f'tele/{C.DEVICE}/INFO', tele_msg, retain=True)
            print(f'TELEPERIOD가 {msg}초로 변경되었습니다.')
    센서_읽기_앞부분: 
        코드변환: |
            import json
            from timerrun import TimerRun
            from run import Run
            from parse import Parse
            import pinno as P

            run = Run()
    센서_읽기_뒷부분: 
        코드변환: |
            def main():
                while True:
                    run.run()
            
            if __name__ == '__main__':
                main()
    프로그램_앞부분: 
        코드변환: |
            from machine import Pin,I2C,ADC,SPI
            from umqtt.simple import MQTTClient
            import json
            from timerrun import TimerRun
            from run import Run
            from usemqttclient import UseMQTTClient 
            from parse import Parse
            import pinno as P
            import config as C

            run = Run()
    프로그램_뒷부분: 
        코드변환: |
            def mqtt_on_connect():
                print('on_connect() called')
                msg = {'TELEPERIOD': TELEPERIOD}
                mqtt.publish(f'tele/{C.DEVICE}/INFO', msg, retain=True)
                on_connect_more()   

            def mqtt_callback(in_topic,in_msg):
                global TELEPERIOD
                topic = in_topic.decode()
                msg   = in_msg.decode()
                
                print(f'RCV> {topic}, |{msg}|')
                    
                if topic == f'cmnd/{C.DEVICE}/TELEPERIOD':
                    TELEPERIOD = int(msg)
                    timer_sensor.set(period=TELEPERIOD*1000)
                    tele_msg = {'TELEPERIOD': msg}
                    mqtt.publish(f'stat/{C.DEVICE}/TELEPERIOD', msg, retain=True)
                    mqtt.publish(f'tele/{C.DEVICE}/INFO', tele_msg, retain=True )
                    print(f'TELEPERIOD가 {msg}초로 변경되었습니다.')
                else:
                    callback_more(topic,msg)

            def send_data():
                data = read_sensors_more()
                mqtt.publish(f'tele/{C.DEVICE}/SENSOR',json.dumps(data))

            client = MQTTClient(C.MQTT_CLIENT_ID, C.MQTT_SERVER,port=C.MQTT_PORT,
                                user=C.MQTT_USER, password=C.MQTT_PASS,keepalive=60)
            mqtt = UseMQTTClient(client,C.DEVICE,C.SSID,C.SSID_PASS,mqtt_callback,mqtt_on_connect)
            run.add(mqtt.run)

            timer_sensor = TimerRun(period=TELEPERIOD*1000,callback=send_data)
            run.add(timer_sensor.run)

            def main():        
                
                while True:
                    run.run()
                    
            if __name__ == '__main__':
                main()

앞의 patterns:에서 정의된 내용을 참조하여 아래에 지정된 components:를 마이크로파이썬 코드변환로 만들어 주세요.
코드변환는 기계적으로 변환만 하고 새롭게 생성하지 마세요.
중복된 import는 생략하세요.
함수는 그 함수를 사용하는 코드변환보다 앞 쪽으로 옮기세요.

Copyright © 2025 ·로그인