『(실험키트와 함께하는) 아두이노 완전정복』이라는 책 집필을 끝 마친지 어느덧 7년 정도의 시간이 흘러갔네요. 이전에 집필한 『아두이노 완전정복』에서는 아두이노로 할 수 있는 간단한 일들이 무엇이고, 그것들을 아두이노를 이용해서 어떻게 쉽게 구현이 되는지 기초 과정까지만 설명하였습니다. 7년 전과 달리 이미 국내뿐 아니라 전 세계적으로 아두이노 사용자가 어마어마하게 증가하였고 공개된 문서와 소스코드 등의 리소스도 더불어 많아 졌습니다. 이번에는 아두이노와 함께 가장 많이 사용이 되고 있는 오픈소스 하드웨어인 라즈베리파이 4 교재에 도전해 보았습니다. 리눅스 운영체제를 사용하는 라즈베리파이는 아두이노보다 많은 것을 할 수 있습니다. 유선, 무선 네트워크가 기본적으로 가능하고 블루투스 또한 사용 가능합니다.
본 교재는 전자공학과 소프트웨어에 대한 비전공자들도 쉽게 접근할 수 있도록 기초적인 파이썬 언어에 대한 내용과 리눅스 기초 명령어들을 습득하고 라즈베리파이 4 실제 보드에서 파이썬을 이용해서 간단한 센서들의 동작 원리를 바로 실습해 볼 수 있도록 하였습니다. 파이썬 언어 전용으로 집필되었기 때문에 프로그램 언어의 초보자들도 쉽게 따라 할 수 있고, 센서 실습도 복잡한 부품과 브레드보드(일명 빵판)를 사용하지 않고 센서 HAT보드에 연결만 하면 바로 실습이 가능하기 때문에 전자공학 비전문가들도 간단하게 따라 하기가 가능 합니다. 특히 최근 온라인 비대면 수업을 할 때 배선 오류에 대한 부담감을 줄일 수 있습니다.
집필할 때부터 교재에 사용된 모든 실험 세트들을 같이 제공하기 위해서 저렴하고 구매하기 쉬운 재료들을 사용하였고, 본 교재에서 사용된 모든 실험 재료들을 갖춘 통합 개발 키트도 같이 판매하고 있습니다.(http://www.jkelec.co.kr)
Contents
1. 라즈베리파이 소개
1.1 라즈베리파이 개요
(1) 라즈베리파이 4 구성
1.2 라즈비안 OS 설치
(1) 마이크로 SD 메모리 포맷
(2) Raspberry pi Imager 다운로드
(3) 라즈비안 설치
(4) 라즈베리파이 환경 설정
(5) 라즈베리파이 WiFi 설정
(6) 라즈비안 업데이트
(7) 한글 폰트, 입력기(IBUS) 설치
(8) 한글 입력 설정 및 문제 해결
1.3 네트워크로 접속하기
(1) SSH 사용
(2) VNC 사용
(3) VNC를 사용한 파일 전송
(4) FTP서버 구축하기
(5) 삼바(Samba) 서버 구축 하기
2. 라즈베리파이 활용
2.1 리눅스 기본 명령어
(1) 셸과 프롬프트
(2) 파일 명령어
(3) 파일 위치 찾기 명령어
(4) 파일 만들기 명령어
(5) 파일 보기 명령어
2.2 사용자와 권한
(1) 사용자 그룹
(2) 사용자 관리
(3) 파일, 디렉토리 권한
2.3 패키지 설치 및 관리도구
(1) 패키지 정보 업데이트
(2) 패키지 전체 설치
(3) 패키지 설치
(4) 패키지 삭제
(5) 패키지 정보 보기
2.4 vi 에디터
3. 파이썬 기초
3.1 파이썬 개요
3.2 파이썬 시작하기
(1) 파이썬 개발 환경(IDE) 실행하기
(2) 파이썬 코드 작성
(3) IDE 환경에서 파이썬 코드 실행
(4) Shell 프롬프트에서 파이썬 코드 실행
3.3 윈도 파이썬 실습 환경
(1) 윈도용 파이썬 IDLE 설치
(2) 파이썬 프로그램 실행
3.4 파이썬 자료형
(1) 숫자형 자료
(2) 문자형 자료
(3) 리스트(List)
(4) 튜플(Tuple)
(5) 딕셔너리(Dictionary)
3.5 파이썬 연산자
(1) 사칙연산
(2) 정수만 구하는 나눗셈 연산자
(3) 나머지 연산자
(4) 거듭제곱 연산자
(5) 논리 연산자
(6) 비교 연산자
3.6 파이썬 제어문
(1) if 문
(2) for 반복문
(3) while 〈조건식〉 반복문
3.7 사용자 입력 및 출력
(1) 사용자 입력
(2) print( ) 함수 출력
(3) format 메소드
3.8 파이썬 함수
(1) 함수의 정의
(2) 함수의 인자와 리턴값
(3) 언패킹 인자값 전달
(4) 가변 인자값 전달
(5) 여러 개의 값 리턴
(6) 변수의 통용 범위
3.9 파이썬 클래스
(1) 클레스 정의
(2) 클래스 사용
3.10 파이썬 모듈
(1) 파이썬 모듈화
(2) 파이썬 내장 모듈
4. 라즈베리파이 GPIO 및 센서 활용
4.1 라즈베리파이 GPIO
(1) RPi.GPIO 설치
(2) GPIO 이해하기
(3) GPIO HAT 소개
4.2 디지털 출력
(1) LED
(2) 저항
4.3 디지털 입력
(1) 버튼(스위치)
4.4 인터럽트(이벤트) 입력
(1) 인터럽트(이벤트)
4.5 초음파 센서
(1) 초음파 센서 원리
(2) 초음파 센서 거리 계산
4.6 PWM 출력 LED 제어
(1) 펄스폭 변조(PWM: Pulse Width Modulation)
4.7 PWM 버저 제어
4.8 PWM DC 모터 제어
(1) DC 모터의 구조
(2) DC 모터 방향 제어
(3) DC 모터 속도 제어
(4) L9110 모터 드라이버 기능
4.9 PWM 서보모터 제어
(1) 서모모터의 제어 원리
5. 시리얼 통신(Serial Communication)
5.1 시리얼 장치
(1) 라즈베리파이 시리얼 장치
(2) UART0 장치 활성화
(3) PY-SERIAL 라이브러리 설치
(4) PC용 시리얼 프로그램 설치
(5) PC와 시리얼 통신
6. 블루투스 통신(Bluetooth Communication)
6.1 블루투스란?
6.2 스마트폰과 블루투스 통신
(1) 라즈베리파이 블루투스 장치
(2) 블루투스 장치 페어링
(3) 안드로이드 디바이스용 블루투스 통신 앱 설치
(4) 라즈베리파이와 블루투스 연결 및 데이터 통신
7. SPI 통신
7.1 SPI 통신 구조
(1) 동기, 비동기 통신 방식
(2) SPI 통신 방식
7.2 MCP3008 아날로그 입력
(1) 아날로그 입력
(2) MCP3008 회로 연결
7.3 가변저항 입력
(1) SPI 통신 활성화
(2) spidev 라이브러리 설치
(3) 가변저항 ADC, 전압 출력
7.4 LM35 온도 센서
8. I2C 통신
8.1 I2C 통신 구조
(1) I2C 통신 방식
(2) I2C 통신 읽기, 쓰기
8.2 MPU9250 지자기/자이로/가속도 센서 I2C 통신
(1) I2C 통신 활성화
(2) I2C 디바이스 주소 확인
(3) I2C 통신 속도 변경
(4) 자이로/가속도/지자기 데이터 출력
(5) OpenGL 3D 랜더링
9. 플라스크 웹 서버
9.1 웹 서버 역할
9.2 플라스크 웹 서버
(1) 플라스크 웹서버 설치
(2) 플라스크 테스트
(3) 웹 페이지 추가하는 방법
(4) HTML 페이지 작성하기
9.3 GET, POST 요청
(1) GET 방식 파라미터
(2) POST 방식 파라미터
9.4 웹 GPIO 제어
(1) LED ON/OFF 제어
(2) 서보모터 제어
10. MariaDB 데이터베이스
10.1 MariaDB
(1) MariaDB 설치
(2) root 계정 설정
(3) DB 사용자 권한 설정
10.2 HeidiSQL 접속
(1) 외부 접속 허용 설정
(2) heidiSQL 설치
10.3 테이블 생성
(1) temperature 테이블 생성
(2) user_info 테이블 생성
10.4 데이터베이스 쿼리(Query)
(1) INSERT 문
(2) SELECT 문
(3) UPDATE 문
(4) DELETE 문
10.5 웹 온도 서비스
(1) mysql-connector 설치
(2) mysql-connector 테스트
(3) 온도 센서 데이터 DB 저장
(4) 온도 센서 데이터 웹 서비스
(5) 온도 센서 데이터 웹 서비스 - 날짜 검색 추가
10.6 플라스크 그래프(Chart.js) 그리기
(1) Chart.js 사용
(2) Chart.js 그래프 예제
(3) 온도 변화 라인 그래프 그리기
11. 라즈베리파이 카메라 활용
11.1 라즈베리파이 카메라
(1) 카메라 인터페이스 활성화
(2) 카메라 동작 테스트
(3) 파이썬 카메라 제어
11.2 카메라 모션 감지
(1) motion 모듈 설치
(2) motion 모듈 설정 파일
(3) motion 스트리밍 확인
(4) 원격으로 카메라 제어하기
12. 구글 어시스턴트 인공지능 스피커
12.1 구글 어시스턴트 설정
(1) 마이크와 스피커 설정
(2) 개발자 프로젝트 생성
(3) 장치 모델 등록
(4) API 및 서비스 사용 활성화
(5) 사용자 인증 정보 설정
(6) SDK 설치 및 샘플 코드
12.2 구글 어시스턴트 사용
12.3 음성으로 LED 제어
13. OpenCV 활용
13.1 OpenCV 4.5 설치
(1) 라즈베리파이 OpenCV 4.5 설치
13.2 OpenCV 기본 활용
(1) 이미지 표시하기
(2) 그레이 스케일 변경
13.3 OpenCV 카메라 활용
13.4 인공지능 안면, 눈 인식
13.5 OpenCV 모션 인식
13.6 OpenCV 모션 인식 스트리밍
13.7 카카오톡 메시지 보내기
(1) 카카오 계정 로그인
(2) 애플리케이션 추가
(3) 카카오 로그인 활성화
(4) 접근 권한 관리 설정
(5) 메시지 토큰 발급받기
13.8 모션 인식 스트리밍과 침입 탐지
14. 인공지능 및 텐서플로우 라이트(Tensorflow Lite)
14.1 인공지능 및 텐서플로우 라이트(Tensorflow Lite)
14.2 텐서플로우 라이트 (Tensorflow Lite) 객체 감지 모델 실행
14.3 라즈베리파이(Raspberry Pi)에서 텐서플로우 라이트(Tensorflow Lite) 실행 방법
15. ChatGPT 활용 및 API 서비스 만들기
15.1 ChatGPT 소개
15.2 ChatGPT 사용하기
(1) ChatGPT 계정 추가
(2) ChatGPT에게 질문하기
(3) ChatGPT 파이썬 코드 내장