전체 글 287

pcb 주문하는 방법(kicad, jlcpcb)

안녕하세요. 오늘은 kicad로 pcb회로를 만들고 jlcpcb사이트로 주문하는방법을 알아보겠습니다.jlcpcb외에 다른곳에서도 주문할수있는곳이 있겠지만 다른곳은 이용을안해봐서 어떤지 모르겠습니다. jlcpcb는 1개도 주문이 가능해서 좋습니다. 이 글에서는 kicad로 pcb를 주문할때 필요한 파일을 추출하는 방법과, jlcpcb로 주문하는방법순서로 적겠습니다.먼저 kicad로 pcb를 주문할때 필요한파일을 추출해보겠습니다. 회로 기준은 2층(front,back)기준이고 단순히 부품을 배치하고 회로가 그려져있는 수준입니다.1. 파일->플롯 클릭2. 출력 디렉토리에 출력 파일이 나올 경로를 설정하고 나머지는 아래의 그림처럼 세팅을 해줍니다. 그 이외에 필요한 옵션이 있다면 선택해 주면 될 것 같습니다. ..

회로이론/기타 2024.11.03

C# winform에서 exe파일로 디버깅 쉽게하기

안녕하세요. 오늘은 C# winform exe파일로 디버깅을 쉽게하는방법을 알아보겠습니다.일반적으로 디버깅을위해서 Console.WriteLine함수를 많이 사용합니다. 기본적으로 이 함수를 사용하면 visual studio의 output탭에 메세지가 표시됩니다.이렇게되면 visual studio를 사용하지않고 exe파일을 실행했을때는 Console.WriteLine의 내용을 보지못합니다.visual studio에서 Console.WriteLine 했을 때 출력해 주는 형식을 변경해 줄 수 있습니다.변경해주는 방법은 두가지입니다.첫번째방법은 프로젝트내의 속성으로가서 변경하면 됩니다.Windows 애플리케이션은 기본 옵션입니다. 콘솔 애플리케이션으로 변경해주면 exe파일을 실행했을때 별도의 명렴프롬프트창이..

74HC573 알아보기

안녕하세요. 오늘은 74HC573에 대해 알아보겠습니다.74HC573은 8비트 래치 기능을 가지고, 출력이 3-state(High, Low, Hi-Z)로 동작할 수 있습니다사용하는곳은 포트확장, FW업데이트할때 GPIO가 이전상태유지하게하기 등등에 사용합니다.10,20번핀 : 전원입니다 .2~9번핀 : 입력핀입니다.12~19번핀 : 출력핀입니다.1번핀 : Output-enable 핀입니다.11번핀 : Lacth-enable 핀입니다. 1번핀(OE)가 HIGH상태면, 출력은 HI-Z 상태가 됩니다. 그래서 사용할때는 OE를 LOW로 설정해서 사용해야됩니다.테이블을보면 OE핀이 HIGH면 HI-Z이고 OE가 LOW일때 상황들이 다릅니다.OE가 LOW고 LE가 HIGH일때 입력이 HIGH면 출력이 HIGH입니..

각종IC 2024.10.20

STM32 RTOS 알아보기 3편(xQueueSendFromISR,xQueueReceiveFromISR)

안녕하세요. 오늘은 저번 2편에서 Queue에서 task끼리 send/receive를 했었는데 이번에는 ISR이랑 해보겠습니다.ISR에서 send/receive를 할때는 함수명이 다르고 기존의 함수명에 FromISR이 붙습니다. 다른 이유는 ISR은 짧은시간안에 실행되어야 하며 다른 태스크나 ISR에 의해 중단되지 않아야 합니다. 이로 인해 ISR에서 사용하는 함수들은 블로킹이 없고 간단하고 빠르게  동작됩니다. *xQueueSendFromISR함수 *xQueueSendFromISR함수BaseType_t xQueueSend( QueueHandle_t xQueue, const void BaseType_t *pxHigherPriorityTaskWoken );ISR함수에서 호출되어 큐에 데이터를 저장하는 함수..

STM32/STM32_RTOS 2024.10.04

USB 키보드 통신 파형 분석하기 2편

안녕하세요. 1편에서는 기본적인 데이터해석 방법을 알아봤고 2편에서는 키보드의 통신파형을 알아보겠습니다.키보드를 컴퓨터에 연결하면 장치연결감지,주소할당,장치설명요청 등등 하고  이후에 키보드에게 주기적으로 키를 입력할것이 있는지 물어봅니다. 키보드가 LS인 경우 10ms속도로 물어보고 FS인경우 1ms로 물어봅니다.이 글에서는 키보드에게 주기적으로 키를 입력할것이 있는지, 어떤식으로 키보드가 입력을 알려주는지, 어떤방식으로 파형을 해석해야하는지 알아보겠습니다.먼저 키보드를 컴퓨터에 연결하면, 자신이 어떤 장치인지 컴퓨터에게 알려줘야 합니다. 그래야지 키보드가 보내는 신호를 컴퓨터가 해석할 수 있습니다. 장치를 연결하면 장치설명요청(Device Descriptor Request)이 있는데 이때 자신의 VI..

