Skip to content

valentis/LinuxProgrammingWithRaspberryPi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

56 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

์‚ฌ๋ฌผ์ธํ„ฐ๋„ท์„ ์œ„ํ•œ Linux Programming With Raspberry Pi(2nd Edition)


์ถœํŒ์‚ฌ ์ œ์ดํŽ์„ ํ†ตํ•ด ์ถœํŒํ•œ "์‚ฌ๋ฌผ์ธํ„ฐ๋„ท์„ ์œ„ํ•œ ๋ฆฌ๋ˆ…์Šค ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด(2nd Edition)"์˜ ์†Œ์Šค ์ฝ”๋“œ ์‚ฌ์ดํŠธ์ž…๋‹ˆ๋‹ค.
  • Raspberry pi 4๋ฅผ ๊ธฐ์ค€์˜ฌ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค
  • ๋ผ์ฆˆ๋น„์•ˆ(Raspbian)Buster 2019๋…„ 9์›” 26์ผ ๋ฒ„์ „์„ ๊ธฐ์ค€์œผ๋กœ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • 3์žฅ์€ ์ƒˆ๋กœ์šด ํ•˜๋“œ์›จ์–ด๋กœ Sense HAT์„ ์ถ”๊ฐ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • 4/5/6์žฅ์€ Single UNIX Specification๋ฅผ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
  • 7์žฅ์€ 32๋น„ํŠธ ํ”„๋ ˆ์ž„ ๋ฒ„ํผ์™€ Sense HAT์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • 8์žฅ์€ OpenCV 2/3 ๋ฒ„์ „์„ ๊ธฐ์ค€์œผ๋กœ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • 9์žฅ์€ ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด 4๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋˜์–ด ์žˆ๊ณ  ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด 3 ์ด์ „์— ๋Œ€ํ•œ ์„ค๋ช…๊ณผ ์†Œ์Šค ์ฝ”๋“œ๋„ ๋“ค์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • 10์žฅ์€ Qt 5.11 ์ดํ›„ ๋ฒ„์ „์„ ๊ธฐ์ค€์œผ๋กœ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • 11์žฅ์€ Caffe 1.0 ๋ฒ„์ „์„ ๊ธฐ์ค€์œผ๋กœ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • 12์žฅ์€ ๋ฆฌ๋ˆ…์Šค ์ปค๋„ 5.3.x ๋ฒ„์ „์„ ๊ธฐ์ค€์œผ๋กœ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • 13์žฅ์€ GStreamer 1.0 ๋ฒ„์ „์„ ๊ธฐ์ค€์œผ๋กœ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

1๋ถ€. ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด ์‚ฌ์šฉํ•˜๊ธฐ


1์žฅ. ์‚ฌ๋ฌผ์ธํ„ฐ๋„ท๊ณผ ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด

1.1. ์‚ฌ๋ฌผ์ธํ„ฐ๋„ท๊ณผ ์˜คํ”ˆ ์†Œ์Šค ํ•˜๋“œ์›จ์–ด ํ”Œ๋žซํผ

ย ย 1.1.1 ์ œ4์ฐจ ์‚ฐ์—…ํ˜๋ช…๊ณผ ์‚ฌ๋ฌผ ์ธํ„ฐ๋„ท
ย ย 1.1.2 ์˜คํ”ˆ ์†Œ์Šค์˜ ๋ฐœ์ „๊ณผ ์˜คํ”ˆ ์†Œ์Šค ํ•˜๋“œ์›จ์–ด์˜ ๋“ฑ์žฅ
ย ย 1.1.3 ์•„๋‘์ด๋…ธ

1.2. ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด ํ•œ ์ž… ๋ฒ ์–ด ๋ฌผ๊ธฐ

ย ย 1.2.1 ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด
ย ย 1.2.2 ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด์˜ ๋ชจ๋ธ ๋ฐ ๊ตฌ์กฐ

1.3. ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด๋ฅผ ์œ„ํ•œ ์ฃผ๋ณ€ ์žฅ์น˜

ย ย 1.3.1 ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์„ ์œ„ํ•œ ์ฃผ๋ณ€ ์žฅ์น˜
ย ย 1.3.2 ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด๋ฅผ ์œ„ํ•œ ์ฃผ๋ณ€ ์žฅ์น˜
ย ย 1.3.3 ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด์™€ SD ์นด๋“œ
ย ย 1.3.4 ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด์™€ ์ฃผ๋ณ€ ์žฅ์น˜์˜ ์—ฐ๊ฒฐ

1.4 ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด๋ฅผ ์œ„ํ•œ ์ค€๋น„ ์šด๋™ : ์‚ฌ์šฉ ํ™˜๊ฒฝ ์„ค์ •

