전체 글 298

gcc를 이용해서 빌드를 Make로 하기

안녕하세요. 오늘은 Makefile에 대해 알아보겠습니다. 테스트하는 환경은 windows이고 MinGW를 이용해서 gcc를 사용합니다. (이 글을 이해하기위해서는 gcc사용방법을 알고있어야합니다) make란 소스코드를 컴파일하고 빌드하는 작업을 자동화하는 도구입니다. make는 Makefile이라는 파일을 읽어들여 작업을 수행합니다. Makefile에는 소스파일과 빌드과정에서 수행해야 할 명령어가 명시되어 있습니다.Makefile은 확장자가 없고 아래처럼 만들면 됩니다. main.c에는 HelloWorld!를 print하는 코드가 c언어로 작성되어있습니다. main.c를 오브젝트파일로 생성하려면 gcc -c main.c을 하면 됩니다main.o를 링크하고 main.exe라는 실행파일을 만들려면 gcc ..

ATMEGA32U4 breakout-보드 사용하기 8편(PCB제작)

안녕하세요. 오늘은 이전에 만들었던기능을 테스트할수있는 PCB보드를 만들어보겠습니다. 보드의 주된 목적은 i2c 통신을 사용하는 장비를 연결하여 cli 기능을 이용해서 손쉽게 i2c 테스트를 하는 것입니다.GPIO에 LED를 3개와 버튼 2개를 연결했습니다. 그리고 I2C라인, UART라인 , JTAG라인은 따로 뺐습니다. I2C/UART의 소켓을 여러개 연결한 이유는 파형을 측정하기위함입니다.예상했던 부품배치는 아래와 같습니다. 그러나 UART장비의 VCC, GND를 반대로 그려놔서 UART장비는 점퍼케이블을 이용해서 사용해야합니다. I2C소켓부분이 두곳인데 하나는 GND/VCC/SCL/SDA순서고 하나는 VCC/GND/SCL/SDA순서입니다. 두개를 다르게 해놓은 이유는 제가 가지고있는 LCD들의 핀..

ESP-WROOM-32 보드 사용하기 5편(LCD 터치)

안녕하세요. 이전 4편에서 LCD에 화면 출력을 했었는데 이번에는 터치기능을 추가해보겠습니다.ESP32-2432S028보드에는 터치센서가 달려있습니다. (XPT2046)먼저, XPT2046 터치센서의 원리를 간단히 알아보겠습니다. 터치센서는 저항식 터치센서(Resistive Touch Sensor)와 정전식 터치 센서(Capacitive Touch Sensor) 일반적으로 두가지 유형이 있습니다. 저항식 터치센서는 터치를하면 저항값이 변하는걸 인식하는거고, 정전식 터치센서는 정전 용량의 변화를 통해 터치위치를 계산합니다. XPT2046은 저항식 터치센서입니다.  아래의 회로도에서 XP,YP,XN,YN핀은 터치패널모듈에 연결됩니다. ESP32 제품에보면 TPM408-2.8이라고 적혀있는게 있는데 이게 터치..

ESP-WROOM-32 보드 사용하기 4편(LCD 출력)

안녕하세요. 오늘은 esp32에 LCD(ili9341)를 연결해서 사용해보겠습니다.LVGL(Light and Versatile Graphics Library)라이브러리를 이용하겠습니다. LVGL이란 임베디드 시스템 및 소형 디스플레이에서 GUI을 개발할때 사용되는 그래픽 라이브러리입니다. 해당 글에서는 ESP32-WROOM-32보드와 ili9341(2.8 인치 LCD TFT)모듈이 합쳐진 보드를 사용하겠습니다. (ESP32-2432S028)ESP32-2432S028 보드에대해 먼저 알아보겠습니다.*제조사사이트 : http://www.jczn1688.com/해당보드에는 ESP32와 LCD, 터치센서, usb to uart, cds, led등이 연결되어있습니다. USB C or USB Mini에 UART가 ..

UART TO HID칩 알아보기(CH9329)

안녕하세요. 오늘은 UART TO HID칩에 대해 알아보겠습니다.사용할칩은 WCH사의 CH9329입니다. CH9329는 UART통신을 통해서 HID신호로 키보드, 마우스, 커스텀HID를 보낼 수 있습니다.동작모드는 키보드+마우스+커스텀HID용(모드0), 키보드용(모드1) 등등있는데 여기서는 디폴트모드인 모드0을 사용해서 키보드신호만 보내보겠습니다.사용할모듈에는 회로구성이 되어있고 디폴트모드를 사용할것이므로 따로 바꿀건 없습니다.MODE0(2), MODE1(3), CFG0(4), CFG1(5)을 통해서 모드 설정을하고 RXD(7),TXD(8)을 통해서 UART신호를 주고받습니다.UART통신을 하는 장비로는 MCU를 사용해도되고 usb to uart모듈을 사용해도 됩니다. 이 글에서는 usb to uart를..

각종 CHIP 2024.06.02

