[파이썬] `Kivy`로 IoT 애플리케이션 개발하기

Kivy logo

Kivy는 파이썬으로 크로스 플랫폼 애플리케이션을 개발할 수 있는 오픈 소스 프레임워크입니다. Kivy를 사용하면 동일한 코드로 모바일, 데스크톱, 웹 등 다양한 플랫폼에서 동작하는 애플리케이션을 개발할 수 있습니다. 본 포스트에서는 Kivy를 이용하여 간단한 IoT 애플리케이션을 개발하는 방법에 대해 알아보겠습니다.

Kivy 소개

Kivy는 GUI(Graphical User Interface)와 멀티터치 애플리케이션을 개발하기 위해 설계된 파이썬 프레임워크입니다. Kivy는 선언적 언어로서, 화면 요소들을 정의하고 동작을 정의할 수 있습니다. 이를 통해 사용자 인터페이스의 디자인과 로직을 분리하여 개발할 수 있습니다.

IoT 애플리케이션 개발하기

본 포스트에서는 Kivy를 이용하여 LED를 제어하는 간단한 IoT 애플리케이션을 개발해보겠습니다. 이 애플리케이션은 터치 이벤트를 감지하여 LED를 켜거나 끌 수 있습니다.

필요한 라이브러리 설치

먼저, KivyAdafruit Blinka 라이브러리를 설치해야 합니다. Adafruit BlinkaKivy에서 하드웨어 제어를 위해 사용됩니다.

pip install kivy adafruit-blinka

애플리케이션 개발

import time
import busio
import board
import digitalio
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout

class MainApp(App):
    def build(self):
        self.label = Label(text="LED 상태: 꺼짐")
        self.button = Button(text="LED 켜기", on_release=self.toggle_led)
        layout = BoxLayout()
        layout.add_widget(self.label)
        layout.add_widget(self.button)
        return layout

    def toggle_led(self, instance):
        with busio.I2C(board.SCL, board.SDA) as i2c:
            led = digitalio.DigitalInOut(board.D18)
            led.direction = digitalio.Direction.OUTPUT
            led.value = not led.value
            if led.value:
                self.label.text = "LED 상태: 켜짐"
            else:
                self.label.text = "LED 상태: 꺼짐"

if __name__ == "__main__":
    MainApp().run()

위의 코드는 Kivy 애플리케이션 클래스를 정의하고, 화면에 라벨과 버튼을 추가한 뒤, 버튼을 누를 때 Adafruit Blinka 라이브러리를 사용하여 LED를 제어하는 코드입니다.

애플리케이션 실행

아래 명령을 실행하여 애플리케이션을 실행할 수 있습니다.

python main.py

화면에는 라벨과 버튼이 표시되며, 버튼을 누를 때마다 LED가 켜지거나 꺼집니다.

결론

이처럼 Kivy를 이용하여 간단한 IoT 애플리케이션을 개발할 수 있습니다. Kivy는 다양한 기능과 예제 코드들이 제공되어 있으며, 이를 참고하여 사용자 인터페이스를 디자인하고 로직을 구현할 수 있습니다. 또한, Kivy를 사용하면 파이썬 개발자들이 원하는 플랫폼에서 애플리케이션을 개발할 수 있으므로 편리합니다.