ย ย 1.4.1 ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด๋ฅผ ์œ„ํ•œ ์šด์˜์ฒด์ œ
ย ย 1.4.2 ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด์˜ ๋””์Šคํฌ ์ด๋ฏธ์ง€ ์„ค์น˜
ย ย 1.4.3 ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด์˜ ๊ธฐ๋ณธ ๊ณ„์ •๊ณผ ๋ถ€ํŒ… ์‹œ ํ™˜๊ฒฝ์„ค์ •
ย ย 1.4.4 ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด์˜ ํ™˜๊ฒฝ์„ค์ •
ย ย 1.4.5 ๋„คํŠธ์›Œํฌ ์„ค์ •๊ณผ ์ ‘์†

1.5 ์š”์•ฝ


2์žฅ. ๋ฆฌ๋ˆ…์Šค์˜ ๊ธฐ์ดˆ: ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด์™€ ์นœํ•ด์ง€๊ธฐ

2.1 ๋ฆฌ๋ˆ…์Šค์˜ ์‚ฌ์šฉํ™˜๊ฒฝ๊ณผ ๊ตฌ์กฐ

ย ย 2.1.1 ๋ฆฌ๋ˆ…์Šค์˜ ์‹œ์ž‘
ย ย 2.1.2 ๋ฆฌ๋ˆ…์Šค์˜ ํŠน์ง•
ย ย 2.1.3 ๋ฆฌ๋ˆ…์Šค์˜ ๊ตฌ์กฐ

2.2 ๋ฆฌ๋ˆ…์Šค์˜ ๊ธฐ๋ณธ ๋ช…๋ น์–ด

ย ย 2.2.1 ์…ธ๊ณผ ํ”„๋กฌํ”„ํŠธ
ย ย 2.2.2 ๋ฆฌ๋ˆ…์Šค์˜ ๊ธฐ๋ณธ ๋ช…๋ น์–ด
ย ย 2.2.3 ์‚ฌ์šฉ์ž ๊ณ„์ •๊ณผ ๊ทธ๋ฃน

2.3 ๋ฆฌ๋ˆ…์Šค ํ…์ŠคํŠธ ์—๋””ํ„ฐ

ย ย 2.3.1 ํ…์ŠคํŠธ ์—๋””ํ„ฐ
ย ย 2.3.2 vi ์—๋””ํ„ฐ
ย ย 2.3.3 nano ์—๋””ํ„ฐ

2.4 ๋ฆฌ๋ˆ…์Šค์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋„๊ตฌ

ย ย 2.4.1 GCC
ย ย 2.4.2 gcc ์ปดํŒŒ์ผ๋Ÿฌ
ย ย 2.4.3 make ์œ ํ‹ธ๋ฆฌํ‹ฐ
ย ย 2.4.4 gdb ์œ ํ‹ธ๋ฆฌํ‹ฐ
ย ย 2.4.5 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋งŒ๋“ค๊ธฐ

2.5 ์š”์•ฝ


3์žฅ. ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด์™€ GPIO: ํ•˜๋“œ์›จ์–ด ์ œ์–ด

3.1 GPIO์˜ ๊ฐœ์š”

ย ย 3.1.1 ์ปดํ“จํ„ฐ ๊ตฌ์กฐ
ย ย 3.1.2 ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด์™€ GPIO
ย ย 3.1.3 ํ•˜๋“œ์›จ์–ด์˜ ์Šค์ผ€์น˜์™€ fritzing

3.2 LED ์ œ์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ย ย 3.2.1 ์ „์ž ๋ถ€ํ’ˆ
ย ย 3.2.2 ์ „์ž ๋ธ”๋ก
ย ย 3.2.3 GPIO์™€ LED
ย ย 3.2.4 echo ๋ช…๋ น์–ด์™€ LED์˜ ์ ๋ฉธ
ย ย 3.2.5 gpio ๋ช…๋ น์–ด

3.3 wiringPi๋ฅผ ์ด์šฉํ•œ GPIO ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ย ย 3.3.1 wiringPi
ย ย 3.3.2 wiringPi๋ฅผ ์ด์šฉํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
ย ย 3.3.3 PWM(Pulse Width Modulation)
ย ย 3.3.4 ์Šค์œ„์น˜์˜ ์‚ฌ์šฉ
ย ย 3.3.5 ์Šคํ”ผ์ปค์˜ ์‚ฌ์šฉ
ย ย 3.3.6 ์กฐ๋„ ์„ผ์„œ์˜ ์‚ฌ์šฉ
ย ย 3.3.7 DC ๋ชจํ„ฐ์˜ ์‚ฌ์šฉ
ย ย 3.3.8 7์„ธ๊ทธ๋จผํŠธ์˜ ์‚ฌ์šฉ