ESP-WROOM-32 보드 사용하기 3편(MQTT)

안녕하세요. 오늘은 MQTT에 대해 알아보겠습니다.MQTT(Message Queuing Telemetry Transport)는 IoT(Internet Of Things)에서 주로 사용하는 프로토콜입니다. MQTT구조MQTT는 브로커(Broker)를 통해서 클라이언트(Client)끼리 통신을 하는 구조입니다.브로커가 서버역할이라고 보면됩니다.1. A클라이언트가 브로커에게 발행(Publish)합니다. (발행: 브로커에게 데이터전송)2. B클라이언트가 브로커에게 구독(Subscribe)합니다. (구독: 브로커에게 데이터를 받기위한 행동)3. 브로커는 발행과 구독내용을 보고 일치하면 데이터를 보내줍니다. 발행과 구독을 할때는 토픽(Topic)과 페이로드(Payload)를 사용합니다. 토픽은 메세지의 ID이고 페..

ESP-WROOM-32 보드 사용하기 2편(WIFI)

안녕하세요. 오늘은 ESP32보드로 WIFI기능을 사용해보겠습니다. 먼저 WIFI기능을 사용하기전에 알아야 할 개념과 WIFI를 이용해서 WEB으로 통신을 할것이므로 HTTP에 대해서도 알아보겠습니다.1. ESP32 WIFI mode에는 3가지가 있습니다1) AP(Access Point) MODE : 다른 디바이스들이 연결가능한 모드입니다. (공유기와 유사합니다) 예를들어 WIFI가 없는 곳에서 ESP32를 AP모드로 만들고 핸드폰에서 ESP32와 연결한다음 ESP32로부터 데이터를 받을 수 있습니다. 2) STA(station) MODE : 공유기에 접속할수있는 모드입니다. 3) STA+AP MODE : AP모드와 STA모드 모두를 사용할 수 있는 모드입니다. 예를들어 초기에 STA모드로 설정하여 WI..

ESP-WROOM-32 보드 사용하기 1편(개발환경)

안녕하세요. 오늘은 ESP-WROOM-32보드의 개발환경을 구축해보겠습니다.해당보드는 espressif사의 제품이고 기본적인 통신(UART,SPI,I2C..)외에 무선통신(WIFI, BLUETOOTH, BLE)를 지원합니다. 개발환경은 아두이노로 구성하겠습니다.*보드 특징플레시메모리가 448kB이고 UART가 3개나 있습니다. 보드에 CP2102가 있어서 1개는 CP2102에 연결되어있습니다. 그래서 USB로 UART통신이 가능하고 펌웨어다운로드도 별도의 장비가 필요없습니다.*개발환경구축하기 (아두이노 2.2.1 기준)1) Arduino IDE를 다운받습니다 (https://www.arduino.cc/en/software)2) File -> Preferences를 클릭합니다3) Additional boa..

파이썬으로 조이스틱 제어하기 (USB HID)

안녕하세요. 오늘은 조이스틱을 사용해보겠습니다. 조이스틱은 아래의 제품을 사용했습니다.https://www.devicemart.co.kr/goods/view?no=1377049해당제품은 라즈베리와 호환되는 제품인것같고 일반PC에서 사용하려면 USB 데이터를 받고나서 처리를 해줘야 합니다. USB HID 통신을 사용하고 파이썬을 이용했습니다.제품에 대한 데이터시트를 못찾아서 프로토콜 분석기를 이용해서 키가 눌렸을때의 데이터를 얻었습니다.해당 디바이스에서 아무것도 눌리지 않았을때 주기적으로 01 80 80 7F 7F 0F 00 00이 옵니다.왼쪽 방향키를 누르는경우 01 80 80 00 7F 0F 00 00이 옵니다. 그래서 해당 데이터일때 왼쪽으로 움직여주면 됩니다.모든 키의 데이터를 적으면 아래와 같습니..

USB 2.0 SOF 통신파형 알아보기

안녕하세요. 오늘은 USB SOF 통신 파형을 알아보겠습니다. (FS기준)USB D+ D- 파형을 측정해보면 주기적으로 통신을 합니다. FS기준으로 1ms마다 통신을하고 HS기준으로는 125us마다 통신을 합니다. 주기적으로 통신을 하는 이 파형에 대해 알아보겠습니다. 이 파형은 SOF 패킷입니다.(GPT 지식)USB 통신에서 SOF(Start of Frame)는 USB 버스에서 시간을 동기화하기 위해 전송됩니다. USB는 비동기 통신 프로토콜이며, 여러 장치들이 한 버스를 공유하면서 동작합니다. 따라서 시간을 동기화하여 데이터를 정확하게 전송하고 수신할 수 있도록 합니다. SOF 패킷은 매 프레임마다 전송되며, USB 장치들은 이를 기반으로 데이터를 전송하거나 수신할 타이밍을 조절합니다. 이를 통해 U..

지식/USB지식 2024.05.12