임베디드 프로그래밍 Lecture #05 2017. 10. 29.

Slides:



Advertisements
Similar presentations
5 장 조건과 반복 ②. Contents Counting and Looping [while 문 사용 ] Powers of 2 [while 문 사용 ] More Guessing [do 문 사용 ] Election Day [do 문 사용 ] Finding Maximum &
Advertisements

명품 JAVA Programming 제 3 장 반복문, 배열, 예외처리.
MINI 프로토콜 아날라이저 사용설명서 Ver1.1.
제 7주 2015년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
임베디드 프로그래밍 Lecture #
임베디드 프로그래밍 Lecture #
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
PIC는 우리의 친구 한국정보통신대학교 디지털미디어연구소.
제9장 입출력과 JNI.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
7장 배열 ②.
Chapter 02 JAVA 프로그래밍 시작하기 01 실무에서 사용하는 JAVA 개발 환경 02 JAVA 프로그램 작성
2013 스마트 컨트롤러 중간 프로젝트 김성엽 진종영 조유진
컴퓨터 하드웨어 설치(1) PC 성능을 결정하는 핵심 부품 가이드 내게 맞는 보조 부품 & 모니터 선택하기.
어서와 Java는 처음이지! 제1장 기초 사항 IT응용시스템공학과 김형진 교수.
제6장 제어(Control) 6.1 구조적 프로그래밍(Structured Programming)
제어기술 소개 목표 : 제어기의 종류, 제어 방식 등을 살펴본다. 주요내용 제어기의 종류 제어방식 : 시퀀스, 피드백, 등.
명품 JAVA Programming.
3장. 라우터와 스위치의 기본설정 2012년 2학기 중부대학교 정보보호학과 이병천 교수.
임베디드 프로그래밍 Lecture #
Power Java 제4장 자바 프로그래밍 기초.
Lesson 3. 입출력과 제어문.
3장. 라우터와 스위치의 기본설정 2012년 2학기 중부대학교 정보보호학과 이병천 교수.
임베디드 프로그래밍 Lecture #
컴퓨터 구조.
제3장 이클립스 사용하기.
임베디드 프로그래밍 Lecture #
01. 직렬화와 역직렬화에 대하여 객체의 직렬화 직렬화와 역직렬화
명품 JAVA Programming 제 8 장 입출력 스트림과 파일 입출력.
명품 JAVA Programming 제 16 장 네트워크.
명품 Java Programming.
AVR - Chapter 6 황 지 연.
Hadoop 김연왕
고등용 LED를 이용한 재미있는 표현.
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
Java IT응용시스템공학과 김형진 교수 2장. 자바의 환경 public class SumTest {
3장. 라우터와 스위치의 기본설정 2012년 2학기 중부대학교 정보보호학과 이병천 교수.
Z- 4M User’s Guide 메뉴얼 Maximum Print Area Width : 4.09”/104mm
주소록 프로그램.
Serial 통신(RS-232) 2 김성환 기계설계 자동화 공학부 비주얼베이직의 기초사항을 공부합니다.
Network Programming(1)
6장 객체-지향 설계 ①.
자바 5.0 프로그래밍.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
5장 조건과 반복 ②.
제2장 데이터 및 수식.
MA1356T ▶ 제품개요 *. 사용 스마트 카드 : ISO A Type And Mifair 호환 .
6장 객체-지향 설계 ①.
어서와 Java는 처음이지! 제4장 배열 IT응용시스템공학과 김형진 교수.
DataScience Lab. 박사과정 김희찬 (월)
RPi2 SPI 8x8 Dot Matrix LED
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
WAP Java Seminar
3장. 라우터와 스위치의 기본설정 2012년 2학기 중부대학교 정보보호학과 이병천 교수.
임베디드 프로그래밍 Lecture #
중앙대 원격교육원 범용공인인증서 홈페이지 등록 방법 .
임베디드 프로그래밍 Lecture #
프로그래밍 개론 Ⅰ 제 1장 . 서론 ①.
[INA470] Java Programming Youn-Hee Han
컴퓨터공학실습(I) 3주 인공지능연구실.
Java IT응용시스템공학과 김형진 교수 5장. 객체지향 개념 public class SumTest {
Chapter3 : 객체지향의 개념 3.1 객체지향(object-oriented)과
자바 5.0 프로그래밍.
Internet Computing KUT Youn-Hee Han
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
아두이노 프로그래밍 Lecture #
사물인터넷(IoT) 프로그래밍 기초 5. 시리얼통신.
임베디드 프로그래밍 Lecture #
Presentation transcript:

임베디드 프로그래밍 Lecture #05 2017. 10. 29

목 차 UART 통신 테스트 UART Console 테스트 UART 장치 통신 테스트

UART 직렬 통신 (1) UART 직렬 통신 Universal Asynchronous Receiver/Transmitter 별도의 클록 라인이 없이 양 장치 간에 정해진 클록 속도에 맞추어 통 신하는 비동기식 직렬 통신 방식 동기식 직렬 통신 비동기식 직렬 통신 병렬 통신

UART 직렬 통신 (2) UART 직렬 통신 규칙(Rules) UART 직렬통신 Baud Rate Data bits Synchronization bits Parity bits Baud rate UART 직렬통신 Baud Rate 전송 속도 - how fast data is sent over a serial line bits-per-second (bps) 로 표시 표준 baud rate: 1200, 2400, 4800, 9600, 9200, 38400, 57600, 115200

UART 직렬 통신 (3) UART 직렬통신 data chunk 9600 8N1 9600 baud, 8 data bits, no parity, and 1 stop bit one of the more commonly used serial protocols “OK” 문자열 전송 비트열: LSB MSB

UART 직렬 통신 (4) UART 직렬 통신 – 연결 구조 및 전송 신호 TTL Serial Signals RS-232C Serial Signals 신호선 연결 구조

UART Console 테스트 (1) UART Console 테스트 라즈베리파이는 기본적으로 UART 포트를 콘솔 포트로 설정 연결 방식: Usb-Serial Cable PC – terminal program Raspberrypi 3

UART Console 테스트 (2) UART Console 테스트 Console 로그인 화면

UART Console 테스트 (3) 기본 설정 UART 포트를 사용하기 위해 우선 Bluetooth 기능을 중지하여야 함. 라즈베리파이로 ssh 접속 $ sudo nano /boot/config.txt config.txt 파일 끝에 다음 두 줄 추가 후에 저장 # disable Bluetooth dtoverlay=pi3-disable-bt $ sudo systemctl disable hciuart $ sudo reboot

UART Console 테스트 (4) 기본 설정 Bluetooth 기능 재설정 라즈베리파이로 ssh 접속 $ sudo nano /boot/config.txt config.txt 파일 끝에 추가한 두 줄을 제거 # disable Bluetooth # dtoverlay=pi3-disable-bt $ sudo systemctl enable hciuart $ sudo reboot

UART Console 테스트 (5) 기본 설정 UART console 포트 사용 설정 raspi-config 툴을 사용하여 설정

UART Console 테스트 (6) 기본 설정 UART console 포트 사용 설정

UART Console 테스트 (7) 기본 설정 UART console 포트 사용 설정 /boot/cmdline.txt 파일에서 console 설정 확인

UART Console 테스트 (8) 아두이노를 활용한 UART console 테스트 아두이노를 USB-Serial 케이블을 대용으로 사용 아두이노는 다수의 UART 채널을 제공(Software UART 포함) PC RaspberryPi UART #0 Arduino UART #1 UART USB

UART Console 테스트 (9) 아두이노를 활용한 UART console 테스트 Arduino MEGA를 이용한 연결 USB 연결 Pin 연결 18 10 19 8 GND 39

UART Console 테스트 (10) 아두이노를 활용한 UART console 테스트 Arduino sketch 프로그래밍 : MultiSerial 예제 활용

UART Console 테스트 (11) 아두이노를 활용한 UART console 테스트 Arduino Serial 모니터 화면

UART 장치 통신 테스트 (1) 라즈베리파이의 UART 장치 통신 (1) 라즈베리파이는 외부 장치와의 UART 통신 가능 주로 통신 모뎀, 영상입력장치 등을 연결할 때에 사용 raspi-config 툴을 이용하여 console 포트 기능을 중지(disable) 하여야 함

UART 장치 통신 테스트 (2) 라즈베리파이의 UART 장치 통신 (2)

UART 장치 통신 테스트 (3) 아두이노와의 UART 통신 Arduino와의 UART 연결을 이용한 데이터 통신을 실험 연결 구조는 앞의 예제에서의 하드웨어 구성을 사용

UART 장치 통신 테스트 (4) 아두이노 프로그래밍 Arduino sketch 프로그램: MultiSerial 예제 활용

UART 장치 통신 테스트 (5) 라즈베리파이 프로그래밍 - 테스트 프로젝트 생성 NetBeans IDE에서 새로운 프로젝트 생성 프로젝트명: UARTComm_Test 프로젝트 속성 설정에서 라이브러리 추가 lib 디렉토리 생성 dio.jar 파일을 lib 디렉토리로 복사 프로젝트 속성에서 dio.jar 라이브러리 추가

UART 장치 통신 테스트 (6) 라즈베리파이 프로그래밍 uartcomm_test/UARTComm_Test.java 파일 작성 public UARTComm_Test(String controllerName) throws IOException { if (controllerName == null) controllerName = "ttyAMA0"; UARTConfig config; config = new UARTConfig( controllerName, 1, 9600, UARTConfig.DATABITS_8, UARTConfig.PARITY_NONE, UARTConfig.STOPBITS_1, UARTConfig.FLOWCONTROL_NONE ); uart = (UART)DeviceManager.open(config); in = new BufferedReader(Channels.newReader(uart, "UTF-8")); out = new BufferedWriter(Channels.newWriter(uart, "UTF-8")); uart.setReceiveTimeout(100); } package uartcomm_test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.nio.channels.Channels; import java.util.Scanner; import jdk.dio.DeviceManager; import jdk.dio.uart.UART; import jdk.dio.uart.UARTConfig; public class UARTComm_Test { private UART uart; private BufferedReader in; private BufferedWriter out;

public void run() throws IOException { Scanner input = new Scanner(System.in); System.out.print("input message or 'q'(quit): "); byte[] message; for (String line = input.nextLine(); !line.equals("q"); line = input.nextLine()) { message = line.getBytes(); out.write(line); out.newLine(); out.flush(); System.out.println("Arduino: " + in.readLine()); } close(); private void close() throws IOException { in.close(); out.close(); uart.close(); /** * @param args the command line arguments */ public static void main(String[] args) throws IOException { // TODO code application logic here UARTComm_Test echo = new UARTComm_Test(args.length == 1 ? args[0] : null); echo.run(); }

UART 장치 통신 테스트 (7) 라즈베리파이 프로그래밍 - 설정 파일 추가 및 수정 “lib” 디렉토리에 장치 레지스트리 파일 및 보안 정책 파일 추가 build.xml 파일 수정

UART 장치 통신 테스트 (8) 설정 파일 – 장치 레지스트리 파일 실행시간에 장치 설정을 변경 # RPi3 header pins 1 = deviceType: gpio.GPIOPin, pinNumber:4, name:GPIO4, predefined:true 2 = deviceType: gpio.GPIOPin, pinNumber:7, name:GPIO7, mode:4, direction:1, predefined:true 3 = deviceType: gpio.GPIOPin, pinNumber:17, name:GPIO17, predefined:true 4 = deviceType: gpio.GPIOPin, pinNumber:18, name:GPIO18, mode:4, direction:1, predefined:true 5 = deviceType: gpio.GPIOPin, pinNumber:22, name:GPIO22, predefined:true 6 = deviceType: gpio.GPIOPin, pinNumber:23, name:GPIO23, mode:2, direction:0, predefined:true 7 = deviceType: gpio.GPIOPin, pinNumber:24, name:GPIO24, mode:2, direction:0, predefined:true 8 = deviceType: gpio.GPIOPin, pinNumber:25, name:GPIO25, mode:4, direction:1, predefined:true 9 = deviceType: gpio.GPIOPin, pinNumber:27, name:GPIO27, predefined:true 100 = deviceType: uart.UART, controllerName:ttyAMA0, name:ttyAMA0, baudRate:19200, dataBits:8, parity:0, stopBits:1, flowControl:0, predefined:true 300 = deviceType: spibus.SPIDevice, name:SPI0.0, controllerNumber:0, address:0, csActive:1, wordLength:8, clockFrequency:500000, clockMode:1, bitOrdering:1, predefined:true gpio.GPIOPin = initValue:0, controllerNumber:0, direction:0, mode:2, trigger:1, predefined:true uart.UART = baudRate:19200, parity:0, dataBits:8, stopBits:1, flowControl:0, predefined:true

UART 장치 통신 테스트 (9) 설정 파일 – 보안 정책 파일 // policy for DIO framework grant { // Very permissive permissions permission jdk.dio.DeviceMgmtPermission "*:*", "open"; permission jdk.dio.gpio.GPIOPinPermission "*:*"; permission jdk.dio.i2cbus.I2CPermission "*:*"; permission jdk.dio.spibus.SPIPermission "*:*"; permission jdk.dio.uart.UARTPermission "*:*"; };

UART 장치 통신 테스트 (10) build.xml 파일 수정

UART 장치 통신 테스트 (11) 프로젝트 속성 설정 수정 Sources / Run 속성 수정

UART 장치 통신 테스트 (12) 원격 실행 NetBeans Output 화면에서는 데이터 입력을 지원하지 않음 터미널 화면에서 실행 라즈베리파이로 ssh 접속 바이너리 배포 디렉토리로 이동 $ cd ~/NetBeansProjects/UARTComm_Test java 명령을 이용하여 실행 $ java -Djdk.dio.registry=dist/lib/dio.properties-raspberrypi -Djava.security.policy=dist/lib/java.policy -jar dist/UARTComm_Test.jar

UART 장치 통신 테스트 (13)