3.4 SenseHAT์„ ์ด์šฉํ•œ ๊ธฐ์ƒ ๊ด€์ธก ์‹œ์Šคํ…œ

ย ย 3.4.1 ์•„์ŠคํŠธ๋กœ ํŒŒ์ด ํ”„๋กœ์ ํŠธ์™€ SenseHAT
ย ย 3.4.2 SenseHAT์˜ ๊ธฐ์•• ์„ผ์„œ
ย ย 3.4.3 SenseHAT์˜ ์˜จ์Šต๋„ ์„ผ์„œ
ย ย 3.4.4 SenseHAT์˜ ๊ฐ€์†๋„/์ž์ด๋กœ์Šค์ฝ”ํ”„/์ง€์ž๊ธฐ ์„ผ์„œ

3.5 ์š”์•ฝ



2๋ถ€. ๋ฆฌ๋ˆ…์Šค ๊ธฐ๋ณธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ


4์žฅ. ๋ฆฌ๋ˆ…์Šค ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ธฐ์ดˆ

4.1 ๋ฆฌ๋ˆ…์Šค์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ์™€ ํŒŒ์ผ ์‹œ์Šคํ…œ

ย ย 4.1.1 ๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ์˜ ๊ตฌ์กฐ
ย ย 4.1.2 ๋ฆฌ๋ˆ…์Šค ํŒŒ์ผ ์‹œ์Šคํ…œ

4.2 ํŒŒ์ผ ์ฒ˜๋ฆฌ์™€ ํ‘œ์ค€ ์ž…์ถœ๋ ฅ

ย ย 4.2.1 ์ €์ˆ˜์ค€ ํŒŒ์ผ ์ž…์ถœ๋ ฅ
ย ย 4.2.2 ํ‘œ์ค€ ์ž…์ถœ๋ ฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
ย ย 4.2.3 ํŒŒ์ผ ์กฐ์ž‘ ํ•จ์ˆ˜

4.3 ํŒŒ์ผ ์ •๋ณด์™€ ๊ถŒํ•œ

ย ย 4.3.1 ํŒŒ์ผ ์ •๋ณด์™€ ๊ถŒํ•œ์„ ์œ„ํ•œ ๋ฆฌ๋ˆ…์Šค ๋ช…๋ น์–ด
ย ย 4.3.2 ํŒŒ์ผ ์ •๋ณด
ย ย 4.3.3 ๋ณด์•ˆ์„ ์œ„ํ•œ ๊ถŒํ•œ๊ณผ ์†Œ์œ ์ž

4.4 ๋””๋ ‰ํ„ฐ๋ฆฌ์™€ ์‹œ๊ฐ„ ์ฒ˜๋ฆฌ

ย ย 4.4.1 ๋””๋ ‰ํ„ฐ๋ฆฌ
ย ย 4.4.2 ์œ ๋‹‰์Šค์˜ ์‹œ๊ฐ„

4.5 ๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด์˜ ์ œ์–ด

4.6 ์š”์•ฝ


5์žฅ. ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ: ๋‹ค์ค‘ ์ฒ˜๋ฆฌ

5.1 ํ”„๋กœ์„ธ์Šค์™€ ์‹œ๊ทธ๋„

ย ย 5.1.1 ํ”„๋กœ์„ธ์Šค
ย ย 5.1.2 ํ”„๋กœ์„ธ์Šค ๊ด€๋ จ ๋ช…๋ น์–ด
ย ย 5.1.3 ์‹œ๊ทธ๋„

5.2 ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค์™€ ๋‹ค์ค‘ ์ฒ˜๋ฆฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ย ย 5.2.1 ๋ฆฌ๋ˆ…์Šค์˜ ๋ถ€ํŒ… ๊ณผ์ •๊ณผ ํ”„๋กœ์„ธ์Šค
ย ย 5.2.2 ํ”„๋กœ์„ธ์Šค์˜ ์ฒ˜๋ฆฌ

5.3 ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ 

ย ย 5.3.1 ํŒŒ์ดํ”„
ย ย 5.3.2 FIFO
ย ย 5.3.3 ์œ ๋‹‰์Šค ์‹œ์Šคํ…œ V/XSI์˜ IPC ํ•จ์ˆ˜
ย ย 5.3.4 POSIX IPC ํ•จ์ˆ˜

5.4 POSIX ์Šค๋ ˆ๋“œ์™€ ๋™๊ธฐํ™”

