AWS_클라우드 컴퓨팅 프로젝트 #2) 프로젝트 구성과 센서 데이터 수집1 (라즈베리파이 AWS 연결)

2025. 2. 17. 05:08클라우드 컴퓨팅

프로젝트 구성도는 다음과 같다.

 

 

 

 

(데이터 센싱)센서를 라즈베리파이에 연결해 신호를 수집하고 수집된 신호를 IoT Core MQTT로 전송. DynamoDB로 데이터셋 저장 

(AI 판별)S3으로 데이터셋 업로드 > Lambda,sagemaker로 AI학습 > 다시 IoT Core에 피드백해서 실시간 데이터 판별피드백까지

(데이터 시각화)  판별받은 피드백을 Timestream으로 전송 > EC2와 Grafana를 이용해 시각화

(알람 기능) AWS의 Aamazon SNS 기능을 이용해 특정 조건 충족 시 이메일이 가도록 설정.(Lambda에서 코드 작성) 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-라즈베리파이 AWS 연결

 xshell, xmanager 등으로 IP를 이용해 라즈베리파이를 원격 컨트롤한다.

만약 라즈베리파이의 IP가 고정되어있도록 설정해놓는다면 라즈베리파이에서 다른 와이파이 접속 시 연결이 안 됨.

 

-고정 IP 해제/설정하는 법-

1. 터미널에 ifconfig로 현재 ip 확인

2. sudo nano /etc/dhcpcd.conf 로 파일 수정 (/etc/dhcpcd.conf파일에서 ip 수정 가능)

3. 아래 코드 부분을 주석처리하면 고정 IP가 풀린다. (코드 수정 후 Ctrl + x > y > 엔터 누르면 저장됨)

# interface wlan0 #유선일 경우 interface eth0임
# static ip_address=192.(개인ip)
# static routers=192.(개인 ip)
# static domain_name_servers=8.8.8.8 8.8.4.4

 

만약 다시 고정 IP를 설정하고자 하면 주석만 해제해주거나 고정하고자 하는 IP를 대입해 위 내용을 코드에 작성하면 된다.

 

 

 

 

 

 

 

-라즈베리파이 연결 전 기본 셋팅-

라즈베리파이에 와이파이 A 연결 > 원격컨트롤하고자 하는 컴퓨터에서 xshell 접속 >  접속 시 A의 IP 및 라즈베리파이의 IP/PW(OS다운 부분에서 설정해야함)로 로그인

 

라즈베리파이 원격 프로그램(터미널-명령어 이용): xmanager 8

라즈베리파이 원격 GUI 파일 탐색기: WinSCP

 

원격 프로그램은 아무거나 사용하면 된다. 나는 카메라 화면을 나타내야 해서 xmanager를 이용했다. WinSCP는 FileZilla랑 비슷하다고 생각하면 된다. Windows에서 라즈베리파이의 파일, 코드를 수정 할 수 있다.

 

WinSCP

 

우측에는 내 Windows 파일들, 우측에는 연결된 라즈베리파이의 파일을 볼 수 있다. WinSCP는 xmanager8연결할때와 같이 IP, ID,PW 입력하면 된다. WinSCP에서 코드 수정도 할 수 있다고 했는데, 코드 수정을 하려고 파일에 들어가보면 메모장같은 창에 나타나게 된다.

 

 

VSCode처럼 코드를 더 쉽게 작성할 수 있도록 들여쓰기, 코드 문법 등을 제공해주는 프로그램이 Notepad++다. 설치하고 Winscp에서 코드 파일을 우클릭 > 편집 > 구성에서 수정하면 더 쉽게 코드를 작성할 수 있다.

 

 

 

 

 

 

 

 

-AWS에 라즈베리파이 연결 방법-

라즈베리파이를 AWS에 연결하기 위해서는 IoT Core기능을 사용해야 한다.

aws의 서비스 검색에서 iot core(클라우드에 디바이스 연결)을 검색하고 IoT Core 창에 들어가 디바이스 한 개 연결(여러개면 여러 디바이스 연결 클릭)을 클릭한다. 그럼 아래와 같은 창이 뜨게 된다.

 

