[터미널 명령어 참고]
라즈베리 파이에서 bash 쉘에서 일반적으로 사용되는 몇 가지 단축키입니다:
이동과 편집:
Ctrl+A 또는 Home: 명령어 라인에서 커서를 줄의 맨 앞으로 이동시킵니다.
Ctrl+E 또는 End: 명령어 라인에서 커서를 줄의 맨 뒤로 이동시킵니다.
Ctrl+B 또는 ← (왼쪽 화살표): 커서를 왼쪽으로 한 글자씩 이동시킵니다.
Ctrl+F 또는 → (오른쪽 화살표): 커서를 오른쪽으로 한 글자씩 이동시킵니다.
Ctrl+U: 현재 명령어 라인을 지웁니다.
Ctrl+K: 커서 위치부터 명령어 라인의 끝까지 지웁니다.
Ctrl+W: 커서 앞의 단어를 지웁니다.
명령어 히스토리:
Ctrl+P 또는 ↑ (위쪽 화살표): 이전에 실행한 명령어로 이동합니다.
Ctrl+N 또는 ↓ (아래쪽 화살표): 다음에 실행할 명령어로 이동합니다.
Ctrl+R: 명령어 히스토리를 역순으로 검색합니다.
Ctrl+G: 검색 중인 명령어 히스토리 검색을 취소합니다.
기타:
Ctrl+C: 현재 실행 중인 명령어를 종료합니다.
Ctrl+D: 현재 터미널 세션을 종료합니다.
Ctrl+L: 터미널 화면을 지웁니다.
Ctrl+S: 현재 터미널 세션을 일시 정지시킵니다.
Ctrl+Q: Ctrl+S로 정지한 터미널 세션을 다시 시작합니다.
Ctrl+Alt+T: 대부분의 Linux 배포판에서는 터미널 에뮬레이터를 실행시키는 단축키로 설정되어 있습니다.
라즈베리파이 - 습도센서
라즈베리파이 - 카메라모듈
라즈베리파이 - LCD 텍스트 출력
#터미널 -> sudo raspi-config -> LCD 텍스트 출력을 위한 아래의 옵션설정 진행.
[I2C]
# raspi-config : 라즈베리 파이에서 사용되는 설정 도구 중 하나로, 사용자가 라즈베리 파이의 다양한 시스템 설정을 변경할 수 있는 인터페이스를 제공합니다.
I2C (Inter-Integrated Circuit) : raspi-config의 옵션 중 하나로, I2C 인터페이스를 활성화 또는 비활성화할 수 있는 기능을 제공합니다.
I2C는 직렬 통신 프로토콜로, 다양한 장치 간의 통신을 위해 사용됩니다. 이 프로토콜을 사용하여 라즈베리 파이와 다른 I2C 호환 장치(센서, 디스플레이, 주변 장치 등)를 연결하고 데이터를 주고받을 수 있습니다. I2C 인터페이스를 활성화하면 라즈베리 파이에서 I2C 통신을 사용할 수 있게 됩니다.
1. 터미널을 엽니다.
2. sudo raspi-config 명령어를 입력하여 raspi-config 설정 도구를 실행합니다.
3. "Interfacing Options" 메뉴로 이동합니다.
4. "I2C" 옵션을 선택합니다.
5. I2C 인터페이스를 활성화하려면 "Yes"를 선택하고, 비활성화하려면 "No"를 선택합니다.
6. 설정을 저장하고 종료합니다.
I2C 인터페이스가 활성화되면 라즈베리 파이에서 I2C 장치를 사용할 수 있습니다. 사용할 I2C 장치에 대한 추가적인 설정 및 라이브러리 설치가 필요할 수 있습니다.
# LCD - 라즈베리파이 GPIO핀 세팅
https://github.com/danilo-lorenzo/I-C-16x2-Display-with-Node-RED
# vnc viewer -> 라즈베리파이 터미널 -> 예제파일 생성
nano pythonLCD.py
//파일에 첨부된 내용을 작성한 후 저장.
파일 실행및 LCD 출력
python3 pythonLCD.py
라즈베리파이 - 스위치로 led 제어
# 참고사이트 [시리즈 참고]- https://hoho325.tistory.com/215
[1] 버튼 - 라즈베리파이&브레드보드 결선및 node-red로 메시지 확인
# 라즈베리파이 & 브레드보드 세팅 -> 위의 참고 사이트를 기준으로 진행.
# node-red -> rpi-gpio-in 노드 사용
[2] LED
# LED (-)극을 브레드보드 ground에 연결
# LED (+)극을 브레드보드 GPIO핀에 연결
# rpi-gpio-out 노드 사용.
# GPIO핀 설정시 LED와 라즈베리파이 연결한 핀으로 설정함.
[참고] node-red 모듈설치
node-red-dashboard
node-red-contrib-iiot-rpi-pcf857x
node-red-contrib-mongodb4
node-red-node-pi-gpio
node-red-contrib-aedes
node-red-contrib-buffer-parser
node-red-contrib-camerapi
node-red-contrib-play-audio
node-red-node-ping
node-red-node-random
node-red-node-serialport
node-red-node-smooth
[참고 - 수업진행중 개념 소개]
Raspberry Pi 2 & 3 핀 매핑
https://learn.microsoft.com/ko-kr/windows/iot-core/learn-about-hardware/pinmappings/pinmappingsrpi
osi 계층
OSI(Open Systems Interconnection) 모델은 컴퓨터 네트워크에서 통신을 위한 일반적인 프로토콜 아키텍처로 사용되는 계층화된 모델입니다. 이 모델은 통신 과정을 서로 다른 7개의 계층으로 분리하여 설명합니다. 각 계층은 독립적으로 작동하며, 특정 기능을 수행하고 상위 계층에 서비스를 제공합니다. OSI 모델의 7개 계층은 다음과 같습니다:
물리 계층 (Physical Layer): 비트 단위의 데이터 전송과 물리적 매체(전선, 광섬유 등)를 통한 실제 데이터 전송을 처리합니다.
데이터 링크 계층 (Data Link Layer): 네트워크 상의 직접 연결된 두 개의 노드 간에 신뢰성 있는 데이터 전송을 제공합니다. 프레임 단위로 데이터를 전송하고 오류 감지 및 수정, 흐름 제어를 수행합니다.
네트워크 계층 (Network Layer): 여러 개의 노드를 거쳐 목적지로 데이터를 전달하기 위한 경로 설정과 패킷 전달 기능을 담당합니다. IP 주소를 사용하여 경로 선택과 라우팅을 수행합니다.
전송 계층 (Transport Layer): 데이터의 신뢰성과 흐름 제어를 제공합니다. 패킷 분할, 재조립, 오류 검출 및 복구를 수행하며, 포트 번호를 사용하여 최종 목적지 애플리케이션과 통신합니다. 대표적인 프로토콜로는 TCP(Transmission Control Protocol)가 있습니다.
세션 계층 (Session Layer): 통신 세션을 설정, 유지, 종료하는 기능을 담당합니다. 통신 상호작용을 관리하며, 동시 송수신을 제어하고 동기화합니다.
표현 계층 (Presentation Layer): 데이터의 형식을 변환, 암호화, 압축하는 등의 기능을 수행합니다. 데이터를 애플리케이션에서 이해할 수 있는 형태로 변환하여 전송합니다.
응용 계층 (Application Layer): 최종 사용자에게 서비스를 제공하기 위한 계층입니다. 사용자 인터페이스, 전자메일, 파일 전송 등 다양한 네트워크 서비스를 제공합니다. HTTP, FTP, SMTP 등의 프로토콜이 이 계층에서 동작합니다.
각 계층은 상위 계층으로부터 서비스를 받고, 하위 계층에게 서비스를 제공하며, 이를 통해 네트워크 통신이 이루어집니다. OSI 모델은 네트워크의 기능과 동작을 단계적으로 분해하여 설명하기 위해 사용되며, 네트워크 프로토콜과 관련 기술을 이해하는 데 도움을 줍니다.
tcp/udp
TCP (Transmission Control Protocol)와 UDP (User Datagram Protocol)는 네트워크 통신에서 주로 사용되는 두 가지 주요한 전송 프로토콜입니다. 각각의 특징과 용도는 다음과 같습니다:
TCP (Transmission Control Protocol):
연결 지향적 프로토콜로, 신뢰성 있는 데이터 전송을 보장합니다.
패킷 분할 및 재조립, 흐름 제어, 오류 검출 및 복구 등의 기능을 제공합니다.
순서대로 데이터를 전송하고, 수신 여부를 확인하여 오류가 발생한 경우 재전송을 요청합니다.
신뢰성을 보장하기 위해 추가적인 오버헤드가 발생하며, 상대적으로 느린 속도를 가집니다.
대부분의 웹 애플리케이션, 이메일, 파일 전송 등에서 사용됩니다.
UDP (User Datagram Protocol):
비연결성 프로토콜로, 신뢰성 없는 데이터 전송을 제공합니다.
패킷 분할 및 재조립, 흐름 제어, 오류 검출 및 복구 기능이 없습니다.
패킷을 단순히 전송하기만 하고, 수신 여부를 확인하지 않습니다.
빠른 전송 속도와 낮은 오버헤드를 가지므로 실시간 응용 프로그램(스트리밍, 온라인 게임 등)에 적합합니다.
신뢰성이 중요하지 않거나, 일회성 데이터 전송에 주로 사용됩니다.
TCP와 UDP는 각각의 장단점과 적용 분야를 가지고 있으며, 선택은 사용자의 요구 사항과 애플리케이션의 특성에 따라 달라집니다. TCP는 신뢰성과 순서 보장이 필요한 경우에 사용되고, UDP는 실시간성과 빠른 전송이 중요한 경우에 사용됩니다.
시리얼통신
시리얼 통신(serial communication)은 데이터를 비트 시퀀스로 전송하는 방식으로, 컴퓨터와 다른 장치 또는 장치 간에 데이터를 주고받는 데 사용됩니다. 시리얼 통신은 한 번에 하나의 비트를 전송하므로 병렬 통신과는 달리 단일 선로를 통해 데이터를 전송합니다.
시리얼 통신은 컴퓨터와 다양한 장치 간의 연결에 사용되며, 특히 마이크로컨트롤러, 센서, 모뎀, GPS 수신기, 터미널 등에서 널리 사용됩니다. 시리얼 통신은 몇 가지 중요한 요소로 구성됩니다:
시리얼 포트(Serial Port): 시리얼 데이터를 송수신하는 데 사용되는 컴퓨터 또는 장치의 하드웨어 인터페이스입니다. 일반적으로 RS-232, RS-485, USB, UART 등의 시리얼 포트 표준이 사용됩니다.
데이터 프레임(Data Frame): 시리얼 통신에서 데이터의 전송 단위입니다. 데이터 프레임은 시작 비트, 데이터 비트, 패리티 비트(오류 검출을 위한), 정지 비트로 구성됩니다. 프레임의 길이는 데이터 비트의 수에 따라 다를 수 있습니다.
전송 속도(Baud Rate): 시리얼 통신에서 데이터가 전송되는 속도를 나타내는 단위입니다. 일반적으로 bps(비트 전송 속도) 단위로 표시되며, 초당 전송되는 비트 수를 나타냅니다.
프로토콜(Protocol): 시리얼 통신에는 데이터를 주고받기 위한 규칙과 프로토콜이 필요합니다. 예를 들어, 시작 비트와 정지 비트의 위치, 데이터 인코딩 방식, 오류 검출과 수정 방법 등이 프로토콜에 정의될 수 있습니다. 일반적으로 ASCII, Modbus, SPI, I2C 등의 프로토콜이 사용됩니다.
시리얼 통신은 비교적 간단하고 저렴한 방법으로 데이터를 전송하는 방식이며, 다양한 응용 분야에서 사용됩니다. 하지만 병렬 통신에 비해 속도가 낮고 전송 거리가 제한적일 수 있으며, 오류 검출과 복구에 대한 추가적인 처리가 필요할 수 있습니다.
mqtt
MQTT (Message Queuing Telemetry Transport)
- 컴퓨터 네트워크 상에서 소형 디바이스들 간에 데이터를 전송하기 위해 설계된 프로토콜.
- 신뢰성이 높고 대역폭이 제한된 환경에서 동작하도록 최적화됨. IoT 디바이스 사이의 통신에 사용됩니다.
-> [센서 데이터 수집, 제어 명령 전달, 상태 감지 등에 활용]
- 발행-구독(Publish-Subscribe) 모델
-> MQTT 브로커에 연결하여 메시지를 발행하거나, 구독하고자 하는 토픽에 대한 메시지를 받을 수 있음,
- TCP/IP 기반의 프로토콜로 동작하며, 일반적으로 인터넷을 통해 메시지를 전송하기 위해 TCP 포트 1883을 사용합니다. 또한, 보안 연결을 위해 TCP 포트 8883을 사용하는 MQTT over SSL/TLS (MQTTs)라는 변형이 있습니다.