ย ย 5.4.1 POSIX ์Šค๋ ˆ๋“œ
ย ย 5.4.2 ๋™๊ธฐํ™”

5.5 ๋‹ค์ค‘์ฒ˜๋ฆฌ์™€ ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด์˜ ์ œ์–ด

ย ย 5.5.1 SenseHAT์˜ ์กฐ์ด์Šคํ‹ฑ(Joystick)
ย ย 5.5.2 ์Šค๋ ˆ๋“œ๋ฅผ ์ด์šฉํ•œ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ

5.6 ์š”์•ฝ


6์žฅ. ๋ฆฌ๋ˆ…์Šค ๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ: ์‚ฌ๋ฌผ์ธํ„ฐ๋„ท์˜ ์—ฐ๊ฒฐ์„ ์œ„ํ•œ ๊ธฐ์ดˆ

6.1 ๋„คํŠธ์›Œํฌ์˜ ๊ฐœ์š”์™€ BSD ์†Œ์ผ“

ย ย 6.1.1 ๋„คํŠธ์›Œํฌ์˜ ๊ฐœ์š”
ย ย 6.1.2 BSD ์†Œ์ผ“

6.2 UDP ๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ย ย 6.2.1 ์†Œ์ผ“์˜ ์‚ฌ์šฉ
ย ย 6.2.2 ์„œ๋ฒ„๋ฅผ ์œ„ํ•œ bind() ํ•จ์ˆ˜
ย ย 6.2.3 ๋ฐ”์ดํŠธ ์ˆœ์„œ ๋ณ€ํ™˜
ย ย 6.2.4 ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ ๋ณ€ํ™˜
ย ย 6.2.5 UDP ๋ฐ์ดํ„ฐ์˜ ์†ก์ˆ˜์‹ 
ย ย 6.2.6 ๋ฐ”์ดํŠธ ์กฐ์ž‘

6.3 TCP ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ย ย 6.3.1 TCP ํด๋ผ์ด์–ธํŠธ
ย ย 6.3.2 TCP ์„œ๋ฒ„
ย ย 6.3.3 ์†Œ์ผ“์˜ ์—ฐ๊ฒฐ ์ข…๋ฃŒ : shutdown( ) ํ•จ์ˆ˜
ย ย 6.3.4 ๋ณ‘ํ–‰ ์ฒ˜๋ฆฌ ์„œ๋ฒ„

6.4 HTTP์™€ ์›น ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ย ย 6.4.1 ์›น๊ณผ HTTP
ย ย 6.4.2 ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ์—”์ง„
ย ย 6.4.3 HTTP์˜ ๊ตฌ์กฐ
ย ย 6.4.4 HTML๊ณผ ์›น ํŽ˜์ด์ง€
ย ย 6.4.5 ๋ถ€ํŒ…์‹œ ์›น ์„œ๋ฒ„์˜ ์‹คํ–‰
ย ย 6.4.6 ๋ฐ๋ชฌ ํ”„๋กœ์„ธ์Šค
ย ย 6.4.7 ์ธํ„ฐ๋„ท ํŒจํ‚ท ๋ชจ๋‹ˆํ„ฐ๋ง: Wireshark

6.5 ์›น ์„œ๋ฒ„์™€ ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด์˜ ์ œ์–ด

6.6 ์š”์•ฝ



3๋ถ€. ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ


7์žฅ. ๋ฆฌ๋ˆ…์Šค ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ: ํ˜„๋ž€ํ•จ๊ณผ ์ฆ๊ฑฐ์›€

7.1 ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด์™€ ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด

ย ย 7.1.1 ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด
ย ย 7.1.2 ์ƒ‰์ƒ ์ฒด๊ณ„
ย ย 7.1.3 ์‚ฌ์šด๋“œ
ย ย 7.1.4 ์•„๋‚ ๋กœ๊ทธ/๋””์ง€ํ„ธ ๋ณ€ํ™˜
ย ย 7.1.5 ๋ฆฌ๋ˆ…์Šค ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ์‹œ์Šคํ…œ
ย ย 7.1.6 ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด์˜ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ์‹œ์Šคํ…œ

7.2 ๋ฆฌ๋ˆ…์Šค ์‚ฌ์šด๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ย ย 7.2.1 ๋ฆฌ๋ˆ…์Šค ์‚ฌ์šด๋“œ ์‹œ์Šคํ…œ
ย ย 7.2.2 ALSA๋ฅผ ์ด์šฉํ•œ ์˜ค๋””์˜ค ํ”„๋กœ๊ทธ๋ž˜๋ฐ
ย ย 7.2.3 ALSA ์‚ฌ์šด๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
ย ย 7.2.4 ALSA ๋ฏน์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
ย ย 7.2.5 WAV ํŒŒ์ผ์˜ ์ถœ๋ ฅ๊ณผ ๋…น์Œ

