반응형

프로그래밍/IoT 12

[C++] Convert from 3 Byte RGB color to 2 Byte RGB color

보통 컬러에 사용할 때, 0xFFFFFF -> RGB를 각각 1byte 씩 매칭하여 사용된다. 그러나 tft lcd 를 arduino 같은 플랫폼에서 사용할 때는 3 byte가 아닌 2 byte 형태로 축소하여 Color를 표현하기도 하는데 이것을 위한 컬러 변환 하는 방법은 아래와 같다. unsigned long rgb = strtol(hex_code.c_str(), NULL, 16); // 3byte에서 각각의 R, G, B 값을 추출합니다. byte red = (rgb >> 16) & 0xff; byte green = (rgb >> 8) & 0xff; byte blue = rgb & 0xff; // 각각의 값을 2byte 형태로 변환합니다. byte r_2byte = map(red, 0, 255, ..

프로그래밍/IoT 2023.03.10

[IoT] Windows IoT Core 라즈베리파이 3 - PWM

2022.04.07 - [프로그래밍/IoT] - [IoT] Windows IoT Core 라즈베리파이 3 개발환경 구축 - 1 [IoT] Windows IoT Core 라즈베리파이 3 개발환경 구축 - 1 이번 포스트는 라즈베리파이3와 Windows IoT Core를 이용하여 IoT Device를 개발하기 위한 개발 환경 구축 해보자! 준비물 Raspberry Pi 2 or 3 (반드시 Model B 까지 버전만 사용해야한다. Model B+ 부터는 지.. nonstop-antoine.tistory.com 2022.04.12 - [프로그래밍/IoT] - [IoT] Windows IoT Core 라즈베리파이 3 개발환경 구축 - 2 [IoT] Windows IoT Core 라즈베리파이 3 개발환경 구축 -..

프로그래밍/IoT 2022.04.18

[IoT] Windows IoT Core 라즈베리파이 3 화면 회전

아래와 같이 내 장치 목록에서 장치 포털로 들어갈 수 있다. 그러면 Device Settings에 보면 화면을 회전할 수 있도록 옵션이 존재한다. 하지만 시도해보면 90도 회전이 안될 것이다. 그래서 찾아낸 방법이 있다. SD Card를 다시 열여서 config.txt를 연다. 그리고 아래의 값을 넣어준다. display_rotate=1 0~3으로 셋팅할 수 있는데 0이면 정방향 1이면 90도 회전 2면 180도 회전 3이면 270도이다.

프로그래밍/IoT 2022.04.12

[IoT] Windows IoT Core 라즈베리파이 3 개발환경 구축 - 2

2022.04.07 - [프로그래밍/IoT] - [IoT] Windows IoT Core 라즈베리파이 3 개발환경 구축 - 1 [IoT] Windows IoT Core 라즈베리파이 3 개발환경 구축 - 1 이번 포스트는 라즈베리파이3와 Windows IoT Core를 이용하여 IoT Device를 개발하기 위한 개발 환경 구축 해보자! 준비물 Raspberry Pi 2 or 3 (반드시 Model B 까지 버전만 사용해야한다. Model B+ 부터는 지.. nonstop-antoine.tistory.com 지난 포스트에서는 라즈베리파이에 Windows IoT Core OS를 올리는 것을 설명하였습니다. 이번에는 Visual Studio를 이용하여 개발환경을 구성하고 원격 배포해보도록 하겠습니다. 준비 먼..

프로그래밍/IoT 2022.04.12

[IoT] Windows IoT Core 라즈베리파이 3 개발환경 구축 - 1

이번 포스트는 라즈베리파이3와 Windows IoT Core를 이용하여 IoT Device를 개발하기 위한 개발 환경 구축 해보자! 준비물 Raspberry Pi 2 or 3 (반드시 Model B 까지 버전만 사용해야한다. Model B+ 부터는 지원을 안한다) SD Card Reader OS Windows 10 Version 10.0.10240 이상의 버전의 PC Ultra Micro SD Card 8GB (FAT32 format) - 최소 Class 10 이상의 고속 메모리 카드 설치 sd card에 windows iot core를 설치를 하자. https://docs.microsoft.com/ko-kr/windows/iot-core/downloads 다운로드 - Windows IoT 단위 테스트를..

프로그래밍/IoT 2022.04.07

[IoT] Esp32 여유 Heap 정보 알아보기

C#이나 Java, Javascript등의 언어들은 GC를 통해 매모리를 관리하기에 개발자가 특별히 메모리 관리를 해줄 필요가 없습니다. (물론 GC를 생각하며 프로그램 안짜면 메모리 누수가 발생될수 있다.) 그러나 C++의 경우 개발자가 메모리를 관리를 해줘야합니다. 이것은 ESP32를 C++로 돌릴때도 마찬가지입니다. 코드를 잘못짜게 되면 Heap영역을 계속적으로 잡아먹게 되고 결국에는 ESP32가 재부팅됩니다. if(millis() - heapCheckMillis > 1000){ memcurr = ESP.getFreeHeap(); Serial.printf("FREEHeap: %d; DIFF %d\n", memcurr, memcurr - memlast); memlast = memcurr; heapCh..

프로그래밍/IoT 2020.11.25

[IoT] WiFi Max RSSI인 SSID 얻기

esp32를 사용하여 Wifi를 연결할 때, 첫 번째로 가장 중요한 요소는 Wifi와의 연결 강도가 될 수 있습니다. 기껏 esp32를 통해 간단한 웹서버를 만들거나 mqtt를 사용한다거나 카메라 화면등을 가져오는데 Wifi의 연결때문에 신호가 끊어져서 데이터를 읽는 경우가 많습니다. 아래의 코드는 현재 ESP32가 연결 가능한 Wifi들을 수집하여 RSSI가 가장 좋은 SSID를 얻는 방법입니다. int numSsid = WiFi.scanNetworks(); if(numSsid < 0) numSsid = 0; if (numSsid == -1) { INFO("Couldn't get a wifi connection"); while (true); } // print the list of networks se..

프로그래밍/IoT 2020.09.14

[Arduino] Serial Log 관리

Arduino를 개발할 때, 우린 주로 Jtag를 사용하는 경우를 제외하곤 대부분 디버깅을 Serial port를 이용하여 디버깅을 합니다. 그런데 로그도 일반 앱처럼 Info, Warn, Debug, Error 단위로 관리는 하지 않죠. 이를 위한 방법으로 아래와 같이 사용하면 편합니다. 원하는 Log level까지만 표기하도록 전처리기로 선언하여 사용하면 관리가 쉽습니다. #pragma once #include #include // Change _LOGLEVEL_ to set tracing and logging verbosity // 0: DISABLED: no logging // 1: ERROR: errors // 2: WARN: errors and warnings // 3: INFO: errors..

프로그래밍/IoT 2020.09.14

[IoT] esp32 Flash Download Tools 이용하여 업로드

우리가 VS Code에 PlatformIO Plugin을 이용하여 개발을 하는 경우, esp32에 프로그램을 업로드 하려면 vs code를 이용하여 업로드 하는 방법밖에 없다. 하지만 소스코드를 매번 컴파일 하며 업로드를 하는 것은 시간 낭비이며, 업체에 소스코드를 넘겨서 생산하는것은 더더욱 무리다. 때문에 .bin파일을 이용하여 esp32에 프로그램을 업로드 하는 방법을 소개하고자 한다. 먼저 해당 프로젝트를 열고 터미널을 연다. pio run -v -t upload 위의 코드를 입력하면 기존에 업로드 할때 나왔던 정보가 아닌 디테일한 정보들이 나온다. 이러한 정보 중 다음과 같은 데이터를 이용한다. 대충 이러한 정보인데 텍스트를 이쁘게 풀어서 써보자면 아래와 같다. "c:\users\jade4375\..

프로그래밍/IoT 2020.09.14

[Arduino] Button Control

우리가 Arduino나 마이크로 프로세서 등을 사용할 때 I/O를 이용하는 가장 기본적으로 예는 바로 버튼일 것이다. 이같은 회로를 바로 사용하면 채터링(Chattering) 현상이 발생하게 되는데 시그널로 확인해본다면 아래와 같다. 채터링 현상이 일어나는동안 SW적으로 데이터를 읽으면 1도 아니고 0도 아닌 이상한 상태가 되어 의도하지 않은 값을 읽어올수 있다. 이와 같은 상황을 해결하기 위해서 Debouncing이라는 기법을 이용하여 해결한다. 쉽게 설명하여 버튼 입력이 일어나는 동안 Debouncing Time만큼 입력을 무시하면 된다. 그리고 또한 실제 개발 환경에서는 이러한 버튼들에 대해 많은 I/O를 할당 하기 어려운 경우들이 대부분이다. 그러면 적은 수의 버튼을 이용하여 셋팅이나 조작을 해야..

프로그래밍/IoT 2020.09.14
반응형