분류 전체보기122 [임베디드] 전원 관리와 Sleep 모드 이번에는 실전 임베디드 시스템에서 배터리 수명을 늘리는 핵심 기술, 즉 Sleep 모드와 저전력 설계를 알아본다.소형 IoT 기기를 오래 사용하려면 꼭 필요한 실무 기술이라고 한다. 1. 왜 전원 관리가 중요한가?1.1 배터리 기반 IoT 기기의 현실항상 켜두면 전류 소모 ↑ → 배터리 수명 ↓예: 100mA로 24시간 동작 = 2.4Ah 필요 → 비효율적임1.2 해결책 → Sleep 모드센서를 항상 감시하지 않고, 주기적으로 깨워서 동작 후 다시 Sleep으로 전환평균 소비 전류를 수 μA~mA 수준으로 낮춤 2. Sleep 모드의 종류 (Arduino/AVR 기준) 모드소비전력깨어나는 방식Idle낮음타이머, 인터럽트ADC Noise더 낮음ADC 완료 인터럽트 등Power-down매우 낮음외부 인터.. 2025. 6. 15. [임베디드] 타이머와 인터럽트 오늘의 주제는 MCU의 타이머와 인터럽트를 활용해 센서 데이터를 정해진 주기마다 자동으로 수집하는 구조에 대해서이다.이건 실시간 모니터링, 로깅 시스템, 저전력 제어 등에서 매우 핵심적인 기술이라고 한다. 1. 왜 타이머/인터럽트가 필요한가?1.1 기존 구조의 문제점loop() { readSensor(); delay(1000); // 1초마다 반복}delay()는 MCU를 강제로 대기시켜서 다른 작업 불가능동시에 여러 작업을 하거나 정확한 타이밍 유지 어려움1.2 해결 방법 → 타이머 + 인터럽트백그라운드에서 주기적인 알람을 발생특정 시간이 되면 자동으로 함수 호출 (인터럽트 발생) 2. 핵심 개념 정리2.1 타이머 (Timer)MCU 내부의 카운터 회로초 단위가 아닌 마이크로초/밀리초 단위 시간.. 2025. 6. 15. [임베디드] I2C, SPI 개념 정리 오늘의 주제는 I2C, SPI 개념 정리, 즉 센서와 MCU의 인터페이스이다.이번에는 이전에 다뤘던 GPIO나 ADC처럼 직접 연결하는 단순한 방식이 아니라 센서 ↔ MCU 사이의 통신 규약, 특히 I2C와 SPI를 다룬다.I2C와 SPI는 여러 장치를 주소로 구분해서 한 라인으로 제어하는 구조인데,이후에 고급 센서나 여러 장치 제어할 때 필수로 익혀야 할 개념이라고 한다. 1. I2C와 SPI란?MCU가 여러 센서나 주변 장치와 효율적으로 데이터를 주고받기 위해 사용하는 통신 방식→ 동기식 직렬 통신(Serial Communication) 방식 2. SPI (Serial Peripheral Interface)2.1 특징4개의 핀 사용MOSI (Master Out Slave In)MISO (Master.. 2025. 6. 15. [임베디드] 디지털 입출력 예시 오늘은 이전에 배운 ADC(아날로그 입력) 값을 활용해서 디지털 출력 장치(LED, 릴레이, 부저 등)를 제어하는 실전 로직을 알아보는 날이다.가장 기본이면서도 실무에 반드시 필요한 조건 제어의 첫 개념이라고 한다. 1. 개요: 아날로그 입력 → 디지털 출력1.1 흐름도[LM35 온도센서] → A0 → [아날로그값 → 온도 계산] → [온도 30도 이상이면 LED ON] 2. 구성 부품LM35 (온도센서, 10mV/°C)LED 또는 릴레이 모듈아두이노 (UNO/Nano 등)A0, D2 핀 사용 3. 회로 연결LM35 센서:VCC → 5VGND → GNDOUT → A0LED:(+) → D2 (Arduino 디지털 출력)(–) → 220Ω 저항 → GND 4. 코드 예제 (Arduino)const in.. 2025. 6. 10. [임베디드] ADC란 무엇인가 오늘은 MCU가 디지털이 아닌 아날로그 신호를 어떻게 읽는지에 대한 핵심인 ADC (Analog to Digital Converter) 를 알아본다. 1. 아날로그 vs 디지털1.1 디지털 신호0 또는 1로 구성됨 (HIGH or LOW)버튼 입력, LED 출력 등1.2 아날로그 신호전압이 연속적인 값 (예: 0.0V ~ 3.3V)온도, 조도, 습도, 거리 등 센서 값은 대부분 아날로그 2. ADC란?2.1 정의Analog to Digital Converter (ADC)→ 전압 신호를 MCU가 처리할 수 있도록 디지털 값으로 변환하는 기능.2.2 기본 개념 입력 전압ADC 해상도디지털 출력0.00V10-bit03.30V10-bit10231.65V10-bit512 (중간값)MCU는 전압을 직접 “읽는” 게.. 2025. 6. 9. FastAPI + SQLite 연동(센서 데이터 DB 저장) 이번 단계에선 FastAPI를 통해 받은 센서 데이터를 텍스트 로그가 아닌 실제 데이터베이스에 저장하는 구조로 확장하는 방법을 소개한다.우리는 가볍고 설정이 간편한 SQLite를 사용하고, 추후 PostgreSQL로도 적용해보도록 하자. 1. 사용할 패키지 설치pip install sqlalchemy fastapi uvicornsqlalchemy: Python ORM(Object Relational Mapper)fastapi: 웹 프레임워크uvicorn: 실행 서버 2. 전체 구조 개요FastAPI ← POST /sensor ↓ SQLAlchemy ↓ SQLite DB센서 데이터가 POST로 들어오면 SQLAlchemy가 자동으로 SQLite에 삽입해주는 구조이다.. 2025. 6. 8. FastAPI, IoT용 백엔드 서버 기초 오늘의 주제는 FastAPI로 센서 데이터를 수신하고 저장하는 백엔드 만들기이다.이번 실습에선 FastAPI로 센서 데이터용 REST API 서버를 만들고,POST 요청으로 데이터를 받아 로깅하거나 추후 DB에 저장할 수 있는 구조를 만들어본다.---1. FastAPI란?FastAPI는 Python 기반의 고성능 웹 프레임워크로,비동기 지원, 자동 문서화(Swagger), Pydantic 기반 유효성 검사를 제공한다.---2. 개발 환경 준비pip install fastapi uvicornfastapi: 핵심 프레임워크uvicorn: ASGI 서버 (FastAPI 실행용)---3. 기본 FastAPI 앱 예시from fastapi import FastAPIfrom pydantic import BaseMo.. 2025. 6. 7. Python - MQTT 토픽 구독, Publish 오늘의 주제는 여러 센서 데이터를 다양한 MQTT 토픽으로 퍼블리시하고, Python으로 구독해 처리하기이다.이건 실전 IoT에서 반드시 필요한 “다중 센서 처리” 흐름이라고 한다.1개의 MQTT 브로커에서 여러 센서 데이터를 구분된 토픽으로 전송하고,Python에서 이를 동시에 구독(Subscribe) 하여 각각 처리하는 구조를 다뤄보는 과정을 알아본다.---1. 전체 흐름[센서 게이트웨이] → MQTT Publish ├── iot/sensor/temp → "Temp: 26" ├── iot/sensor/humid → "Humid: 45" └── iot/sensor/door → "Open"[Python 수신기] → 각 토픽에 Subscribe → 개별 처리---2. MQTT Publish.. 2025. 6. 7. [임베디드] Mosquitto란? Mosquitto는 오픈소스 MQTT 브로커 소프트웨어다.Publisher가 발행한 메시지를 중간에서 받아서Subscriber에게 중계하는 MQTT 서버 역할을 수행한다.1. 설치 방법(Windows 기준)1.1. 공식 사이트 접속https://mosquitto.org/download/1.2. 설치 파일 다운로드 → 설치 진행1.3. 설치 후 C:\Program Files\mosquitto 또는 C:\mosquitto 경로 확인1.4. mosquitto.conf 설정 파일 확인 (기본 포트: 1883)1.5. 실행 방법mosquitto -v(-v는 verbose 로그 출력)---(Ubuntu 기준)sudo apt updatesudo apt install mosquitto mosquitto-clientss.. 2025. 6. 7. [임베디드] MQTT란 무엇인가? MQTT(Message Queuing Telemetry Transport)는IoT 기기 간 통신에 최적화된 경량 메시지 프로토콜이다.센서에서 수집된 데이터를 서버로 전송할 때,속도와 효율성, 연결 안정성을 모두 고려해 설계되었다.1. MQTT의 기본 구조MQTT는 Pub/Sub (Publish/Subscribe) 모델을 사용한다.[구성 요소]Publisher: 메시지를 전송하는 측 (센서, 게이트웨이 등)Subscriber: 메시지를 수신하는 측 (서버, 대시보드 등)Broker: 중간에서 메시지를 중계하는 서버→ Publisher는 메시지를 특정 Topic에 발행→ Subscriber는 원하는 Topic을 구독하여 수신2. 동작 흐름 예시2.1. 센서 게이트웨이 → iot/sensor/temp 토픽에 .. 2025. 6. 7. [펌웨어] 시리얼데이터와 MQTT 이전까지는 MCU가 보내는 시리얼 데이터를 Python으로 읽고 저장하는 데까지 해봤다.이제는 그 데이터를 MQTT 브로커로 퍼블리시하여 클라우드로 전송해보자.즉, 우리가 만드는 건 소형 IoT 게이트웨이다.1. MQTT란?MQTT (Message Queuing Telemetry Transport) 는경량 메시지 전송 프로토콜로, IoT에 최적화되어 있다.Publish/Subscribe 방식으로 센서 데이터를 전송함2. 사전 준비Python 3.x라이브러리 설치pip install paho-mqtt pyserial3. 전체 흐름MCU → 시리얼 데이터 → Python 수신 → MQTT 브로커로 퍼블리시 → 서버/클라우드 구독4. 예제 코드: 시리얼 데이터 → MQTT 전송import serialimpor.. 2025. 6. 1. [펌웨어] 시리얼 데이터 수신하고 로깅하기(Python) 이제까지 배운 UART 통신 구조를 PC 측에서 직접 수신하고 파일로 저장하는 실전 단계를 알아보자.이제 진짜 디버깅과 데이터 수집이 뭔지 알아보는 단계이다.지금까지 MCU에서 UART로 데이터를 보내는 구조를 익혔다.이번엔 Python에서 그 데이터를 직접 수신하고, 로그로 저장해보자.이번 아티클을 통해 MCU가 보낸 시리얼 데이터를 Python으로 받아서 직접 확인하고 로그로 저장하는 과정까지 해낼 수 있게 될 것이다.1. 필요한 준비물Python 3.xpyserial 패키지pip install pyserial2. 기본 코드 예제: 시리얼 읽기import serial# 시리얼 포트 설정ser = serial.Serial( port='COM3', # 또는 '/dev/ttyUSB0' (L.. 2025. 6. 1. 이전 1 2 3 4 ··· 11 다음