7.3 ํ”„๋ ˆ์ž„ ๋ฒ„ํผ๋ฅผ ํ†ตํ•œ ์ด๋ฏธ์ง€ ์ถœ๋ ฅ

ย ย 7.3.1 ํ”„๋ ˆ์ž„ ๋ฒ„ํผ์˜ ์ •๋ณด ํ‘œ์‹œ
ย ย 7.3.2 ํ”„๋ ˆ์ž„ ๋ฒ„ํผ๋ฅผ ์ด์šฉํ•œ ๊ทธ๋ž˜ํ”ฝ
ย ย 7.3.3 SenseHAT์˜ 8ร—8 LED ๋งคํŠธ๋ฆญ์Šค
ย ย 7.3.4 BMP ํŒŒ์ผ ํ‘œ์‹œํ•˜๊ธฐ
ย ย 7.3.5 Qt๋ฅผ ์ด์šฉํ•œ ์ด๋ฏธ์ง€ ํ‘œ์‹œ

7.4 Video4Linux2์™€ Pi Camera

ย ย 7.4.1 Video4Linux
ย ย 7.4.2 Pi Camera
ย ย 7.4.3 Video4Linux2 ํ”„๋กœ๊ทธ๋ž˜๋ฐ
ย ย 7.4.4 BMP ํŒŒ์ผ๋กœ ์ด๋ฏธ์ง€ ์บก์ฒ˜

7.5 ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด์™€ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด

7.6 ์š”์•ฝ


8์žฅ. OpenCV ํ”„๋กœ๊ทธ๋ž˜๋ฐ: ์‚ฌ์ง„ ์† ์–ผ๊ตด์„ ์ฐพ์•„๋ผ

8.1 ์˜์ƒ ์ฒ˜๋ฆฌ์™€ OpenCV

ย ย 8.1.1 ์˜์ƒ ์ฒ˜๋ฆฌ(Image Processing)
ย ย 8.1.2 OpenCV ์„ค์น˜

8.2 OpenCV ๊ธฐ๋ณธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ย ย 8.2.1 Hello World ํ”„๋กœ๊ทธ๋ž˜๋ฐ
ย ย 8.2.2 OpenCV๋ฅผ ์ด์šฉํ•œ ๋“œ๋กœ์ž‰
ย ย 8.2.3 ๋งˆ์šฐ์Šค ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ด์šฉํ•œ ํŽ˜์ธํ„ฐ
ย ย 8.2.4 ์ด๋ฏธ์ง€ ํŒŒ์ผ ์ €์žฅ๊ณผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

8.3 OpenCV์™€ ์˜์ƒ ์ฒ˜๋ฆฌ

ย ย 8.3.1 Mat ํด๋ž˜์Šค์˜ ์‚ฐ์ˆ  ์—ฐ์‚ฐ
ย ย 8.3.2 OpenCV์˜ ํ•จ์ˆ˜์™€ ์ƒ‰์ƒ์˜ ๋ณ€ํ™˜
ย ย 8.3.3 ํžˆ์Šคํ† ๊ทธ๋žจ
ย ย 8.3.4 ์˜์ƒ ๊ธฐํ•˜์  ๋ณ€ํ˜•
ย ย 8.3.5 ์ด๋ฏธ์ง€ ์Šค๋ฌด์‹ฑ

8.4 OpenCV๋ฅผ ์ด์šฉํ•œ ์–ผ๊ตด ์ธ์‹

ย ย 8.4.1 ์ด๋ฏธ์ง€ ๊ฒฝ๊ณ„ ๊ฒ€์‚ฌ
ย ย 8.4.2 OpenCV์™€ ํ”„๋ ˆ์ž„ ๋ฒ„ํผ๋ฅผ ์ด์šฉํ•œ ์นด๋ฉ”๋ผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
ย ย 8.4.3 OpenCV๋ฅผ ์ด์šฉํ•œ ์–ผ๊ตด ์ธ์‹

8.5 ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด์™€ OpenCV

8.6 ์š”์•ฝ


9์žฅ. OpenGL ES๋ฅผ ์ด์šฉํ•œ 3D ํ”„๋กœ๊ทธ๋ž˜๋ฐ: 3์ฐจ์›์˜ ์„ธ๊ณ„๋กœโ€ฆ

9.1 ๋น„๋””์˜ค์ฝ”์–ด(VideoCore) API์™€ OpenGL