4번의 ping을 복사해서 xmanager8(xshell)에 붙여넣고 핑이 계속 가게 된다면 연결 준비가 된 것이다. 

 

 

그 다음 새 사물 생성 선택 > 사물 이름 지정 후 다음을 눌러준다(추가 구성 굳이 안해도 됨).

 

 

 

그다음 플랫폼 및 SDK를 선택하면 된다. 우리는 라즈베리파이에서 작동시킬거기 때문에  Linux/macOS를 선택하고, Python언어를 택해준다.

 

 

그다음 연결 키트를 다운로드한다. 밑에 연결키트 다운로드 버튼을 꼭 눌러서 다운 해야만 다음 단계로 넘어갈 수 있다.

키트를 다운하면 zip파일 형식의 connect_device_package파일이 다운받아진다.

 

WinSCP에서 내 컴퓨터에 다운된 connect_device_package zip파일을 우측으로 드래그해서 라즈베리파이로 옮겨주고, xmanager8에서 unzip해주면 된다.

unzip connect_device_package.zip

 

 

 

 

 

 

마지막으로 AWS에 내 기기가 잘 연결됐는지 확인이 필요하다. 

위 사진에 나온대로 실행권한과 스크립트 실행을 위해 아래 두 코드를 실행한다.

 

chmod +x start.sh
./start.sh

 

 

그럼 아래 사진과 같이 Hello World와 같은 메시지가 계속 올라오며 쌓이게 된다.

 

 

처음 테스트할 때 연결된 기기의 구독 토픽은 sdk/test/python이다.

사용자는 특정 토픽을 구독함으로써 기기의 메시지를 받을 수 있고, 피드백도 보낼 수 있다. 이걸 이용해서 나중에 센서의 데이터를 받아오고 정상/비정상 ai피드백을 보내게 된다.

 

 

 

 

-MQTT(Message Queuing Telemetry Transport)통신

발행/구독 방식으로 동작하는 MQTT 통신은 발행자가 특정 토픽으로 메시지를 발행하면 구독자가 특정 토픽을 구독하고 메시지를 수신받는 방식이다.(원하는 토픽만 골라서 송수신 가능)

 

프로젝트에서는 센서 데이터를 라즈베리파이를 통해 AWS로 보낼때 MQTT통신을 사용한다.

 

위에서 테스트 한 것 처럼 라즈베리파이에서 명령을 내리면 AWS에서 메시지를 받을 수 있다. 

따라서 라즈베리파이를 통해 수집한 데이터를 AWS에 MQTT로 전송하고, 이 데이터를 AWS에서 활용한다.

라즈베리파이에서 메시지를 전송할 때 원하는대로 메시지를 당연히 수정해서 보낼 수 있는데, 이 부분을 건드릴 수 있는 파일이 pubsub.py 파일이다. 

 

 

 

chmod +x start.sh로 권한을 부여하고 ./start.sh로 실행을 하면 핑이 가게 되면서 메시지가 보내지는데 여기서

'sdk/test/python'은 토픽을, Hello World!는 메시지를 나타낸다. 처음 테스트 후 기본적으로 발송되는 메시지를 이용했기 때문에 메시지와 토픽은 정해져있지만 pubsub.py 파일에서 토픽명과 메시지를 수정할 수 있다.

 

 

 

 

pubsub.py 파일은 라즈베리파이 연결 부분 3단계(플랫폼 및 SDK 선택)에서 다운받았던 connect_device_package 파일 안에서 확인 할 수 있다. 이 pubsub.py 파일은 위에서 ./start.sh 명령어로 실행시킴과 동시에 활성화되는 파일이다.

 

 

파일 경로: /connect_device_package/aws-iot-device-sdk-python-v2/pubsub.py

 

 

파일의 message_string라고 적힌 if문 안 message_json= json.dumps( {  } )   <이 부분을 수정하면 가는 메시지가 변한다.