RaspberryPi 시리얼통신 1 제 08 강 시리얼통신제어 시리얼통신시리얼모니터링루프백시리얼통신 Win. PC와의시리얼통신가상머신과의시리얼통신아두이노보드와의시리얼통신 KUT51보드와의시리얼통신

Similar documents
고급 프로그래밍 설계

Raspberry Pi 입출력디바이스 II 1 제 05 강 입출력디바이스 II 터치스위치자석스위치움직임감지센서부저모듈 LED Array RGB LED 릴레이모듈초음파센서 ( 거리측정 ) 적외선센서및리모콘 ( 미작성 )

Microsoft PowerPoint - es-arduino-lecture-03

PowerPoint 프레젠테이션

2주차: 입출력 제어 복습

K&R2 Reference Manual 번역본

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

RaspberryPi 개발환경구축 I 1 제 01 강 실습일정및가상머신구축 교과소개및실습일정 실습실안전교육 가상머신환경구축 (VMware Player, VM(Ubuntu), VMTools, 폴더공유 ) 참고 )

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

Microsoft PowerPoint - RPino-GOGO_datasheet.pptx

untitled

ISP and CodeVisionAVR C Compiler.hwp

벤처연구사업(전동휠체어) 평가

Raspbian 설치 라즈비안 OS (Raspbian OS) 라즈베리파이 3 Model B USB 마우스 USB 키보드 마이크로 SD 카드 마이크로 SD 카드리더기 HDM I 케이블모니터

로봇SW교육원 강의자료

untitled

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

The Pocket Guide to TCP/IP Sockets: C Version

untitled

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

KEY 디바이스 드라이버

Microsoft Word - EWKit-RS232.doc

Microsoft Word _whitepaper_latency_throughput_v1.0.1_for_

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

hd1300_k_v1r2_Final_.PDF

슬라이드 1

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

PowerPoint 프레젠테이션

1 1. INTRODUCTION 2 2. DOWNLOAD Windows Desktop & Server Max OS X, Linux, Windows CE 2 3. API REFERENCE CAN_OpenVcp CAN_Op

MR-3000A-MAN.hwp

슬라이드 1

The Pocket Guide to TCP/IP Sockets: C Version


<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

[8051] 강의자료.PDF

C 프로그래밊 개요

Microsoft PowerPoint - chap01-C언어개요.pptx

Mango-E-Toi Board Developer Manual

RealDSP UT 프로그램 메뉴얼

01장

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

6주차.key

CANTUS Evaluation Board Ap. Note

Microsoft Word - MAI-ISP-STK500_매뉴얼_Ver25.docx

PowerPoint 프레젠테이션

USBISPV3.0(071112).hwp

Microsoft Word - PEB08_USER_GUIDE.doc

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

M16_32KIT_Manual.hwp

슬라이드 1

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과


임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

망고100 보드로 놀아보자-4

슬라이드 1

(MHT-SB112\273\347\276\347\274\255.hwp)

C++-¿Ïº®Çؼ³10Àå


본 강의에 들어가기 전

Microsoft PowerPoint - RPino-GOGO-PLUS_datasheet.pptx

Microsoft PowerPoint - chap10-함수의활용.pptx

< 제누이노스타트키트 > 사용설명서 목차 1. Arduino IDE 설치하기 2. Genuino 연결및 Arduino IDE 셋팅하기 3. 센서설명및연결도, 예제소스 1

BMP 파일 처리

Microsoft Word - KPMC-400,401 SW 사용 설명서

untitled

슬라이드 1

2009년 상반기 사업계획

개요

BY-FDP-4-70.hwp

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

Microsoft Word - LKP-RTD 사용자 설명서

USB2CAN USB2CAN-UART USB2CAN-FIFO API Reference Manual Copyright NTREXLAB

뉴티씨 (NEWTC) ATmega8 교육용모듈 (Model : AM-8PL ) 메뉴얼 ( 주 ) 뉴티씨 ( NEWTC ) 1. ATmega8 모듈 (AM-8PL) 소개 ATmega8 칩을

USB USB DV25 DV25 REC SRN-475S REC SRN-475S LAN POWER LAN POWER Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl C

슬라이드 제목 없음

untitled

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

PowerPoint 프레젠테이션

Microsoft Word - AM-SLCD_시리얼 LCD_ 메뉴얼.doc