ย ย 9.1.1 3D ๊ทธ๋ž˜ํ”ฝ์Šค์™€ OpenGL ๊ทธ๋ฆฌ๊ณ  OpenGL ES
ย ย 9.1.2 OpenGL ES 1.1๊ณผ OpenGL ES 2.0
ย ย 9.1.3 ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด์˜ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ํ™˜๊ฒฝ
ย ย 9.1.4 ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด์˜ GPU ์ดˆ๊ธฐํ™”
ย ย 9.1.5 DRM๊ณผ GBM

9.2 EGL๊ณผ OpenGL ES 1.0

ย ย 9.2.1 EGL(Embedded-System Graphics Library)
ย ย 9.2.2 EGL์˜ ์‚ฌ์šฉ๊ณผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
ย ย 9.2.3 OpenGL ES 1.x์„ ์ด์šฉํ•œ ๊ฐ„๋‹จํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
ย ย 9.2.4 OpenGL์˜ API ์Šคํƒ€์ผ
ย ย 9.2.5 OpenGL์˜ ์ขŒํ‘œ๊ณ„
ย ย 9.2.6 OpenGL์˜ ๋ชจ๋ธ๋ง๊ณผ ํˆฌ์˜(Projection)
ย ย 9.2.7 OpenGL์˜ ์ขŒํ‘œ๊ณ„ ์„ค์ •

9.3 OpenGL ES 1.1์„ ์ด์šฉํ•œ 3D ์• ๋‹ˆ๋ฉ”์ด์…˜

ย ย 9.3.1 OpenGL ES 1.1๊ณผ 3D ๊ฐ์ฒด ํ‘œ์‹œ
ย ย 9.3.2 OpenGL๊ณผ ํ–‰๋ ฌ
ย ย 9.3.3 3์ฐจ์› ์ขŒํ‘œ์™€ OpenGL ES์˜ ์ž…์ฒด ํ‘œ์‹œ
ย ย 9.3.4 OpenGL ์˜ ๋ณ€ํ™˜(Transform)
ย ย 9.3.5 OpenGL ์˜ ์ƒ‰์ƒ
ย ย 9.3.6 ์ •์œก๋ฉด์ฒด์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜

9.4 OpenGL ES 2.0๊ณผ ์…ฐ์ด๋”ฉ ์–ธ์–ด (Shading Language)

ย ย 9.4.1 OpenGL์˜ ํŒŒ์ดํ”„๋ผ์ธ
ย ย 9.4.2 ์…ฐ์ด๋”ฉ ์–ธ์–ด
ย ย 9.4.3 ํ…์Šค์ฒ˜ ๋งคํ•‘
ย ย 9.4.4 ์…ฐ์ด๋” ์–ธ์–ด์™€ OpenGL ES 2.0
ย ย 9.4.5 ์…ฐ์ด๋” ์–ธ์–ด๋ฅผ ์ด์šฉํ•œ GPGPU ํ”„๋กœ๊ทธ๋ž˜๋ฐ

9.5 3D์™€ ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด

9.6 ์š”์•ฝ



4๋ถ€. ๋ฆฌ๋ˆ…์Šค ๊ณ ๊ธ‰ ํ”„๋กœ๊ทธ๋ž˜๋ฐ


10์žฅ. Qt๋ฅผ ์ด์šฉํ•œ GUI ํ”„๋กœ๊ทธ๋ž˜๋ฐ: ๋” ํŽธ๋ฆฌํ•œ ์ ‘๊ทผ์„ฑ

10.1 Qt์™€ ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด: Qt on Pi

ย ย 10.1.1 X ์œˆ๋„ ์‹œ์Šคํ…œ
ย ย 10.1.2 Qt์˜ ๊ฐœ์š”
ย ย 10.1.3 ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด๋กœ Qt ์„ค์น˜ํ•˜๊ธฐ

10.2 Qt ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ์‚ฌ์šฉ์ž ์ •์˜ ์œ„์ ฏ

ย ย 10.2.1 Hello World! ํ”„๋กœ๊ทธ๋ž˜๋ฐ
ย ย 10.2.2 Qt์˜ ์œ„์ ฏ
ย ย 10.2.3 Qt์—์„œ์˜ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
ย ย 10.2.4 ์‚ฌ์šฉ์ž ์ •์˜ ์œ„์ ฏ
ย ย 10.2.5 ์‚ฌ์šฉ์ž ์ •์˜ ์‹œ๊ทธ๋„๊ณผ ์Šฌ๋กฏ

10.3 Qt ์œ„์ ฏ๊ณผ ๋ ˆ์ด์•„์›ƒ

