반응형

전체 글 764

[아두이노] 파이썬 Pyserial로 Blink 예제 실행하기 (PC to Arduino)

목차 이번 과정은 아두이노 보드와 컴퓨터(PC)를 USB 케이블을 이용해서 연결하고 파이썬(Python)의 Pyserial로 명령을 아두이노에 전달하고 아두이노는 이를 실행하는 예제를 해보겠습니다. 이 실습을 진행하기 위해서는 아래의 과정이 필요합니다. 1. 아두이노 보드 프로그램 : Serial 통신에서 특정 명령어가 전달되면 Blinking 예제 실행 2. 컴퓨터(Visual Studio)로 파이썬 작성하고 Serial로 특정 명령어 전달 1. 아두이노 보드 프로그램 : Serial 통신에서 특정 명령어가 전달되면 Blinking 예제 실행 우선 이번 코드는 아두이노의 시리얼(Serial) 통신을 열고 아래 명령이 들어오면 LED를 0.5초 단위로 깜빡이면서 켜거나 꺼지는 코드를 작성할 것입니다. 1..

[아두이노] String함수: indexof, substring, length (텍스트 검색, 위치 찾기)

목차 이번 포스트는 문자열 (String) 관련 함수들 중에 중요 함수에 대해 알아보도록 하겠습니다. 함수를 코드로 돌리고 확인은 Arduino에서 제공하는 시리얼 모니터로 하겠습니다. 시리얼(Serial) 통신 사용 방법 및 모니터링 방법은 아래 링크를 참조하시면 됩니다. (https://scribblinganything.tistory.com/512) Arduino String 함수 : indexOf indexOf 함수는 문자열에서 원하는 문자(Character)나 부분 문자열(String)을 검색해주고 해당 문자의 위치를 index 번호 0부터 시작해서 시작 위치를 정수(integer)로 알려 줍니다. indexOf 함수의 Syntax는 아래와 같습니다. 문자열변수.indexOf("찾을 문자", 찾기..

[Python]텍스트를 음성으로 변조(변환)하기 (gTTS 모듈)

목차 파이썬 gTTS, playsound 설치 파이썬(Python)에서 제공하는 모듈 중에 gTTS라는 모듈이 있습니다. gTTS는 Google Translate’s Text-to-Speech API 의 약자로 구글 번역에서 만든 text to speech 를 연결해주는 API 입니다. 텍스트(Text)를 소리나게 출력하기 위해 우선 텍스트에서 음성 파일로 변환할 수 있는 gTTS를 아래와 같이 설치 합니다. pip install gtts 다음으로 음악 파일을 읽어주는 playsound 라는 라이브러리(Library)를 설치합니다. pip install playsound 파이썬 텍스트 음성 파일로 저장하고 출력하기 gtts 함수는 사용법이 간단합니다. 인자 값(Parameter)으로 아래와 같은 값을 입..

파이썬(Python) 2022.05.10

[아두이노]1초마다 프로그램 동작 시키기(millis(),delay(), scheduling, 스케쥴링)

목차 Arduino 스케줄에 따라 프로그램 동작 시키기 원하는 시간(Timing)에 원하는 코드(Code)를 실행시키는 방법에 대해 알아보겠습니다. 일반적으로 Atmega 칩에서 이러한 스케쥴링(Scheduling)을 하기 위해서는 타이머 인터럽트(Timer Interrupt)를 사용해서 원하는 시간에 특정 코드가 동작하게 만들어 줍니다. 아두이노(Arduino)에는 다행이도 millis 라는 함수를 사용해서 해당 라인에 왔을때 당시 시간을 밀리세컨드(milli second)로 Return 해줍니다. Delay 함수는 입력 값으로 밀리세컨드를 입력 값으로 받아서 그 시간동안 다른 코드를 진행하지 않고 홀드(Hold) 해서 시간을 보냅니다. 아래의 예제 코드를 통해 쉽게 이해할 수 있습니다. Arduino..

[아두이노]메모리가 부족할 때 처리방법(프로그램 저장 공간, 전역 변수, 지역변수)

목차 Arduino 메모리(Memory) 공간이 작을 때 아두이노 스케치에서 코드를 작성하고 컴파일(Compile)을 진행하면 아래와 같은 메세지를 받을 수 있습니다. 스케치는 프로그램 저장 공간 3242 바이트(10%)를 사용. 최대 32256 바이트. 전역 변수는 동적 메모리 226바이트(11%)를 사용, 1822바이트의 지역변수가 남음. 최대는 2048 바이트. 앞서 아두이노를 구성하는 메모리(Memory) 공간에 대해 살펴 보았습니다. 메모리에 대해 잘 이해가 안되시면 괄호안의 링크를 참조하시길 바랍니다. (https://scribblinganything.tistory.com/519) 여기서 프로그램 저장 공간은 프로그램 메모리(Program Memroy, Flash Memory)를 의미 합니다...

[아두이노]메모리 종류와 기능 (Program Memory, Flash Memory, EEPROM)

목차 아두이노(Arduino) 메모리란? : 종류 아두이노는 위 그림과 같이 3가지의 메모리로 구성됩니다. Program Memory Data Memory EEPROM 아두이노(ATmega168)의 경우 Program Memory의 사이즈는 32KByte 이고 Data Memory는 2KByte의 크기이고 EEPROM은 0.5KByte 입니다. 아두이노(Arduino) 메모리란? : 기능 Program Memory는 플래시 메모리(Flash Memory)라고도 하는데 사용자가 스케치 소프트웨어에서 작성한 코드는 Program Memory로 올라 갑니다. Data Memory는 SRAM(Static Random Memory)로 구성되어 있는데 장점은 CPU에 가까이 위치하여 속도가 빠릅니다. 하지만 리셋(..

[닌텐도 스위치 게임 리뷰] 닌텐도 스위치 스포츠(Nintendo Switch Sports)

목차 닌텐도 스위치 스포츠(Nintendo Switch Sports) 구성품 평소에 게임을 많이 하지 않지만 닌텐도 댄스(Dance) 만큼은 즐기고는 있었습니다. 그러던 중에 닌텐도에서 스위치 스포츠라고 정말 몸만 써서 하는 운동 게임을 출시하는 것을 보고 바로 질렀습니다. 우선 구성품은 위에 사진과 같이 왼쪽에 케이스와 작은 게임칩과 다리에 센서를 묶을 수 있는 스트랩으로 이루어 져있습니다. 오른족이 닌텐도 스위치는 기본으로 가지고 있어야지 할 게임을 시행할 수 있습니다. 게임 종류는 아래와 같습니다. 발리볼(Volley Ball) 배드민턴(Badminton) 축구(Soccer) 볼링(Bowling) 칼싸움 테니스(Tennis) 축구의 경우 허벅지에 스트랩을 감고 해야하기 때문에 2인 플레이를 위해서는..

[아두이노]시리얼 통신: 컴퓨터에서 보드로 메세지 주고 받기(Send, Recieve, Serial)

목차 Arduino : Serial Communication 으로 PC와 데이터 주고 받기 이번 시간에는 Serial 통신 방법을 사용해서 컴퓨터의 USB 포트를 통해 메세지(Message)를 주고 받는 방법을 알아보겠습니다. 하드웨어 구성은 링크를 참조 하시면 됩니다. (https://scribblinganything.tistory.com/512) 코드는 간단하기 때문에 아래 예제 코드를 통해 설명하겠습니다. 예제 코드>> void setup() { Serial.begin(9600); while (!Serial) { ; } } void loop() { if (Serial.available() !=0 ) { String a_var = Serial.readStringUntil('\n'); String b_..

[아두이노] String함수: toInt, toFloat, toUpperCase, toLowerCase

목차 이번 포스트는 문자열 (String) 관련 함수들 중에 중요 함수에 대해 알아보도록 하겠습니다. 함수를 코드로 돌리고 확인은 Arduino에서 제공하는 시리얼 모니터로 하겠습니다. 시리얼(Serial) 통신 사용 방법 및 모니터링 방법은 아래 링크를 참조하시면 됩니다. (https://scribblinganything.tistory.com/512) Arduino 문자열 toInt 함수 toInt 함수(Function)는 문자열(String)을 정수(Integer)로 변경해줍니다. 정수로 변경 뒤에 수식(math)으로 처리하기 용이 합니다. 아래 예제 코드를 통해 쉽게 이해할 수 있습니다. 참고로 Integer 정수는 8비트(bits) 보드에서 사이즈는 2바이트로 16비트 입니다. 예제 코드>> vo..

[체중계 리뷰]인바디 다이얼 체중계 Review (Inbody H20B)

목차 인바디 다이얼 체중계 장단점 리뷰 위에 제품은 제가 구매한지 벌써 2년이 지난 제품입니다. 화장대 밑에 지저분하게 배치해 놓았는데 실용도 만큼은 최고인 제품입니다. 매일 측정하면서 체지방률을 검사하면 압박이 장난이 아닙니다. 사실 단점은 크게 없습니다. 화장대에 놓아서 머리카락이 위로 자주 올라가고 손잡이 부분 아래에 먼지가 끼는 정도가 단점일 듯 합니다. 그 외에는 장점만 있는 듯 합니다. 아래에 제가 생각하는 장점에 대해 간단하게 나열해보겠습니다. 1. 짧은 측정 시간 : 5~10초 2. 오래가는 배터리 수명 3. LCD 화면으로 간단하게 결과 확인 4. 인바디(Inbody) 앱 연동으로 추적 관리 우선 측정은 내 프로필을 장비에 입력합니다. 간단하게 키와 나이 정도만 입력하시면 됩니다. 그리고..

[아두이노] String함수: compareTo, equals, equalsIgnoreCase, length, replace

목차 이번 포스트는 문자열 (String) 관련 함수들 중에 중요 함수에 대해 알아보도록 하겠습니다. 함수를 코드로 돌리고 확인은 Arduino에서 제공하는 시리얼 모니터로 하겠습니다. 시리얼(Serial) 통신 사용 방법 및 모니터링 방법은 아래 링크를 참조하시면 됩니다. (https://scribblinganything.tistory.com/512) Arduino 문자열 compareTo 함수 compareTo 함수는 문자열(String)을 비교해서 동일한 경우 0을 return하고 다른 경우 ASCII 코드 차이 만큼을 return 합니다. 예제 코드>> void setup() { Serial.begin(9600); while (!Serial) { ; } } void loop() { String s..

[아두이노] 문자열, 정수, 실수 크기 비교 하기 (Comparison)

목차 Arduino 문자열(String) 비교하기 : 기호 사용하기 우선 문자열 비교에 앞서 문자열(String)을 비교하고 검증하기 위해 시리얼 통신(Serial Communication)을 사용해서 결과 값을 컴퓨터로 전달해서 확인해야 합니다. 해당 내용은 아래 링크를 통해 하드웨어 구성 부터 모니터링 보는 방법을 확인하시길 바랍니다. (https://scribblinganything.tistory.com/512) 문자열을 비교할 때 일반 부등식 기호를 사용하거나 equals(), equalsIgnoreCase() 와 같은 함수를 사용해서 비교 합니다. 우선 비교 기호는 아래와 같이 있습니다. comparison: == greater than: > greater than or equal to: >= ..

[아두이노] 시리얼 통신 기본 : 문자열(String) 보내기

목차 Arduino Serial 통신 - 문자열 보내기 셋업 기본 하드웨어 구성은 아래와 같습니다. 아두이노 우노(Uno) + USB 케이블 + 노트북 아두이노 소프트웨어는 노트북에 설치되어 있습니다. 아두이노 포트가 연결된 Port 번호를 확인 후 보드와 연결해 줍니다. Arduino Serial 통신 - 문자열 보내기 코드 및 결과 시리얼 통신을 위한 코드는 아래와 같습니다. 코드>> void setup() { Serial.begin(9600); } void loop() { Serial.println("Hello, World"); delay(3000); } 1~3번 라인: Serial 통신 연결을 위한 초기화 과정 5~8번 라인: 반복문 6번 라인: println 함수를 사용해서 괄호안의 문자열과 \..

[스마트티비 리뷰] LG 스탠바이미 Review

목차 LG 스탠바이미 장점, 단점 (장단점) 이번에 엘지에서 출시한 27인치 TV 스팬드바이미(StanbyME)의 특징을 한마디로 표현하면 배터리(Battery)로 동작되는 휠이 달린 화면의 위치 조정이 편리한 스마트 티비(Smart TV) 입니다. 말하다 보니 표현이 길어졌는데 앞서 한마디에서 장점이 다 있습니다. 저처럼 애가 있는 집에서는 티비를 거실에서 놓기 보다는 여기 저기 이동하면서 아이들 상태에 따라서 조정하고 싶을 때가 많습니다. 스탠 바이미는 아래 그림처럼 바닥면에 바퀴가 달려 있어 이동이 용이 합니다. 그리고 내장형 배터리 충전으로 3시간 동안 무선으로 재생이 가능합니다. 아래판 끝쪽에 충전선을 꽂는 부분이 있는데 무선으로 사용하지 않을 때는 일반 티비 처럼 전원을 연결해서 사용하시면 됩..

[Python]OpenCV 임계값 비교하기 threshold

목차 이번 포스트에서는 이미지가 가지고 있는 픽셀값을 threshold 함수를 사용해서 사용자가 지정한 문턱 값과 비교해서 옵션에 따라 처리하는 예제를 실행합니다. 우선 원본으로 사용할 이미지는 아래와 같습니다. 예제 코드>> import cv2 img = cv2.imread('gradient.jpg') print(img) cv2.imshow("original", img) cv2.waitKey(0) cv2.destroyAllWindows() 결과>> [[[116 116 116] [116 116 116] [116 116 116] ... 원형태로 가운데로 갈수록 밝아지는(픽셀값은 255에 가까워짐) 그림입니다. 파이썬 OpenCV threshold 함수 Syntax 이미지(image)의 임계값을 확인해서 비..

[Python]OpenCV 픽셀 처리 함수: add, subtract, multiply, divide

목차 앞서 이미지(image)나 동영상(video) 파일을 읽어서 불러온 이미지는 픽셀(pixel)의 BGR(Blue, Green, Red) 값으로 구성 됨을 확인하였습니다. (https://scribblinganything.tistory.com/493) 이번 포스트는 픽셀을 비교 (연산) 분석할때 사용하는 주요 함수에 대해 알아보겠습니다. 함수는 더하기, 빼기, 곱하기 나누기 입니다. 함수 사용에 앞서 race_car.jpg 라는 그림 파일을 불러서 동일 사이즈로 BGR이 100, 100, 100인 그림을 만들어서 해당 그림과 비교하는 형식으로 예제를 실행하겠습니다. 예제 코드>> import numpy as np import cv2 img = cv2.imread("race_car.jpg") base_..

[Python]OpenCV 픽셀 처리 함수:max,min,absdiff,compare

목차 앞서 이미지(image)나 동영상(video) 파일을 읽어서 불러온 이미지는 픽셀(pixel)의 BGR(Blue, Green, Red) 값으로 구성 됨을 확인하였습니다. (https://scribblinganything.tistory.com/493) 이번 포스트는 픽셀을 비교 (연산) 분석할때 사용하는 주요 함수에 대해 알아보겠습니다. 함수 사용에 앞서 race_car.jpg 라는 그림 파일을 불러서 동일 사이즈로 BGR이 100, 100, 100인 그림을 만들어서 해당 그림과 비교하는 형식으로 예제를 실행하겠습니다. 예제 코드>> import numpy as np import cv2 img = cv2.imread("race_car.jpg") base_pixel = np.full(img.shape,..

[Python] Numpy 배열 값 채우기(1차, 2차, 3차 ....)

목차 파이썬 넘파이 행렬 어레이 채우기 행렬(Matrix) array 값을 채우는 방법은 간단합니다. 주로 full 과 fill 함수를 사용해서 채웁니다. fill 함수의 경우 empty 함수를 사용해서 비우는 작업을 하기 때문에 간단한 full로 설명을 대체 하겠습니다. full 함수의 Syntax는 아래와 같습니다. matrix = np.full((행렬사이즈 정보),넣을 값,dtype=데이터 종류) 아래 예제 코드를 통해 쉽게 이해해 보겠습니다. 예제 코드>> import numpy as np matrix = np.full((4),7,dtype=np.uint16) print("1차 행렬") print(matrix) matrix = np.full((3,4),7,dtype=np.uint16) print(..

[Python]OpenCV 3차원 이미지 스캔화면(2차원)처럼 바꾸기

목차 [Python]OpenCV 기하학적 변형하기(Geometry formation) 이번 포스트는 이름을 어떻게 작성할까 고민 끝에 일반 사진(Picture) 파일을 2차원의 스캔(Scan)한 것과 같은 효과로 만드는 것 같아서 스캔하기로 적었습니다. 이전 장에서는 2차원 평면(Plane)의 그림(Image)을 원근(Perspective)을 줘서 3차원처럼 보이게 만들었는데 이번에는 반대로 3차원의 원근 거리감이 있는 이미지 파일을 거리감이 없어지게 변형하는 코드를 작성해 보았습니다. 설명에 앞서 아래 예제의 결과를 먼저 공유 해서 이번 포스트의 진행 방향을 쉽게 이해가도록 하겠습니다. 아래 예제 결과>> 최근에 위와 같은 예제를 명함이나 스마트폰의 사진 기술에서 많이 볼 수 있습니다. 명함을 비뚫게 ..

[Python]OpenCV 이미지 기울어지게 만들기, 원근감 주기(getPerspectiveTransform, warpPerspective)

목차 파이썬 OpenCV 이미지 파일 원근감 주기(Perspective) 이번 포스트에서는 파이썬의 OpenCV를 사용해서 사진 파일(Picture file)을 불러와서 2차원 평면을 기울려서 3차원과 같은 형태로 원근감을 줘보겠습니다. 그림이 멀리서 보이는 듯하게 보이게 하기 위해서는 아래 작업들이 필요 합니다. 1. 원본 이미지 픽셀 크기 확인 2. getPerspectiveTransform 함수 3. warpPerspective 함수 사실 함수 사용법만 알면 간단하게 할 수 있는 작업입니다. getPerspectiveTransform 함수 사용에 대해 알아보겠습니다. getPerspectiveTransform(원본 이미지 좌표, 변경할 이미지 좌표) 입력값으로 원본 이미지의 좌표와 변경할 이미지의 ..

반응형