본문 바로가기

Hardware/SBC (rasp, jetson, latte panda)

[RPi5] 3-1. 라즈베리파이에 flask 설치하고 데이터 받아보기|산.기.정.|

본 글은 제가 직접 쓴  글이 아니라, 저희 PinkLAB의 유투브 채널의 공개 강의 영상들을 읽고, 따라한 한 수강생의 글을 제 블로그에 공유한 내용입니다.

https://youtu.be/0H3hp_27UZE?si=0RPoz4nubE9L37G2

잠시나마 기분 좋아지셨으면 좋겠습니다 :)


안녕하세요, 정말 오랜만에 글 올려봅니다. 
모두 잘 지내고 계신가요!
 

오늘 강의 주제는 '라즈베리파이의 데이터를 외부로 보내는 방법  - flask ' 였어요. 



우리는 산딸기 기초 과정을 배우고있어요. 

다른 강의에서는 .. 일반적으로 GPIO에서 LED 어떻게 켜는지, 초음파 센서 연결 방법, IR 센서 연결 등

라즈베리파이에서 입출력 센서를 어떻게 다루는지 강의를 한다고 하셨어요. 

아두이노 보드 대신에 라즈베리 파이보드를  쓰는  것 같은거죠.  

그런데.. 그런 강의는 많으니! 

지금까지 환경설정에  대해 배웠구요, Picamera 어떻게 가져오는지(OS가 Ubuntu였기때문에),,

라즈베리파이를 , 혼자 프로젝트를 하더라도, 난이도를 조금 높이면, 하고싶은 일이 생겨요. 
라즈베리파이와 다른 라즈베리파이(디바이스 - wifi에 연결된) 와 데이터를 어떻게 통신으로 주고받지 ?
라즈베리파이 하나에 센서 하나를 연결하면,, 아두이노 - 컴퓨터를 연결한 것과 같아요. 

그런데 원격으로 동작시키고싶을 때, 여러가지 방법이 있는데 그 중에 하나로

이번에는 flask 를 사용한 방법을 공유해 주셨어요. 데이터를 손쉽게 주고받을 수 있게 돼요. 어떻게 공유할거냐!



 

 

라즈베리파이와 다른 장치와 데이터를 공유하는 방법.

 

플라스크라는 아이가 있어요. 설치도 쉽고.. 단순하고 가벼워요. 커뮤니티가 많아서 검색만으로 코드가 동작 할 정도이고, chatgpt도 대답을 잘 해줘요. 

라즈베리파이에서는 무슨 작업을 해야하는지 볼게요. 

라즈베리파이에서 pip install flask 해요. 

내 라즈베리파이에서 인터넷에 접속한 ip 주소를 알고있어야해요. 인터넷에 접속한 ip 주소!

지난번 수업에서 ap 모드를 셋팅하고 오셨다면, 192.168.4.1이 여러분이 접속해야 할 주소가 될 거예요. 

ssh로 접근하는게 강사님은 좋으시지만, 
여러분 사정에따라 키보드, 마우스, 모니터를 연결하시고 

, 이름은 flask_test.py로 했어요. 

1초에 1씩 증가시키는 함수를 만들었어요. 

1초씩 기다렸다가 1씩 증가하는 거예요. 

업데이트 할게~ 하구요. 터미널에 프린트 되어서 나와요. 

counter_updater이라는 함수예요. 

@는 파이썬에서 데코레이터라고 부르는 것인데요,

 

 카운터라는 경로로 요청을 하면, 

get_counter이라는 함수와 연결을 시켜주는 역할을 한답니다.

이렇게 선언을 해 주고 나면

 

바로 밑의 함수가 연결된다 라고 생각하시면 된답니다. 

서버 설정은 이렇게 해 주시면 된답니다. 

python3 flask_test.py를 실행하고 나면

이렇게 나온답니다. 접속해야 할 주소도 이렇게 나타나구요. 

클라이언트에서는 어떻게 할 것이냐!

여기는 라즈베리파이가 아니예요. 내PC에서 웹브라우저로 

이 주소에 접근을 해 보면 돼요.

192.168.0.80은 내 라즈베리파이 id, 5000 포트를 열어두었구요, 카운터 경로 열어두면

이렇게 떠요. 

스크롤은 안돼요. 

들어온다는 걸 알았으니 이걸 받아보도록 해요. 

어떻게 받냐면.. ipynb, 주피터에서 받아 볼 거예요. 

우선 request 가져오고
ip 주소 적어줬고, 
5000번의 카운터를 잡아줬어요. 

그러고 나서 1초에 한 번씩 4번만 받을게요, 

2

url 에서 가져와서 response를 받아와요. 
그러구 나서 data를 json으로 받아오구 
counter로 받아와라 하는 거예요. 

값을 받았어요. 심플하죠...?

서버쪽 터미널에서는 누가 가져갔다~ 하고 이렇게 떠요. 

실제로 보여드리면...
실습! 
강사님은 언제나 ssh로 접근을 하셔요. 라즈베리파이 id, pw 입력하구요 

라즈베리파이 id, 프롬프트가 바뀌었어요. 

이미 코드를 짜 두었으니..document/code에 가면
영상에서 나온 그대로 만들어 두셨어요. 

실행하려면 nano flask_test.py!

짠! 끝

import requests

이상태에서 코드를 작성 해 볼게요. 
import requests 가지고 오구요, 
접속 ip, 192.168.0.80, 라즈베리파이 실제 ip주소로 변경,

그리고 여기다! 

환경! 강사님께서는 Opencv에서 실행하시고 있어요. 

그러구 실행을 하고 4번만 카운트! 값이 나와요. 

그럼 79부터 4개가 나와요. 

주소로 접근 해 봐도 돼요. http:// 192.168.... 

오늘의 코드는 pinkwink github! 

repositories

for_ROS2_study

RPi Study

flask_test.py

flask_test.ipynb 여기 있어요. 

파이썬 코드 여기 있어요. 

오늘은 여기에서 마무리 했어요. 

다음시간에는.. 난 정보를 어떻게 줄것인지, 제일 중요한 건 영상이예요.

Rasberrypi 수업에서 - ROS2를 병행하게 된 이유, 영상 설정, ssh 환경설정에 집중하는 이유
( 이 모든건 ROS2 topic에서 영상은 토픽으로 쏘지 않으려고 하는건데요, )
다음시간엔 그 이야기를 해 주신다고 하셨답니다 !

 

오늘도 모두 고생 많으셨습니다 :)

반응형