본문 바로가기

임베디드 개발287

JTAG 에뮬레이터를 연결해서 사용하기 On Board USB JTAG 에뮬레이션 회로를 사용하지 않고 14핀 JTAG 인터페이스 통해 에뮬레이터를 사용하기. 사용할 에뮬레이터는 Blackhawk USB560 v2 System Trace CCS 설치파일을 다시 실행해서 Blackhawk Debug Probes 설치 14-Pin TI Adapter Pinout 보통 방향 잘못꼽는것을 막기 위해 여기서 NC (Not/Connected)부분은 핀헤더가 부러져있거나 막혀있다. 케이블을 연결하고 설치하면 장치 관리자에서 잡힌다. 싱크웍스 DOCK 보드 내장 JTAG 회로 비활성화 프로젝트 Properties에서 Connection 선택 2022. 9. 5.
STM32 ] 델타로봇, UART로 Command Line Interface 구현 + 기판에 다시 납땜 (5) 2022.08.25 - [프로그래밍/C] - C ] 명령 프롬프트 구현 (함수포인터 사용) C ] 명령 프롬프트 구현 (함수포인터 사용) #include #include /* for strcmp() strlen*/ //#include /* for usleep() */ #include #include #define MAX_CMD_NUM 10 #define BUF_LEN 128 int cmd_continue = 0; typedef int cmd_func(int argc, char* argv[.. eteo.tistory.com 이전에 콘솔에서 구현했었던 명령 프롬프트를 가져와 STM32에서 UART로 Command Line Interface를 구현하고 간단하게 델타로봇을 제어해봤다. cli.h /* * cli.. 2022. 9. 4.
TMS320F28388D ] 예제파일 불러오는방법 (LED Blink) C2000ware 설치 Texas Instruments 사가 개발자들을 대상으로 칩에 대해 제공하는 각종 자료들(데이터시트, 칩 매뉴얼, 기본 예제 및 소스, 라이브러리 등)이 담긴 C2000ware 를 다운로드해 설치한다. (설치 folder path : C:\ti\c2000) https://www.ti.com/tool/C2000WARE 첫번째 방법 Project explorer 에서 import - CCS Projects Browse 클릭 - C2000ware가 설치된 폴더 안의 driverlib - 디바이스명 폴더를 선택한다. 참고로 driverlib 폴더에는 HAL(Hardware Abstraction Layer) driver를 사용한 예제, device_support 폴더에는 레지스터를 조작해 .. 2022. 9. 3.
TI ] CCS (Code Composer Studio) 설치하기 + 새 프로젝트 만들기 이글은 TMS320F2838x 를 바탕으로 쓰여졌습니다. 먼저 TI 사의 DSP를 사용하기 위한 툴인 CCS를 설치한다. https://www.ti.com/tool/download/CCSTUDIO Rdcommended 인 커스텀 설치 선택 해당되는 제품군을 선택 Debug probes 선택. 필요하면 나중에 추가설치 할 수 있다. CCS를 사용하면 내장 JTAG 에뮬레이터(=Debug Probe)를 위한 FTDI Driver가 같이 설치되기 때문에 5핀 케이블로 PC와 연결을 하면 다음과 같이 장치 관리자에 뜬다. CCS 실행 실행 후 첫 화면 New CCS Project 만들기 먼저 타겟보드를 선택하고 Connection에서 맞는 Debug Probe를 선택한다. 옆의 Verify를 누르면 스캔 테스트.. 2022. 9. 3.
빅 엔디안(Big Endian)과 리틀 엔디안(Little Endian) 컴퓨터는 데이터를 메모리에 저장할 때 바이트(byte) 단위로 나눠서 저장한다. 하지만 컴퓨터가 저장하는 데이터는 대게 32비트(4바이트)나 64비트(8바이트)로 구성된다. 따라서 이렇게 연속되는 바이트를 순서대로 저장해야 하는데, 이것을 바이트 저장 순서(바이트 오더 : byte order)라고 한다. 바이트 오더는 빅 엔디안(big endian) 과 리틀 엔디안(little endian) 방식이 있다. 빅 엔디안은 메모리의 Lower Address 에 MSB (최상위비트/Most Significant Bit) 부터 저장하는 방식이고, 리틀 엔디안은 메모리의 Lower Address 에 LSB (최하위비트/Least Significant Bit) 부터 저장하는 방식이다. 아래 예시에서 Data의 MSB.. 2022. 8. 31.
STM32 ] 델타로봇과 MFC 연동 + 컨베이어 벨트 추가 (4) 컨베이어 벨트 추가 컨베이어 벨트에 달린 모터는 델타 로봇에 쓰인 것과 동일한 모델인 AX-12A 모터이다. Daisy Chain으로 연결하고 ID를 3으로 지정하고, Baudrate를 115200으로 맞춰줬다. 처음엔 모터 혼이 저 큰 구멍에 위치하게 배치되어 있었는데 테스트 구동을 해보니 장력 부족으로 벨트가 잘 돌아가지 않는 것 같아 뒤로 당겨서 배치해주었다. #define AX_CONVEYOR_ID3 dxl_control.c void setEndless(uint8_t ID, uint8_t State) { if ( State ) { uint8_t length = 9; uint8_t packet[length]; packet[0] = AX_HEADER; packet[1] = AX_HEADER; pack.. 2022. 8. 28.
STM32 ] USB CDC (Virtual Port Com) 사용하기 Clock Configuration USB 클럭이 PLL에서 나오는 48MHz로 설정되어 있어야 한다. Activate Clock Source Ethernet Disable USB_OTG_FS 설정. Device_only 모드로 Middleware - USB_DEVICE 에서 Class For FS IP 를 CDC (Communication Device 클래스)로 설정 Generation Code를 하면 프로젝트 안에 아래와 같이 폴더가 추가된 것을 볼 수 있다. 그 중에서도 usb 송수신 관련된 함수들은 usbd_cdc_if.c 파일 안에 있다. 소스코드 /* USER CODE BEGIN 0 */ #define BUF_SIZE 30 uint8_t usb_buf[BUF_SIZE]; uint32_t cou.. 2022. 8. 26.
STM32 ] 역기구학(Inverse kinematics)을 통한 델타로봇 제어 (3) 로봇은 관절(Joint)에 붙어있는 모터로 조인트 각도를 제어하여 움직인다. 그리고 실제 그리퍼가 붙어 주어진 작업을 수행하는 말단 장치(End Effector)의 위치는 조인트 각도로부터 결정된다. 조인트 각도와 엔드 이펙터의 위치, 이 둘 사이를 변환하는 계산 과정을 기구학 이라고 한다. 이 중 정기구학(Forward Kinematics)은 일련의 조인트 각도가 주어졌을 때 엔드 이펙터의 직교좌표상 위치를 구하는 과정이고 역기구학(Inverse Kinematics)은 엔드 이펙터의 직교좌표상 위치에 대응하는 조인트 각도를 구하는 과정이다. https://www.marginallyclever.com/other/samples/fk-ik-test.html Delta Robot Forward/Inverse .. 2022. 8. 22.
STM32 ] UART DMA, IDLE Line Interrupt 를 통한 데이터 수신 (Ring Buffer) 코드 출처 : https://controllerstech.com/uart-dma-with-idle-line-detection/ 이전에 UART로 원하는 형식의 데이터를 수신할 때는 패킷의 종료를 뜻하는 특정 문자를 끝에 넣거나 개행 문자를 넣어서 인터럽트 안에서 버퍼에 복사해 처리해야했는데 이 때는 수신될 데이터의 길이 또는 범위를 미리 알고 있어야 했다. 다음은 UART가 IDLE Line을 감지하고 발생시키는 Interrupt를 활용하여 사전에 길이를 알 수 없는 데이터를 효과적으로 수신하는 방법이다. CubeMX 설정 파라미터 세팅은 그대로 두고 DMA 세팅으로 가서 RX Request를 추가한다. Mode는 Normal으로 한다. Direction은 Peripheral To Memory 이고 By.. 2022. 8. 18.
STM32 ] Dynamixel AX-12 사용 - 델타로봇 제어하기 (2) 내가 프로젝트에서 사용하는 델타 로봇은 산업에서 많이쓰이는 병렬 로봇이며 3축 DOF (Degree of Freedom) 를 갖는다. 참고. 직렬로봇 : 1개의 직렬체인(다리)으로 구성되고, 모든 조인트에 구동기가 장착된다. 병렬로봇 : 엔드이펙터가 적어도 2개 이상의 다리에 의하여 지지되고, 각 다리당 1~2개의 구동기가 고정부 근처에 장착되며 나머지 조인트는 수동조인트로 구성된다. 일단 FreeRTOS를 사용했는데 현재는 하나의 Task만 쓰고 있다. Motor Init() 시점에서 속도를 미리 설정해서 지난번보다 부드럽게 움직이게끔 했고, UART Receive 인터럽트에서 세마포어 시그널을 보내서 시리얼 터미널로 PC에서 제어가 가능하게 끔 해놨다. 구현해놓은 커맨드는 우선 End Effector.. 2022. 8. 11.
STM32 ] Dynamixel AX-12A 모터 제어하기 (1) 다음 진행할 개인 프로젝트인 델타로봇의 제어를 위해 먼저 AX-12A 모터에 대해 파봤다. 다이나믹셀은 모터, 제어기, 드라이버, 센서, 감속기 밑 네트워크 기능을 하나의 모듈로 만든 로봇 전용 액추에이터로, 이전에 STM32보드로 모터를 다뤄본 적이 있지만 PWM 제어하던 그것과는 제어방식이 아주 많이 다르다. 스펙 핀맵 특이점은 여러 다이나믹셀 모터를 Daisy Chain 방식으로 연결해 하나의 버스에 패킷을 전송하면, 고유의 ID를 가지고 있는 각각의 모터들을 제어할 수 있다. 브로드캐스트 ID를 사용해 버스에 연결된 모터를 한번에 제어할 수도 있다. 그리고 위의 스펙을 보면 모터의 통신방식이 TTL레벨 Half Duplex 시리얼 통신인데 MCU의 RX, TX선과 연결하려면 아래와 같은 통신회로가.. 2022. 8. 11.
STM32 ] FreeRTOS + Semaphore ISR 사용 예제 추가설명 되지 않은 기타 설정은 이전 글과 동일하다. 2022.08.08 - [MCU/STM32 (ARM Cortex-M)] - STM32 ] FreeRTOS 사용해보기 STM32 ] FreeRTOS 사용해보기 정의 RTOS는 실시간 시스템을 위해 개발된 운영체제로, 멀티태스킹 환경에서 Task 처리시간을 일관되게 유지하기 위한 용도로 사용한다. RTOS는 시분할 시스템 하에서 우선순위 기반 스케줄링을 통 eteo.tistory.com 예제 코드 출처 : https://m.blog.naver.com/eziya76/220951244572 Mutex는 ISR(Interrupt Service Routine)에서 신호를 보내는게 불가능한데 세마포어는 ISR에서 신호를 보낼 수 있다. Task 중 세마포어를 대기.. 2022. 8. 8.
STM32 ] FreeRTOS 사용해보기 정의 RTOS는 실시간 시스템을 위해 개발된 운영체제로, 멀티태스킹 환경에서 Task 처리시간을 일관되게 유지하기 위한 용도로 사용한다. RTOS는 시분할 시스템 하에서 우선순위 기반 스케줄링을 통해 우선순위가 높은 task가 먼저 작업을 처리할 수 있게 함으로써 구현한다. 참고. 스케줄링 : 프로세스들에게 CPU 등 자원을 배정하는 것을 말함. 설정 Interface는 CMSIS_V2로 선택한다. CMSIS는 Cortex Microcontroller Software Interface Standard의 약자로 ARM Cortex 시리즈끼리의 호환성 및 이식성 증대를 위해 ARM사에서 정한 소프트웨어를 말한다. 그리고 CMSIS_RTOS 는 ARM사에서 RTOS의 API를 추상화해서 RTOS의 종류가 달라.. 2022. 8. 8.
STM32 ] Timer Input Capture 사용하여 PWM 신호 캡쳐하기 먼저 클락 설정 PWM 파형을 만들어 내기 위한 TIM1 설정 TIM1은 APB2에서 클락소스를 공급받는다. PSC와 ARR의 값을 위와 같이 설정해서 Frequency 를 50Hz로 맞춰줬다. 펄스폭은 소스코드 상에서 수정할거라 안건드렸다. 인풋캡처를 위한 TIM2 설정 TIM2은 APB1에서 클락소스를 공급받는다. PSC를 90-1로 해서 1us 업카운터로 설정한다. 인풋캡처 채널은 하나는 Rising Edge 하나는 Falling Edge로 설정한다. TIM2의 인터럽트 켜기 소스코드 /* USER CODE BEGIN PV */ int __io_putchar(int ch){ HAL_UART_Transmit(&huart3, &ch, 1, 1000); return ch; } /* USER CODE EN.. 2022. 7. 25.
STM32 ] 자율주행 코드 짜기 - 프로젝트 준비과정 (6) 먼저 GPS모듈을 통해 자동차의 위도, 경도를 확인하였고, 어플과의 블루투스 통신을 통해 사용자가 찍은 Waypoint(목적지)의 위도, 경도까지 확인할 수 있었다. 그리고 Waypoint의 위치에서 자동차의 위치를 빼주면 두 포인트 사이의 위도차, 경도차를 알 수 있고 직선거리로의 차이 c는 피타고라스의 정리에 의해 구할 수 있다. 다만 이건 평면 위에서의 거리이고 구 위에서의 거리는 하버사인공식(Haversine Formular)로 구할 수 있는데 어차피 우리는 블루투스 모듈의 통신거리 한계로 테스트 환경이 좁은 지역 안에서 해야하기 때문에 그냥 피타고라스의 정리를 사용하기로 하였다. 다음은 방위각. 지자기센서를 통해 자동차의 방위각은 알아낼 수 있다. Waypoint의 방위각이 문제인데 문과생으로서.. 2022. 7. 25.
STM32 ] SPI 통신 사용하기 SPI : Serial Peripheral Interface 동기식, 전이중 통신이며 마스터와 슬레이브 모드로 동작한다. 최대 클럭이 제한되어 있지 않아 속도 제한이 없어 I2C보다 훨씬 빠르다. 기본은 SCLK, MOSI, MISO, CS 4개의 선이 필요한데 많은 베리에이션이 있다. 1:1 통신시 SCLK (Serial Clock) : 마스터가 출력하는 동기용 Clock 라인 MOSI (Master Output Slave Input) : 마스터 출력, 슬레이브 입력. SDI 로도 표기 된다. MISO (Master Input Slave Output) : 슬레이브 출력, 마스터 입력. SDO 로도 표기 된다. CS (Chip Select) : 마스터가 어떤 슬레이브와 통신할 지 선택할 때 사용하는 선... 2022. 7. 24.
STM32 ] TIMER OC (Output Compare 단자 출력) 사용 예제 OC : 출력비교 모드는 카운터(CNT)의 값이 캡쳐/비교기에 설정된 (CCRx)값과 일치할 때 인터럽트 또는 해당 핀에 출력을 발생시키는 모드이다. 이전에 이어서 타이머 OC 모드에서 핀의 출력을 사용하는 버전이다. 핀 출력을 쓰는 모드로 설정했기 때문에 핀이 잡힌다. PSC를 9000-1로 해서 10KHz로 분주하고 ARR은 16비트 카운터 타이머의 최대값인 0xffff-1로 한다. 이렇게 하면 업데이트 인터럽트가 6.5535초 마다 발생할 거다 하지만 업데이트 인터럽트는 안쓴다. 모든채널을 OC 인터럽트 발생시 출력이 토글되게끔 설정하고 CCR값은 위와 같이 설정한다. 소스코드 /* USER CODE BEGIN 2 */ HAL_TIM_OC_Start_IT(&htim3, TIM_CHANNEL_1); .. 2022. 7. 21.
STM32 ] TIMER OC (Output Compare No Output) 사용 예제 OC : 출력비교 모드는 카운터(CNT)의 값이 캡쳐/비교기에 설정된 (CCRx)값과 일치할 때 인터럽트 또는 해당 핀에 출력을 발생시키는 모드이다. TIM4 의 업 카운터와 OC(출력비교) 모드를 이용하여 LED On/Off 하는 예제 1. 타이머의 Frequency를 1Hz로 맞춰서 업데이트 인터럽트를 발생 시 HAL_TIM_PeriodElapsedCallback 에서 LED를 On 시킴 2. OC 모드에서 CCR값과 CNT의 값이 일치할 때 출력비교 인터럽트(CCxI)가 발생하고 HAL_TIM_OC_DelayElapsedCallback 함수에서 LED를 Off 시킴 3. 스위치 1~4 의 EXTI 인터럽트 발생시 HAL_GPIO_EXTI_Callback 함수에서 CCR값을 변경시킴 호환보드에 대한 .. 2022. 7. 21.
STM32 ] 어플과 STM32간 블루투스 통신을 통한 데이터 송수신 - 프로젝트 준비과정 (5) 어플 화면 SCAN 버튼을 눌러 블루투스 페어링 합니다. Control을 누르면 아래 버튼을 사용해 수동제어를 할 수 있고, Waypoint 버튼을 누른 뒤 어플 지도상의 파란색 마커(Waypoint)를 찍으면 해당 위치로 자율주행을 시작합니다. bluetooth.c 중 일부 void BT_Init() { HAL_UART_Receive_IT(&huart7, &rx7_data, sizeof(rx7_data)); } void transmit_To_Phone(){ char buf[GPSBUFSIZE] = {0,}; sprintf(buf, "A,%.13f\n\r", GPS.dec_latitude); //HAL_UART_Transmit(&huart3, (unsigned char *)buf, strlen(buf),.. 2022. 7. 19.
STM32 ] BLDC 모터 제어 - 프로젝트 준비과정 (4) BLDC 모터 제어와 앱인벤터를 통한 앱개발은 팀 동료가 담당한 분야이긴 하나 프로젝트 전체 이해도 향상을 위해 개인적으로 정리한 내용과 동료의 자료를 첨부합니다. DC모터 Brushed DC 모터는 2개의 전선으로만 구성되어 있으며 전동기를 구동시키기 위한 드라이버의 설계 및 제어가 용이하다는 장점이 있지만, Brush의 접촉을 통해서 회전에 따라 전기자 전류의 극성이 바뀌게 되므로, 기계적 소음과 전기적 잡음이 심하며 내구성이 떨어진다. 반면, BLDC 모터는 Brush가 제거된 형태로, 3상 모터의 6단계 정류(모터 위상의 전류를 전환하여 동작을 생성하는 공정) 패턴을 생성하기 위해 3개의 전선이 필요하며, 모터 컨트롤러가 사용된다. 이러한 6단계 정류 위상이 전자기장을 움직이면 영구 자석(회전자).. 2022. 7. 19.
STM32 ] 초음파 센서로 거리재기 Timer Input Capture 사용 + 노이즈 (튀는 값) 제거 참고 사이트 : https://controllerstech.com/hcsr04-ultrasonic-sensor-and-stm32/ 참고 유튜브 : https://www.youtube.com/watch?v=ti_1ZwRolU4 배선 HC-SR04 VCC 5V GND GND Trig PA5 (GPIO Output) Echo PA6 (TIM3 CH1 Input Capture) Cube MX 설정 TIM3은 APB1 클락소스(90MHz)를 공급받는다. 그리고 Prescaler 값을 90-1 로 해주면 1us(마이크로초) 마다 CNT가 오른다. 그리고 TIM3은 16비트 카운터라서 ARR은 최대값인 0xffff-1로 해준다. + UART3 설정도 켠다 소스코드 /* USER CODE BEGIN PD */ #def.. 2022. 7. 18.
STM32 ] DAC 제어 (오실로스코프로 파형 확인) DAC : Digital to Analog Converter 디지털 신호를 아날로그 전압 신호로 변환하여 출력하는 장치를 말한다. STM32F429 보드는 2채널의 12비트 DAC 컨버터가 있고 DAC CHANNEL_1의 출력핀은 PA4 (DAC_OUT1) DAC CHANNEL_2의 출력핀은 PA5 (DAC_OUT2) 으로 정해져있다. 1.8v ~Vdda(3.3V) 사이의 별도의 Vref+ 기준전압을 따로 사용할 수도 있고 타이머의 TRGO (트리거 아웃풋)을 사용하는 것도 가능하다. DHR에 로드된 데이터는 ABP1 1클럭 사이클 후 DOR 레지스터로 전송되고 데이터가 DOR 레지스터에 로드되면 DAC변환이 시작되어, t(SETTING) 시간 후 DAC_OUT pin을 통해 아날로그 값이 출력된다. D.. 2022. 7. 18.
STM32 ] ADC + MFC + MySQL, 시리얼 통신 및 DB연동, 검색기능, 실시간 그래프 구현 (쓰레드 사용) 깃허브 주소 : https://github.com/joeteo/MfcDbAdc GitHub - joeteo/MfcDbAdc Contribute to joeteo/MfcDbAdc development by creating an account on GitHub. github.com https://github.com/joeteo/AdcMfcDb.git GitHub - joeteo/AdcMfcDb Contribute to joeteo/AdcMfcDb development by creating an account on GitHub. github.com 핀설정 가변저항의 VCC, GND는 보드의 +3.3v, GND 에 연결 OUT핀은 아래 ADC 핀에 연결 ADC 설정. DMA 모드를 사용하였다. STM32 whi.. 2022. 7. 17.
STM32 ] SysTick Timer Callback 함수 사용하기 이전에 분명 정리한 거 같은데 기록이 없어서 정리용도로 빠르게 테스트해봄 HAL_GetTick 함수를 따라가 보면 uwTick을 리턴하는 것으로 되어있다. 이 uwTick이 SysTick 타이머 클락 소스로 1밀리초마다 카운트되고 HAL_Delay 함수도 이 uwTick을 사용하고 있다. Drivers - STM32F4xx_HAL_Driver - Src - stm32f4xx_hal_cortex.c 파일에 가면 아래와 같이 있다. 그중에 HAL_SYSTICK_IRQHandler() 함수를 가져와 stm32f4xx_it.c 에 있는 SysTick_Handler() 함수 안에 넣는다. 그리고 아까 IRQHandler() 함수 바로 아래 있던 HAL_SYSTICK_Callback 함수를 가져와 전역구간에서 재정.. 2022. 7. 14.
STM32 ] 소프트웨어적으로 Chattering 채터링현상 Debounce 디바운스하기 채터링이란 스위치의 접점이 닫히거나 열리는 순간 기계적인 진동에 의해 매우 짧은 시간 안에 스위치가 붙었다 떨어지는 것을 반복하는 현상으로 Bounce 라고도 한다. 디바운스는 채터링 현상을 억제하는 해결법을 말한다. 커패시터를 추가하는 등 하드웨어적인 방법이 있고 소프트웨어적으로 해결하는 방법이 있다. 아래에선 소프트웨어적으로 해결하는방법을 소개한다. 버튼은 외부 풀다운저항을 달아놨고 EXTI Rising Edge에 트리거 되도록 했다. NVIC 설정도 켜고 각각 버튼이 눌렸을 때 LED가 토글되게 소스코드를 짰다. 디바운스 코드 추가하지 않았을 때 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if(GPIO_Pin==GPIO_PIN_8){ HAL_GPIO_To.. 2022. 7. 13.
앱 인벤터 ] GPS 모듈, 지자기센서 디버깅용 간단 어플 만들기 - 프로젝트 준비과정 (3) 메카넘휠에 올라간 MCU와 통신하기 위한 어플의 블루투스 부분은 다른 팀원이 담당하고 센서의 정확도 확인용으로 개인적으로 간단히 만들어본 어플이다. 메뉴에서 연결 - AI 컴패니언을 통해 실시간으로 디버깅하며 어플을 만들 수 있다. 다 만들고 난 후 .apk 파일로 빌드한다. 스마트폰의 위치센서와 방향센서의 값을 확인한다. 방향센서의 값은 실시간으로 변하는데, 위도, 경도 값은 위성에서 받아오는거라 딜레이도 있고, 치명적으로 실외에서도 값이 계속 튀고 정확하지 않았다. 2022. 7. 6.
라즈베리 파이 ] root 비밀번호 까먹었을 때 바꾸는 법 1. 라즈베리파이의 SD카드를 뽑아서 리더기에 넣고 PC의 USB 단자에 연결한다. 2. SD카드 안의 cmdline.txt 파일을 열어 수정한다. 문장 맨 마지막에 한 칸 띄우고(엔터치지 말고) 아래 문장을 추가한 후 저장한다.init=/bin/sh 3. 다시 SD카드를 라즈베리파이에 꽂고 전원을 연결한다. CLI 창이 뜨면 # 다음에 아래 명령어를 입력해 루트 시스템을 마운트한다. mount -o remount, rw / 4. passwd 사용자id를 친다. root 비밀번호를 까먹었다면 passwd root 라고 치고 새로운 비밀번호를 입력한다.passwd pi 5. sync 를 입력한다.sync 6. exec /sbin/init 으로 재부팅한다.exec /sbin/init 7. GUI 환경으로 재.. 2022. 7. 3.
STM32 ] NEO-6M 모듈 사용 , GPS 데이터 파싱하는 법 - 프로젝트 준비과정 (1) NEO-6M, GPS 수신 모듈 GPS는 Global Positioning Sytem 의 약자로 미국이 개발 및 관리하는 위성항법 시스템이다. 그리고 GPS 수신 모듈은 지구 궤도를 돌고 있는 위성으로부터 나온 데이터의 분석을 통해 현재 위치의 위도, 경도, 시간 등을 시리얼 통신을 통해 받아 볼 수 있는 모듈이다. 여러 송출원에서 신호를 쏘고 이를 모듈에서 수신하여 자신의 현재 위치를 계산하여 알아내는데, 수신기의 위치를 특정하기 위해서는 최소 4개의 위성이 필요하다. 이 중 3개 이상의 위성이 정확한 시간과 변위를 측정한 뒤 삼각점의 위치를 구하는 삼변 측량기법으로 위치를 파악하고, 3개 위성이 각각 측정하는 세 개의 범위가 서로 교차되는 지점이 수신기의 위치가 된다. 나머지 1개의 위성은 시간 오차.. 2022. 7. 3.
STM32 ] 지자기 센서 HMC5883L 으로 방위각 측정하기 - 프로젝트 준비 과정 (2) HMC5883L 은 3축 마그네틱 감지센서 (Magnetometer) 로 나침반처럼 방위각을 알아낼 수 있어 Compass module 이라고 불린다. I2C 통신을 사용하여 데이터를 추출한다. 요즘에는 HMC5883L 모듈이 단종되어 QMC5883L 이라는 칩이 유통되고 있는데 QMC5883L 모듈은 I2C slave address 와 register address 가 달라서 다른 라이브러리를 써야 한다. 나는 HMC5883L 모듈을 사용하였다. Specification Datasheet 참고. 지자기장(Magnetic field of the Earth) 은 지구의 내부로부터 태양풍과 만나는 곳까지 뻗어있는 자기장인데, 태양풍은 태양으로부터 방사되는 하전입자들의 흐름이다. 지구 표면에서의 규모 범위는 .. 2022. 7. 2.
아두이노 ] 릴레이 모듈 + 흡입펌프 다루기 릴레이 모듈 Relay module 릴레이 모듈이란 낮은 전압/전류로 더 높은 전압/전류를 스위칭 할 수있게끔 해주는 부품이다. 릴레이의 원리 : 모듈 내부에 전류가 흐르면 자기장이 형성되는 전자석(철심에 코일을 감은 형태)이 있다. 그래서 신호부(사진상 모듈의 오른쪽)에 전기신호가 들어와서 전류가 흐르면 아래 그림처럼 자석이 열려있는 스위치를 끌어달여 ON 시켜준다. 구동부(모듈 사진상 왼쪽)의 COM은 공통단자이고 NO는 Normally Open, NC는 Nomally Closed 를 뜻한다. 릴레이 모듈은 중국산이 많기 때문에 NO가 常闭 NC가 常开 로 써있을 수도 있다. COM단자는 항상 물려있어야 하고 보통 NO, NC 둘 중 하나만 쓰는데 릴레이 모듈 SIG핀에 HIGH 신호가 들어왔을 때 .. 2022. 6. 30.