ย ย 10.3.1 Qt์˜ ๊ธฐ๋ณธ ์œ„์ ฏ
ย ย 10.3.2 ๋ฒ„ํŠผ ์œ„์ ฏ
ย ย 10.3.3 ์ •๋ณด ํ‘œ์‹œ ์œ„์ ฏ
ย ย 10.3.4 ๋ฌธ์ž ์ž…๋ ฅ ์œ„์ ฏ
ย ย 10.3.5 ๋ฒ”์œ„ ์„ ํƒ ์œ„์ ฏ
ย ย 10.3.6 ๋ ˆ์ด์•„์›ƒ
ย ย 10.3.7 Qt์˜ ๋‹ค์ด์–ผ๋กœ๊ทธ
ย ย 10.3.8 Qt์™€ Video4Linux2

10.4 Qt Creator๋ฅผ ์ด์šฉํ•œ GUI ๋””์ž์ธ

ย ย 10.4.1 C ์–ธ์–ด๋ฅผ ์œ„ํ•œ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ๊ณผ ์‹คํ–‰
ย ย 10.4.2 Qt ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ํ”„๋กœ์ ํŠธ

10.5 GUI์™€ ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด

10.6 ์š”์•ฝ


11์žฅ. ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด์™€ ์ธ๊ณต์ง€๋Šฅ: Caffe์—์„œ ํ•œ์ž”~

11.1 ์ธ๊ณต์ง€๋Šฅ์˜ ๊ฐœ์š”

ย ย 11.1.1 ์ธ๊ณต์ง€๋Šฅ์˜ ๋“ฑ์žฅ๊ณผ ๋ฐœ๋‹ฌ
ย ย 11.1.2 ๋จธ์‹ ๋Ÿฌ๋‹๊ณผ ๋”ฅ๋Ÿฌ๋‹
ย ย 11.1.3 ์ธ๊ณต์ง€๋Šฅ์˜ ๋ถ„๋ฅ˜
ย ย 11.1.4 ๋‹ค์–‘ํ•œ ๋”ฅ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„์›Œํฌ

11.2 Caffe๋ฅผ ์ด์šฉํ•œ ์ธ๊ณต์ง€๋Šฅ

ย ย 11.2.1 Caffe์˜ ๊ฐœ์š”์™€ ์„ค์น˜
ย ย 11.2.2 Caffe๋ฅผ ์ด์šฉํ•œ ์ด๋ฏธ์ง€์˜ ๋ถ„๋ฅ˜
ย ย 11.2.3 Caffe์˜ ์ด๋ฏธ์ง€์˜ ๋ถ„๋ฅ˜ ์ฝ”๋“œ
ย ย 11.2.4 OpenCV๋ฅผ ์ด์šฉํ•œ ์นด๋ฉ”๋ผ์™€ ๊ฐ์ฒด ์ธ์‹

11.3 Caffe ๊ธฐ๋ณธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ย ย 11.3.1 Caffe์˜ ๋ฉ”์ธ ํด๋ž˜์Šค: ๋ธ”๋ž, ๋ ˆ์ด์–ด, ๋„ท, ํ•ด๊ฒฐ๊ธฐ
ย ย 11.3.2 Hello Caffe ํ”„๋กœ๊ทธ๋ž˜๋ฐ
ย ย 11.3.3 ํ•„๋Ÿฌ์˜ ์‚ฌ์šฉ
ย ย 11.3.4 ๋ธ”๋ž

11.4 Caffe๋ฅผ ์ด์šฉํ•œ ์ˆซ์ž ์ธ์‹

ย ย 11.4.1 ์ˆซ์ž ์ธ์‹์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ์…‹
ย ย 11.4.2 Qt์—์„œ์˜ ํ•„๊ธฐ์ฒด ์ธ์‹์„ ์œ„ํ•œ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ

11.5 Caffe์™€ ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด์˜ ์ธ๊ณต์ง€๋Šฅ

ย ย 11.5.1 OpenCV๋ฅผ ์ด์šฉํ•œ ์นด๋ฉ”๋ผ ์‚ฌ์šฉ
ย ย 11.5.2 ์นด๋ฉ”๋ผ๋ฅผ ์ด์šฉํ•œ ์ˆซ์ž ์ธ์‹

11.6 ์š”์•ฝ


12์žฅ. ๋ฆฌ๋ˆ…์Šค ์ปค๋„๊ณผ ๋””๋ฐ”์ด์Šค ๋“œ๋ผ์ด๋ฒ„: ๋” ๊นŠ์€ ๊ณณ์œผ๋กœ

