전체 글234 [통신] ArduinoOTA의 동작 많이 헷갈리는 지점은 “내가 업로드 버튼을 눌렀으니 PC → ESP32 단방향일 것” 이라는 직관이다. 하지만 ArduinoOTA의 실제 프로토콜은 그렇게 단순하지 않다. ESP32의 ArduinoOTA 라이브러리는 OTA용 UDP 포트를 열어 두고, PC 쪽의 espota.py는 먼저 그 포트로 초대 메시지를 보낸다. 이후 espota.py는 자기 자신을 TCP 서버로 띄우고, ESP32가 그 서버에 연결해 들어오면 그때 바이너리를 전송한다. 이 구조 때문에 Windows 방화벽에서 특히 인바운드 규칙이 자주 문제 된다.역할부터 정확히 정리하기ArduinoOTA에서 장치 역할은 상황에 따라 두 단계로 나뉜다.구간PCESP32초기 제어 구간OTA 업로드를 시작시키는 쪽(UDP 초대 메시지 전송)OTA.. 2026. 3. 22. [ESP32] FOTA - 1 이번 글에서는 OTA의 기본 개념을 먼저 정리하고, 그 안에서 FOTA와 SOTA를 어떻게 이해하면 되는지 구분해본다. 그리고 실제로 ESP32에서 LED 깜빡임 예제에 OTA를 붙여,펌웨어를 원격으로 바꿔보는 가장 작은 형태의 FOTA 실습을 정리하려고 한다. 코드와 설명은 아래 github 참고https://github.com/PCY00/OTA_TEST?tab=readme-ov-file GitHub - PCY00/OTA_TESTContribute to PCY00/OTA_TEST development by creating an account on GitHub.github.comOTA는 무엇인가OTA는 Over-The-Air의 약자다.말 그대로 공중 무선망을 통해 업데이트를 전달하는 방식이다. 중요한 것.. 2026. 3. 21. [Moter] DC Moter Control - Up to the EnCoder 이번에 모터 제어를 공부하면서 가장 중요하게 생각한 것은, 무작정 PID 코드부터 복붙해서 돌리는 것이 아니라정말 처음부터 하나씩 이해하면서 올라가는 방식으로 진행하는 것이었다. 사용한 구성은 다음과 같다.Arduino UnoTB6612FNG 모터 드라이버JGB37-520 기어드 DC 모터엔코더 내장형 모터모터 핀 구성: M1 GND C2 C1 VCC M2이 글에서는 실제로 내가 어떤 순서로 실습했고, 그 과정에서 무엇을 이해하게 되었는지 정리한다.왜 처음부터 PID를 하지 않았는가처음 모터 제어를 공부할 때 가장 흔히 하는 실수가, 인터넷에서 PID 코드를 바로 가져와서 돌려보는 것이다.그런데 이렇게 하면 코드가 돌아가더라도 왜 그렇게 동작하는지 잘 모르게 된다.예를 들어 PID를 하려면 적어도 아래가.. 2026. 3. 10. [일상] 청년버팀목 전세자금대출 + HF 전세보증보험 진행 후기 정리 이 글은 2025년 청년버팀목 전세자금대출을 실제로 진행했던 경험을 기준으로 정리한 과정 기록입니다.같은 상황에서 준비하시는 분들이 전체 흐름을 이해하는 데 도움이 되었으면 합니다.은행은 NH안양호계금융센터에서 진행했습니다.대출 당시 조건취업 후 약 3개월 재직 상태에서 진행했고, 기존 대출이나 연체 이력은 없었습니다.학생에서 바로 직장인이 된 일반적인 케이스였습니다.주거래 은행은 농협이었습니다.전세대출 일정2025.03 취업2025.04 집 탐색 시작2025.05.24 임대차 계약 체결 (계약금 5%)2025.05.25 주택도시기금 대출 신청2025.05.27 사전자산심사 적격2025.05.28 임대차 계약 신고2025.06.17 자산심사 적격2025.06.25 .. 2026. 2. 25. UART 실습 - 3 (ATmega328P + FT232) 지금까지 UART로 데이터를 출력하려면 UART_Transmit() 함수를 이용해 문자를 하나씩 전송했다.문자열 함수를 만들어도 결국 내부에서는 문자 단위 송신을 반복 호출해야 한다.테스트 몇 번 정도는 괜찮지만, 실제로 프로그램을 작성하다 보면 문제가 생긴다.센서값 확인상태 메시지 출력디버깅 로그 출력이런 상황에서 매번 문자열을 직접 구성하고 송신 함수를 호출하는 것은 상당히 번거롭다.그래서 사용하는 방법이 printf를 UART 출력으로 연결하는 방식이다.PC 프로그램에서 콘솔창에 출력하듯이, 마이크로컨트롤러에서는 UART 터미널 창에 출력되도록 만드는 것이다.우리가 실제로 바꾸려는 것printf를 “UART 함수로 바꾸는 것”이 아니다.정확히 말하면 printf가 데이터를 내보내는 통로를 바꾸는 작.. 2026. 2. 19. UART 실습 - 2 (ATmega328P + FT232) * 데이터 시트는 포스팅을 위해 microchip에 직접 이메일을 작성해 허가 받았습니다. 이전에는 UART 송신 위주로만 작성했으나, 이번에는 수신을 인터럽트(USART RX Complete) 로 처리한다.메인 루프가 다른 일을 수행하더라도 수신 데이터를 놓치지 않는 구조를 만든다.코드#define F_CPU 16000000UL#include #include #include #include char receiveString[100];uint8_t curIdx = 0;uint8_t dataReadyFlag = 0;void UART_Init(uint16_t baud){ uint16_t ubrr = (int16_t)(F_CPU / 16 / baud - 1); UBRR0H = (uint8_t)(ubrr >> .. 2026. 2. 18. [Raspberry Pi] Bookworm O에서 eth0 고정 IP 설정 라즈베리파이를 LAN 직결 환경에서 유지보수 포트로 사용하려고 eth0에 고정 IP를 설정하려다가 겪은 문제를 정리한다.결론부터 말하면:Bookworm에서는 /etc/dhcpcd.conf를 수정하면 안 된다.상황Raspberry Pi OS Bookworm (Lite)SSH로 접속 성공Wi-Fi(wlan0)는 DHCP로 정상 동작eth0를 192.168.0.20으로 고정하려고 함/etc/dhcpcd.conf 수정했지만 적용 안 됨ip a 보면 eth0에 IPv4 없음ping 안 됨왜 안 됐는가?과거 (Buster / Bullseye)네트워크 관리: dhcpcd고정 IP 설정: /etc/dhcpcd.conf현재 (Bookworm)네트워크 관리: NetworkManager설정 계층: netplan → Netw.. 2026. 2. 16. [UART] UART를 쉽게 이해하기 UART를 이해하기 전에, Hz부터 이야기해보자Hz는 “1초에 몇 번 반복되느냐”를 뜻한다.1Hz라면 1초에 한 번, 10Hz라면 1초에 열 번이다. ATmega328P는 보통 16MHz 클럭을 사용한다.이 말은 MCU 안에 있는 시계가 1초에 16,000,000번 똑딱거린다는 뜻이다.이걸 시간으로 바꿔보면, 1초 ÷ 16,000,000 = 약 62.5ns 즉, MCU 내부 시계는 62.5나노초마다 한 번씩 똑딱거린다고 생각하면 된다.중요한 점은 MCU가 “62.5ns”를 아는 건 아니고, 우리는 나중에 계산으로 그렇게 해석할 뿐이다.UART 통신에는 이 시계가 너무 빠르다UART 통신은 예를 들어 9600 baud 같은 속도로 동작한다.이건 1초에 약 9600비트만 보내면 된다는 뜻이다. 그런데 MCU.. 2026. 2. 15. UART 실습 (ATmega328P + FT232) * 데이터 시트는 포스팅을 위해 microchip에 직접 이메일을 작성해 허가 받았습니다. 이전 포스팅에서 UART 이론(보드레이트 생성, 16× 오버샘플링, Clock/Data Recovery)을 봤으니, 이번에는 실제로 ATmega328P에서 UART를 초기화하고 문자열을 주기적으로 송신해보자.나는 USB-UART 변환기로 FT232 모듈을 사용했고,배선은 다음과 같이 연결했다.( 회로에는 안나와있지만 USBasp를 미리 연결해서 업로드 가능하게 두었음 )FT232 TXD → ATmega RXD(PD0)FT232 RXD → ATmega TXD(PD1)GND ↔ GND5V는 USBasp에서 가져옴 실습 코드#define F_CPU 16000000UL#include #include void UART_In.. 2026. 2. 14. USART 내부 동작 ( ATmage328P ) * 데이터 시트는 포스팅을 위해 microchip에 직접 이메일을 작성해 허가 받았습니다. 임베디드 개발을 하다 보면 UART는 가장 먼저 접하고, 가장 오래 쓰게 되는 통신 방식이다.하지만 대부분은 “보드레이트 맞추고, 레지스터 몇 개 설정하면 된다” 수준에서 사용한다.이 글은 UART를 사용하는 법이 아니라, UART가 왜 이런 구조로 설계되었는지를 이해하기 위한 리뷰다.특히 ATmega328P 데이터시트와 강의를 기반으로, Baud Rate 오차가 있어도 통신이 되는 이유를 중심으로 정리해본다.UART는 클럭이 없는데, 왜 내부에는 클럭 블록이 있을까?UART는 흔히 비동기 통신이라고 부른다.그래서 “클럭을 사용하지 않는다”고 오해하기 쉽다.하지만 정확히 말하면,UART는 클럭을 공유하지 않을 뿐,.. 2026. 2. 13. interrupt 제어 ( ATmage328P ) * 데이터 시트는 포스팅을 위해 microchip에 직접 이메일을 작성해 허가 받았습니다. 오늘은 ATmega328P에서 사용하는 interrupt에 대해 알아본다.먼저 interrupt가 무엇인지부터 정리한다.interrupt란 무엇인가interrupt란 MCU가 어떤 일을 하고 있더라도, 특정 사건이 발생하면 즉시 그 사건을 먼저 처리하도록 하는 기능이다.보통 MCU는 while(1) 같은 반복문 안에서 순서대로 코드를 실행한다.이 구조에서는 버튼을 눌러도, 코드가 한 바퀴를 다 돌기 전까지는 버튼 입력을 확인하지 못하는 경우가 많다.interrupt를 사용하면 이런 문제가 해결된다.버튼이 눌리는 순간, MCU는 현재 하던 일을 잠시 멈추고 인터럽트 서비스 루틴(ISR)으로 바로 이동해 버튼 이벤트를.. 2026. 2. 12. GPIO제어 - 버튼 ( ATmage328P ) * 데이터 시트는 포스팅을 위해 microchip에 직접 이메일을 작성해 허가 받았습니다.본 내용은 링크 에서 내용을 학습하고 포스팅한 내용입니다.GPIO 한 줄 정의GPIO = General Purpose Input / OutputMCU가 외부랑 신호를 주고받는 가장 기본적인 통로스위치 입력, LED 출력은 물론이고SPI / UART / I2C 같은 통신도 결국 핀을 통해 이뤄짐중요한 포인트는“핀 하나가 GPIO만 하는 게 아니라, 부가 기능(Alternate Function)을 같이 가진다”는 점임.그래서 설계 단계에서 핀맵 제대로 안 보면,“ADC 2개 필요했는데 MCU에 ADC가 1개뿐” 같은 대참사 터짐.ATmega328P 포트 구조 감 잡기ATmega328P는 GPIO가 포트 단위로 묶여 있음.. 2026. 2. 11. 이전 1 2 3 4 ··· 20 다음