목차
1. 라즈베리파이5 소개 및 시작하기
1.1 라즈베리파이5 소개
1.2 라즈비안 OS 설치
(1) 마이크로 SD 메모리 포맷
(2) 라즈비안 OS 설치
1.3 라즈베리파이 환경 설정
(1) 라즈베리파이 IP 찾기
1.4 네트워크로 접속하기
(1) SSH 사용
(2) VNC 사용
(3) FTP 서버 구축하기
1.5 라즈베리파이 설정 마무리
(1) Locale, Timezone, Keyboard 설정
(2) 라즈베리파이 WiFi 설정
(3) 라즈베리파이 업데이트
(4) 한글 폰트, 입력기(IBUS) 설치
2. 라즈베리파이 파이썬
2.1 파이썬 개요
2.2 파이썬 시작하기
(1) 파이썬 개발 환경(IDE) 실행하기
(2) 파이썬 코드 작성
(3) IDE 환경에서 파이썬 코드 실행
(4) Shell 프롬프트에서 파이썬 코드 실행
2.3 인공지능을 위한 파이썬 버전 선택
(1) pyenv 설치
(2) pyenv로 새로운 파이썬 버전 설치
2.4 파이썬 가상환경 설정하기
(1) 파이썬 가상환경 만들기
(2) 파이썬 가상환경 활성화
(3) 파이썬 가상환경 종료
(4) 파이썬 가상환경 삭제
2.5 Thonny 파이썬 가상환경 설정
(1) Switch to regular mode
(2) 파이썬 인터프리터 선택
2.6 파이썬 버전에 맞는 텐서플로우 설치
(1) 파이썬 3.11.2 + Tensorflow 2.19 설치
(2) 다른 버전의 Tensorflow 설치 예제
3. 라즈베리파이 GPIO
3.1 GPIO의 기본 개념과 구조
(1) GPIO의 정의와 특성
(2) 라즈베리파이5의 GPIO 핀 배치
3.2 GPIO LED 제어
(1) LED 제어의 이해
(2) GPIO 프로그래밍 실습
3.3 GPIO 버튼 입력과 LED 출력 실습
3.4 GPIO 응용 사례 및 실생활 적용
3.5 초음파 센서(HC-SR04)
(1) 초음파 센서(HC-SR04) 원리
(2) 초음파 센서 실습
3.6 PWM(Pulse Width Modulation)
(1) PWM 이론과 LED 제어 실습
3.7 PWM 버저 실습
(1) Buzzer
(2) TonalBuzzer와 음계
3.8 PWM 서보모터 제어
(1) 서보모터의 제어 원리
3.9 UART(Universal Asynchronous Receiver-Transmitter) 통신
(1) 시리얼 통신 개요
(2) UART 통신 구조
(3) 라즈베리파이5 시리얼 장치
(4) 라즈베리파이5 UART 통신 실습
3.10 UART 통신 LED 제어
4. 블루투스 통신 (Bluetoot Communication)
4.1 블루투스 통신
(1) 블루투스 통신 개요
(2) 블루투스 모듈 연결
4.2 블루투스 통신 실습
(1) 블루투스 실습
5. SPI 통신 (Serial Peripheral Interface)
5.1 SPI 통신 개요
5.2 동기식과 비동기식 통신 방식 비교
5.3 SPI 통신의 신호선과 동작 원리
5.4 MCP3008 ADC Chip
(1) 아날로그와 디지털 신호
(2) ADC(Analog to Digital Converter) 변환 원리
(3) MCP3008 회로 연결
5.5 SPI 가변저항 입력 실습
(1) 가변저항 입력
(2) 배선도
(3) gpiozero 라이브러리에서 SPI 장치의 핀 지정 방법
(4) 실습 코드 예시 및 설명
5.6 LM35 온도센서
(1) SPI 통신 활성화
(2) spidev 라이브러리 설치
6. 카메라 활용
6.1 라즈베리파이5 카메라
(1) 카메라 인터페이스 활성화
(2) 카메라 동작 테스트
6.2 picamera2 사용
7. OpenCV 활용
7.1 OpenCV 설치
(1) 라즈베리파이 OpenCV 4.x 설치
7.2 OpenCV 기본 활용
(1) 이미지 표시하기
(2) 그레이 스케일 변경
7.3 OpenCV 카메라 활용
(1) OpenCV 카메라 미리보기
(2) OpenCV 카메라 사진 저장하기
7.4 인공지능 안면, 눈 인식
7.5 OpenCV 모션 인식 침입 탐지 기능
8. Flask 웹 서버를 이용한 IoT 서비스
8.1 웹 서버 역할
8.2 플라스크 웹 서버
(1) 플라스크 웹 서버 설치
(2) 플라스크 테스트
(3) 웹 페이지 추가하는 방법
(4) HTML 페이지 작성하기
8.3 GET, POST 요청
(1) GET 방식 파라미터
(2) POST 방식 파라미터
8.4 웹 GPIO 제어
9. MariaDB 데이터베이스
9.1 MariaDB
(1) MariaDB 설치
(2) root 계정 설정
(3) DB 사용자 권한 설정
9.2 HeidiSQL 접속
(1) 외부 접속 허용 설정
(2) heidiSQL 설치
9.3 테이블 생성
(1) temperature 테이블 생성
(2) user_info 테이블 생성
9.4 데이터베이스 쿼리(Query)
(1) INSERT 문
(2) SELECT 문
(3) UPDATE 문
(4) DELETE 문
9.5 웹 온도 서비스
(1) mysql-connector 설치
(2) mysql-connector 테스트
(3) 온도센서 데이터 DB 저장
(4) 온도센서 데이터 웹 서비스
(5) 온도센서 데이터 웹 서비스 - 날짜 검색 추가
9.6 플라스크 그래프(Chart.js) 그리기
(1) Chart.js 사용
(2) Chart.js 그래프 예제
(3) 온도 변화 라인 그래프 그리기
10. 파이썬으로 자동차 제어하기
10.1 자율주행 자동차 조립하기
(1) 라즈베리파이5 AI 인공지능 자율주행 자동차 PiCar-R5 구성품
(2) PiCar-R5 조립
10.2 자율주행 자동차 전원 켜기
10.3 자율주행 자동차 제어 보드 LED 컨트롤
10.4 키보드를 이용한 LED 제어
10.5 DC 모터 제어
(1) DC 모터의 구조
(2) DC 모터 방향 제어
(3) DC 모터 속도 제어
10.6 자동차 전진, 후진, 회전시키기
10.7 I2C 통신
(1) I2C 통신 구조
(2) I2C 통신 방식
(3) I2C 통신 읽기, 쓰기
10.8 PCA9685 서보모터 제어
(1) PCA9685
(2) 라즈베리파이 I2C 활성화
(3) PCA9685 라이브러리 설치
(4) SG90 서보모터 제어
10.9 WS2812 RGB LED 제어
(1) WS2812 RGB LED제어 라이브러리 설치
11. 웹 인터페이스로 자동차 제어하기
11.1 웹 원격 제어 CCTV
11.2 OpenCV 모션 인식 스트리밍
12. 자율주행 자동차 구현
12.1 자율주행 모델 학습을 위한 데이터 저장
(1) car_control.py 실행 구조
(2) 무선 공유기가 없는 환경에서 자동차 원격 제어
(3) car_control.html 버튼 기능
12.2 자율주행 모델 학습용 데이터 불러오기
12.3 자율주행 모델 학습 데이터 분류하기
12.4 합성곱(CNN) 신경망
(1) 합성곱(CNN) 신경망 구조
(2) 합성곱 신경망: 패딩(Padding)
(3) 합성곱 신경망: 스트라이드(Stride)
(4) 할성화 함수: Relu
(5) 합성곱 신경망: MaxPooling Layer
(6) 합성곱 신경망: Dropout Layer
(7) 합성곱 신경망: Flatten Layer
12.5 머신러닝 CNN 모델 학습시키기
(1) 합성곱 신경망 코드 분석
12.6 머신러닝 CNN 모델 PC에서 학습하는 방법
(1) 학습할 데이터 이동
(2) PC에 파이썬, Tensorflow 설치
12.7 모델 데이터 검증하기
12.8 인공지능 자율주행 실습
13. YOLO v11 Object detect
13.1 YOLO v11 설치
13.2 YOLO v11 테스트
(1) 사전 학습된 YOLO 모델 정보 확인
(2) YOLO 사물 인식 테스트
13.3 NCNN(Neural Network Computing Framework) 모델
13.4 YOLO v11 커스텀 데이터 학습
(1) YOLO 교통 관련 커스텀 데이터 얻기
(2) YOLO 학습 데이터 구조
(3) YOLO 커스텀 데이터 학습하기
13.5 자율주행 자동차에 YOLO 커스텀 학습 모델 적용
부 록