12.1 ๋ฆฌ๋ˆ…์Šค ์ปค๋„๊ณผ ๋””๋ฐ”์ด์Šค ๋“œ๋ผ์ด๋ฒ„

ย ย 12.1.1 ๋ฆฌ๋ˆ…์Šค ์ปค๋„๊ณผ ๋ชจ๋“ˆ
ย ย 12.1.2 ์ปค๋„ ์˜์—ญ๊ณผ ์‚ฌ์šฉ์ž ์˜์—ญ
ย ย 12.1.3 ๋ฆฌ๋ˆ…์Šค ๋””๋ฐ”์ด์Šค ๋“œ๋ผ์ด๋ฒ„

12.2 ๋ฆฌ๋ˆ…์Šค ๋””๋ฐ”์ด์Šค ๋“œ๋ผ์ด๋ฒ„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ย ย 12.2.1 ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด์— ๋ฆฌ๋ˆ…์Šค ์ปค๋„์˜ ์„ค์น˜
ย ย 12.2.2 ๋ฆฌ๋ˆ…์Šค ์ปค๋„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
ย ย 12.2.3 ์ปค๋„ ๋ชจ๋“ˆ: Hello Module! ํ”„๋กœ๊ทธ๋ž˜๋ฐ

12.3 ์‹œ์Šคํ…œ ๋ ˆ์ง€์Šคํ„ฐ์™€ LED ์ถœ๋ ฅ

ย ย 12.3.1 CPU์™€ ๋ฐ์ดํ„ฐ ์ž…์ถœ๋ ฅ
ย ย 12.3.2 ์‹œ์Šคํ…œ ๋ ˆ์ง€์Šคํ„ฐ

12.4 LED ์ถœ๋ ฅ์„ ์œ„ํ•œ GPIO ๋“œ๋ผ์ด๋ฒ„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ย ย 12.4.1 ๋ฆฌ๋ˆ…์Šค ๋””๋ฐ”์ด์Šค ํŒŒ์ผ๊ณผ GPIO
ย ย 12.4.2 ๋ฆฌ๋ˆ…์Šค ๋””๋ฐ”์ด์Šค ๋“œ๋ผ์ด๋ฒ„ GPIO ํ”„๋กœ๊ทธ๋ž˜๋ฐ

12.5 ์Šค์œ„์น˜๋ฅผ ์ด์šฉํ•œ ์ปค๋„ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ

ย ย 12.5.1 ์Šค์œ„์น˜ ์‚ฌ์šฉ์„ ์œ„ํ•œ ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ
ย ย 12.5.2 ์ปค๋„์—์„œ์˜ ํƒ€์ด๋จธ ์‚ฌ์šฉ
ย ย 12.5.3 ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ์˜ ์‹œ๊ทธ๋„ ์ „๋‹ฌ

12.6 ์š”์•ฝ


13. ๋ถ€๋ก

13.1 ์ž„๋ฒ ๋””๋“œ ๋ฆฌ๋ˆ…์Šค ๊ณต๋ถ€ํ•˜๊ธฐ

ย ย 13.1.1 ํ•˜๋“œ์›จ์–ด
ย ย 13.1.2 ์†Œํ”„ํŠธ์›จ์–ด

13.2 ๋ฆฌ๋ˆ…์Šค ์…ธ(Shell) ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ย ย 13.2.1 ๋ฆฌ๋ˆ…์Šค ์…ธ
ย ย 13.2.2 bash์˜ ์‚ฌ์šฉ
ย ย 13.2.3 bash์˜ ํ™˜๊ฒฝ ์„ค์ •
ย ย 13.2.4 ๋ฆฌ๋ˆ…์Šค ์…ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

13.3 GStreamer๋ฅผ ์ด์šฉํ•œ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ย ย 13.3.1 GStreamer์™€ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด
ย ย 13.3.2 GStreamer๋ฅผ ์ด์šฉํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
ย ย 13.3.3 GStreamer์˜ ๋„๊ตฌ๋“ค
ย ย 13.3.4 GStreamer์™€ ์ŠคํŠธ๋ฆฌ๋ฐ

13.4 ARM NEON ๊ธฐ๋ฐ˜์˜ SIMD ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ย ย 13.4.1 SIMD์™€ ARM NEON ๊ธฐ์ˆ 
ย ย 13.4.2 Hello NEON! ํ”„๋กœ๊ทธ๋ž˜๋ฐ
ย ย 13.4.3 ARM NEON์„ ์ด์šฉํ•œ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ
ย ย 13.4.4 ARM NEON ๊ธฐ๋ฐ˜์˜ ์นด๋ฉ”๋ผ ์ด๋ฏธ์ง€ ๊ณ ์† ์ฒ˜๋ฆฌ