이 튜토리얼에서는 MicroPython에도 적용되는 Python의 기본 사항을 간략하게 살펴보았습니다. Arduino IDE를 사용하여 전자 장치를 프로그래밍하는 데 익숙하다면 MicroPython의 구문이 훨씬 더 직관적이고 사용자 친화적이라는 것을 알게 될 것입니다.
ESP32 및 ESP8266을 이용한 MicroPython 프로그래밍
ESP32 와 ESP8266을 이용한 MicroPython 프로그래밍 방법을 배워보세요 . MicroPython은 마이크로컨트롤러를 위해 새롭게 구현된 파이썬 프로그래밍 언어입니다.
몇 가지 사소한 차이점을 제외하면, 마이크로파이썬 프로그래밍은 파이썬 프로그래밍과 매우 유사합니다. 파이썬의 모든 언어 기능을 공유하기 때문입니다. 다만, 임베디드 시스템과 마이크로컨트롤러는 일반 PC에 비해 기능이 훨씬 제한적이기 때문에 마이크로파이썬에는 기본적으로 표준 라이브러리 전체가 포함되어 있지 않습니다.
이미 파이썬 프로그래밍 방법을 알고 있다면 마이크로파이썬 프로그래밍은 파이썬 프로그래밍과 동일합니다. 다만 마이크로파이썬은 제한된 기기에서만 사용할 수 있다는 점을 기억해야 합니다. 결과적으로 웹사이트 트래픽이 크게 증가할 수 있습니다.

