분류 전체보기

    WIFI

    와이파이(Wifi) 일반적으로 와이파이는 IEEE 802.11 표준을 통신에 사용하는 무선 LAN 기술을 말한다. 와이파이 제품은 전파를 사용해 클라이언트 기기에서 공유기(router) 등의 AP로 데이터를 전송하고, 공유기는 LAN, WAN 또는 인터넷 상의 다른 기기와 연결한다. 초기에 와이파이 기술은 2.4GHz 주파수를 사용했지만, 이후 5GHz, 60GHz, 6GHz 주파수 대역으로 확대됐다. 와이파이란 원래 무선 기술 이름이 아니라 각 무선 제품이 상호운용된다는 것을 알려주는 와이파이 얼라이언스의 인증 프로그램이자 상표에 불과했다. 하지만 현재 와이파이는 IEEE 802.11 표준의 어려운 알파벳을 대신해 전체 무선 LAN 기술 이름이 됐다. 와이파이 작동 Wi-Fi는 일반적으로 스마트폰, 태..

    Bluetooth

    블루투스(Bluetooth) 블루투스란 스마트폰, 노트북, 이어폰, 헤드폰 등의 전자기기를 서로 연결하여 정보를 교환하는 근거리 무선 기술(10M 이내)의 표준을 말합니다. 와이파이, 블루투스, 로라 등 무선통신 기술을 매우 많지만, 그중에서도 근거리 무선 기술에 보통 활용되는 것은 블루투스입니다. 블루투스 원리 블루투스는 산업, 과학, 의료용으로 할당된 ISM(Industrial Scientific and Medical) 주파수 대역인 2.4~2.48GHz 범위에 있는 총 79개의 채널을 사용합니다. 이러한 이유로 시스템간의 전파 간섭이 생길 우려가 있어 블루투스는 주파수 호핑 방식을 취하고 있습니다. 주파수 호핑이란 많은 수의 채널을 특정 패턴에 따라 빠르게 이동하며 데이터를 조금씩 전송하는 기법입니..

    Nucleo-f411re

    STM32 Nucleo MCU 의 최소 기능만으로 구성된 개발 보드로 ST사에서 제작한 개발 보드이다. 개발 측면에서는 대부분의 Port에 1:1로 매칭되도록 많은 확장핀을 할당하여 개발편의성을 확실히 제공해 주고, 아두이노의 핀헤더 규격까지 지원해 주는 데다가 무엇보다도 동사의 ST-LINK 다운로더/디버거가 보드에 기본으로 포함된다. 때문에 개발 편의성과 범용성이 매우 높은 주제에 가격까지 저렴하다.대체로 아두이노 방식의 확장 핀헤더와 STM32방식의 확장 핀헤더를 동시에 제공하는데 이러한 확장헤더에 아두이노 용으로 널려있는 센서모듈이나 모터구동모듈 등을 바로 끼우거나 점퍼와이어로 연결하면 제품개발 검증에 필요한 간단한 프로토타입을 순식간에 구성할 수 있다마이크로컨트롤러 기능LQFP64 패키지의 ST..

    I2C

    I2C란 I2C(Inter-Intergrated Circuit, 또는 TWI - Two Wire Interface)는 복수 개의 슬레이브 장치가 복수개의 마스터 장치와 통신하기 위한 프로토콜이다. SPI와 마찬가지로 하나의 완성품을 구성하는 요소들 간의 근거리 통신을 위해 고안되었다. 정식 명칭은 I 2C이다. 따라서 I2C는 "아이투씨"가 아니라 "아이스퀘어드씨"라고 부르는 것이 맞다. Inter-IC라고도 부르지만, 잘 사용되지는 않는다. 주로 MCU, EEPROM, ADC, DAC, I/O 인터페이스와 같은 저속의 임베디드 시스템의 주변장치들(Peripheral)에 사용된다 하나의 마스터와 다수의 슬레이브로 연결이 구성되며, 마스터에서 기준클럭(SCL)을 생성하고, 이 클럭에 맞춰 데이터(SDA)를..

    UART

    UART란 UART는 범용 비동기 송수신기( Universal Asynchronous Receiver / Transmitter)의 약자로 두 장치 간에 직렬 데이터를 교환하기 위한 프로토콜 또는 규정을 정의합니다. UART는 매우 간단하며 양방향으로 데이터를 송신 및 수신하기 위해 송신기와 수신기 사이에 두 개의 와이어만 사용합니다. 또한 와이어 양 끝단은 접지 연결이 되어 있습니다. UART를 사용한 통신은 데이터가 한 방향으로만 전송되는 단방향 통신(simplex), 양쪽으로 모두 통신할 수 있으나 한 번에 한 방향으로만 전송이 가능한 반이중 통신(half-duplex) 또는 동시에 양방향으로 전송이 가능한 전이중 통신(full-duplex) 방식이 있습니다. 동기 통신과 비동기 통신 먼저 비동기화란..

    STM32_RPI4_thingspark

    이번에는 AWSIOT가 아닌 thingspark에 데이터를 전송해보겠습니다. STM32 설정은 전에 했던 실습과 동일합니다. https://rorsi.tistory.com/22?category=534836 thingspark란 the K system에서 만든 IOT Cloud Service로 여러 센서 데이터를 모으고 바로 차트를 확인할 수 있습니다. RESTFull, MQTT, WebSocket등을 지원합니다. https://www.thingspark.co.kr/ thingspark - IoT 데이터 수집,분석 및 활용 thingspark에서 IoT 데이터 수집, 분석 및 활용해보세요. thingspark는 개방형 IoT 플랫폼입니다. www.thingspark.co.kr thingspark 홈페이지에..

    STM32_RPI4_AWS IOT

    STM32 Device에서 Rpi4(라즈베리파이 4)를 거쳐 AWSIOT까지 무사히 전송해보는것을 소개하고자 합니다. 우선 본문에 사용되는 STM32 Device는 STM32L475VGT6칩을 사용하는 B-L475E-IOT01A1입니다. STM32 Project 생성 STM32CUBEIDE를 통해 Project를 생성하면 다음과 같은 창이 나오게 되는데 Board Selector를 클릭해준뒤 보드 모델을 검색해줍니다. 해당 보드를 찾았다면 Next 버튼을 눌러줍니다. 원하는 Project명을 정한뒤 Finish를 누르면 다음과 같은 창이 나오게 되는데 Yes를 눌러줍니다. 그러면 모든 핀들이 활성화된 상태로 설정이 됩니다. 이어서 라즈베리파이와 uart 통신을 하기 위해서 uart4를 활성화 시켜주고 B..

    STM32CubeIDE에서 FreeRTOS중 printf 오류 해결

    STM32를 사용하여 FreeRTOS를 작성할 때에 코드에서 printf를 수행할 때 특정 경우에 오류가 발생(코드가 제대로 출력이 안된다거나, hardfalut)하는 것을 볼 수 있다. 또는 malloc을 사용하여 큰 용량의 데이터를 Heap에서 확보하고자 할때 오류가 발생한다. https://github.com/mpaland/printf GitHub - mpaland/printf: Tiny, fast, non-dependent and fully loaded printf implementation for embedded systems. Extensive test s Tiny, fast, non-dependent and fully loaded printf implementation for embedded..

    ARM 이란

    ARM이란 Adavanced RISC Machine의 약자로 CPU의 한 종류입니다. ARM 프로세스 1985년 최초 에어콘 컴퓨터스(Acorm Computers)사에서 ARM 프로세서 개발. 1990년, 애플과 VLSI합작해서 ARM 회사설립 저전력, 32bit-RISC의 고효율, 낮은 가격이 특징 소형 디바이스, 모바일 단말기 등에서 강점을 드러냄 ARM 프로세스와 상대적인 개념으로 인텔 프로세서가 있다. ARM은 fabless 기업으로 공장이 없고 설계만 한다. ARM의 설계를 바탕으로 반도체 회사에서 주변장치를 더해 반도체 칩을 생산한다. (Apple, Samsung, IBM, NVIDIA 등) 설계한 프로세스에 대한 라이센스로 수익을 창출한다. 2016년, 소프트뱅크가 IoT산업의 대박 성장을 ..

    GPIO_LED_수동제어2

    이전에 수동제어1에서 했던거를 이어서 GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.Pin = GPIO_LED_Pin; //PC13 1 Pin)); assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); /* Configure the port pins */ while (((GPIO_Init->Pin) >> position) != 0x00u) { /* Get the IO position */ ioposition = (0x01uL Pin) & ioposition; if (iocurrent == ioposition) { /* Check the Alternate function parameters */ assert_param(IS_G..