라즈베리 파이 3 Python 3+Flask+HTML+JavaScript 와이파이 코딩을 위한 라즈베리 파이3 기본 업그레이드 과정
라즈베리 파이 3 모델부터 기본으로 제공되고 있는 와이파이를 이용하여 무선공유기 영역 내에서 사물인터넷을 구현해 보자.
Flask는 웹 개발을 지원하는 Framework로 Django 와 함께 알려져 있다. 아두이노나 NodeMCU에서 사물인터넷 와이파이 코딩은 웹브라우저에서 HTTP 프로토콜 방식을 바탕으로 작동하게 되는 HTML+JavaScript 코드들을 client.print(“⚫⚫⚫”) 명령에 의해 웹브라우저에 출력하도록 코딩이 이루어진다.
즉 아두이노와 NodeMCU 에서는 전체적으로 C/C++ 코딩으로 이루어져 있으나 HTTP 웹서버 코딩 부분은 client.print(“⚫⚫⚫”) 출력 명령에서 (“⚫⚫⚫”) 부분이 결국 문자 형식으로 코딩된다. 코딩 측면에서 많은 수의 client.print(“⚫⚫⚫”) 명령이 사용될 수밖에 없으나 방법론 상 대단히 간단해 보인다.
반면에 라즈베리파이 3에서는 비슷한 코딩 방법이 없으며 이미 언급했던 Framework 지원에 의해서 코딩이 가능하다.
아두이노에서의 C/C++ 코딩 부분은 라즈베리 파이 3에서 파이선으로 대체된다. 아울러 HTML 부분은 그대로 HTML 방식으로 코딩되며 이 둘 사이를 예를 들자면 Flask 라는 Framework 이 지원하게 되는 것이다.
Flask 에 의한 와이파이 웹브라우저 코딩을 위해서 라즈베리 파이 3에서 각종 업그레이드 및 업데이트를 시발로 준비 작업을 하도록 하자. 라즈베리 파이 3을 기준으로 파이선3을 사용하도록 한다. 파이선 버전 문제가 있으면 그때그때 유의점을 지적하도록 한다.
스텝:1 라즈베리 파이 3을 최신 버전으로 업데이트 및 업그레이드 하도록 하자.
3개의 sudo 명령 중 3번째 명령 실행에 있어 생각보다 상당히 많은 시간이 소요 될 수 있으므로 주의하도록 한다.
스텝:2 SMBus 와 Python 3을 설치하도록 sudo 명령을 실행한다. 현재는 파이선 2와 3 이 혼용되고 있으나 시간이 흐르면 파이선 3으로 모든 코드들이 업데이트 되어야 할 것이다.
스텝:3 i2c 툴을 설치한다. 라즈베리 파이가 아날로그 채널이 없는 관계로 i2c 나 spi 인터페이스에 의해 아날로그 센서 입력 데이터를 처리하는 경향이 있다.
스텝:4 etc 디렉토리 산하의 raspi-blacklist.conf 파일을 nono 편집기로 열어서 i2c 와 spi 가 과연 블랙리스트에 등록되어 있는지 확인해 보도록 한다.
스텝:5 만약에 블랙리스트에 등록이 되어 있는 경우라면 아래와 같이 앞에 # 기호를 붙여 블랙리스트를 해제하도록 밀어 둔다. 필자가 들어가 보니 아무 것도 없는 빈 파일이어서 그대로 두었다. 하지만 라즈베리 파이 사용에 따라서 이러한 블랙리스트가 작성되었을지도 모르기 때문에 반드시 확인하도록 한다.
스텝:6 최신내지는 최근 버전의 라즈베리에 대해서는 /boot 의 config.txt 파일을 수동으로 아래와 같이 nano 편집기로 업데이트 할 필요가 있다.
업데이트 해야 할 내용은 다음과 같다. 필자의 경우 nano 편집기에서 두 번째 줄은 있었으나 첫 번째가 아예 없어 수동으로 입력 작업을 했다.
스텝:7 부팅 시에 자동적으로 i2c를 실행 시킬 수 있도록 /etc 의 modules를 손보도록 한다.
아래의 명령을 확인해 보고 없으면 직접 입력해 둔다.
스텝:8 항상 root에서 작업하기는 곤란하므로 일반적으로 사용자인 pi 즉 그냥 전원을 주고 로그인하면 pi 상태인데 root로 가지 않고 pi 상태에서 직접 사용할 수 있도록 i2c 그룹에 사용자로 신고 등록해 두기로 한다.
마지막으로 다시 부팅한다.
재 부팅이 되면 i2c 와 SMBus 파이선 2 나 파이선 3 지원이 가능하다.
P.S.
라즈베리에서 플라스크 모듈 지원하에 와이파이 코딩은 디렉토리 설정을 비롯하여 약간 입체적인 준비가 필요하다.
필요한 예제 코딩과 절차에 관해서는 곧 출간 준비중인 종이 책 "라즈베리 와이파이 코딩"을 참고하기 바란다.