IoT(사물인터넷) 보안 2016년 2학기 2. 라즈베리파이 준비
2. 라즈베리파이 준비
참고 사이트 엘레파츠 블로그 http://blog.naver.com/elepartsblog 라즈베리파이 OS 설치하기 라즈베리파이 스타트키트 시작하기 라즈베리파이 입출력키트 GPIO 제어하기 -1 라즈베리파이 입출력키트 GPIO 제어하기 -2 라즈베리파이 센서키트 - 초음파센서 제어하기 라즈베리파이 센서키트 - 적외선 물체 감지 센서 제어하기 라즈베리파이 3 시작하기 라즈베리파이 활용법 주요 포스트 http://wiki.rasplay.org/doku.php 산딸기마을 http://www.rasplay.org/
1. 라즈베리파이 라즈베리파이(Raspberry Pi) 영국 잉글랜드의 라즈베리파이 재단이 학교와 개발도상국에서 기초 컴퓨터 과학의 교육을 증진시키기 위해 개발한 신용카드 크 기의 싱글 보드 컴퓨터 2012년 3월에 출시 초소형/초저가 PC – 35불 개발 보드의 저가화와 대중화의 시대를 연 주역 사물인터넷에 활용
1. 라즈베리파이 라즈베리파이 재단 https://www.raspberrypi.org/
1. 라즈베리파이 라즈베리파이 모델 Raspberry PI 3 model B 1.2GHz QUAD Core Broadcom BCM2837 64비트 ARMv7 프로세서 BCM43438 Wi-Fi 장착 BLE(Bluetooth 저전력) 장착 1GB RAM USB 2 포트 4개 40핀 확장 GPIO HDMI 및 RCA 동영상 출력
1. 라즈베리파이 라즈비안 (Raspbian Jessie) 라즈베리파이 운영체제
1. 라즈베리파이 활용 사례 – 게임기
1. 라즈베리파이 활용 사례 – 병렬컴퓨터
1. 라즈베리파이 활용 사례 – 오락실 게임기
1. 라즈베리파이 활용 사례 – 스마트카?
2. 라즈베리파이 준비 라즈베리파이 공식 사이트에서 라즈비안 다운로드 https://www.raspberrypi.org/ https://www.raspberrypi.org/downloads/ 1.4GB Zip파일 압축 해제 ->img 파일 생성
라즈비안 운영체제 설치 Win32DiskImager (Image writing tool) 설치 SD카드에 라즈비안 이미지 굽기 https://sourceforge.net/projects/win32diskimager/ SD카드에 라즈비안 이미지 굽기 DiskImager를 관리자 권한으로 실행 이미지파일 위치 SD카드 위치 쓰기
라즈베리파이 연결 SD카드를 라즈베리파이에 장착 모니터, 랜, 키보드, 마우스 케이블 연결 전원 케이블 연결하면 부팅 시작 (별도 전원버튼 없음)
네트워크 연결 IP주소/맥주소 확인 WIFI로 네트워크 연결 고정 IP 설정 (필요시) $ ifconfig eth0 Wlan0 설정 변경 $ sudo nano /etc/network/interfaces 네트워크 재시작 $ /etc/init.d/networking restart
Putty를 이용한 SSH 연결 PC에서 putty 실행 Hostname: 라즈베리파이의 IP 주소 Port: 22 Connection type: SSH ID: pi (기본 아이디) Password: raspberry (공장설정 기본 패스워드) SSH 접속 프로그램 한글 Putty 설치하기 HangulPuTTY-0.60.h1a2.exe 한글코드를 UTF-8로 설정하기: 창 > 변환 > 문자셋을 UTF-8로 선택
UART를 이용한 USB 포트 연결 UART란? UART (범용 비동기화 송수신기, Universal asynchronous receiver/transmitter) 병렬 데이터의 형태를 직렬 방식으로 전환하여 데이터를 전송하 는 컴퓨터 하드웨어의 일종 UART는 일반적으로 EIA RS-232, RS-422, RS-485와 같은 통신 표 준과 함께 사용
UART를 이용한 USB 포트 연결 GND TX RX
3. 라즈베리파이 설정 $ sudo raspi-config 실행
3. 라즈베리파이 설정 1. Expand Filesystem (파일시스템 확장) 라즈비안 초기 설치시 2G 정도의 용량만 사용하도록 설정됨 SD 전체를 사용하기 위해서는 이 메뉴(Expand FileSystem)를 실 행해야 함. 리부팅 후 용량 확인 $ df -h 2. Change User Password (사용자 패스워드 변경) 공장설정 기본 패스워드는 해킹 위험. 반드시 변경 요망 터미널 상에서 패스워드 변경 명령 사용 가능 $ passwd 이전 패스워드 입력 새로운 패스워드 입력
3. 라즈베리파이 설정 3. Hostname 설정 4. SSH 허용 설정 (기본 설정은 허용) 5. 국가별 설정 9. advanced option -> Hostname 선택 프롬프트가 바뀜 4. SSH 허용 설정 (기본 설정은 허용) 9. advanced option -> SSH 선택 5. 국가별 설정 Internationalisation Options 선택 I1 Change Locale : en_GB.UTF-8 UTF-8, en_US.UTF-8 UTF-8, ko_kr.UTF-8 UTF-8, ko_kr.EUC-KR EUC-KR default: ko_KR.UTF-8 I2 Change Timezone : Asia/Seoul 설정 I3 Change Keyboard Layout : Generic 105 key (Intl) PC - Korean, 이하 default 선택 저장 후 리부팅
3. 라즈베리파이 설정 한글폰트 설치 (시스템 전체의 한글 지원) 한글입력기 설치 (한글 입력 가능하게) 폰트 설치 재부팅 sudo apt-get install ttf-unfonts-core 재부팅 한글입력기 설치 (한글 입력 가능하게) sudo apt-get install ibus ibus-hangul 메뉴 / Preferences / iBus Preferences / Input Method 에서 Korean 추가 메뉴 / Preferences / iBus Preferences / General 에서 keyboard shortcuts 설정
3. 라즈베리파이 설정 루트 패스워드 변경 새로운 아이디 생성, 패스워드 설정 $ sudo passwd root $ su - $ useradd ID $ passwd ID
4. 라즈베리파이용 키트 소개 스타트키트 입출력키트 센서키트 미디어키트
스타트 키트 http://www.eleparts.co.kr/EPXGJHLM 라즈베리파이 3 어댑터 5V 방열판 MicroSD 카드, 16GB LAN 케이블 HDMI 케이블 카드리더 라즈베리파이 케이스 키트 케이스
입출력 키트 http://eleparts.co.kr/EPXDTWPM 소켓점퍼케이블 GPIO 40핀 확장 모듈 브레드보드 LED 저항 스위치
라즈베리파이 GPIO 구성
센서 키트 http://www.eleparts.co.kr/EPXDTWR8 초음파센서, 디지털 적외선 물체감지센서, 온습도센서, 아날로그 사운드 센서, 디지털 접촉식 터치 센서
미디어 키트 http://www.eleparts.co.kr/EPXDTWR9 3.5인치 터치 LCD 라즈베리파이 카메라
5. 웹서버 설치 및 운영 웹서버 설치 확인 $ sudo apt-get update $ sudo apt-get install apache2 (apache2 설치) $ cd /var/www/html (웹문서 폴더) $ sudo rm index.html (기본 웹문서 삭제) $ sudo nano index.html (새 웹문서 작성) 웹브라우저로 접속하여 웹서비스 확인 http://localhost 또는 http://IP주소 외부에서 웹브라우저를 이용하여 IP주소로 접속하여 확인
6. GPIO 입출력 개발 환경 구축 GPIO (General Purpose Input / Output) 개발환경 범용적인 목적으로 입/출력을 담당 개발환경 C언어 환경 Node.js 환경 Python 환경
GPIO 핀 번호
GPIO 핀 번호
GPIO 활용 GPIO 키트의 기본 활용법 Breadboard에 회로 구성하는 방법
WiringPI Wiring Pi 라즈베리파이를 위한 GPIO Interface library http://wiringpi.com/ 설치: > sudo apt-get install wiringpi
C언어 개발 환경 wiringPi 설치 gcc를 이용한 컴파일 $ sudo apt-get install wiringpi $ nano blink.c $ gcc -Wall -o blink blink.c -lwiringPi $ sudo ./blink
Node.js 개발 환경 Node.js 기본 설치 설치된 Node.js 지우기 $ sudo apt-get install nodejs $ node -v : node.js의 버전 확인 (v0.10.29) $ npm –v : 노드 설치 관리자 npm의 버전 확인 (1.4.21) 오래된 버전이 설치됨 설치된 Node.js 지우기 $ sudo apt-get remove nodejs
Node.js 개발 환경 최신버전 패키지 다운로드 최신버전 설치 버전 확인 $ wget http://node-arm.herokuapp.com/node_latest_armhf.deb 최신버전 설치 $ sudo dpkg -i node_latest_armhf.deb 설치 후 로그아웃 후 다시 로그인 버전 확인 $ node –v (v4.2.1) – 프로그램 실행 $ npm –v (2.14.7) - 노드 패키지 매니저 (패키지 설치)
Node.js 개발 환경 Wiring-pi 설치 Wiring-pi의 활용 API 문서 참조 소스 작성 실행 $ npm install wiring-pi Wiring-pi의 활용 Node.js 자바스크립트 프로그램에서 활용 var wpi = require('wiring-pi'); API 문서 참조 https://github.com/WiringPi/WiringPi- Node/blob/master/DOCUMENTATION.md 소스 작성 $ vi led.js 실행 $ sudo node led.js 루트 권한이어야 실행 가능 // led.js var wpi = require('wiring-pi'); var sleep = require('sleep'); wpi.setup('gpio'); wpi.wiringPiSetup(); wpi.pinMode(3, wpi.OUTPUT); wpi.pinMode(4, wpi.OUTPUT); while(true) { wpi.digitalWrite(3, wpi.LOW); wpi.digitalWrite(4, wpi.HIGH); sleep.sleep(1); wpi.digitalWrite(4, wpi.LOW); wpi.digitalWrite(3, wpi.HIGH); }
Python 개발 환경 파이썬 개발 패키지, 셋업툴 설치 wiringPi 다운로드 WiringPi module 업데이트 $ sudo apt-get install -y python-dev python-setuptools wiringPi 다운로드 다운로드 $ git clone git://git.drogon.net/wiringPi WiringPi module 업데이트 $ cd wiringPi (폴더로 이동) $ git pull origin WiringPi 설치 $ ./build WiringPi-Python GPIO 테스트 $ gpio –v $ gpio readall
Python 개발 환경 WiringPi2-Python 다운로드 WiringPi2-Python 설치 $ cd ~ (루트 폴더로 이동) $ git clone https://github.com/Gadgetoid/WiringPi2-Python.git (다운로드) WiringPi2-Python 설치 $ cd WiringPi2-Python (폴더로 이동) $ sudo python setup.py install (설치) Python은 운영체제 설치시 기본 설치되어 있음 파이썬 실행 $ python 종료 >>> ctrl + D
Python 개발 환경 파이썬 프로그램 작성 실행 GPIO 테스트 $ vi hello.py $ python hello.py print(‘Hello world!’) 실행 $ python hello.py GPIO 테스트 $ vi gpio-test.py $ sudo python gpio-test.py