리눅스 취약점대응방안권고 / KISA 취약점점검팀 영향받는플랫폼 OS, FAQ 추가 개요 미국보안회사 에의해 시스템의 라이브러리 의특정함수에서임의코드를실행할수있는취약점이공개 해당취약점은 CVE 지정, 도메인네임을

Microsoft Word - VMware와 리눅스 설치_v0.11.doc

슬라이드 1

뉴티씨 (NEWTC) 2. FB-CY4E-DEV (FPGA 개발 키트) 구성도 Port Select SW 7 Segment Text LCD UART RS-232C JTAG PORTA (5V) Active Serial PORTB (5V) OSC. 50MHz Analog

OSTSen-THL100 사용자설명서 Ver 1.1 Onsystech OSTSen-THL100 Ver1.1 1 of 8 Onsystech

Microsoft Word - Ahram_ISP_V15_Manual_V20.doc

/chroot/lib/ /chroot/etc/

RaspberryPi U-Boot & GPIO 제어 1 제 12 강 U-Boot + GPIO 제어 부트로더 U-Boot 부트로더 raw GPIO 제어 (LED, BTN) LED, BTN 제어

Nordic Chipset BLE Test Application Note

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Chapter_06

untitled

PowerPoint 프레젠테이션

제1장 Unix란 무엇인가?

PowerPoint 프레젠테이션

Microsoft PowerPoint - AVR 시리얼 통신.ppt [호환 모드]

슬라이드 제목 없음

Microsoft Word doc

Transcription:

RaspberryPi 시리얼통신 1 제 08 강 시리얼통신제어 시리얼통신시리얼모니터링루프백시리얼통신 Win. PC와의시리얼통신가상머신과의시리얼통신아두이노보드와의시리얼통신 KUT51보드와의시리얼통신

시리얼통신 * Serial 활성화후재부팅 $ sudo raspi-config RaspberryPi 시리얼통신 2 $ sudo reboot : 시리얼통신을위한장치파일 /dev/ttys0 생성

시리얼통신 ( 계속 ) * 몇가지확인사항 $ ls /dev/tty* -al RaspberryPi 시리얼통신 3 : 디바이스파일 /dev/ttys0 이추가생성된것을확인 : 이장치파일의내정된접근권한자는슈퍼유저임을유의 $ cat /boot/config.txt : enable_uart=1 의라인이추가된것을확인

시리얼통신 ( 계속 ) * 몇가지확인사항 ( 계속 ) $ cat /boot/cmdline.txt RaspberryPi 시리얼통신 4 : 내정된 baudrate 는 115200 임을확인가능 $ dmesg grep tty : ttys0 활성화확인가능

RaspberryPi 시리얼통신 5 시리얼통신 ( 계속 ) * 시리얼모니터링 : USB-TTL 시리얼케이블활용 : 회로연결 ( 전원공급기있는경우, 3핀만연결 ) // 흰색 (RxD) 핀을 rpi의 TxD와연결, // 녹색 (TxD) 핀을 rpi의 RxD와연결, // 검정 (Gnd) 는 Gnd와연결, 빨강 (Vcc) 는 5V( 보드에전원공급 ) : 드라이버다운로드및설치 https://learn.adafruit.com/adafruits-raspberry-pi-lesson-5-using-aconsole-cable/software-installation-windows : 시리얼포트확인 ( Win. 장치관리자 )

: PuTTY 로접속 RaspberryPi 시리얼통신 6 // Flow control 항목을필히 none 으로설정후, Open : 라즈베리파이보드전원재투입, 혹은임의키눌러봄 // SSH 를통해새터미널을여는것이아님

RaspberryPi 시리얼통신 7 시리얼통신 ( 계속 ) * wiringserial.h 라이브러리 ( /usr/include ) : 시리얼통신을위한함수제공 - 시리얼통신을위한디바이스파일과보레이트설정하여열기, 닫기, 버리기 extern int serialopen(const char *device, const int baud) ; extern void serialclose(const int fd) ; extern void serialflush(const int fd) ; - 한문자, 문자열, 서식지정된문자열전송하는함수 extern void serialputchar(const int fd, const unsigned char c) ; extern void serialputs(const int fd, const char *s) ; extern void serialprintf(const int fd, const char *message,...) ; - 수신할데이터가가용한지와한문자를수신하는함수 extern int serialdataavail(const int fd) ; extern int serialgetchar(const int fd) ;