이 글에서는 MicroPython에도 적용되는 Python 프로그래밍 언어 구문의 기본 사항을 설명합니다. 예를 들면 다음과 같습니다.
- 수학 연산자
- 관계 연산자
- 데이터 유형
- print() 함수
- 조건문
- while 루프와 for 루프
- 사용자 정의 함수
- 클래스와 객체
- 모듈
필수 조건
이 튜토리얼에서는 uPyCraft IDE를 사용하지만, 다른 프로그램을 사용하셔도 됩니다. uPyCraft IDE를 설치하고 시작하는 방법은 다음 튜토리얼을 참고하세요.
- ESP32 및 ESP8266에서 MicroPython 시작하기
- uPyCraft IDE를 설치하세요:
- ESP32 및 ESP8266에 MicroPython 펌웨어 플래싱/업로드
수학 연산자
MicroPython은 수학 연산을 수행할 수 있습니다. 다음 표는 지원되는 수학 연산자를 보여줍니다.
| 연산자 | 수학 연산 |
| + | 덧셈 |
| – | 빼기 |
| * | 곱셈 |
| / | 분할 |
| // | 나눗셈에서 소수점을 버립니다. |
| % | 나눗셈 후 나머지 |
셸에서 몇 가지 작업을 시도하여 어떻게 작동하는지 확인해 보세요. 예를 들면 다음과 같습니다.
>>> 2+2*9-3
17
>>> 28594/2312
12.36765
>>> 214522236/7.5
2.860297e+07
>>> 23//2
11
>>> 25%3
1
수학 모듈을 임포트하면 제곱근, 삼각 함수, 로그, 거듭제곱 등과 같은 더 많은 수학 연산을 수행할 수 있습니다.
관계 연산자
관계 연산자를 사용하면 비교를 수행할 수 있습니다. 이러한 연산자는 두 값 사이의 관계를 보여주고 양쪽 값을 비교합니다.
| 연산자 | 설명 |
| == | ~와 같음 |
| != | 같지 않다 |
| > | 보다 큰 |
| < | ~보다 |
| >= | 크거나 같음 |
| <= | 이하 |
여러 가지 비교를 시도하고 결과를 테스트해 보세요.
>>> 2 == 3
False
>>> 4 == 4
True
>>> 3 > 2
True
>>> 489808234 != 2223
True
>>> 4.5 >= 4.5
True
변수에 값 할당하기
파이썬에서는 각 변수의 타입을 일일이 선언할 필요가 없습니다. 아두이노 IDE를 사용해서 보드를 프로그래밍해 본 경험이 있다면, 새 변수를 추가할 때 변수의 타입을 선언해야 한다는 것을 알고 있을 겁니다. 파이썬에는 그런 기능이 있습니다.
텍스트나 숫자와 같은 값의 경우, 변수는 단순히 값을 저장하는 자리 표시자일 뿐입니다. 변수에 값을 할당할 때는 등호(=)를 사용하고, 왼쪽에 변수 이름, 오른쪽에 값을 입력합니다.
예를 들어, LED가 연결된 GPIO 번호를 저장할 변수를 생성하려면 다음과 같이 간단히 입력하면 됩니다.
led_pin = 23
아두이노 IDE 에서는 다음과 같은 화면이 나타날 것입니다.
const int led_pin = 23;
보시다시피, 파이썬은(아두이노 IDE에서) C 언어로 프로그래밍하는 것보다 훨씬 간단합니다.
참고: 변수 이름은 대소문자를 구분해야 하며 공백을 포함할 수 없습니다. 따라서 led_pin은 LED_PIN 또는 Led_Pin과 다릅니다.
데이터 유형
변수는 정수만 저장하는 것이 아니라 다른 유형의 값도 저장할 수 있습니다. 바로 이 부분에서 데이터 유형이 중요한 역할을 합니다. 데이터 유형 분류는 값에 대해 어떤 연산을 수행할 수 있는지, 그리고 값을 어떻게 저장해야 하는지를 알려줍니다.
다음 표는 프로젝트에서 가장 자주 사용하게 될 데이터 유형을 보여줍니다.
| Data type | Description |
| int (Int) | Integer (whole number) |
| float (Float) | Number with a decimal point |
| str (String) | Set of characters between quotation marks |
| bool (Boolean) | True or False |
서로 다른 데이터 유형을 가진 변수를 만들어 봅시다.
>>> a = 6
>>> b = 95.32
>>> c = 'Hello World!'
>>> d = True
- a 에 처음으로 할당되는 값 은 정수 , 즉 자연수입니다.
- b 변수 는 소수점이 있는 숫자인 부동 소수점 값을 저장합니다 .
- 세 번째 값인 'Hello World!' 는 문자열 , 즉 문자들의 연속입니다. 문자열은 작은따옴표('Hello World!') 또는 큰따옴표("Hello World!") 안에 넣어야 합니다.
- 마지막으로, d 는 불리언 타입으로, True 또는 False 값만 가질 수 있습니다.
이 type()함수는 변수의 데이터 형식을 확인하는 데 사용할 수 있습니다. 이 함수는 데이터 형식을 확인하려는 변수를 인수로 받습니다.
type(variable)
예를 들어, 이전 예제에서 변수( a , b , c , d) 를 선언한 후에는 해당 변수의 데이터 유형을 확인할 수 있습니다. 예를 들어 다음과 같이 입력하면 됩니다.
>>> type(a)
다음과 같이 반환됩니다.
<class 'int'>
이는 a 가 정수(int) 임을 알려줍니다 . 다른 변수들을 사용해 실험해 보면 다음과 같은 결과를 얻을 수 있을 것입니다.
>>> type(b)
<class 'float'>
>>> type(c)
<class 'str'>
>>> type(d)
<class 'bool'>
print() 함수
대괄호 안에서 print() 함수는 메시지를 셸에 출력합니다. 코드 디버깅과 진행 상황 추적은 프로젝트에서 매우 유용합니다. 예를 들어:
>>> print('LED is on')
LED is on
>>> print('LED가 켜져 있습니다')
주석 Comment
파이썬 주석은 해시 문자(#)로 시작하여 줄 끝까지 이어집니다. 주석은 프로그램에 " 참고 사항 "을 추가하거나 스크립트를 읽는 사람에게 프로그램의 기능을 설명하는 데 유용합니다. 주석을 추가한다고 해서 프로그램의 기능이 추가되는 것은 아닙니다. 예를 들면 다음과 같습니다.
# 이건 그냥 댓글입니다
MicroPython은 제한된 환경에서 작동하기 때문에 ESP 메모리 공간을 절약하기 위해 주석 추가를 피해야 하는 경우가 있습니다.
조건문
유용한 프로그램을 작성하려면 주어진 조건이 참인지 거짓인지에 따라 다양한 작업을 수행해야 할 것입니다. 이때 조건문을 사용합니다. 다음은 조건문의 구조에 대한 설명입니다.
if <expr1>:
<statement1>
elif <expr2>:
<statement2>
elif <expr3>:
<statement3>
(...)
else:
<statementn>
<expr>은 부울 표현식이며, True 또는 False일 수 있습니다. True인 경우, 바로 뒤에 오는 <statement>가 실행됩니다. 각 표현식에 속하는 문장이 무엇인지 파이썬이 알 수 있도록 <statement>는 들여쓰기되어야 합니다.
elif 문 은 else if의 약자로, 첫 번째 if 조건이 참이 아닐 경우에만 실행됩니다.
else 문 은 다른 모든 표현식이 참이 아닐 경우에만 실행됩니다.
프로그램에는 elif 문을 무제한으로 사용할 수 있습니다. 다른 절을 반드시 포함해야 하는 것은 아니지만, 만약 포함해야 한다면 프로그램의 맨 끝에 와야 합니다.
아두이노 IDE 에서는 중괄호(#)를 사용하여 코드 블록을 정의합니다. 마이크로파이썬에서는 들여쓰기를 사용합니다. 각 표현식 뒤에는 콜론(:)을 추가해야 합니다. 아두이노 IDE와 달리 표현식을 괄호로 묶을 필요는 없습니다.
중요: 파이썬에서 표준 들여쓰기는 네 칸입니다. 마이크로컨트롤러의 메모리에 더 많은 코드를 저장하려면 MicroPython에서는 들여쓰기를 두 칸으로 줄여야 합니다.
while 루프와 for 루프
조건이 충족되는 한, 반복문을 사용하면 코드를 여러 번 실행할 수 있습니다. while 반복문과 for 반복문은 서로 다른 두 가지 유형의 반복문입니다. 예를 들어, while 반복문을 사용하면 1부터 10까지의 모든 숫자를 출력할 수 있습니다.
number = 1
while number <= 10:
print(number)
number = number + 1
숫자 변수의 값이 10 이하인 동안에는 들여쓰기로 표시된 while 루프 코드가 실행됩니다. 각 루프는 현재 숫자 뒤에 1을 더한 값을 출력합니다.
다음과 같이 for 루프 를 사용하여 1부터 10까지의 숫자를 출력할 수도 있습니다 .
number = 1
for number in range(1, 11):
print(number)
long형 변수의 값이 1에서 11 사이의 범위에 있는 동안 for 루프가 실행됩니다. range() 함수는 지정한 최종 값보다 1 작은 값이 될 때까지 자동으로 다음 값을 다음 변수에 할당합니다.
특정 횟수만큼 코드 블록을 반복 실행하고 싶을 때는 for 루프를 사용해야 합니다. 특정 조건이 더 이상 참이 아닐 때까지 코드를 반복 실행하고 싶을 때는 while 루프를 사용하십시오. 운이 좋다면 이런 방식으로도 취업할 수 있을지도 모릅니다.
for 및 while 부울 표현식은 조건문과 마찬가지로 바로 뒤에 콜론(:)을 붙여야 하며, 실행될 표현식은 들여쓰기해야 합니다.
사용자 정의 함수
새로운 함수를 정의하려면 `def`라는 단어 뒤에 함수에 부여할 범위를 쓰고 대괄호를 사용합니다 . 대괄호 뒤에 콜론(:)을 붙이고 함수가 수행할 작업을 지정합니다. MicroPython에서는 문장을 두 칸 들여쓰기해야 합니다. 예를 들면 다음과 같습니다.
def my_function(<arg1>, <arg2>, ...):
<statement>
(...)
return
예를 들어, 섭씨 온도를 화씨 온도로 변환하는 함수는 다음과 같습니다.
def celsius_to_fahrenheit(temp_celsius):
temp_fahrenheit = temp_celsius * (9/5) + 32
return temp_fahrenheit
celsius_to_fahrenheit () 함수는 섭씨 온도( temp_celsius )를 인수로 받습니다 . 그런 다음 온도를 화씨로 변환하는 계산을 수행하고 마지막으로 화씨 온도( temp_fahrenheit )를 반환합니다.
참고 : 함수는 반드시 어떤 값을 반환할 필요는 없습니다. 함수는 단순히 작업을 수행할 뿐, 아무것도 반환할 필요가 없습니다.
클래스와 객체
파이썬은 객체 지향 프로그래밍(OOP) 언어입니다. 클래스와 객체는 OOP에서 반드시 이해해야 할 두 가지 핵심 개념입니다.
클래스는 객체의 설계도입니다. 객체의 특징(데이터와 기능) 집합을 정의합니다. 메서드는 클래스 내부에 있는 함수들의 이름입니다. 클래스는 `class` 키워드 뒤에 클래스 이름 을 붙여 정의합니다 . 예를 들면 다음과 같습니다.
class MyClass:
(...)
참고: 파이썬에서 클래스 이름은 관례적으로 대문자로 시작하는 것이 좋습니다. 하지만 원하는 이름을 자유롭게 지정할 수 있습니다.
클래스의 인스턴스는 객체입니다. 간단히 말해, 데이터와 메서드로 구성된 단일 개체입니다. 객체가 속한 클래스의 모든 기능은 해당 객체를 통해 접근할 수 있습니다. 이해가 안 되시나요? 간단한 예제를 살펴보세요.
파이썬 프로그램에서 동일한 속성을 사용하여 여러 사람을 정의하고 싶다면 "사람"이라는 용어를 클래스로 생각할 수 있습니다. 이름, 나이, 국적 등의 속성을 사용하여 각 사람을 정의할 수 있습니다.

ESP32 및 ESP8266을 이용한 MicroPython 프로그래밍: 객체 클래스
따라서 " Person "이라는 이름의 클래스를 만들 수 있습니다. 이 클래스의 속성은 이름, 나이, 국가입니다. 필요에 따라 속성을 얼마든지 추가할 수 있습니다. 또한 클래스의 속성에 따라 해당 인물의 요약 정보를 출력하는 메서드(함수)를 만들겠습니다.
class Person:
name = ""
age = 0
country = ""
def description(self):
print("%s is %d years old and he is from %s." %(self.name, self.age, self.country))
보시다시피, 우리는 `class` 키워드 뒤에 클래스에 부여할 이름을 붙여 새로운 클래스를 정의합니다.
Person 클래스 내에 값을 저장할 수 있는 여러 변수를 정의합니다. 기본적으로 나이는 0이고, 이름과 국가는 빈 문자열입니다. 그런 다음 이러한 변수들의 모든 값을 셸에 출력하는 함수(메서드)를 정의합니다.
self 매개변수는 클래스 내의 모든 함수에 대한 인수로 전달되어야 하며, 필요한 다른 인수들도 함께 전달되어야 합니다.
`self` 매개변수는 실제 객체를 나타냅니다. 이 매개변수는 클래스에 속한 변수에 접근하는 데 사용됩니다. 예를 들어, 클래스 내부의 `name` 변수에 접근하려면 `self.name`을 사용해야 합니다.
방금 만든 클래스를 사용하면 원하는 만큼 Person 객체를 생성할 수 있습니다. Person 객체에는 이름, 나이, 국가가 포함됩니다. description()또한 해당 메서드를 사용하여 객체의 설명을 출력할 수도 있습니다.
예를 들어 person1 이라는 이름의 새로운 Person 객체를 생성하려면 다음과 같이 합니다 .
>>> person1 = Person()
객체의 속성을 설정합니다
person1 객체 의 이름 , 나이 , 국가를 설정하려면 다음과 같이 하면 됩니다.
>>> person1.name = "BokFive"
>>> person1.age = 40
>>> person1.country = "USA"
메서드 호출
description() 코드 뒷부분에서 모든 Person 객체의 created 메서드를 사용할 수 있습니다 . person1description() 객체 에서 해당 메서드를 호출하려면 다음과 같이 합니다 .
>>> person1.description()
다음과 같은 내용이 출력되어야 합니다.
BokFive is 40 years old and he is from USA.
이제 여러분은 동일한 클래스를 사용하여 원하는 만큼 객체를 생성할 수 있으며, 해당 클래스의 모든 메서드를 함께 사용할 수 있다는 것을 이해했을 것입니다.

ESP32 및 ESP8266을 이용한 MicroPython 프로그래밍: 객체 생성
생성자 메서드
클래스를 정의하고 객체의 속성을 설정하는 번거로운 과정을 생략하고 클래스 내부에 생성자 메서드를 사용할 수 있습니다.
클래스 객체가 생성되는 즉시 생성자 메서드를 사용하여 데이터가 시작됩니다. __init__ 메서드라고도 하는 생성자 메서드는 하나의 메서드입니다. __init__ 메서드를 사용할 때 Person() 클래스는 다음과 같습니다:
class Person():
def __init__(self, name, age, country):
self.name = name
self.age = age
self.country = country
def description(self):
print("%s is %d years old and he is from %s." %(self.name, self.age, self.country))
다음으로, 이전에 정의한 것과 동일한 속성을 가진 Person 객체를 생성하려면 다음과 같이 하면 됩니다.
>>> person1 = Person("BokFive", 40, "USA")
person1description() 객체 에서 해당 메서드를 호출하면 동일한 결과를 얻을 수 있습니다.
>>> person1.description()
BokFive is 40 years old and he is from USA.
모듈
모듈에 있는 클래스와 함수들을 코드에서 사용할 수 있습니다. 모듈은 파일입니다. 원한다면 라이브러리라고 부를 수도 있지만, 꼭 그럴 필요는 없습니다. 해당 모듈을 코드에 임포트하기만 하면 그 안에 있는 클래스와 함수들을 사용할 수 있습니다.
표준 파이썬 라이브러리에서 제공하는 미리 만들어진 모듈을 사용하거나 직접 만들 수 있습니다. 마이크로파이썬은 표준 파이썬 라이브러리의 일부만 포함하고 있지만, GPIO 제어, 네트워크 연결 등을 위한 다양한 모듈들을 제공합니다.
모듈/라이브러리 가져오기는 다음과 같이 간단합니다.
import module_name
예를 들어, GPIO를 제어하는 클래스가 포함된 머신 라이브러리를 가져오려면 다음을 입력합니다.
import machine
대부분의 프로그램에서는 하나의 모듈에 있는 모든 클래스가 필요하지 않습니다. 단 하나의 클래스만 가져오고 싶을 수도 있습니다. 예를 들어, 머신 모듈에서 Pin 클래스만 가져오는 경우처럼 말입니다.
from machine import pin

기계에서 가져온 핀 복사
결론
이 튜토리얼에서는 MicroPython에도 적용되는 Python의 기본 사항을 간략하게 살펴보았습니다. Arduino IDE를 사용하여 전자 장치를 프로그래밍하는 데 익숙하다면 MicroPython의 구문이 훨씬 더 직관적이고 사용자 친화적이라는 것을 알게 될 것입니다. Arduino 스케치와 MicroPython 프로그램 의 주요 차이점을 몇 가지 요약해 보겠습니다 .
- 문장 끝에는 세미콜론을 사용하지 않습니다.
- 조건문과 반복문에서 부울 표현식 뒤에는 콜론(:)을 사용합니다 .
- 코드 블록을 정의하려면 중괄호 {} 대신 들여쓰기를 사용하십시오.
- 변수를 만들 때 데이터 형식을 정의할 필요가 없으며, 변수를 선언할 필요도 없습니다.
- MicroPython에서 들여쓰기는 2칸입니다.
MicroPython이 마음에 드신다면 다음 항목들도 좋아하실 수 있습니다:
- How to Flash MicroPython Firmware to ESP32 and ESP8266
- Getting Started with MicroPython on ESP32 and ESP8266
- How to Install uPyCraft IDE on a Windows PC
이 튜토리얼이 유용하셨기를 바랍니다. 읽어주셔서 감사합니다.
자기 차례가 오지 않아도 절대 실망하지 마세요. 세상에는 학위를 가진 많은 거지들이 넘쳐납니다. 놀라운 재능을 가진 사람들은 단 한 번도 드러내지 못하고 사라진 사람들이 아주 읺습니다. 그러니 늘 삶을 즐기세요. 우리 차례를 다른 사람들의 순서에 할당되었다고 화내거나 기분 나빠할 필요가 없습니다. 우리는 충분히 여정을 즐겼으니까요.
'ESP32' 카테고리의 다른 글
| CrowPanel ESP32 Display 3.5인치 모듈 터치 기능 동작하지 않을 때 (0) | 2026.01.01 |
|---|---|
| ESP32 CrowPanel 3.5인치 디스플레이 디지털 시계 (0) | 2026.01.01 |
| ESP32 3.5inch TFT-LCD 개발 환경 설정 - 문서로 제공할 것 (0) | 2026.01.01 |
| ESP32 4G/5G 및 GPS 인터페이스 (0) | 2026.01.01 |
| DS3231 모듈을 사용한 ESP32 실시간 시계 (1) | 2025.12.26 |
| ESP32와 OLED 디스플레이를 이용한 인터넷 시계 (0) | 2025.12.26 |
| ESP-IDF Programming Guide (0) | 2025.12.24 |
| ESP32 타이머 구조와 타이머 인터럽트 실행 방법 (4) | 2025.12.24 |
취업, 창업의 막막함, 외주 관리, 제품 부재!
당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약,
아이디어는 있지만 구현할 기술이 없는 막막함.
우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.
이제 고민을 멈추고, 캐어랩을 만나세요!
코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.
제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!
귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.
캐어랩