-
Notifications
You must be signed in to change notification settings - Fork 0
/
공공데이터 아두이노 하계특강(김창호 교수님)_1주차-1 강의 필기.txt
318 lines (220 loc) · 11.5 KB
/
공공데이터 아두이노 하계특강(김창호 교수님)_1주차-1 강의 필기.txt
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
공공데이터 아두이노 하계특강(김창호 교수님)_1주차-1 강의 필기.txt
2020. 7. 13.(월) 수업 - 2020. 7. 13.(월) 필기
[수업 시작]
p. 2
- 사물인터넷: 인터넷을 기반으로 모든 사물을 연결하여 사람과 사물, 사물과 사물간의 정보를 상호 소통하는
"지능형 기술 및 서비스"
- 사물인터넷의 4가지 구성요소
- 1. 센서: 온도센서
- 2. 디바이스: 통신 담당, 동작 담당
- 3. 클라우드: 센서값들이 저장되는 서버 개념
- 4. 빅데이터: 수많은 데이터를 단순히 저장이 아닌, "활용"하는 단계
- 1. 센서
- IoT의 핵심 기술: 저전력화
- 최소한의 전력을 이용해 동작 가능해야 함
- 2. 디바이스
- Open H/W: 설계도, 소스들을 무료로 모두에게 공유되어 있음
- 공유하는 이유? => 나 말고도 다른 사람들이 내 디바이스를 이용해야 시장이 활성화되고, 제 제품이 더 잘 팔림
- => 요즘 시장의 트렌드
- 3. 네트워크 시큐리티
- 5G, 와이파이, 블루투스, RC카: 라디오 프리퀀시
- 로라망: IoT 전용 네트워크망
- 블루투스, 와이파이: 단거리 통신(10m 정도 밖에 안 됨)
- 4. 표준화
- 5. 서비스
- 오픈API
p. 7 사물인터넷 생태계 구성
- Vendor: 판매자들
- 1. 칩벤더
- 반도체: 무선송수신칩/MCU => CPU와 유사한 기능
- ex) SK하이닉스, 삼성전자
- 2. 통신모듈 단말 업체
- 애플, 구글
p. 8
- 1. 플랫폼: 여러 가지 기반 기술을 쓰기 쉽게 모아놓은 것
- 자동차도 센서를 많이 달고 있어서 IoT를 많이 사용함
- 2. 통신: 유뮤선 네트워크
- 3. 서비스: IoT 서비스
p. 9
- 비전: 카메라 센서
- 9축 센서: 자이로센서(핸드폰 얼굴인식 기능), 가속도센서, 자자기 센서(자기장 센서)
- 스마트 센서: 지능화된 센서
- 시리야 같은 음성을 분석해서 아날로그 신호를 분석해서 MCU가 목소리가 나온 부분만 처리해줌
- MEMS: 반도체 칩에 내장된 센서
- 소형화 칩, 구글 글래스, iWatch에 사용됨
@@@ 1-1차시 수업 끝
- 1-2차시 수업 시작
- 1. 아두이노: 교육용으로 사용됨
- 가장 단순함, 대중적
- 2. 라즈베리 파이
- 아두이노보다 고성능, 운영체제가 포함되어 있어 더 심화된 작업 가능
- 3. 인텔 에디슨
- 아두이노와 라즈베리 파이의 중간 정도의 수준
- 주로 커피 메이커 ex) 네스프레소 커피머신에 사용됨
- 4. 암 엠베드
- 에디슨과 유사하지만 웹 브라우저상에서 코드를 컴파일하는 환경이 제공됨, 산업용으로 많이 사용됨
- 1. 아두이노 우노는 ATMEGA328이라는 메인 칩을 사용함, 이 큰 칩 주변에 있는 것들은 모두 이 칩을 사용하기
위한 주변 장치임
- 2. 라즈베리 파이: 개발도상국의 컴퓨터 교육을 시키기 위해 생산됨
- 한국 돈 5만 원 정도
- 3. 비글 보드
- 라즈베리 파이와 유사하지만, 가격이 비싸고 성능이 우수하지만 라즈베리 파이가 커뮤니티가 잘 되어 있어 잘 안 쓰임
- 4. 인텔 에디슨: CPU 말고도 와이파이 통신이 가능한 통신칩, 블루투스 등이 내장 되어 있어서
심화된 IoT 디바이스를 만들 때 많이 사용됨
- 5. 인텔 큐리: 조금한 보드
- 6. 인텔 줄: 흥행 실패
- 7. 삼성 아틱: 가격 저렴, 삼성의 플랫폼 이용 가능, 요새 자주 쓰이지는 않는 플랫폼
- 8. 퀄컴: 산업용에서 쓰임
- 9. TI의 IoT 전용 MCU 칩: 저전력 기반으로 잘 만듦
- 플랫폼:
- 1. 인텔 IoT 애널리틱스: 사물인터넷의 사용 기록을 대시보드(차트) 형태로 분석해줌
- 2. 클라우드 플랫폼 - 아마존 웹 서비스(AWS)
- EC2, S3 같은 IoT 디바이스를 관리해주는 플랫폼이 매우 잘 되어 있음
- 3. 클라우드 플랫폼 - 구글 클라우드 플랫폼:
- 텐서플로우와 협업한 머신러닝 서비스를 제공하는 클라우드를 제공해줌
- 4. MS: 애저
- 5. 삼성: 아틱 클라우드
- SKT, 현대 모비우스, 유비보틱스 등
- 2. 네트워크
- 그래프: 통신할 수 있는 범위가 크면 속도가 낮음
- x축: Range(범위)
- y축: speed(속도)
- (속도 우위) 와이파이, LTE: 배터리 소모가 빠름
- (속도, 범위 균일) 블루투스: 배터리 소모가 와이파이와 LTE에 비해 적음 ex) 에어팟
- 통신환경 프로토콜
- 프로토콜: 교환방식, 약속(규약) ex) 통신 규약
- 컴퓨터와 서버간 데이터를 주고 받는 방식: 날 것의 데이터(로우 데이터)로 다 보내면 문제 생김
- <S> Hello <E>
- Start 태그와 End 태그로 묶어서 Hello 문자열이 중간에 끊기는 경우를 방지함
- => 프로토콜(통신 규약)
- HTTP 프로토콜: 웹 페이지를 볼 수 있는 통신 규약
- MQTT 프로토콜: IoT에서 쓰이는 통신 규약
- 특징: 신뢰성, 저전력 => 가볍다(보내는 내용이 적다)
- ex1) <Start> ~ <End> // 길다
- ex2) <S> ~ <End> // 짧다(짧고 빠르게 전송 가능) = > 꼭 필요한 내용만 전송함
- 와이파이: 속도가 빠르지만 배터리 소모도 빨라서 IoT 장비에서 초반에는 잘 사용 안 했지만, 지금은 보완됨
- 보통 2.4GHz
- 요즘: 5GHz
- 범위가 넓어지만 속도가 느리고, 속도가 빠르면 범위가 좁아짐
- 2. 사물인터넷 핵심기술(보안)
- IoT 공통 보안 7대 원칙: 안전한 초기 보안 설정 방안 제공
- 3. 서비스
- 텍스트, 웹 마이닝: 자주 쓰이는 키워드를 분석해서 요즘 사람들의 키워드 트렌드를 분석함
- 정보 3.0 공공데이터
- 네이버 데이터랩
- 구글 트렌즈
- 빅데이터 기술
- R 프로그래밍 < 파이썬으로 딥러닝 처리하는 걸 추천함(교수님 의견)
- 학습데이터 > 머신러닝 알고리즘 > 머신러닝 모델 (실제 데이터) > 결과
- 실제 데이터를 통해 머신러닝의 인식률을 파악 가능
- IoT 디바이스: 데이터를 수집하는 데 특화되어 있음( => 학습 데이터 수집)
- @@@ 추천 테크트리 1.
- 테크트리: IoT로 데이터 수집하고 => 수집한 데이터로 머신러닝 해볼 것 추천
- 구글 네스트: 학습형 온도 조절기
- 스마트 물류: 키바(IoT보다는 로보틱스에 가까움)
- @@@ 1-2차시 수업 끝
- @@@ 1-3차시 수업 시작!
- [1] 마이크로 컨트롤러
- 마이크로컨트롤러
- 아두이노를 한다 => 마이크로컨트롤러를 조정한다
- 전원만 주어지면 컴퓨터로 동작 가능 => 운영체제가 없다
- 1. 마이크로프로세서(uP)
- = CPU
- 연산이 가능한 고성능 집
- 2. 마이크로컨트롤러(uC)
- 메인보드 + 일부 HDD 기능
- 저성능 칩이지만 여러 기능을 갖춤
uP와 uC 사용 시스템 비교
- 아두이노 메가2560 vs 데스크톱 컴퓨터
- (CPU) ATmega2560 vs 인텔 코어 i7
- (비트) 8비트(0 ~ 255) vs 64비트(2 ** 64)
- (시스템 가격) 2만 5천 원 vs 100만 원
- 요즘 스마트폰은 옛날 전화기에 쓰이는 마이크로컨트롤러보다 훨씬 고성능, 다기능임
- C언어에서의 컴파일: 기계어로 번역함
- 기계어 형태의 코드가 마이크로컨트롤러에 저장됨
- uC 없이 '하드웨어'로 구현: 시간, 비용 많이 듦 ㅠㅠ
- uC 사용: 유지 가능!
- [2] 아두이노 기본
- 아두이노 = 하드웨어 + 소프트웨어
- 마이크로 컨트롤러 > 아두이노(uC의 일종)
- 아두이노의 모든 hw와 sw는 모두 공개됨
- 아두이노 보드의 종류 - 핀 헤더 유무
- 1. 핀 헤더 있음: 교육 & 개발 용도
- 2. 핀 헤더 없음: 제품 적용 용도
- 아키텍처: 칩에 대한 설계
- 우노, 메가: 8비트 CPU
- 0 ~ 255까지의 숫자 표현 가능
- 아두이노는 C++ 형태이지만 주로 C언어처럼 사용함
void setup() {} // setup() 함수는 프로그램 시작시 한 번만 실행됨
// 변수 초기화, 한 번만 설정값
void loop(void){} // 계속 반복하며 실행됨
// 실제로 동작을 하는 코드들이 포함됨
// setup(){}함수와 loop() 함수는 한 코드에서 한 번씩만 사용 가능하다 ex) 자바의 main 함수
@@@ 1-3 수업 끝
@@@ 1-4 수업 시작
- [3] 아두이노 시리얼 통신
- 라이브러리: 어떤 기능이나 서비스를 사용하기 위한 코드들의 묶음
- 기본 라이브러리(공식): 아두이노에서 제공됨, 아두이노 설치 디렉터리 아래 libraies 디렉터리
- 확장 라이브러리: 써드 파티에서 제공됨, 스케치북 디렉터리 아래 libraries 디렉터리
- 통신: 어떠한 값을 보내고 받는 과정
- RX: 값을 받는 것(리시버)
- TX: 값을 보내는 것(트랜스미터)
- 아두이노 우노에서는 0번과 1번을 시리얼 통신을 위해 사용함!!
- 시리얼 통신 == UART 시리얼 통신
같은 말임
- 컴퓨터의 TX에서 보내면 아두이노의 RX로 받음
- 아두이노의 TX로 보내면 컴퓨터의 RX로 받음 => TX와 RX는 서로 교차돼서 연결되어야 함
- A나 B 같은 어떤 값을 보낼 때의 기준 전압은 5V임(컴퓨터의 USB 전압)
- 0번과 1번은 스케치 업로드, 시리얼 통신을 사용하는 민감한 포트기 때문에 조심해서 사용해야 함(장난 X)
- 보드 레이트: 통신 속도
- 보내는 쪽과 받는 쪽의 통신 속도가 같아야 통신이 가능함
- 1. 통신 하기 위한 선언
- Serial.begin(baudrate)
- Serial이라는 클래스의 begin 메소드(함수)를 사용하겠다.
- ex) Serial.begin(9600); // 115200
- 2. 통신을 통한 입력 값 전송
- Serial.print(value, format)
- cf) c언어의 printf 함수와 같음
Serial.println(); // 기본: 소수 점 둘째자리까지 표현
Serial.println(f);
Serial.println(f, 5); f의 소수 점 다섯 번째짜리까지 표현함
int available(void) // 값이 들어왔는지를 확인함(1이상이면)
int read(void) // 들어온 값을 읽어들임
@@@ 1-4주차 수업 끝
@@@ 1-5주차(현강) 시작
- byte형과 char 자료형은 모두 8비트 자료형이기 때문에 서로 혼합해서 형변환을 해도 같은 결과가 나옴
/* 실습 3번: a라고 하는 값을 보내면 13번 LED가 켜지고, b라는 값을 시리얼 통신으로 보내면 LED가 꺼지는 코드를 작성하시오. */
// LED 위치: 아두이노 보드의 "L" LED
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(13, OUTPUT);
digitalWrite(13, HIGH); // LED ON
digitalWrite(13, LOW); // LED OFF
/*
int a = 123;
float f = 12.34567;
Serial.println(a);
Serial.println(a, BIN);
Serial.println(a, DEC); // Serial.print(a);와 같음
Serial.println(a, HEX);
Serial.println(f);
Serial.println(f, 3);
*/
}
void loop() {
// put your main code here, to run repeatedly:
if(Serial.available() > 0){
char data = Serial.read();
if(data == 'a'){
digitalWrite(13, HIGH);
Serial.println("LED ON!!");
} else if(data == 'b'){
digitalWrite(13, LOW);
Serial.println("LED OFF ㅠㅠ");
}
}
}
@ 1-5주차(현강) 수업 끝
용어 사전
1.