RaspberryPi 시리얼통신 8 루프백시리얼통신 [ 실습 1] 루프백시리얼통신 : 자신의시스템에서보낸데이터를자신이수신하는방식 : ASCII 코드 (1Byte) 데이터들송신및수신하는프로그램 : TxD 핀 (BCM_GPIO #14) 과 RxD 핀 (BCM_GPIO #15) 을직접연결 $ nano uart_01.c //======================================= // uart_01.c // loopback // RxD(BCM_GPIO #14), TxD(BCM_GPIO #15) //=======================================

RaspberryPi 시리얼통신 9 #include <stdio.h> #include <string.h> #include <wiringpi.h> #include <wiringserial.h> // delay() #define BAUD 115200 int main(void) { int fd; unsigned char asc, rec; if((fd = serialopen("/dev/ttys0", BAUD)) < 0) { printf("device file open error!! use sudo...\n"); return 1; printf("[uart testing... loopback]\n"); asc = 65; while(1) { printf("transmitting... %d ", asc); serialputchar(fd, asc); delay(1); if(serialdataavail(fd)) { rec = serialgetchar(fd); printf("===> Received : %d %c\n", rec, rec);

RaspberryPi 시리얼통신 10 serialflush(fd); delay(300); asc++; return 0; $ make uart_01 $ sudo./uart_01 // 실행시필히

Win PC 와의시리얼통신 * USB 시리얼포트경우 RaspberryPi 시리얼통신 11 : USB to Serial 케이블, 혹은 PL2303 모듈사용

Win PC 와의시리얼통신 ( 계속 ) * MAX232CPE : 신호레벨변환 IC RaspberryPi 시리얼통신 12

Win PC 와의시리얼통신 ( 계속 ) * RS232C 커넥터 (D-Sub 9) RaspberryPi 시리얼통신 13 : 사용할핀은 #2(RxD), #3(TxD), #5(GND) 이며, : #5(GND) 핀은사용하지않아도됨

Win PC 와의시리얼통신 ( 계속 ) * 회로구성 RaspberryPi 시리얼통신 14 : MAX232 IC와 RS232 컨넥터간의 TxD, RxD 단자는서로교차로연결 : 아래그림과같이구성하면교차연결된것임 ( T1OUT - RxD, R1IN - TxD ) : 1uP 캐패시터 5개, 기판고정용 9핀암 RS232 컨넥터 1개소요

Win PC 와의시리얼통신 ( 계속 ) * USB Serial Port 설정 (Win PC) RaspberryPi 시리얼통신 15 : USB 시리얼케이블연결후, 장치관리자에서시리얼포트확인 : 추가시리얼포트없는경우관련드라이버설치할것 : 통신속성정보설정 (19200, 등등 )

Win PC 와의시리얼통신 ( 계속 ) * PuTTY 통신프로그램 : 연결유형에서 Serial을체크 : 통신포트및보레이트를설정후 Open 클릭 : 설정정보저장하여추후운영시활용가능 RaspberryPi 시리얼통신 16

Win PC 와의시리얼통신 ( 계속 ) [ 실습 2] Win PC 와의시리얼통신 RaspberryPi 시리얼통신 17 : PC 에서전송한데이터를수신후되전송하는프로그램 $ nano uart_02.c //======================================= // uart_02.c // with Windows PC // retransmit a received char from Win PC //======================================= #include <stdio.h> #include <string.h> #include <wiringserial.h> #define BAUD 19200 // 115200 int main(void) { int fd; int rec;

RaspberryPi 시리얼통신 18 if((fd = serialopen("/dev/ttys0", BAUD)) < 0) { printf("device file open error!! use sudo...\n"); return 1; printf("[uart test with Win PC...]\n"); serialputs(fd, "[UART test with Win PC...]\n"); while(1) { if(serialdataavail(fd)) { rec = serialgetchar(fd); printf("received from Win PC : %d %c \n", rec, (char)rec); // re-transmit.. serialputchar(fd, rec); serialflush(fd); return 0; $ make uart_02

Win PC 와의시리얼통신 ( 계속 ) * 실습절차 RaspberryPi 시리얼통신 19 단계1) Windows PC에서 PuTTY 시리얼통신프로그램을실행단계2) 라즈베리파이에서다음과같이실행 $ sudo./uart_02 단계 3) Windows PC 에서 PuTTY 화면에서문자입력

Win PC 와의시리얼통신 ( 계속 ) [ 실습 3] 시리얼통신에의한 LED 제어 RaspberryPi 시리얼통신 20 : Win PC에서전송되는문자중 1, 혹은 0에따라라즈베리파이보드의 LED를 ON/OFF하는프로그램 $ nano uart_03.c //======================================= // uart_03.c // with Windows PC // control LED on Raspberry Pi board //======================================= #include <stdio.h> #include <string.h> #include <wiringpi.h> #include <wiringserial.h> #define P_LED 1 // BCM_GPIO #18 #define BAUD 19200 // 115200 int main(void) {

RaspberryPi 시리얼통신 21 int fd; int rec; if((fd = serialopen("/dev/ttys0", BAUD)) < 0) { printf("device file open error!! use sudo...\n"); return 1; if(wiringpisetup() == -1) return 1; pinmode(p_led, OUTPUT); printf("[uart test with Win PC + LED control]\n"); serialputs(fd, "[UART test with Win PC + LED control]\n"); while(1) { if(serialdataavail(fd)) { rec = serialgetchar(fd); printf("received from Win PC : %d %c ", rec, (char)rec); // re-transmit.. serialputchar(fd, rec); serialflush(fd); //// LED control... if(rec == '0') {

RaspberryPi 시리얼통신 22 digitalwrite(p_led, LOW); printf("==> Led OFF...\n"); else if(rec == '1') { digitalwrite(p_led, HIGH); printf("==> Led ON...\n"); else printf("==> No control data...\n"); return 0; $ make uart_03

가상머신과의시리얼통신 RaspberryPi 시리얼통신 23 * 요구사항 : VM에시리얼포트추가 : VM의통신프로그램 mincom 설치및환경설정

가상머신과의시리얼통신 ( 계속 ) * 가상머신환경설정 : Win 의장치관리자에서시리얼포트설정확인 - 기본 COM1( 마더보드의통신포트 ) - USB-Serial Adaptor 경우기타의 COMx RaspberryPi 시리얼통신 24 : 시리얼포트추가 "Player-Manage-VM settings" 클릭 "Hardware탭" 에서 "Add" 클릭하여 Serial Port 추가, COM1 설정 : CD/DVD 항바른드라이브 (Windows 와동일 ) 지정!

가상머신과의시리얼통신 ( 계속 ) * minicom RaspberryPi 시리얼통신 25 : 텍스트방식의터미널에뮬레이션통신프로그램 (Windows의 hyper terminal과유사 ) : 모뎀제어, 파일업로드 / 다운로드등통신에필요한주요기능포함 : 임베디드시스템개발과정에서타깃보드와개발호스트간시리얼통신을위해사용 : 타깃보드에명령전달및출력메시지확인용 * minicom 설치 root@ubuntu:~# apt install minicom

가상머신과의시리얼통신 ( 계속 ) * minicom 환경설정 : 통신포트, 통신속도등설정이필요 RaspberryPi 시리얼통신 26 # minicom -s

가상머신과의시리얼통신 ( 계속 ) * minicom 직렬포트환경설정 : 'Serial Port Setup' 항목선택 A-Serial Device B-Lockfile Location E-Bps/Par/Bits F-Hardware Flow Control RaspberryPi 시리얼통신 27 : /dev/ttys1 : /var/lock : 115,200bps 8N1 : No -Serial Device... 시리얼포트 1(/dev/ttyS0), 시리얼포트 2(/dev/ttyS1) -Bps/Par/Bits... 통신속도및패리티비트등설정 -Hardware Flow Control... No 로 : 직렬포트환경저장 : 종료 - 'Save setup as dfl' 항목선택 - 'Exit from minicom' 항목선택

가상머신과의시리얼통신 ( 계속 ) RaspberryPi 시리얼통신 28 * 다음과같이하여동작확인!!(2019.09.05.) : USB-TTL Serial cable 연결 (Win관리자에서 COM3) : vm에서시리얼포트2(com3) 선택상태 : /dev/ttys1 설정

가상머신과의시리얼통신 ( 계속 ) * 통신확인 # minicom RaspberryPi 시리얼통신 29 : 종료시 Ctrl-A-q 누름

가상머신과의시리얼통신 ( 계속 ) [ 실습 4] 시리얼통신에의한 LED 제어 RaspberryPi 시리얼통신 30 : 가상머신에서전송되는문자중 1, 혹은 0에따라라즈베리파이보드의 LED를 ON/OFF하는프로그램 : [ 실습3] 참조, 소스그대로사용테스트 * 실습절차 : 가상머신에서통신프로그램실행 (minicom) # minicom : 라즈베리파이에서 $ sudo./uart_03

Arduino 보드와의시리얼통신 * Arduino Mega ADK 보드 RaspberryPi 시리얼통신 31 : USB-Serial 컨버터가내장되어있음 : 이컨버터를경유하는시리얼통신으로목적코드업로드함 : 4개시리얼포트제공 : 목적코드업로드시사용포트... 시리얼포트 0 ( serial ) * Arduino 보드측회로 : 아두이노보드의 pin #3 에 LED 회로연결

Arduino 보드와의시리얼통신 ( 계속 ) * Arduino 보드용소스 RaspberryPi 시리얼통신 32 : 스케치에서다음의소스를작성하여컴파일 : 수신한문자가 0이면 LED OFF, 1이면 ON 기능 : 통신속도는 19200으로. //======================================= // uart_04_arduino.ino // for Arduino board // LED controlled by remote RaspberryPi //======================================= const int ledpin = 3; // LED에연결된핀번호 char data; // 수신문자를저장하기위한변수 void setup() { pinmode(ledpin, OUTPUT); Serial.begin(19200); // LED를출력으로설정 // 시리얼개방, 통신속도설정 void loop() {

RaspberryPi 시리얼통신 33 switch(data) { case '0' : digitalwrite(ledpin, LOW); break; case '1' : digitalwrite(ledpin, HIGH); break; // LED OFF // LED ON default : break; // 수신버퍼에데이터가있을때마다호출되는콜백함수 void serialevent() { data = Serial.read(); Serial.println(data);

Arduino 보드와의시리얼통신 ( 계속 ) * 두보드간연결절차 RaspberryPi 시리얼통신 34 1) 컴파일후목적코드를업로드 ( 플래쉬메모리에기록 ) : 업로딩하기위해서는다음의 2가지작업선행필요, : 메뉴의도구항목중보드와시리얼포트항목에서아두이노보드의모델설정과 ISP를위한시리얼포트설정후, : 업로드아이콘을클릭 2) PC에서아두이노보드및 USB 케이블제거 3) 두보드간 RxD, TxD 단자를교차하여연결 : 라즈베리파이보드와아두이노보드간시리얼통신을위해 4) 아두이노보드에전원인가 : 아두이노보드에연결된 USB 단자를라즈베리파이보드의 USB 단자에연결하여아두이노보드에전원인가 ( 아두이노보드에서아두이노보드용프로그램실행중 )

Arduino 보드와의시리얼통신 ( 계속 ) [ 실습 5] 아두이노보드의 LED 제어 RaspberryPi 시리얼통신 35 : 시리얼통신에의해아두이노보드상의 LED를제어 : 라즈베리파이용소스 $ nano uart_04.c //======================================= // uart_04.c // Arduino LED Control // for Raspberry Pi board // pair file : uart_04_arduino.ino //======================================= #include <stdio.h> #include <string.h> #include <wiringserial.h> #define BAUD 19200 int main(void) { int fd;

RaspberryPi 시리얼통신 36 char con; if((fd = serialopen("/dev/ttys0", BAUD)) < 0) { printf("device file open error!! use sudo...\n"); return 1; printf("[uart test with Arduino board]\n"); serialputs(fd, "[UART test with Arduino board]\n"); while(1) { printf("\ninput a char: "); con = getchar(); getchar(); // trash enter key //fflush(stdin); //serialputchar(serialgetchar(fd)); // transmit serialputchar(fd, con); serialflush(fd); return 0; $ make uart_04

RaspberryPi 시리얼통신 37 $ sudo./uart_04 : 아두이노보드의 LED 를제어하기위해 0, 혹은 1 의문자를입력

응용과제 [ 응용 1] 시리얼통신 : 각자응용과제를정의하여구현 : RaspberryPi 시리얼통신 38 [ 응용 2] KUT51 보드와의시리얼통신 : 마이크로프로세서및실습교과의실습키트활용 : 마프교재끝장 C51 프로그래밍의마지막실습과제로데이터송수신을테스트할것