당신은 주제를 찾고 있습니까 “아두 이노 파이썬 – (홈오토메이션) 파이썬으로 아두이노제어 1편 LED ON/OFF“? 다음 카테고리의 웹사이트 https://you.tfvp.org 에서 귀하의 모든 질문에 답변해 드립니다: you.tfvp.org/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 코딩아저씨TV 이(가) 작성한 기사에는 조회수 8,528회 및 좋아요 59개 개의 좋아요가 있습니다.
아두 이노 파이썬 주제에 대한 동영상 보기
여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!
d여기에서 (홈오토메이션) 파이썬으로 아두이노제어 1편 LED ON/OFF – 아두 이노 파이썬 주제에 대한 세부정보를 참조하세요
이번 영상에서는 홈오토메이션등 파이썬으로 생각한 대로 코딩을 할 수 있다는 것을 보여주는 영상으로 아두이노의 디지털 핀을 이용하여 신호를 내보내는 코딩을 학습합니다.
아두 이노 파이썬 주제에 대한 자세한 내용은 여기를 참조하세요.
[아두이노 QnA] 파이썬으로 아두이노 제어하기_1 – 블로그
바로바로 아두이노와 파이썬을 연결하는 방법에 대해 살펴보려고 합니다. . 너무 재밌을 것 같지 않나요? 그러면 빠르게 살펴보러 가볼까요?
Source: blog.naver.com
Date Published: 9/12/2021
View: 4071
[Python/Serial] 파이썬으로 아두이노 제어하기 – 코딩유치원
설치가 완료되었으면 오늘은 간단하게 아두이노-파이썬 시리얼 통신의 개념에 대해 이해할 수 있는 예제를 함께 살펴보겠습니다. <아두이노 코드>. 먼저 …
Source: coding-kindergarten.tistory.com
Date Published: 5/27/2022
View: 3095
[아두이노] 파이썬으로 제어하기 – 나의 개발 공부 일지
아두이노 기본적으로 아두이노는 시리얼 통신(UART)을 통해 제어하게 된다. 즉, 파이썬에서도 시리얼 통신을 하게 되면 아두이노를 충분히 제어할 수 …
Source: return-value.tistory.com
Date Published: 7/8/2022
View: 1724
한 권으로 끝내는 아두이노와 파이썬으로 52개 작품 만들기
기초 프로젝트와 융합 작품 그리고 인공지능 작품까지. 장문철, 박준원 저 앤써북 2022.03.30. 판매지수 267. 아두이노 파이썬 티처블머신 텐서플로우.
Source: book.interpark.com
Date Published: 12/8/2022
View: 9477
한 권으로 끝내는 아두이노와 파이썬으로 52개 작품 만들기
기초 프로젝트와 융합 작품 그리고 인공지능 작품까지 | 아두이노는 오픈소스라는 막강한 무기로 하드웨어를 제어하여 작품을 만드는 곳에서 많이 사용하고 있습니다.
Source: www.kyobobook.co.kr
Date Published: 5/12/2022
View: 940
파이썬을 이용한 아두이노 시리얼 통신 – 지팡이의 블로그임
필수 준비물. 아두이노 보드 – 이 글에서는 우노보드를 사용합니다. arduino IDE – https://www.arduino.cc/en/donate/ …
Source: boa9448.tistory.com
Date Published: 6/23/2021
View: 6684
[Arduino] 파이썬에서 아두이노 제어하기 – Hyunsun
Python – Arduino 라이브러리 추가. 단축키 윈도우+R 을 눌러 cmd 실행. 명령어 프롬프트에서 pip install arduino-python3 입력.
Source: hyunsun99.tistory.com
Date Published: 8/14/2022
View: 3439
[Python] 파이썬 아두이노 연동법 ( feat. Serial 통신, Firmata )
서론 과외를 하다 Python을 가르치는 학생을 대상으로 아두이노를 진행하게 되었다. 아두이노는 C++ 언어를 기반으로 동작을 하므로 Python을 사용 …
Source: defs-program.tistory.com
Date Published: 1/24/2022
View: 1840
[아두이노]파이썬 Pyserial로 아두이노 문자, 실수, 정수 값 읽기 …
decode 함수 : 아두이노에서 파이썬으로 USB 시리얼 통신으로 보낼 때 인코딩(Encoding) 되기 때문에 decode 작업을 해줍니다. Arduino에서 보낸 값 …
Source: scribblinganything.tistory.com
Date Published: 8/14/2021
View: 3075
주제와 관련된 이미지 아두 이노 파이썬
주제와 관련된 더 많은 사진을 참조하십시오 (홈오토메이션) 파이썬으로 아두이노제어 1편 LED ON/OFF. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.
주제에 대한 기사 평가 아두 이노 파이썬
- Author: 코딩아저씨TV
- Views: 조회수 8,528회
- Likes: 좋아요 59개
- Date Published: 2019. 10. 7.
- Video Url link: https://www.youtube.com/watch?v=DuvVQ6wGaT0
[아두이노 QnA] 파이썬으로 아두이노 제어하기_1
파이썬으로 아두이노 제어하기_1
안녕하세요. 코딩으로 오랜만에 찾아온 아토플래닛의 가현쌤입니다.
👏👏👏
오늘은 여러분들을 오랜만에 찾아온 만큼 굉장히 신기한 콘텐츠를 소개해드리려고 하는데요!
바로바로 아두이노와 파이썬을 연결하는 방법에 대해 살펴보려고 합니다.🤓
너무 재밌을 것 같지 않나요? 그러면 빠르게 살펴보러 가볼까요?
👉GO GO👈
[Python/Serial] 파이썬으로 아두이노 제어하기
반응형
안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.
코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석, 머신러닝 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.
업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART)나 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.
오늘은 아주 유명한 마이크로 컨트롤러 중의 하나인 아두이노를 파이썬으로 제어하는 법에 대해 알아보겠습니다.
저의 경우엔 컴퓨터의 GUI 프로그램으로 모터를 제어하기 위해서 파이썬과 아두이노를 결합하는 방법을 공부했습니다.
이 글을 보시는 대부분의 분들께서는 이미 아두이노를 아신다는 가정하에 글을 썼으니, 이 점 참고 부탁드립니다.
1. 개념도
파이썬이 어떻게 아두이노를 제어할 수 있는지 한 눈에 이해하기 쉽도록 개념도를 그려보았습니다.
기본적으로 아두이노는 UART 방식의 Serial 통신을 지원하며, 이 통신 방식으로 컴퓨터와 통신이 가능합니다.
여기서 말씀드리고 싶은 것은 아두이노를 파이썬이 직접 제어하는 것이 아니라, 아두이노는 컴퓨터와 통신을 하고, 파이썬은 pyserial 모듈을 이용해서 컴퓨터(정확히는 컴퓨터의 시리얼 통신 기능)를 제어 한다는 것입니다.
즉, 아두이노 IDE로 코딩을 해서 아두이노 보드에 시리얼 통신 기능이 포함된 코드를 컴파일 해주고, 별도로 파이썬으로 코딩을 해줘야 한다는 말입니다.
2. pySerial 사용법
우선 pySerial을 설치해보겠습니다. 무난하게 pip 명령어를 이용해서 설치해주세요.
# 터미널 창에서 pip로 설치 pip install pyserial # conda로도 설치 가능 conda install pyserial
설치가 완료되었으면 오늘은 간단하게 아두이노-파이썬 시리얼 통신의 개념에 대해 이해할 수 있는 예제를 함께 살펴보겠습니다.
<아두이노 코드>
먼저 아두이노 코드는 아래와 같이 작성하고, 아두이노에 ‘업로드’ 해주시면 됩니다.
시리얼 통신을 통해 아두이노로 명령이 전달될 때마다, 명령어를 파악해서 명령어의 종류에 따라 시리얼 통신으로 특정 메시지를 전송하는 코드입니다.
char cmd; void setup() { // 시리얼 통신 시작 (boadrate: 9600) Serial.begin(9600); } void loop() { // 컴퓨터로부터 시리얼 통신이 전송되면, 한줄씩 읽어와서 cmd 변수에 입력 if(Serial.available()){ cmd = Serial.read(); if(cmd==’a’){ Serial.println(“아두이노: a”); delay(100); } else if(cmd==’b’){ Serial.println(“아두이노: b”); delay(100); } } }
시리얼 모니터에서 아두이노 코드 작동 확인
<파이썬 코드>
파이썬 코드는 아래와 같이 작성해서 파이썬 파일(.py)로 실행시켜주시면 됩니다.
여기서 주의하실 점은 꼭 아두이노의 시리얼 모니터를 종료하고 실행시켜주셔야 한다는 것입니다.
이를 지키지 않을 시, 아래와 같은 에러를 출력합니다.
raise SerialException(“could not open port {!r}: {!r}”.format(self.portstr, ctypes.WinError()))
serial.serialutil.SerialException: could not open port ‘COM3’: PermissionError(13, ‘액세스가 거부되었습니다.’, None, 5)
import serial import time py_serial = serial.Serial( # Window port=’COM3′, # 보드 레이트 (통신 속도) baudrate=9600, ) while True: commend = input(‘아두이노에게 내릴 명령:’) py_serial.write(commend.encode()) time.sleep(0.1) if py_serial.readable(): # 들어온 값이 있으면 값을 한 줄 읽음 (BYTE 단위로 받은 상태) # BYTE 단위로 받은 response 모습 : b’\xec\x97\x86\xec\x9d\x8c\r
‘ response = py_serial.readline() # 디코딩 후, 출력 (가장 끝의
을 없애주기위해 슬라이싱 사용) print(response[:len(response)-1].decode())
코드를 나누어서 설명드리자면,
1) 먼저 아까 설치한 pyserial 모듈과 파이썬 내장 라이브러리에 있는 time 모듈을 불러와줍니다.
import serial import time
2) serial 모듈의 Serial 함수를 이용해서 port와 baudrate를 설정해줍니다.
py_serial = serial.Serial( # Window port=’COM3’, # 보드 레이트 (통신 속도) baudrate=9600, )
3) 아두이노에게 내릴 명령을 input 함수를 이용해서 입력해주고, 그 명령어를 시리얼 통신을 이용해서 보내주는 부분입니다.
아두이노와 같이 무한 루프(loop)를 돌기 위해서 while문을 사용한다는 점 꼭 기억해 주세요. 아니면 한 번 실행되고 그냥 프로그램이 종료됩니다.
while True: commend = input(‘아두이노에게 내릴 명령:’) py_serial.write(commend.encode()) time.sleep(0.1)
여기서 encode( )와 decode( )에 대해서 아셔야 하는데요.
encode란 우리가 사용하는 한글이나 영어를 시리얼 통신에 최적화된 상태로 변형시켜 주는 것을 말하며,
decode란 시리얼 통신에 최적화된 형태의 문자열을 다시 원래의 형태로 원상복구 시켜주는 것을 말합니다.
그 형태는 아래의 코드에서 주석으로 설명해 두었으니 주의깊게 봐주세요.
4) 아두이노에서 보낸 시리얼 통신(명령에 대한 반응 메시지)을 받는 부분입니다.
아두이노와 마찬가지로 메시지가 들어오면, 해당 메시지를 한 줄 읽고, 디코딩해줍니다.
if py_serial.readable(): # 들어온 값이 있으면 값을 한 줄 읽음 (BYTE 단위로 받은 상태) # BYTE 단위로 받은 response 모습 : b’\xec\x95\x84\xeb\x91\x90\xec\x9d\xb4\xeb\x85\xb8: a\r
‘ response = py_serial.readline() # 디코딩 후, 출력 (가장 끝의
을 없애주기위해 슬라이싱 사용) print(response[:len(response)-1].decode())
위에서 설명드린 파이썬 코드를 실행하면 아래와 같이 터미널 창을 마치 아두이노 시리얼 모니터 처럼 사용할 수 있습니다.
오늘 준비한 내용은 여기까지입니다.
다음에 기회가 된다면 GUI 프로그램으로 아두이노 모터 제어를 해보는 프로젝트를 포스팅 해보겠습니다.
감사합니다.
<참고 자료>
https://pyserial.readthedocs.io/en/latest/pyserial.html
https://kamang-it.tistory.com/entry/Arduino-Python%EC%9C%BC%EB%A1%9C-UARTSerial%ED%86%B5%EC%8B%A0%ED%95%98%EA%B8%B0
반응형
[아두이노] 파이썬으로 제어하기
아두이노
기본적으로 아두이노는 시리얼 통신(UART)을 통해 제어하게 된다. 즉, 파이썬에서도 시리얼 통신을 하게 되면 아두이노를 충분히 제어할 수 있다.
단, 하드웨어 코딩은 아두이노 IDE로 해야 한다.
흐름도
※ 기본적인 통신 방법은 시리얼 통신이다.
파이썬
시리얼 통신
파이썬으로 시리얼 통신을 하려면, 관련 모듈(pyserial)을 설치해야 한다.
PyPI 명령어는 ‘python -m pip install pyserial’이다.
파이썬에서 데이터 보내기
파이썬으로 사용자에게 입력받은 값을 토대로 13번 led핀을 on/off 해보자.
아두이노 IDE 코드
int input_data; void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode(13, OUTPUT); digitalWrite(13,LOW); } void loop() { // put your main code here, to run repeatedly: while(Serial.available()) { input_data = Serial.read(); } if(input_data == ‘1’) { digitalWrite(13, HIGH); // led_on } else if(input_data == ‘0’) { digitalWrite(13, LOW); // led_off } }
파이썬 코드
import serial import time # ‘COM3’ 부분에 환경에 맞는 포트 입력 ser = serial.Serial(‘COM3’, 9600) while True: if ser.readable(): val = input() if val == ‘1’: val = val.encode(‘utf-8’) ser.write(val) print(“LED TURNED ON”) time.sleep(0.5) elif val == ‘0’: val = val.encode(‘utf-8’) ser.write(val) print(“LED TURNED OFF”) time.sleep(0.5)
※ 바이트 단위로 인코딩해서 아두이노에 넘겨줘야 정상적으로 작동한다.
참고로 아두이노 내에서 data type 크기가 보통 사용하는 data type 보다 작다.
파이썬으로 데이터 입력받기
파이썬에 아두이노로부터 받은 값을 입력받아 출력해보자.
아두이노 IDE 코드
int output_data = 0; void setup() { // put your setup code here, to run once: Serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: Serial.println(output_data++); delay(500); // delay 500ms }
파이썬 코드
import serial import time # ‘COM3’ 부분에 환경에 맞는 포트 입력 ser = serial.Serial(‘COM3’, 9600) while True: if ser.readable(): val = ser.readline() print(val.decode()[:len(val)-1]) # 넘어온 데이터 중 마지막 개행문자 제외
※ 데이터 받을 때도 디코딩 과정을 해줘야 정상적으로 출력된다.
추가 적립 안내
CHAPTER 01 아두이노 시작하기
01_ 1 아두이노란 무엇인가?
아두이노란 무엇인가?
우리는 아두이노를 어떻게 동작 시키는가?
아두이노로 무엇을 만들 수 있나?
왜 세계 여러 나라에서 아두이노를 사용하는가?
인공지능과 아두이노의 만남
아두이노 보드 종류
01_ 2 아두이노 개발환경 구축하기
아두이노 IDE 설치하기
아두이노 실행과 IDE 구조 살펴보기
01_ 3 아두이노 및 프로그래밍 기초
아두이노 스케치 프로그램 구조 살펴보기
아두이노에 내장된 LED 제어하기 1
아두이노에 내장된 LED 제어하기 2
아두이노에 내장된 LED 제어하기 3
CHAPTER 02 아두이노 기본 기능 익히기
02_ 1 3색 LED 제어하기
3색 LED 이해하기
인공지능 쉴드 이용하는 방법
부품 이용하여 연결하는 방법
3색 LED의 빨간색 LED 깜빡이기
3색 LED의 빨간색 LED 더 빨리 깜빡이기
3색 LED의 빨간색, 녹색, 파란색 LED 번갈아 켜보기
#define 전처리문을 사용하여 코드의 가독성 높이기
02_ 2 3색 LED PWM으로 밝기 조절
인공지능 쉴드 이용하는 방법
부품 이용하여 연결하는 방법
아날로그 출력(PWM)으로 LED 밝기 조절하기
아날로그 출력(PWM)으로 LED 색상 조합하기
아날로그 출력(PWM)으로 무지개색상 출력하기
02_ 3 피에조부저 출력하기
피에조부저 이해하기
인공지능 쉴드 이용하는 방법
부품 이용하여 연결하는 방법
tone 함수 사용하여 피에조부저 출력하기
피에조부저로 학교종이 땡땡땡 출력하기
for문을 사용하여 코드 간략화하여 “학교종이 땡땡땡”출력하기
02_ 4 시리얼통신
시리얼통신 이해하기
시리얼통신으로 hello 전송하기
시리얼통신으로 hello 줄바꿈하여 전송하기
시리얼통신 통신속도 변경하여 통신하기
시리얼통신으로 PC에서 데이터 받아서 되돌려주기
시리얼통신으로 PC에서 명령어 받아서 LED 제어하기
02_ 5 버튼 입력받기
버튼 이해하기
인공지능 쉴드 이용하는 방법
부품 이용하여 연결하는 방법
버튼 값 읽어서 시리얼통신으로 전송하기
버튼을 누를 때 한 번 동작으로 코드 만들기 1
버튼을 누를 때 한 번 동작으로 코드 만들기 2
함수를 사용하여 버튼을 누를 때 한 번 동작하는 코드 만들기
02_ 6 가변 저항 값 입력받기
인공지능 쉴드 이용하는 방법
부품 이용하여 연결하는 방법
가변 저항 값 입력받아서 시리얼통신으로 전송하기
가변 저항 값 map 함수 사용하여 0~100%로 변경 후 시리얼통신으로 전송하기
02_ 7 CDS 조도센서 입력받기
CDS 조도센서 이해하기
인공지능 쉴드 이용하는 방법
부품 이용하여 연결하는 방법
CDS 조도센서 값 읽어 시리얼통신으로 전송하기
CDS 조도센서 값 읽어 if 조건문으로 값 비교하기
02_ 8 서보모터 제어하기
서보모터 이해하기
인공지능 쉴드 이용하는 방법
부품 이용하여 연결하는 방법
서보모터 각도 변경해보기
가변저항으로 서보모터 제어해보기
02_ 9 DHT11 온습도 센서
DHT11 온습도 센서 이해하기
인공지능 쉴드 이용하는 방법
부품 이용하여 연결하는 방법
DHT11 라이브러리 설치하고 센서 값 읽기
DHT11 센서의 온도 습도 값으로 불쾌지수 구하기
02_ 10 4-digit FND 출력하기(TM1637)
4-digit FND 이해하기
인공지능 쉴드 이용하는 방법
부품 이용하여 연결하는 방법
TM1637 라이브러리 설치하고 4-digit FND에 숫자 출력하기
4-digit FND에 영어 출력하기
02_ 11 비접촉 온도센서(MLX90614)로 체온 측정하기
비접촉 온도센서(MLX90614) 이해하기
인공지능 쉴드 이용하는 방법
부품 이용하여 연결하는 방법
MLX90614 라이브러리 설치하고 비접촉 온도 읽기
비접촉센서로 온도 읽어서 특정 온도 이상이면 시리얼통신으로 데이터 보내기
02_ 12 millis() 사용하여 아두이노를 일정시간마다 동작 시키기
delay 함수로 시리얼통신에 1초마다 hello 출력하기
delay 함수로 시리얼통신에 1초마다 hello 출력하고 0.5초마다 빨간색 LED 깜빡이기
millis 함수로 시리얼통신에 1초마다 hello 출력하기
millis 함수로 시리얼통신에 1초마다 hello 출력하고 0.5초마다 빨간색 LED 깜박이기
함수를 사용하여 코드의 가독성 높이기
CHAPTER 03 아두이노 프로젝트 만들기
03_ 1 어두워지면 자동으로 켜지는 전등 만들기
CDS 조도센서의 값을 시리얼통신으로 전송하기
어두워지면 자동으로 켜지는 전등 만들기
어두워지면 3초후 켜지는 전등 만들기
03_ 2 가변 저항으로 제어하는 LED 스탠드 만들기
가변 저항 값 읽어 시리얼통신으로 값 전송하기
가변 저항 값으로 LED의 밝기 조절하기
가변 저항 값으로 LED의 밝기 단계로 조절하기
03_ 3 버튼으로 제어하는 LED 스탠드 만들기
버튼을 눌러 값을 시리얼통신으로 전송하기
버튼을 눌러 LED의 밝기를 조절하기
03_ 4 온도습도 불쾌지수 표시기 만들기
온도습도 값을 읽어 불쾌지수를 계산하여 시리얼통신으로 전송하기
온도습도 값을 읽어 불쾌지수를 계산하여 4-digit FND에 표시하기
03_ 5 체온 측정기 만들기
비접촉온도센서로 체온 측정하여 시리얼통신으로 값 전송하기
비접촉온도센서로 체온 측정하여 4-digit FND에 표시하기
비접촉온도센서로 체온 측정하여 38도가 넘으면 부저 울리기
CHAPTER 04 시리얼통신으로 아두이노 제어하기
04_ 1 String 문자열
클래스에서 사용한 함수와 연산자 확인하기
String 문자열 더하기
String 문자열 공백 넣어 더하기
String 문자열 공백 계속 더하기
String 문자열 equals() 함수 사용하여 문자열 비교하기
String 문자열 length() 함수 사용하여 문자열 길이 구하기
String 문자열 indexOf() 함수 사용하여 문자열 찾기
String 문자열 indexOf() 함수 인자 넣어서 특정 위치부터 찾기
String 문자열 indexOf() 함수 if 조건문과 함께 사용하기
String 문자열 lastIndexOf() 함수 사용하여 문자열의 끝에서부터 찾기
String 문자열 substring() 함수 사용하여 문자열 자르기
String 문자열 toInt() 함수 사용하여 문자열을 숫자형으로 변환하기
String 문자열 toFloat() 함수 사용하여 문자열을 소수점형으로 변환하기
String 문자열 trim() 함수 사용하여 문자열의 좌우 공백 제어하기
04_ 2 RGB LED 제어하기
시리얼통신으로 하나의 문자를 받아 RGB LED 제어하기
시리얼통신으로
종료문자까지 문자열을 입력받기
시리얼통신으로 RGB=255,50,0 값 입력받아 255,50,0의 값 찾아 분리하기
시리얼통신으로 RGB=빨간색, 녹색, 파란색의 숫자값 입력받아 RGB LED 제어하기
04_ 3 서보모터 제어하기
시리얼통신으로 서보모터 명령어 입력받아 시리얼통신으로 값 전송하기
시리얼통신으로 서보모터 명령어 입력받아서 서보모터 제어하기
04_ 4 피에조부저 제어하기
시리얼통신으로 부저 주파수 입력받아서 소수점형으로 변환하기
시리얼통신으로 부저 주파수 입력받아서 피에조부저에 주파수 출력하기
04_ 5 FND에 숫자 출력하기
시리얼통신으로 FND 명령어 입력받아 소수점형으로 변환하기
시리얼통신으로 FND 명령어 입력받아 FND에 표시하기
04_ 6 버튼이 눌리면 값 전송하기
버튼이 눌리면 시리얼통신으로 버튼 값 전송하기
04_ 7 가변 저항, 조도센서 값 요청받고 응답하기
가변 저항과 조도센서의 값을 요청받으면 응답하기
가변 저항과 조도센서의 값을 요청받으면 실제 값 측정하여 응답하기
04_ 8 온도, 습도센서 값 요청받고 응답하기
온도센서와 습도센서의 값을 요청받으면 응답하기
온도센서와 습도센서의 값을 요청받으면 실제 값 측정하여 응답하기
04_ 9 비접촉 온도센서 값 요청받고 응답하기
비접촉온도센서와 주변 온도의 값을 요청받으면 응답하기
비접촉온도센서와 주변 온도의 값을 요청받으면 실제 값 측정하여 응답하기
04_ 10 통신 기능 모두 추가하기
3색 LED, 서보모터, 피에조부저, FND 통신기능 추가하기
버튼 통신기능 추가하기
가변저항, 조도센서, 온도센서, 습도센서, 비접촉온도센서 통신기능 추가하여 모든 통신규칙 만들기
CHAPTER 05 파이썬 시작하기
05_ 1 파이썬이란?
05_ 2 파이썬 개발환경구성
아나콘다를 통한 파이썬 설치
VS CODE 설치 및 파이썬 개발환경 구성 + 아나콘다 연동
VS CODE의 유용한 기능 추가 설치하기
05_ 3 파이썬의 기본 문법 익히기
출력 print
입력 input
변수 – 숫자형, 문자형, 소수점형, BOOL형
자료형 – 리스트, 튜플, 딕셔너리, set
연산 – 사칙연산, 논리연산, 비교연산
조건문
반복문 – while, for 반복문
오류 및 예외처리
함수
클래스
주석
import
CHAPTER 06 파이썬으로 간단한 프로그램 만들기
06_ 1 숫자 맞추기 게임 만들기
임의의 숫자 생성 코드 만들기
숫자 맞추는 게임 코드 만들기
try: except: 문으로 예외처리하기
06_ 2 로또번호 생성기 만들기
range 함수를 사용하여 1부터 45까지 값 생성하기
랜덤함수 사용하여 1부터 45까지 값 중에 6개의 값 무작위로 선택하기
994회차 로또번호와 비교하여 당첨 시뮬레이션 해보기
06_ 3 텍스트를 음성으로 변환
텍스트를 음성으로 변환하기
음성으로 변환된 파일 재생하기
파일에서 문자를 읽어 음성으로 출력해보기
06_ 4 엑셀파일 읽고 쓰기
리스트의 항목을 엑셀에 쓰기
리스트의 항목에 나이를 추가하여 엑셀로 쓰기
엑셀에 쓰는 다양한 방법 알아보기
엑셀에서 값 읽기
엑셀에서 마지막 길이만큼 읽어 리스트에 저장하기
CHAPTER 07 파이썬으로 아두이노와 통신하기
07_ 1 파이썬으로 아두이노 RGB LED 제어하기
시리얼통신으로 아두이노와 통신하여 아두이노 RGB LED 제어하기
아두이노와 연결된 시리얼포트 자동으로 찾아 연결하기
시리얼통신으로 아두이노와 통신하여 아두이노 RGB LED 제어하고 응답받기
시리얼통신으로 수신부를 쓰레드로 분리하여 성능 높이기
RGB LED제어하는 코드를 함수로 만들어 코드의 가독성 높이기
main() 함수를 생성하여 프로그램을 직관적으로 만들기
07_ 2 파이썬으로 아두이노 서보모터, 피에조부저, FND 제어하기
시리얼통신의 기본 코드 만들기
서보모터, 피에조부저, FND를 제어하는 함수르 만들고 명령어를 전송하여 제어해보기
07_ 3 파이썬으로 아두이노 스위치 값 수신받기
아두이노에서 버튼이 눌리면 PC의 파이썬에서 확인하는 프로그램 만들기
시리얼통신 수신 쓰레드에서 값을 받아 main() 함수에서 확인하기
07_ 4 파이썬으로 아두이노 가변 저항, 조도센서 값을 요청하여 받기
가변 저항, 조도센서의 요청 응답의 통신 규칙 살펴보기
시리얼통신으로 아두이노에게 가변 저항, 조도센서 값을 요청하여 받기
1초마다 실행하는 부분을 조금 더 파이썬 답게 변경하기
가변 저항과 밝기값에서 원하는 값 분리하기
07_ 5 파이썬으로 아두이노 온습도센서, 비접촉 온도센서 값을 요청하여 받기
시리얼통신으로 아두이노에게 온도센서, 습도센서, 비접촉온도센서, 비접촉 온도 주변 온도 값을 요청하여 받기
CHAPTER 08 파이썬과 아두이노로 작품 만들기
08_ 1 파이썬으로 실시간 환율 정보 읽어와 아두이노 FND에 표시하기
지원되는 통화목록을 출력하기
1달러당 원화 출력하기
실시간 환율정보 크롤링하는 코드 만들기
1달러에 원화비를 아두이노의 FND에 표시하기
08_ 2 파이썬으로 기상청 날씨 받아와 아두이노 FND에 표시하기
기상청에서 날씨정보 데이터 받기
파이썬에서 기상청 주소 접속하여 데이터 출력하기
정규식으로 사용하여 온도와 습도 데이터를 가져오기
온도 데이터를 아두이노의 FND에 표시하기
08_ 3 아두이노에서 버튼을 누르면 파이썬으로 이메일 보내기
네이버 이메일 설정하기
파이썬으로 네이버 이메일을 통해 이메일 보내기
아두이노에서 버튼을 누르면 파이썬으로 네이버 이메일을 통해 이메일 보내기
08_ 4 파이썬으로 미세먼지 농도 가져와 아두이노 LED, FND에 표시하기
공공데이터 포탈 가입 및 API 신청하기
파이썬 프로그램을 이용하여 웹페이지에 접속 후 미세먼지와 측정소를 출력하기
강남구의 미세먼지 데이터 출력하기
PM25의 미세먼지 농도를 FND와 LED에 표시하기
08_ 5 파이썬으로 코로나 19 현황 가져와 아두이노 FND표시하기
공공데이터 포탈 가입 및 API 신청하기
파이썬 프로그램을 이용하여 웹페이지에 접속 후 코로나 현황을 받아오기
전국의 코로나 확진자수 출력하기
오늘 날짜를 자동으로 입력하여 전국의 코로나 확진자수 출력하기
코로나 확진자수를 아두이노 FND에 표시하기
08_ 6 파이썬으로 색상 검출하여 아두이노 LED에 표시하기
OpenCV를 이용하여 색상 추출하기
OpenCV를 이용하여 색상 값 수치화하기
색상별 임계점 정하고 색상 판별하기
08_ 7 파이썬으로 가변 저항 값을 요청하여 실시간 그래프 그리기
matplotlib를 활용하여 그래프 그려보기
실시간 그래프 그리기
시리얼통신으로 가변 저항 값 요청받아 실시간 그래프 그리기
08_ 8 파이썬으로 밝기값을 요청하여 어두워지면 스마트폰으로 알림보내기
워크스페이스 생성하기
봇(로봇) 만들기
slack으로 메시지 전송하기
봇이 메시지를 잘 보냈는지 확인하기
아두이노의 밝기값이 어두워지면 slack으로 메시지 전송하기
08_ 9 파이썬으로 온도습도센서 값을 요청하여 엑셀에 기록하기
아두이노의 온도 습도 데이터 요청하여 받기
온도습도 값 수신 확인하기
온도습도 값 엑셀에 기록하기
08_ 10 파이썬으로 비접촉 온도센서 값을 요청하여 GUI로 표시하기
GUI 프로그램 만들기
GUI 프로그램의 글자크기 키우기
랜덤숫자 GUI에 표시하기
아두이노의 비접촉 온도센서 값 GUI에 표시하기
비접촉 온도센서의 값이 37.5도 이상이며 GUI의 색상 변경하기
08_ 11파이썬으로 GUI 만들어 서보모터 제어하기
GUI에 슬라이드바 생성하기
GUI에 슬라이드바를 조절하여 아두이노의 서보모터 제어하기
CHAPTER 09 파이썬 인공지능과 아두이노로 작품 만들기
09_ 0 가상환경으로 파이썬 3.8.8 버전 설치 후 진행하기
가상환경 생성하기
09_ 1 음성인식하여 아두이노 제어하기
음성 녹음하고 재생하기
음성을 텍스트로 변환하기
음성을 텍스트로 변환 후 특정 키워드 비교하기
음성으로 LED 제어하기
09_ 2 눈을 인식하여 졸음방지 알리미 만들기
OpenCV에서 카메라 영상 보여주기
OpenCV에서 얼굴과 눈을 찾기
눈을 계속 감고 있으면 OpenCV에서 아두이노로 알람보내기
09_ 3 인공지능 마스크검출 시스템 만들기
티처블머신에서 모델생성하기
티처블머신에서 생성된 모델 가져와 파이썬에서 마스크 착용 유무 판별하기
label 파일에서 예측값 매칭하기
마스크 미착용 시 아두이노의 알람 울리기
09_ 4 인공지능 동물원 만들기
티처블머신에서 모델생성하기
티처블머신에서 생성된 모델 가져와 기린, 코끼리, 상어, 배경화면 분류하기
기린이 보이면 아두이노의 서보모터 제어하여 문열어주기
한 권으로 끝내는 아두이노와 파이썬으로 52개 작품 만들기 – 교보문고
상품상세정보 ISBN 9791185553948 ( 1185553940 ) 쪽수 432쪽 크기 191 * 258 * 22 mm /899g 판형알림
책소개
이 책이 속한 분야
이 책은 아두이노를 사용하여 하드웨어를 만들고 파이썬을 이용하여 PC에서 프로그램을 만든 후 서로 통신 및 융합하여 52가지 다양한 작품 만들기를 통해 재미와 학습 두 가지를 모두 할 수 있게 구성하였습니다!
▶ 『한 권으로 끝내는 아두이노와 파이썬으로 52개 작품 만들기』 실습 동영상 북트레일러
* 출판사의 사정에 따라 서비스가 변경 또는 중지될 수 있습니다.
* window7의 경우 사운드 연결이 없을시, 동영상 재생에 오류가 발생할 수 있습니다. 이어폰, 스피커 등이 연결되어 있는지 확인 하시고 재생하시기 바랍니다.
상세이미지
목차
CHAPTER 01 아두이노 시작하기
01_ 1 아두이노란 무엇인가?
아두이노란 무엇인가?
우리는 아두이노를 어떻게 동작 시키는가?
아두이노로 무엇을 만들 수 있나?
왜 세계 여러 나라에서 아두이노를 사용하는가?
인공지능과 아두이노의 만남
아두이노 보드 종류
01_ 2 아두이노 개발환경 구축하기
아두이노 IDE 설치하기
아두이노 실행과 IDE 구조 살펴보기
01_ 3 아두이노 및 프로그래밍 기초
아두이노 스케치 프로그램 구조 살펴보기
아두이노에 내장된 LED 제어하기 1
아두이노에 내장된 LED 제어하기 2
아두이노에 내장된 LED 제어하기 3
CHAPTER 02 아두이노 기본 기능 익히기
02_ 1 3색 LED 제어하기
3색 LED 이해하기
인공지능 쉴드 이용하는 방법
부품 이용하여 연결하는 방법
3색 LED의 빨간색 LED 깜빡이기
3색 LED의 빨간색 LED 더 빨리 깜빡이기
3색 LED의 빨간색, 녹색, 파란색 LED 번갈아 켜보기
#define 전처리문을 사용하여 코드의 가독성 높이기
02_ 2 3색 LED PWM으로 밝기 조절
인공지능 쉴드 이용하는 방법
부품 이용하여 연결하는 방법
아날로그 출력(PWM)으로 LED 밝기 조절하기
아날로그 출력(PWM)으로 LED 색상 조합하기
아날로그 출력(PWM)으로 무지개색상 출력하기
02_ 3 피에조부저 출력하기
피에조부저 이해하기
인공지능 쉴드 이용하는 방법
부품 이용하여 연결하는 방법
tone 함수 사용하여 피에조부저 출력하기
피에조부저로 학교종이 땡땡땡 출력하기
for문을 사용하여 코드 간략화하여 “학교종이 땡땡땡”출력하기
02_ 4 시리얼통신
시리얼통신 이해하기
시리얼통신으로 hello 전송하기
시리얼통신으로 hello 줄바꿈하여 전송하기
시리얼통신 통신속도 변경하여 통신하기
시리얼통신으로 PC에서 데이터 받아서 되돌려주기
시리얼통신으로 PC에서 명령어 받아서 LED 제어하기
02_ 5 버튼 입력받기
버튼 이해하기
인공지능 쉴드 이용하는 방법
부품 이용하여 연결하는 방법
버튼 값 읽어서 시리얼통신으로 전송하기
버튼을 누를 때 한 번 동작으로 코드 만들기 1
버튼을 누를 때 한 번 동작으로 코드 만들기 2
함수를 사용하여 버튼을 누를 때 한 번 동작하는 코드 만들기
02_ 6 가변 저항 값 입력받기
인공지능 쉴드 이용하는 방법
부품 이용하여 연결하는 방법
가변 저항 값 입력받아서 시리얼통신으로 전송하기
가변 저항 값 map 함수 사용하여 0~100%로 변경 후 시리얼통신으로 전송하기
02_ 7 CDS 조도센서 입력받기
CDS 조도센서 이해하기
인공지능 쉴드 이용하는 방법
부품 이용하여 연결하는 방법
CDS 조도센서 값 읽어 시리얼통신으로 전송하기
CDS 조도센서 값 읽어 if 조건문으로 값 비교하기
02_ 8 서보모터 제어하기
서보모터 이해하기
인공지능 쉴드 이용하는 방법
부품 이용하여 연결하는 방법
서보모터 각도 변경해보기
가변저항으로 서보모터 제어해보기
02_ 9 DHT11 온습도 센서
DHT11 온습도 센서 이해하기
인공지능 쉴드 이용하는 방법
부품 이용하여 연결하는 방법
DHT11 라이브러리 설치하고 센서 값 읽기
DHT11 센서의 온도 습도 값으로 불쾌지수 구하기
02_ 10 4-digit FND 출력하기(TM1637)
4-digit FND 이해하기
인공지능 쉴드 이용하는 방법
부품 이용하여 연결하는 방법
TM1637 라이브러리 설치하고 4-digit FND에 숫자 출력하기
4-digit FND에 영어 출력하기
02_ 11 비접촉 온도센서(MLX90614)로 체온 측정하기
비접촉 온도센서(MLX90614) 이해하기
인공지능 쉴드 이용하는 방법
부품 이용하여 연결하는 방법
MLX90614 라이브러리 설치하고 비접촉 온도 읽기
비접촉센서로 온도 읽어서 특정 온도 이상이면 시리얼통신으로 데이터 보내기
02_ 12 millis() 사용하여 아두이노를 일정시간마다 동작 시키기
delay 함수로 시리얼통신에 1초마다 hello 출력하기
delay 함수로 시리얼통신에 1초마다 hello 출력하고 0.5초마다 빨간색 LED 깜빡이기
millis 함수로 시리얼통신에 1초마다 hello 출력하기
millis 함수로 시리얼통신에 1초마다 hello 출력하고 0.5초마다 빨간색 LED 깜박이기
함수를 사용하여 코드의 가독성 높이기
CHAPTER 03 아두이노 프로젝트 만들기
03_ 1 어두워지면 자동으로 켜지는 전등 만들기
CDS 조도센서의 값을 시리얼통신으로 전송하기
어두워지면 자동으로 켜지는 전등 만들기
어두워지면 3초후 켜지는 전등 만들기
03_ 2 가변 저항으로 제어하는 LED 스탠드 만들기
가변 저항 값 읽어 시리얼통신으로 값 전송하기
가변 저항 값으로 LED의 밝기 조절하기
가변 저항 값으로 LED의 밝기 단계로 조절하기
03_ 3 버튼으로 제어하는 LED 스탠드 만들기
버튼을 눌러 값을 시리얼통신으로 전송하기
버튼을 눌러 LED의 밝기를 조절하기
03_ 4 온도습도 불쾌지수 표시기 만들기
온도습도 값을 읽어 불쾌지수를 계산하여 시리얼통신으로 전송하기
온도습도 값을 읽어 불쾌지수를 계산하여 4-digit FND에 표시하기
03_ 5 체온 측정기 만들기
비접촉온도센서로 체온 측정하여 시리얼통신으로 값 전송하기
비접촉온도센서로 체온 측정하여 4-digit FND에 표시하기
비접촉온도센서로 체온 측정하여 38도가 넘으면 부저 울리기
CHAPTER 04 시리얼통신으로 아두이노 제어하기
04_ 1 String 문자열
클래스에서 사용한 함수와 연산자 확인하기
String 문자열 더하기
String 문자열 공백 넣어 더하기
String 문자열 공백 계속 더하기
String 문자열 equals() 함수 사용하여 문자열 비교하기
String 문자열 length() 함수 사용하여 문자열 길이 구하기
String 문자열 indexOf() 함수 사용하여 문자열 찾기
String 문자열 indexOf() 함수 인자 넣어서 특정 위치부터 찾기
String 문자열 indexOf() 함수 if 조건문과 함께 사용하기
String 문자열 lastIndexOf() 함수 사용하여 문자열의 끝에서부터 찾기
String 문자열 substring() 함수 사용하여 문자열 자르기
String 문자열 toInt() 함수 사용하여 문자열을 숫자형으로 변환하기
String 문자열 toFloat() 함수 사용하여 문자열을 소수점형으로 변환하기
String 문자열 trim() 함수 사용하여 문자열의 좌우 공백 제어하기
04_ 2 RGB LED 제어하기
시리얼통신으로 하나의 문자를 받아 RGB LED 제어하기
시리얼통신으로
종료문자까지 문자열을 입력받기
시리얼통신으로 RGB=255,50,0 값 입력받아 255,50,0의 값 찾아 분리하기
시리얼통신으로 RGB=빨간색, 녹색, 파란색의 숫자값 입력받아 RGB LED 제어하기
04_ 3 서보모터 제어하기
시리얼통신으로 서보모터 명령어 입력받아 시리얼통신으로 값 전송하기
시리얼통신으로 서보모터 명령어 입력받아서 서보모터 제어하기
04_ 4 피에조부저 제어하기
시리얼통신으로 부저 주파수 입력받아서 소수점형으로 변환하기
시리얼통신으로 부저 주파수 입력받아서 피에조부저에 주파수 출력하기
04_ 5 FND에 숫자 출력하기
시리얼통신으로 FND 명령어 입력받아 소수점형으로 변환하기
시리얼통신으로 FND 명령어 입력받아 FND에 표시하기
04_ 6 버튼이 눌리면 값 전송하기
버튼이 눌리면 시리얼통신으로 버튼 값 전송하기
04_ 7 가변 저항, 조도센서 값 요청받고 응답하기
가변 저항과 조도센서의 값을 요청받으면 응답하기
가변 저항과 조도센서의 값을 요청받으면 실제 값 측정하여 응답하기
04_ 8 온도, 습도센서 값 요청받고 응답하기
온도센서와 습도센서의 값을 요청받으면 응답하기
온도센서와 습도센서의 값을 요청받으면 실제 값 측정하여 응답하기
04_ 9 비접촉 온도센서 값 요청받고 응답하기
비접촉온도센서와 주변 온도의 값을 요청받으면 응답하기
비접촉온도센서와 주변 온도의 값을 요청받으면 실제 값 측정하여 응답하기
04_ 10 통신 기능 모두 추가하기
3색 LED, 서보모터, 피에조부저, FND 통신기능 추가하기
버튼 통신기능 추가하기
가변저항, 조도센서, 온도센서, 습도센서, 비접촉온도센서 통신기능 추가하여 모든 통신규칙 만들기
CHAPTER 05 파이썬 시작하기
05_ 1 파이썬이란?
05_ 2 파이썬 개발환경구성
아나콘다를 통한 파이썬 설치
VS CODE 설치 및 파이썬 개발환경 구성 + 아나콘다 연동
VS CODE의 유용한 기능 추가 설치하기
05_ 3 파이썬의 기본 문법 익히기
출력 print
입력 input
변수 – 숫자형, 문자형, 소수점형, BOOL형
자료형 – 리스트, 튜플, 딕셔너리, set
연산 – 사칙연산, 논리연산, 비교연산
조건문
반복문 – while, for 반복문
오류 및 예외처리
함수
클래스
주석
import
CHAPTER 06 파이썬으로 간단한 프로그램 만들기
06_ 1 숫자 맞추기 게임 만들기
임의의 숫자 생성 코드 만들기
숫자 맞추는 게임 코드 만들기
try: except: 문으로 예외처리하기
06_ 2 로또번호 생성기 만들기
range 함수를 사용하여 1부터 45까지 값 생성하기
랜덤함수 사용하여 1부터 45까지 값 중에 6개의 값 무작위로 선택하기
994회차 로또번호와 비교하여 당첨 시뮬레이션 해보기
06_ 3 텍스트를 음성으로 변환
텍스트를 음성으로 변환하기
음성으로 변환된 파일 재생하기
파일에서 문자를 읽어 음성으로 출력해보기
06_ 4 엑셀파일 읽고 쓰기
리스트의 항목을 엑셀에 쓰기
리스트의 항목에 나이를 추가하여 엑셀로 쓰기
엑셀에 쓰는 다양한 방법 알아보기
엑셀에서 값 읽기
엑셀에서 마지막 길이만큼 읽어 리스트에 저장하기
CHAPTER 07 파이썬으로 아두이노와 통신하기
07_ 1 파이썬으로 아두이노 RGB LED 제어하기
시리얼통신으로 아두이노와 통신하여 아두이노 RGB LED 제어하기
아두이노와 연결된 시리얼포트 자동으로 찾아 연결하기
시리얼통신으로 아두이노와 통신하여 아두이노 RGB LED 제어하고 응답받기
시리얼통신으로 수신부를 쓰레드로 분리하여 성능 높이기
RGB LED제어하는 코드를 함수로 만들어 코드의 가독성 높이기
main() 함수를 생성하여 프로그램을 직관적으로 만들기
07_ 2 파이썬으로 아두이노 서보모터, 피에조부저, FND 제어하기
시리얼통신의 기본 코드 만들기
서보모터, 피에조부저, FND를 제어하는 함수르 만들고 명령어를 전송하여 제어해보기
07_ 3 파이썬으로 아두이노 스위치 값 수신받기
아두이노에서 버튼이 눌리면 PC의 파이썬에서 확인하는 프로그램 만들기
시리얼통신 수신 쓰레드에서 값을 받아 main() 함수에서 확인하기
07_ 4 파이썬으로 아두이노 가변 저항, 조도센서 값을 요청하여 받기
가변 저항, 조도센서의 요청 응답의 통신 규칙 살펴보기
시리얼통신으로 아두이노에게 가변 저항, 조도센서 값을 요청하여 받기
1초마다 실행하는 부분을 조금 더 파이썬 답게 변경하기
가변 저항과 밝기값에서 원하는 값 분리하기
07_ 5 파이썬으로 아두이노 온습도센서, 비접촉 온도센서 값을 요청하여 받기
시리얼통신으로 아두이노에게 온도센서, 습도센서, 비접촉온도센서, 비접촉 온도 주변 온도 값을 요청하여 받기
CHAPTER 08 파이썬과 아두이노로 작품 만들기
08_ 1 파이썬으로 실시간 환율 정보 읽어와 아두이노 FND에 표시하기
지원되는 통화목록을 출력하기
1달러당 원화 출력하기
실시간 환율정보 크롤링하는 코드 만들기
1달러에 원화비를 아두이노의 FND에 표시하기
08_ 2 파이썬으로 기상청 날씨 받아와 아두이노 FND에 표시하기
기상청에서 날씨정보 데이터 받기
파이썬에서 기상청 주소 접속하여 데이터 출력하기
정규식으로 사용하여 온도와 습도 데이터를 가져오기
온도 데이터를 아두이노의 FND에 표시하기
08_ 3 아두이노에서 버튼을 누르면 파이썬으로 이메일 보내기
네이버 이메일 설정하기
파이썬으로 네이버 이메일을 통해 이메일 보내기
아두이노에서 버튼을 누르면 파이썬으로 네이버 이메일을 통해 이메일 보내기
08_ 4 파이썬으로 미세먼지 농도 가져와 아두이노 LED, FND에 표시하기
공공데이터 포탈 가입 및 API 신청하기
파이썬 프로그램을 이용하여 웹페이지에 접속 후 미세먼지와 측정소를 출력하기
강남구의 미세먼지 데이터 출력하기
PM25의 미세먼지 농도를 FND와 LED에 표시하기
08_ 5 파이썬으로 코로나 19 현황 가져와 아두이노 FND표시하기
공공데이터 포탈 가입 및 API 신청하기
파이썬 프로그램을 이용하여 웹페이지에 접속 후 코로나 현황을 받아오기
전국의 코로나 확진자수 출력하기
오늘 날짜를 자동으로 입력하여 전국의 코로나 확진자수 출력하기
코로나 확진자수를 아두이노 FND에 표시하기
08_ 6 파이썬으로 색상 검출하여 아두이노 LED에 표시하기
OpenCV를 이용하여 색상 추출하기
OpenCV를 이용하여 색상 값 수치화하기
색상별 임계점 정하고 색상 판별하기
08_ 7 파이썬으로 가변 저항 값을 요청하여 실시간 그래프 그리기
matplotlib를 활용하여 그래프 그려보기
실시간 그래프 그리기
시리얼통신으로 가변 저항 값 요청받아 실시간 그래프 그리기
08_ 8 파이썬으로 밝기값을 요청하여 어두워지면 스마트폰으로 알림보내기
워크스페이스 생성하기
봇(로봇) 만들기
slack으로 메시지 전송하기
봇이 메시지를 잘 보냈는지 확인하기
아두이노의 밝기값이 어두워지면 slack으로 메시지 전송하기
08_ 9 파이썬으로 온도습도센서 값을 요청하여 엑셀에 기록하기
아두이노의 온도 습도 데이터 요청하여 받기
온도습도 값 수신 확인하기
온도습도 값 엑셀에 기록하기
08_ 10 파이썬으로 비접촉 온도센서 값을 요청하여 GUI로 표시하기
GUI 프로그램 만들기
GUI 프로그램의 글자크기 키우기
랜덤숫자 GUI에 표시하기
아두이노의 비접촉 온도센서 값 GUI에 표시하기
비접촉 온도센서의 값이 37.5도 이상이며 GUI의 색상 변경하기
08_ 11파이썬으로 GUI 만들어 서보모터 제어하기
GUI에 슬라이드바 생성하기
GUI에 슬라이드바를 조절하여 아두이노의 서보모터 제어하기
CHAPTER 09 파이썬 인공지능과 아두이노로 작품 만들기
09_ 0 가상환경으로 파이썬 3.8.8 버전 설치 후 진행하기
가상환경 생성하기
09_ 1 음성인식하여 아두이노 제어하기
음성 녹음하고 재생하기
음성을 텍스트로 변환하기
음성을 텍스트로 변환 후 특정 키워드 비교하기
음성으로 LED 제어하기
09_ 2 눈을 인식하여 졸음방지 알리미 만들기
OpenCV에서 카메라 영상 보여주기
OpenCV에서 얼굴과 눈을 찾기
눈을 계속 감고 있으면 OpenCV에서 아두이노로 알람보내기
09_ 3 인공지능 마스크검출 시스템 만들기
티처블머신에서 모델생성하기
티처블머신에서 생성된 모델 가져와 파이썬에서 마스크 착용 유무 판별하기
label 파일에서 예측값 매칭하기
마스크 미착용 시 아두이노의 알람 울리기
09_ 4 인공지능 동물원 만들기
티처블머신에서 모델생성하기
티처블머신에서 생성된 모델 가져와 기린, 코끼리, 상어, 배경화면 분류하기
기린이 보이면 아두이노의 서보모터 제어하여 문열어주기
출판사 서평
파이썬을 이용한 아두이노 시리얼 통신
개요
이 글에서는 파이썬을 이용해서 아두이노와 데이터를 교환하는 방법에 대해서 알아봅니다
시리얼 통신에 대한 상세 내용은 최소한으로 언급합니다. 실제 사용방법에 중점을 둡니다
필수 준비물
아두이노 보드 – 이 글에서는 우노보드를 사용합니다
arduino IDE – https://www.arduino.cc/en/donate/ 여기에서 다운로드 받고 설치합니다
그 외 개발도구는 자신이 편한걸로 선택합니다
소스 코드 링크 – https://github.com/boa9448/SerialTest
개발 환경
os – windows10
python – python 3.9.7 x64
개발도구 – vs code
개발도구(확장) – pylance, python
arduino – arduino ide
보드 – uno
전체 순서
전체 순서는 다음과 같습니다
파이썬 라이브러리 설치 문자열 에코 예제 구조화된 데이터 에코 예제 잡기술
1. 라이브러리 설치
pyserial 모듈을 이용해서 시리얼통신을 할 수 있습니다
위 모듈은 시리얼 포트에 대한 액세스를 캡슐화 합니다
windows, linux, mac에서 호환가능합니다
다음 커맨드를 이용해서 라이브러리를 설치합니다
pip install pyserial
pyserial 모듈이 이미 설치되어 있는 모습
2. 문자열 에코 예제
arduino ide를 열고 다음 코드와 같이 작성 합니다
void setup() { Serial.begin(9600); } void loop() { // 만약 시리얼에 읽을 데이터가 있다면… if(Serial.available()) { // 시리얼에서 읽어온 데이터를 다시 시리얼로 출력 Serial.write(Serial.read()); } }
ide에서 코드를 입력한 모습
ide에서 보드와 포트를 선택하고 업로드 합니다
이때 포트 번호를 기억해둡니다
ide에서 포트를 확인
성공적으로 업로드가 되었다면 시리얼 모니터를 이용해서 테스트합니다
우측 하단에 다음 화면처럼 설정한 뒤 전송을 누릅니다
다음과 같은 화면을 볼 수 있습니다
시리얼로 입력된 데이터를 그대로 다시 출력하는 예제입니다
python 개발 도구를 열고 다음 코드와 같이 작성 합니다
실행하기 전에 반드시 앞에서 열었던 시리얼 모니터를 닫아주세요
시리얼 모니터를 닫았다면 실행합니다
import time import serial # port : 앞에서 arduino ide에서 확인한 포트 이름을 입력합니다 # baudrate : 아두이노 setup함수에서 serial.begin에 사용된 값을 사용합니다 # 포트가 연결되면 보드가 껐다 켜집니다 # 초기화가 완료될 시간을 약간 기다려줍니다 arduino = serial.Serial(port = “COM6″, baudrate = 9600) time.sleep(3) # 시리얼에 test string을 보냄 arduino.write(b”test string”) # 잠시 대기 time.sleep(1) data = arduino.read_all() print(data) arduino.close()
다음과 같은 출력을 볼 수 있습니다
bytes형태의 test string을 볼 수 있습니다
아두이노에서 보낸 b”test string”이 출력된 모습
3. 구조화된 데이터 에코 예제
구조화된 데이터를 송수신하는 방법입니다
고정길이의 패킷을 정의하고 해당 패킷을 이용해서 아두이노와 시리얼로 통신하는 예제입니다
표시 방법은 다음과 같습니다 [필드 이름 : 필드 사이즈]
ex : [시작 사인 : 2][데이터 : 4] -> 시작 사인은 2바이트, 데이터는 4바이트
예제에서 사용할 패킷은 다음과 같습니다
[시작 사인 : 1][데이터 타입 : 1][데이터 : 4][체크섬 : 2]총 8바이트 길이의 패킷입니다
c로 표현하면 다음과 같습니다
#pragma pack(push, 1) typedef struct packet_ { unsigned char start_sign; // 시작 사인 : 1 unsigned char data_type; // 데이터 타입 : 1 uint32_t data; // 데이터 : 4 unsigned short checksum; // 체크섬 : 2 }PACKET; #pragma pack(pop) //또는 //unsigned char packet[8];
구조체의 정렬을 1바이트로 맞추기 위해서 #pragma pack을 이용했습니다
해당 정렬을 맞추지 않는다면 구조체 정렬에 의해서 1, 2, 4, 8, 16과 같은 단위로 멤버 변수가 정렬됩니다
이번 예제에서는 위 구조체를 이용해서 데이터를 손쉽게 작성 및 수정하고 직렬화 합니다
1바이트로 정렬된 구조체는 sizeof로 크기를 가져왔을때 멤버변수의 합과 같은 크기를 리턴합니다
그리고 char형 포인터로 캐스팅했을 때 올바르게 직렬화할 수 있습니다
해당 예제에서는 위와 같은 형식의 패킷을 정의하고 그 패킷으로만 통신을 합니다
항상 고정 사이즈의 패킷을 보내고 받는 예제입니다
다음 코드를 arduino ide에 작성한 뒤 업로드 합니다
#pragma pack(push, 1) typedef struct packet_ { unsigned char start_sign; // 시작 사인 : 1 unsigned char data_type; // 데이터 타입 : 1 uint32_t data; // 데이터 : 4 unsigned short checksum; // 체크섬 : 2 }PACKET; #pragma pack(pop) //또는 //unsigned char packet[8]; // 데이터를 받을 버퍼 선언 PACKET data = {0, }; void setup() { Serial.begin(9600); } void loop() { // 시리얼에 읽을 데이터가 있다면 if(Serial.available()) { // packet 사이즈만큼 읽어옴 Serial.readBytes((char*)&data, sizeof(data)); // 데이터 값에 + 1을 한 뒤에 다시 전송 data.data += 1; Serial.write((char*)&data, sizeof(data)); } }
고정길이로 통신을 하기 때문에
아두이노에서는 시리얼 버퍼에서 읽을 수 있는 데이터가 있을 때는
항상 Packet구조체의 사이즈만큼 읽으려고 시도합니다
Serial.readBytes((char*)&data, sizeof(data));
그리고 받은 패킷의 데이터 값에 +1을 해서 다시 전송합니다
data.data += 1; Serial.write((char*)&data, sizeof(data));
파이썬은 다음 코드를 작성 한뒤 실행합니다
import time from ctypes import Structure, c_ubyte, c_ushort, c_uint32 import serial # ctypes를 이용한 구조체 클래스 작성 class Packet(Structure): # pragma pack(push, 1)과 같은 표현 # 구조체 정렬을 1바이트 단위로 하도록 설정 _pack_ = 1 # 실제 구조체 멤버 선언 _fields_ = [(“start_sign”, c_ubyte) , (“data_type”, c_ubyte) , (“data”, c_uint32) , (“checksum”, c_ushort)] # 보낼 데이터를 생성 # 시작 사인은 #, 데이터 타입과 체크섬은 임의의 값으로 생성 # 데이터는 123을 입력 MY_DATA_TYPE = 1 data = Packet(ord(‘#’), MY_DATA_TYPE, 123, 456) # 데이터 출력 print(f”start_sign : {data.start_sign}\ data_type : {data.data_type}\ data : {data.data}\ checksum : {data.checksum}”) # 바이트로 변환해서 출력 print(f”bytes : {bytes(data)}”) arduino = serial.Serial(port = “COM6″, baudrate = 9600) time.sleep(3) # 시리얼에 데이터를 보냄 send_count = arduino.write(bytes(data)) # 보낸 사이즈만큼 읽어들임 data = arduino.read(send_count) # 받은 bytes형식의 데이터를 구조체로 변환 data = Packet.from_buffer_copy(data) # 데이터 출력 print(f”start_sign : {data.start_sign}\ data_type : {data.data_type}\ data : {data.data}\ checksum : {data.checksum}”) # 바이트로 변환해서 출력 print(f”bytes : {bytes(data)}”) arduino.close()
정상적으로 실행됐다면 다음과 같은 결과를 볼 수 있습니다
보낸 값과 받은 값의 출력
data의 값으 1증가된 모습으로 보인다면 정상적으로 실행된 모습입니다
만약 그대로 돌아온다면 아두이노 코드를 제대로 업로드 했는지 확인해주세요
파이썬에서는 내장 모듈인 ctypes를 이용해서 구조체를 작성, 직렬화에 사용합니다
Structure를 상속하고 구조체 클래스를 작성합니다
클래스 멤버 _pack_을 이용해서 구조체의 정렬을 1바이트로 설정합니다
_fields_를 이용해서 실제 멤버변수를 작성합니다
# ctypes를 이용한 구조체 클래스 작성 class Packet(Structure): # pragma pack(push, 1)과 같은 표현 # 구조체 정렬을 1바이트 단위로 하도록 설정 _pack_ = 1 # 실제 구조체 멤버 선언 _fields_ = [(“start_sign”, c_ubyte) , (“data_type”, c_ubyte) , (“data”, c_uint32) , (“checksum”, c_ushort)]
구조체의 인스턴스를 생성하고 값을 출력합니다
바이트로 변환한 뒤 직렬화된 값을 확인합니다
체크섬의 값은 이 예제에서는 생략하고 임의의 값으로 입력합니다
# 보낼 데이터를 생성 # 시작 사인은 #, 데이터 타입과 체크섬은 임의의 값으로 생성 # 데이터는 123을 입력 MY_DATA_TYPE = 1 data = Packet(ord(‘#’), MY_DATA_TYPE, 123, 456) # 데이터 출력 print(f”start_sign : {data.start_sign}\ data_type : {data.data_type}\ data : {data.data}\ checksum : {data.checksum}”) # 바이트로 변환해서 출력 print(f”bytes : {bytes(data)}”)
성공적으로 실행됐다면 다음과 같은 결과를 볼 수 있습니다
보낼 데이터를 출력한 모습
다음은 시리얼포트를 열고 해당 포트로 데이터를 전송합니다
전송한 바이트 수를 저장하고 보낸 바이트 수 만큼 읽어들입니다
arduino = serial.Serial(port = “COM6″, baudrate = 9600) time.sleep(3) # 시리얼에 데이터를 보냄 send_count = arduino.write(bytes(data)) # 보낸 사이즈만큼 읽어들임 data = arduino.read(send_count)
받은 바이트형식의 데이터를 ctypes 구조체로 변환합니다
# 받은 bytes형식의 데이터를 구조체로 변환 data = Packet.from_buffer_copy(data)
변환된 구조체의 데이터를 출력합니다
그리고 포트를 닫습니다
# 받은 bytes형식의 데이터를 구조체로 변환 data = Packet.from_buffer_copy(data) # 데이터 출력 print(f”start_sign : {data.start_sign}\ data_type : {data.data_type}\ data : {data.data}\ checksum : {data.checksum}”) # 바이트로 변환해서 출력 print(f”bytes : {bytes(data)}”) arduino.close()
4. 잡기술
다음 코드를 이용해서 포트를 열거할 수 있습니다
from serial.tools import list_ports port_list = list_ports.comports() print(port_list) print([port.name for port in port_list])
사용 가능한 포트를 확인 가능
다음 코드를 이용해서 ide를 열지않고 펌웨어를 업로드할 수 있습니다
import os def upload(port : str, src_path : str, arduino_dir : str = “C:\\Program Files (x86)\\Arduino”, use_debug : bool = True) -> bool: arduino_bin = “arduino_debug.exe” if use_debug else “arduino.exe” arduino_bin_full_path = os.path.join(arduino_dir, arduino_bin) if not os.path.isfile(arduino_bin_full_path): return False upload_command = f”\”{arduino_bin_full_path}\” –board arduino:avr:uno –port {port} –upload {src_path}” ret_code = os.system(upload_command) return True if ret_code == 0 else False upload(“포트”, “소스코드 이름”, “arduino ide가 설치된 폴더 경로”)
자세한 내용은 다음 링크를 참고해주세요
https://github.com/arduino/Arduino/blob/master/build/shared/manpage.adoc
참고
포트 연결 후 펌웨어의 버전을 조사하는 패킷을 보내고
응답에 따라서 arduino ide를 통해서 업로드하는 코드를 작성할 수 있습니다
체계적인 프로토콜을 정의해서 동적으로 모듈을 변경하거나 통신하는 코드를 작성할 수 있습니다
비슷한 방법으로 다른 통신에도 적용할 수 있습니다
[Arduino] 파이썬에서 아두이노 제어하기
[Arduino] 아두이노 설치하기아두이노 설치 아두이노 홈페이지 접속 후 소프트웨어 클릭(https://www.arduino.cc/) Arduino – Home www.arduino.cc 컴퓨터의 운영체제에 맞는 설치 파일 클릭 다운만 받고싶다면 JUST DOWNLOAD 파일 저장..
hyunsun99.tistory.com
[Python] 파이썬 아두이노 연동법 ( feat. Serial 통신, Firmata )
서론
과외를 하다 Python을 가르치는 학생을 대상으로 아두이노를 진행하게 되었다.
아두이노는 C++ 언어를 기반으로 동작을 하므로 Python을 사용하는 사람에게는 이용이 어려운게 현실이다.
물론, 시리얼 통신을 하면 되지 않나? 라고 반박한다면 맞는말이다.
학습과 실습이 중심이 되는 시스템에서는 아무런 문제가 발생하지 않을 것이다.
하지만 아두이노에 올린 프로그램을 작품으로 동작하게 하고 싶다면? ( PC와의 연결을 해제하고 )
그때는 얘기가 꽤나 달라진다. 왜냐하면 컴퓨터를 중간에 두고 통신을 진행하고 있기 때문에.
물론 가능하다, 하지만 아두이노가 PC에 연결되어 있지 않다면?
블루투스를 통해 송수신할것인가?
엄청난 노가다가 필요할 것이고 낭비가 심할 것이다.
차라리 C++을 배우는게 편할지도 모른다.
그러므로 필자는 아두이노를 다루고 싶다면 C++을 공부하는것을 강.추. 하지만 Python을 이용하여 환경을 구축하는 것에 대해도 나름의 장점이 있으므로 이에 대해 말해볼까 한다.
C++에 대한 지식이 없지만 학습과 실습을 중심으로 하는 환경을 만들어 아두이노가 어떻게 동작하는지 알고싶은 사람이라면 좋은 시도가 될 것이다.
Serial 통신이란?
일단은 Serial 통신이 무엇인지부터 알아보도록 하자.
Serial은 어떤 뜻을 가진 영단어인가?
혹시 이것을 생각한 독자가 있을지도 모르겠다
잡담은 여기까지 하고 Serial은 영어로 ‘직렬’ 이라는 뜻을 가지고 있다.
자, 직렬까지 말했다면 생각해보자. 직렬의 반댓말은 무엇일까?
똑똑한 독자분들은 모두 알고있듯이 그렇다. ‘병렬’이다! 영어로는 Parallel 이다!
직렬과 병렬에서 추론할 수 있듯이
직렬통신, Serial Communication 은 직선으로, 하나의 선을 통해 정보를 비트단위로 송수신하는 것이다.
그에 반해 병렬통신, Parallel Communication 은 여러개의 선을 통해 동시에 정보를 비트단위로 송수신하는 것이다.
위 그림에서는 D0~D7 까지의 각각의 비트를 전송하는 방식을 각각의 통신방법을 예를 들어 설명한다.
자, 보면 직렬, 병렬 통신의 모호한 개념이 머리에 잡혔을 것이다.
사실 이에 대해 설명하자면 끝이 없다. 한 포스트로 다 설명할수도 없을 뿐더러..
쨋든 우리의 목적은 아두이노와 파이썬의 연동이므로 아두이노는 시리얼 통신을 이용하는구나~ 까지만 이해하고 넘어가도록 하자.
※ USB의 약자는 Universal Serial Bus 이다! 생각해보면 USB를 통해 아두이노를 컴퓨터로 연결하지 않는가?
아두이노 우노의 경우 Serial 통신 방식을 사용할 수 있다.
우리는 이것을 사용하여 아두이노 – PC – Python 간의 통신방식을 사용할 것이다.
그림으로 표현하자면 이와같다.
파이썬으로 컴퓨터에 연결되어있는 아두이노에 직렬 통신으로 정보를 전달하고,
아두이노는 이 정보을 해석해 미리 정해진 방식대로 동작하게 하는 시스템인 것이다!
문제점
하지만 문제는 또 존재한다.
간단히 예를 들어보자, 아두이노 IDE에 위와 같은 코드를 작성하여 아두이노에 업로드하였다 생각해보자.
void Setup() { Serial.begin(9600); pinMode(13,OUTPUT); } void loop() { while(Serial.available()) { serial_data = Serial.read(); } if(serial_data == ‘1’) { digitalWrite(13, HIGH); } else if(serial_data == ‘0’) { digitalWrite(13, LOW); } }
그리고 파이썬에서 아두이노가 연결된 시리얼 포트로 0 혹은 1을 전송하는 코드를 짜서 실행시켰다고 가정해보자.
파이썬에서 아두이노에게 Serial 통신으로 0을 보낸다면 13번 핀이 출력을 멈출 것이고,
파이썬에서 아두이노에게 Serial 통신으로 1을 보낸다면 13번 핀이 출력을 할 것이다.
좋다. 의도한대로 Python에서 정보를 보내면 아두이노가 동작할 수 있을 것이다.
하지만 만약, 13번 핀이 아니라 다른 핀을 제어하고 싶다면?
디지털이 아니라 아날로그 핀을 제어하고 싶다면?
아날로그 입력을 기준으로 어떠한 행동을 하고 싶다면?
매번 아두이노IDE에 시리얼 통신으로 전달된 정보의 의미를 부여하는 코드를 작성해야 할 것이다.
이와같이 각각을 의미하는 정보를 정하고 이를 Python, 아두이노IDE에 코딩을 진행하면,
그게 과연 Python으로 아두이노를 제어하는 이점을 살린 것일까?
필자는 아니라고 말하고 싶다.
그러므로 필자는 조금만 더! 스마트~한 방법을 사용해보고자 한다.
물론, 각 센서와 모듈에 종속된 라이브러리를 사용하고자 할 경우에는 아두이노 IDE에서 코딩이 필요할 것이다.
혹시 파이썬 설치가 제대로 되어 있지 않은 독자들은 이 포스트를 참고해 파이썬과 IDE를 설치하고 오자
https://defs-program.tistory.com/entry/Python-%EC%A3%BC%EC%8B%9D-%EC%9E%90%EB%8F%99%EA%B1%B0%EB%9E%98-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0-1-%ED%80%80%ED%8A%B8-%ED%88%AC%EC%9E%90-Python-%EC%85%8B%EC%97%85
자, 글을 읽고온 독자들은 Python과 VSCode가 PC에 있을 것이다. 물론, 혹시 몰라 아두이노 IDE가 없는 독자들을 위해
아두이노 IDE의 사이트를 준비했다.
https://www.arduino.cc/en/software
모두 설치하였으면 시작해보자.
자, 방금 코드 예제에서 보았다싶이 우리는 직접 ‘0을 송신할 경우 13핀의 출력을 종료, 1을 송신할 경우 핀 출력’ 을 정의하였다.
하지만 말했듯이 모~든 경우의 수에 대해 우리가 직접 정의를 하는 것은 너무나 번거롭고 귀찮은 일이 아닐 수 없다.
우리의 구세주, Firmata
여기서 등장하는 우리의 구세주는 바로 Firmata이다!
Firmata는 통신 프로토콜이다. 통신 프로토콜이 무엇인지 간단히 설명하고 넘어가자.
통신 프로토콜이란?
통신 프로토콜이란 일종의 규약이다.
대표적으로 HTTP, HTTPS, FTP, SSL, SSH 등의 프로토콜들이 존재한다.
데이터 전송 시, 어떤 데이터를 어떠한 순서대로, 어떠한 크기로 전송할지를 미리 정의한 일종의 약속 이라 할 수 있다.
http 의 예제를 보자.
이러한 정보들을 이러한 순서로 담아서 보내는 약속 이 http 프로토콜인 것이다.
아래의 예제는 웹페이지를 요청하는 Http 프로토콜의 예시이다.
GET / HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 Accept-Language: en-GB,en;q=0.5 Accept-Encoding: gzip, deflate, br Connection: keep-alive
물론 응답의 경우도 이렇게 http에 약속되어 있다.
HTTP/1.1 200 OK Date: Mon, 23 May 2005 22:38:34 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 155 Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux) ETag: “3f80f-1b6-3e1cb03b” Accept-Ranges: bytes Connection: close
An Example Page Hello World, this is a very simple HTML document.
자 간단한 예제로 통신 프로토콜이란 일종의 약속, 이라는 것을 알게 되었다.
그렇다면 이제는 Firmata에서 데이터를 전송하기 위해 정한 규칙은 무엇인지 알아봐야 할 것이다.
https://github.com/tino/pyFirmata
위 사이트는 pyFirmata ( Firmata의 Python 버전 ) 이 올라와있는 Github Repository 이다.
이 사이트에서 간단한 Firmata의 통신 약속을 살펴볼 수 있다.
영어로 되있는 사이트 구조상 필자가 간단히 필요한 정보만을 알려줄 것이다.
Firmata 설정
일단 Firmata의 통신 규약에 대해 보기 전에 먼저 Firmata를 사용하기 위한 설정을 해보자.
간단하다, 일단 아두이노를 PC에 연결하고 아두이노IDE를 실행한다.
다음과 같이 파일->예제->Firmata->StandardFirmata를 클릭한다.
열린 새로운 창에서 자신의 아두이노를 포트에서 선택한 후, 업로드를 클릭하여 파일을 아두이노에 업로드한다.
이제 약속한 프로토콜대로 Python 코드를 작성하면, Firmata가 이를 해석하여 아두이노가 동작할 것이다.
위에서 본대로 우리는 Python을 사용하므로 pyFirmata가 필요하다.
윈도우 검색 창 -> cmd 실행 -> pip install pyFirmata 명령을 입력하여 pyFirmata 라이브러리를 설치하자.
필자의 다른 포스트를 보고 Python 설치하였을 경우 경로 에러없이 설치가 가능하였을 것이다.
pip라는 명령이 존재하지 않습니다~ 라는 에러가 나올 경우에는 PATH를 설정하지 않았을 가능성이 존재하므로 직접 환경변수를 설정하던가 Python을 삭제 후 필자의 포스트를 보고 재설치를 진행하자.
자 이제 환경셋업은 완료했다. 다음 예제 코드를 실제 파이썬 파일을 만들어서 따라해보자.
import pyfirmata import time board = pyfirmata.Arduino(‘COM6’) while True: board.digital[13].write(1) time.sleep(1) board.digital[13].write(0) time.sleep(1)
자, 주의해야 할 사항이 있다.
board = pyfirmata.Arduino(‘COM6’) 에서 COM6 는 아두이노가 연결된 포트를 의미한다.
아두이노 IDE의 툴-> 포트를 설정한 기억이 있을 것이다.
필자의 아두이노는 COM6포트에 연결되었고, 그래서 필자는 COM6를 적어 생성자의 매개변수로 전달한 것이다.
자신의 아두이노가 연결된 COM포트를 매개변수로 제출하여 파일을 실행해보자.
다음과 같이 13번 핀과 연결된 L 우측의 라이트가 1초 간격으로 점멸하는 것을 볼 수 있다.
다음 포스팅에서 다른 제어 방법들을 설명할 것이니 기대해도 좋을 것!이다 아마..ㅎㅎ
못 기다리는 독자들은 Firmata Github Page를 참조하기 바란다.
그럼 20000~
[아두이노]파이썬 Pyserial로 아두이노 문자, 실수, 정수 값 읽기(수신하기, 송수신, 통신)
반응형
목차
Arduino에서 보낸 값 컴퓨터에서 읽기: 실행 방법
앞서 포스터에서 PC에서 Pyserial로 명령을 보내었고 아두이노에서 해당 명령을 읽어서 LED를 켰다가 끄는 예제를 구현하였습니다. (https://scribblinganything.tistory.com/524) 이번 포스트에서는 아두이노에서 주기적으로 문자열(String), 정수(Integer), 실수(Float) 값을 컴퓨터로 송신하고 (USB 케이블로 시리얼통신 사용) 노트북은 해당 값을 읽어서 출력하는 예제를 실행합니다.
파이썬(Python)에서 송신하는 메세지를 출력하기 위해서는 파이썬에서 아래의 함수 사용이 필요 합니다.
1. readline 함수 : ”
” 엔터키(다음줄)가 들어올때까지의 버퍼에 저장된 데이터를 읽어 옵니다.
2. decode 함수 : 아두이노에서 파이썬으로 USB 시리얼 통신으로 보낼 때 인코딩(Encoding) 되기 때문에 decode 작업을 해줍니다.
Arduino에서 보낸 값 컴퓨터에서 읽기: 아두이노 코드
아두이노에서는 아래와 같이 코드를 작성합니다.
예제 코드>>
void setup() { Serial.begin(9600); Serial.setTimeout(1); } void loop() { String s_var = “hi”; int i_var = 100; float f_var = 3.14; Serial.println(s_var); Serial.println(i_var); Serial.println(f_var); delay(500); }
문자열, 정수, 실수 값을 0.5초 주기로 정기적으로 보냅니다.
Arduino에서 보낸 값 컴퓨터에서 읽기: 파이썬 코드
앞서 아두이노에서 보낸 코드는 아래와 같이 파이썬에서 처리 합니다.
예제 코드>>
import serial ser = serial.Serial(“COM6”, 9600) while True: a_var = ser.readline().decode() b_var = ser.readline().decode() c_var = ser.readline().decode() print(“Type : ” + str(type(a_var)) + ” Value : ” + a_var) print(“Type : ” + str(type(b_var)) + ” Value : ” + b_var) print(“Type : ” + str(type(c_var)) + ” Value : ” + c_var)
6~8번 라인: 주기적으로 보내는 값을 버퍼(Buffer)에서 가져와서 디코드 해줍니다.
9~11번 라인: 변수에 저장한 값의 종류와 값을 출력 해줍니다.
결과>>
Type :
Value : hi Type : Value : 100 Type : Value : 3.14 Type : Value : hi Type : Value : 100 Type : Value : 3.14 Type : Value : hi Type : Value : 100 Type : Value : 3.14 위와 같이 출력값이 나왔습니다. 종류는 decode 과정에서 문자열로 확인됩니다.
반응형
키워드에 대한 정보 아두 이노 파이썬
다음은 Bing에서 아두 이노 파이썬 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.
이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!
사람들이 주제에 대해 자주 검색하는 키워드 (홈오토메이션) 파이썬으로 아두이노제어 1편 LED ON/OFF
- 동영상
- 공유
- 카메라폰
- 동영상폰
- 무료
- 올리기
(홈오토메이션) #파이썬으로 #아두이노제어 #1편 #LED #ON/OFF
YouTube에서 아두 이노 파이썬 주제의 다른 동영상 보기
주제에 대한 기사를 시청해 주셔서 감사합니다 (홈오토메이션) 파이썬으로 아두이노제어 1편 LED ON/OFF | 아두 이노 파이썬, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.