일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Windows Kernel
- 포너블
- HackCTF
- windows kernel debugging
- arudino
- 윈도우 커널 드라이버
- 시스템해킹
- IAT Hooking
- packet capture
- Windows
- ucrtbase.dll
- pwnable
- hacking
- Windows Kernel Driver
- 윈도우 커널
- pcap packet
- 바이트 오더
- 개발 환경 준비
- Msvcrt.dll
- Network Byte Order
- 네트워크 바이트 오더
- pcap packet capture
- 개발하기
- C언어 패킷캡쳐
- apphelp.dll
- 윈도우 커널 디버깅
- 해킹
- Windows Kernel Debug
- vcruntime140.dll
- vcruntime.dll
- Today
- Total
미친해커
[Arduino] 디지털 핀을 시리얼 포트로 사용하기 (SoftwareSerial) 본문
아두이노(우노)를 보면 기본적으로 Tx/Rx 포트가 존재한다. 이는 UART 방식 통신을 하기 위한 포트이다. 다른 말로 시리얼 통신이라고 불린다. 이 포트를 통해 우리는 PC 또는 기타 장치와 UART 방식의 시리얼 통신을 할수 있다. 우리가 아두이노에 프로그래밍한 코드를 업로드 하는 것도 이 시리얼 통신을 활용해 하는 것이다. 여기서 Tx/Rx 포트란?
Tx : Tranmission
Rx : Receiver
즉 Tx는 데이터를 보내는 포트이며 Rx는 데이터를 받는 포트이다. 아두이노에는 다음과 같은 곳에 Tx/Rx 포트가 존재한다.
이렇게 아두이노에도 Rx/Tx 포트가 존재한다. 우리는 이 시리얼 포트로 프로그래밍한 코드를 업로드한다. 하지만 여기서 몇몇 사람들은 이런 의문을 던질 수도 있다. '우리가 코드를 업로드 할때는 저 Rx/Tx 포트를 사용하지 않고 아두이노 USB 케이블을 사용하지 않나?' 하지만 Rx/Tx 포트를 사용하는 것이 맞다. 아두이노 USB 케이블을 이용한 시리얼 통신과 저 Rx/Tx 시리얼 통신은 같은 포트를 사용한다. 그렇기 때문에 우리가 아두이노 우노에서 사용할 수 있는 시리얼 포트는 1개이다. 그렇다면 아두이노 우노는 2개 이상의 장치와 통신하지 못한다. 하지만 아두이노에 있는 디지털 핀을 시리얼 포트로 사용한다면 2개 이상의 장치와 통신할 수 있게된다. 그것을 도와주는 라이브러리가 SoftwareSerial 이다.
SoftwareSerial 라이브러리는 아두이노의 디지털 핀을 이용하여 시리얼 통신을 할수 있도록 도와준다.
예제 코드
#include <SoftwareSerial.h>
#define PIN_TX 2
#define PIN_RX 3
SoftwareSerial Serial2(PIN_TX, PIN_RX);
void setup()
{
Serial.begin(115200);
Serial2.begin(115200);
}
void loop()
{
if (Serial2.available() > 0)
{
String string = Serial.readString();
Serial.print(string);
}
}
SoftwareSerial 클래스의 생성자는 다음과 같다.
SoftwareSerial(RxPin, TxPin, inverse_logic)
그런데 위 코드를 보면 첫번째 인자로 PIN_TX가 들어가있다. 이는 잘못된 것이 아니라. 시리얼 포트에서 첫번째 인자는 데이터를 수신할 핀이다. 그렇다면 다른 장치의 Tx와 연결해줘야 하는 것이다. 다음 그림을 보면 이해가 보다 쉬울 것이다.
즉 다른 장치의 Tx가 디지털 핀 2번의 연결되어 있고 Rx는 디지털 핀 3번에 연결되어 있다. 그러면 SoftwareSerial 입장에서 RxPin은 디지털 핀 2번이되고 TxPin은 디지털 핀 3번이 된다. 함수와 사용법은 일반적인 Serial 클래스와 같다. 그 외에는 위 SoftwareSerial 라이브러리 홈페이지를 참고하면 좋을 것 같다.
'Arduino' 카테고리의 다른 글
[Arduino] 아두이노 시리얼 포트로 데이터 받기 (0) | 2021.12.30 |
---|---|
[Arduino] 아두이노 시리얼 포트로 데이터 전송하기 (0) | 2021.12.29 |
[Arduino] 아두이노 Baud Rate 설정 (0) | 2021.12.28 |
[Arduino] 아두이노 첫 시작 (기초공부) (0) | 2021.12.26 |