3. 오픈소스 기반의 하드웨어 산업
▪ 의미
▪ 블루프린트 제공을 통한 어마어마한
비용 절감
▪ 신분야 개척의 다양한 주체 참여
가속화
▪ 오픈소스 하드웨어 부품 기업
▪ SparkFun
▪ Adafruit
▪ RepRap
▪ OpenCores
▪ 주요 분야
▪ 프로토타이핑
▪ IoT (사물인터넷)
▪ 교육용 기기
▪ 3D 프린터
▪ 드론
▪ 로봇
▪ 공장자동화
▪ 자율 주행 / 자율 비행
4. Open source hardware
▪ 오픈소스 하드웨어 운동의 시작
▪ 1997 년 (Bruce Perens)
▪ ODF (Open Design Foundation) (1999)
▪ 큰 영향을 주지 못하고 사그라듬
▪ IT 경제 환경의 변화
▪ 단위 연산량당 단가 하락
▪ 소프트웨어 파트의 오픈소스화 가속
▪ 다양한 오픈소스 소프트웨어 기반의 하드웨어 회사 출현
5. 오픈소스 하드웨어 라이센스
▪ TAPR OHL (Open Hardware License)
▪ CERN OHL
▪ CERN의 장치 구축을 위해 개발된
장치들의 라이센스
▪ OSHW (2011)
▪ Open Hardware Summit
▪ 많은 양의 라이센스 존재
▪ 대부분의 라이센스가 소프트웨어
카운터파트의 하드웨어
라이센스라고 명기함
▪ 소프트/하드웨어 라이센스
▪ GPL
▪ LGPL
▪ MIT
▪ CC (Creative Commons)
▪ FreeBSD
7. MCU
▪ Microcontrollers
▪ 소형 컴퓨터 및 CPU 를 통칭
▪ 다양한 기기에 사용
▪ 스펙
▪ 용도에 따라 다양
▪ Programmable memory
▪ 2/4KB ~ 8MB
▪ Storage
▪ 다양한 용량
▪ 대표적인 MCU
▪ Atmel AVR (1997)
▪ Tiny (16KB) / Mega (256KB) models
▪ Intel 8051 (1980)
▪ PIC
▪ Zilog Z80 (1976)
▪ ARM
▪ Cortex M series (0, 3, 6)
▪ ESP8266 / ESP32 (2014 / 2016)
▪ 가격대 / 높은 연결성
8. 센서보드
▪ 센서
▪ 다양한 센서 보급
▪ 대량 생산으로 인한 저가격화
▪ 대표적인 센서
▪ 온도 / 습도 센서
▪ 먼지 센서
▪ 가스 센서
▪ 조도 센서
▪ 초음파 센서
9. 제어 모듈
▪ 제어 모듈
▪ 코드의 동작을 물리적인 운동으로 변환
▪ 로봇 / 3D 프린터 제작에 사용
▪ 종류
▪ 스테퍼
▪ 특정 레벨로 제한하는 동작에 사용
▪ 서보 모터
▪ 회전 동작에 사용
▪ 컨트롤 릴레이
▪ 전원 제어등에 사용
10. Arduino
▪ IDI (Italy, 2005)
▪ AVR 기반의 오픈소스 펌웨어가 내장된 프로토타이핑 보드
▪ 생각의 전환
▪ 마이크로컨트롤러의 코딩을 쉽게 하는 방법?
▪ C와 유사한 프로그래밍 문법과 컴파일러, IDE 및 펌웨어 레코더 제공
▪ 일반적인 기기들과의 연결을 쉽게 하는 방법?
▪ GPIO (General Purpose Input/Output) 제공
▪ 특징
▪ Arduino IDE 제공 – 오픈소스, 다양한 보드 지원 (서드파티 보드 추가 가능)
▪ 오픈소스 호환보드가 다수 존재함
11. ▪ 장점
▪ 다양한 서드파티 모듈 (`쉴드`) 존재
▪ 여러 디자인의 보드가 있음
▪ 단점
▪ 낮은 스펙 / 느린 속도
▪ 4KB 프로그램 메모리 (UNO 모델 기준)
▪ 기본으로 제공하는 커넥티비티가 없음
▪ 블루투스/Zigbee 쉴드 또는 와이파이 쉴드를
사용해야 함
▪ 최근 문제
▪ 창업자간 불화로 커뮤니티 이분화 (2015)
▪ 최근 해결 (2016. 11)
13. ESP8266 / ESP32
▪ Hackable MCU
▪ 와이파이 및 블루투스 자체 지원
▪ 엄청나게 작은 크기
▪ 개발보드의 경우에도 UNO의 1/3 크기
▪ 넓은 프로그래밍 메모리 공간 / 높은 성능
▪ 그런데 가격이…
▪ 성능에 기반한 확장성
▪ Lua / Micropython 및 Arduino IDE 에서의 프로그래밍 지원
14. Raspberry Pi
▪ Raspberry Pi Foundation (2012)
▪ 교육용 목적으로 만들어진 ARM 기반의
컴퓨터
▪ 2006년 아이디어 프로토타이핑 오픈소스
공개 후 재단 설립
▪ 생각의 전환
▪ 교육용 컴퓨터는 잘 망가진다
▪ ➜ 망가져도 괜찮게 만든다
▪ 교육을 할 때 컴퓨터의 효용성을
알려주기 어렵다
▪ ➜ 눈에 만질 수 있는 기기를 연결하게
해 준다
▪ 특징
▪ 다양한 운영체제 지원
▪ GPIO를 이용한 다양한 실습 및
장치 연결 지원
▪ SD카드, HDMI 및 무선랜,
블루투스등 다양한 연결 포트 및
방식 지원 (RPi 3 기준)
15.
16. import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(18, GPIO.OUT)
while True:
GPIO.output(18, True)
time.sleep(1)
GPIO.output(18, False)
time.sleep(1)
18. Learn by run: 딥러닝 실습
▪ 준비
▪ codeonweb의 practice 에서 tensorflow-python3 언어를 고릅시다.
▪ 또는 컴퓨터에 (python3 기반의) tensorflow를 설치해 옵니다.
https://tensorflow.org
▪ NMIST 숫자 인식 예제 만들어보기 – 지도학습 (supervised learning)
▪ 미리 설정되어 있는 NMIST 데이터를 불러오기
▪ 간단한 기계학습 모형 만들기
▪ 데이터로 학습한 모형의 정확도 보기
19. Last assignment: 프로젝트
▪ 프로젝트 발표
▪ 프로젝트 발표를 준비합니다.
▪ 팀당 10분 발표 / 발표자는 미리 지정합니다.
▪ 시연을 반드시 포함합니다.
▪ 프로젝트 보고
▪ 프로젝트에 관련한 보고를 작성합니다.
20. Last assignment: 프로젝트
▪ 프로젝트 보고서
▪ 프로젝트에 관련한 보고서를 작성합니다.
▪ “서면 보고서” 제출이 아닙니다.
▪ 아래의 내용을 github의 README.md 및
위키에 작성합니다.
▪ 프로젝트 제목 (README.md)
▪ 팀명 / 팀원 이름 (README.md)
▪ 요약 (README.md)
▪ 프로젝트의 목표
▪ 프로젝트의 지향점에 대한 설명
▪ 영문 버전 포함
▪ 소개 (README.md)
▪ 구현 언어 포함
▪ 라이센스에 대한 소개 포함
▪ 구현체 설명 (소스코드내)
▪ 소스내 모듈에 대한 설명
▪ sphinx 문법으로 소스 내에 설명
▪ 시연 결과 (README.md)
▪ 스크린샷 (3장 이상)
▪ 향후 계획 (README.md 또는 위키)
▪ 앞으로의 업데이트 계획에 대한 소개
21. Next is...
15/15: Project demonstration
@inureyes
Questions? inureyes@gmail.com
OR
https://www.codeonweb.com/circle/@oss-basics-hu