지식/USB지식 2024.09.16

USB 키보드 통신 파형 분석하기 1편

안녕하세요. 오늘은 USB 키보드 통신 파형에 대해 알아보겠습니다. 1편에서는 키보드 통신파형을 분석하기위한 지식들을 알아보겠습니다.해당 글은 아래의 유튜브를 참고했습니다.https://www.youtube.com/watch?v=wdgULBpRoXk키보드는 LS인 것도 있고 FS인 것도 있습니다. 이전 글에서 LS는 D-가 pull-up이고 FS는 D+가 pull-up이라고 했었는데 실제 키보드를 가지고 그렇게 나오는지 확인해 보겠습니다.먼저 LS 키보드를 연결했습니다. D-가 HIGH 입니다.FS 키보드를 연결했습니다. D+가 HIGH입니다.LS키보드의 통신파형을 분석해보겠습니다.Differential 1일때는 D+ 가 HIGH고 D-가 LOW입니다.Differential 0일때는 D+가 LOW고 D-..

지식/MCU지식 2024.09.07

STM32 RTOS 알아보기 2편(xQueueCreate,xQueueSend,xQueueReceive)

안녕하세요. 오늘은 RTOS의 Queue에 대해 알아보겠습니다.Queue는 먼저 집어넣은 데이터가 먼저 나오는 FIFO 구조의 저장형식입니다. RTOS에서는 TASK나 ISR에서 Queue에 데이터를 저장&불러오기를 할 수 있습니다. TASK랑 ISR에서 Queue에 접근할때 사용하는 함수가 다릅니다. ISR에서 접근할때는 함수명뒤에 FromISR()이 붙습니다. 다른 이유는 ISR은 짧은시간안에 실행되어야 하며 다른 태스크나 ISR에 의해 중단되지 않아야 합니다. 이로 인해 ISR에서 사용하는 함수들은 블로킹이 없고 간단하고 빠르게  동작됩니다. 예시) TASK에서 큐에 데이터를 보내는 함수 :  xQueueSend(),ISR에서 큐에 데이터를 보내는 함수 : xQueueSendFromISR(); *x..

STM32/STM32_RTOS 2024.08.18

STM32 RTOS 알아보기 1편(xTaskCreate, vTaskDelay, vTaskDelayUntil)

안녕하세요. 오늘은 STM32보드로 RTOS에서 사용하는 기본적인 함수에 대해 알아보겠습니다. 사용하는 보드는 NUCLEO-F103RB이고 어떤보드던 큰 상관은 없습니다.먼저 프로젝트를 만들고 FREERTOS를 활성화해줘야합니다. FREERTOS를 선택하면 Interface를 선택하라고 나옵니다. CMSIS V1과 CMSIS V2의 차이는 CMSIS 인터페이스에서 사용하는 함수들의 차이인데 여기서는 CMSIS 인터페이스를 사용하지않고 FreeRTOS 인터페이스를 사용합니다. 예를들어 테스크를 만들때 FreeRTOS는 xTaskCreate함수를 사용하고 CMSIS는 osThreadCreate함수를 사용합니다. 사실 osThreadCreate함수의 코드를보면 결국에는 xTaskCreate함수를 호출합니다. ..

STM32/STM32_RTOS 2024.08.11

IR스마트 리모컨

안녕하세요. 알리에서 많은 IR 스마트 리모컨 제품이 있는데 그중에서 하나를 구매해서 내부가 어떻게 구성되었나 확인해보고 실제로 쓸만한지 알아보겠습니다. 제가 구매했던 제품 링크입니다. 가격은 4천원정도 했습니다.알리-스마트리모컨제품의 동작은 스마트폰 앱(Smart Life)을 이용해서 제품을 찾은 다음에 제품이랑 WIFI랑 연결시킵니다. 스마트폰 앱을 이용해서 제품에서 IR 신호를 내보낼수 있습니다. 스마트폰 앱에서는 가전제품을 검색해서 IR신호를 보낼수도있고 실제 리모컨을 이용해서 제품에 IR신호값을 저장시킬수도 있습니다.요즘에는 가전제품에서 WIFI통신을 통해서 앱으로 컨트롤할수있는 제품들이 있는데 그런 제품들은 IR스마트리모컨이 필요가 없습니다. 해당기능을 지원하지않는 옛날 가전제품에 사용하면 됩..

일반제품 2024.08.10

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 ..