• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to footer

IoTmaker

사물인터넷에 대한 모든 것 여기서 해결하셔요!

  • 홈
  • 책:마이크로파이썬을 활용한 사물인터넷
  • 책:따라 하면서 배우는 사물인터넷
  • 온라인 교육 코스
  • 새로운 소식
  • 의견보내기
  • 내 수강정보
  • 로그인
  • 회원가입

IoTmaker

윈도우즈에서 Node-RED에 인증서 등록하고 SSL 적용하기

2023-03-15 작성자 IoTmaker 댓글 달기

책에서 사용하는 부품 구입하기

오픈 소스 프로그램인 OpenSSL을 사용하여 개인키와 인증서를 만들어서 Node-RED에 등록하면, https 통신 방식으로 안전하게 Node-RED에 접속할 수 있게 됩니다.

먼저 다음 링크에서 OpenSSL를 설치하고 인증서를 발행해야 합니다.

윈도우즈에 OpenSSL 설치하고 인증서 발행하기

 1  인증서 확인하기

OpenSSL을 사용하여 인증서를 미리 만들어 두어야 합니다. 탐색기를 이용하여 인증서가 있는 폴더 위치를 확인해 둡니다.

인증서가 폴더c:\Users\USER\certs에 있습니다.

파일 cert.pem과 privKey.pem를 Node-RED가 설치된 폴더 C:\Users\USER\.node-red로 복사합니다.

Node-RED는 사용자 계정 아래 .node-red에 설치되어 있습니다.

 2  Node-RED의 settings.js 파일 열기

폴더 C:\Users\USER.node-red에 있는 설정 파일 settings.js을 편집하기 위하여 엽니다.

마우스 오른쪽 버튼을 눌러 파일을 메모장에 엽니다.

 3  Node-RED의 settings.js 파일 편집하기

메모장에서 다음 부분을 편집합니다.

파일 path를 지정할 때 \ 대신 /을 지정해야 합니다.

  https: {
      key: require("fs").readFileSync('C:/Users/USER/.node-red/privkey.pem'),
      cert: require("fs").readFileSync('C:/Users/USER/.node-red/cert.pem')
    },
  requireHttps: true,

파일을 저장합니다.

 4  Node-RED에 다시 접속하기

Node-RED가 실행중이라면 중지하고 다시 Node-RED를 실행합니다.

앞 화면과 같은 내용이 출력되면 Node-RED가 제대로 실행된 것입니다.

 5  https로 Node-RED에 접속하기

OpenSSL을 사용하여 만든 자체 서명 인증서(self-signed certificate)는 개인이 임의로 만든 것이며, 외부 공인 기관이 인증한 것이 아닙니다. 그래서 이 인증서를 사용한 컴퓨터에 접속하면 브라우져는 신뢰성이 낮다고 판단하여 경고 메시지를 내 보냅니다. 물론 경고 메시지가 나오더라도 그 컴퓨터를 신뢰한다면 보안상의 문제는 없습니다. 이러한 단점에도 불구하고 개인 용도의 업무에는 OpenSSL로 만든 자체 서명 인증서(self-signed certificate)를 사용하는 경우가 많습니다. 브라우져는 외부 공인 인증 기관들의 인증서 정보를 미리 보관하고 있습니다. 그래서 공인 인증서를 사용한 컴퓨터에 접속할 때는 경고 메시지가 나오지 않게 됩니다.

브라우져를 열어서 다음과 같이 https로 시작하는 주소를 입력합니다. Node-RED가 설치된 PC가 아닌 곳에서 사용할 때는 localhost 대신 IP 주소를 지정해야 합니다.

보안 경고가 나오더라도 고급 버튼을 누릅니다.

다시 localhost(안전하지 않음)을 누르면 Node-RED 플로우 편집 화면으로 이동합니다.

앞 두 화면은 브라우져별로 첫 번째로 접속할 때만 나타납니다. 브라우져의 접속 기록이 지워지면 보안 경고 화면은 다시 나타납니다. 보안 경고 형식은 브라우져 종류별로 다르지만 내용은 비슷합니다.

이 화면이 나오면 모든 것이 제대로 작동하는 것입니다.

카테고리:IoT, Node-RED 태그:Node-RED

윈도우즈에 Openssl 설치하고 인증서 만들기

2023-03-14 작성자 IoTmaker 댓글 달기

책에서 사용하는 부품 구입하기

SSL/TLS 보안 방식을 시용하여 통신을 하기 위해서는 개인키와 인증서를 만들어서 설치해야 합니다.

오픈 소스 프로그램인 OpenSSL을 사용하여 개인키와 인증서를 만들어서 원하는 서버에 등록하면, 안전하게 통신할 수 있게 됩니다.

여기서는 OpenSSL을 다운로드 받아서 설치하고, 환경 변수를 등록하고, 인증서를 만드는 방법을 설명합니다.

 1  OpenSSL을 다운로드 받아서 설치하기

다음의 순서로 프로그램을 다운로드 받아서 설치합니다. (자세한 내용은 아래에 별도 탭으로 나타납니다)

  • OpenSSL 다운로드 웹페이지로 이동합니다
    OpenSSL 설치 프로그램 다운로드
  • PC에 맞는 프로그램을 선택합니다.
  • 다운로드할 폴더를 선택합니다.
  • 파일 다운로드가 완료되면 파일을 열어서 설치를 시작합니다.
  • 중간에 재배포 프로그램이 필요하면 다운로드하고 설치합니다.
  • 이후 설치작업을 계속합니다.
    특별한 사정이 없으면 기본값으로 프로그램을 설치하면 됩니다.
OpenSSL을 다운로드 받아서 설치하기 상세 설명

 1  OpenSSL 설치 프로그램 다운로드 웹페이지로 이동합니다
OpenSSL 설치 프로그램 다운로드

 2  다운로드 페이지를 스크롤하여 본인의 PC에 맞게 Win64와 Win32 버젼중에서 선택하여 다운로드합니다. 이때 light 버젼을 선택하면 안됩니다.

 3  다운로드 폴더와 파일을 지정하고 [저장] 버튼을 누릅니다.

 4  다운로드가 완료되면 [열기]를 선택합니다.

 5  설치 프로그램이 시작되고 필요한 재배포 컴포넌트가 없어서 다운로드하겠다는 문구가 나요면 [예(Y)] 버튼을 누릅니다.

만약 이미 재배포 컴포넌트가 설치되어 있다면  5  ~  9  단계는 생략됩니다.

 6  재배포 컴포넌트의 다운로드 폴더와 파일을 지정하고 [저장] 버튼을 누릅니다.

 7  다운로드가 완료되면 [열기]를 선택합니다.

 8  재배포 컴포넌트의 설치가 시작되면 [동의함(A)]을 선택하고 [설치(I)] 버튼을 누릅니다.

 9  설치가 완료되면 [닫기(C)]를 누릅니다.

 10  재배포 모듈 설치를 완료하고, 실행중이던 OpenSSL 설치 프로그램을 계속합니다. 라이센서 조건에 동의하고 [Next] 버튼을 누릅니다.

 11  설치할 폴더를 선택하고 [next] 버튼을 누르면 프로그램 설치가 시작됩니다.

설치 폴더는 이후 환경 변수 설정할 때 사용하므로 기록해 두는 것이 좋습니다.

 12  시작 메뉴 폴더를 지정하고 [Next]를 누릅니다.

 13  DLL을 복사할 디렉토리를 선택하고 [Next] 버튼을 누릅니다.

 14  선택 사항 지정을 모두 마치고, [Install] 버튼을 누릅니다.

[su_15/] 설치가 모두 끝나면, 기부 금액 선택을 확인하고 [Finish] 버튼을 누릅니다.

 2  OpenSSL의 환경 변수 설정하기

OpenSSL을 자유롭게 사용할 수 있도록 환경 변수에 등록해야 합니다.

여기서는 OPENSSL_CONF와 path를 등록합니다.

OpenSSL의 시스템 환경 변수 등록하기 상세 설명

 1  시스템 속성 화면으로 이동하기

키보드에서 을 눌러서 실행 화면이 나오면 cmd가 입력된 채로 확인 버튼을 누릅니다.

명령 프롬프트에서 다음 명령을 입력하면 시스템 속성 화면이 나옵니다.

sysdm.cpl

 2  시스템 속성 화면에서 환경 변수로 이동하기

탭에서 고급을 선택하고 환경 변수(N)...를 누릅니다.

 3  환경 변수 화면에서 새로 만들기(N)...를 누르면 새 사용자 변수를 입력할 수 있는 화면이 나옵니다. 여기서 아래의 변수 이름과 변수 값을 입력합니다. 확인을 누르면 환경 변수가 등록됩니다.

OpenSSL이 설치된 폴더는 설치 환경에 맞게 지정하여야 합니다.

OPENSSL_CONF
C:\Program Files\OpenSSL-Win64\bin\openssl.cfg

 4  환경 변수 화면에서 Path를 선택하고 편집(E)...을 누르면 환경 변수 편집 화면이 나옵니다. 여기서 새로 만들기(N)를 누르고 다음의 내용을 입력한 후 확인을 누릅니다.

C:\Program Files\OpenSSL-Win64\bin

 5  다시 환경 변수 화면이 나오면 확인을 눌러서 설정 작업을 마칩니다.

 3  자체 서명 인증서 만들기

공인 인증기관에서 인증서를 받기위해서는 비용을 지불해야 합니다. 반면에 OpenSSL을 사용하면 무료로 자체 서명 인증서(self-signed certificate)를 만들 수 있습니다.

OpenSSL로 만든 인증서가 설치된 서버에 접속하면 브라우져에 경고 메시지가 나타나지만 개인 사용의 경우라면 문제되지는 않습니다.

OpenSSL을 이용하여 개인키인 privKey.pem과 자체 서명 인증서인 cert.pem 파일을 생성하는 방법을 설명합니다.

여기서 만들어진개인키와 인증서는 원하는 곳에 등록하여 사용할 수 있으며, 여러 곳에서 공용으로 사용할 수도 있습니다.

자체 서명 인증서 만들기 상세 설명

 1  인증서가 설치될 폴더 만들기

이후 작업은 명령 프롬프트에서 실행합니다. 키보드에서 을 눌러서 실행 화면이 나오면 cmd가 입력된 채로 확인 버튼을 누르면 명령 프롬프트가 나타납니다.

아래 명령어로 사용자 계정(여기서는 USER)에 certs라는 폴더를 만듭니다.

md certs

새로 만든 폴더로 이동합니다.

cd certs

이후 OpenSSL에서 생성되는 파일은 이 폴더 아래에 만들어집니다.

 2  개인키와 인증서 만들기

다음 명령어를 입력하면 개인키가 파일 privKey.pem으로 만들어집니다. 여기서 만든 개인키는 이후 단계에서 계속 사용됩니다.

openssl genrsa -out privKey.pem 1024

 3  CSR(인증서 서명 요청서) 만들기

계속해서 다음 명령어를 입력하면, CSR (Certificate Signing Request)이 파일 private-csr.pem으로 만들어 집니다. CSR은 인증서에 포함되는 여러 정보를 기록하는 용도입니다. 그래서 이 명령어를 실행하면 여러 정보를 입력하라는 프롬프트가 나오지만 그냥 엔터를 입력하여 넘어가도 됩니다. 다만 Common Name만 입력하면 됩니다. 여기서 생성된 CSR은 다음 단계에서 사용되지만 이후에는 삭제해도 됩니다.

openssl req -new -key privKey.pem -out private-csr.pem

 3  인증서 만들기

다음 명령어를 입력하면, CSR을 개인키로 서명하여 인증서를 만듭니다. 그 결과는 파일 cert.pem입니다. 여기서는 -days 730로 하여 인증서 유효 기간을 2년으로 지정하였습니다. 인증서 유효 기간은 임의로 조절하면 되지만, 인증서 기간이 만료되면 다시 만들어야 합니다.

인증서가 IoT 디바이스에 설치되는 경우 갱신하기가 어려우므로 감안하여 인증서 기간을 정하여야 합니다.

openssl x509 -req -days 730 -in private-csr.pem -signkey privKey.pem -out cert.pem

다음 명령어를 입력하여 생성된 파일을 확인합니다

dir

이제 privKey.pem와 cert.pem이 생성되었습니다. 이 파일의 정보를 필요한 곳에 등록하여 사용하게 됩니다.

카테고리:IoT, Node-RED

윈도우즈에 Node-RED 설치하고 실행하기

2023-03-08 작성자 IoTmaker 댓글 달기

책에서 사용하는 부품 구입하기

Node-RED는 IoT에 최적화된 로우코드(low code) 개발 소프트웨어입니다.원래 IBM사에서 내부용으로 개발하였다가 현재는 오픈소스로 관리되고 있습니다.

Node-RED는 Node.js라는 프로그래밍 환경을 기반으로 만들어졌습니다. 그래서 Node-RED를 설치하기 위해서는 먼저 Node.js를 설치하여야 합니다. Node.js는 대부분의 운영체제를 지원하므로 Node-RED도 대부분의 운영체제에서 실행됩니다.

학습용으로는 개인 PC나 노트북에 설치하여 사용해도 되지만, 실행 환경에서는 항상 가동되는 서버용 컴퓨터에 설치하는 것이 좋습니다.

Node-RED를 윈도우즈에서 사용하기 위해서는 다음의 절차를 거쳐야 합니다.

  • Node.js를 다운로드 받아서 설치합니다.
  • 명령어 창에서 npm으로 Node-RED를 설치합니다.
  • 명령어 창에서 Node-RED를 실행합니다.
  • 브라우져에서 Node-RED 개발화면을 엽니다.

 1  Node.js를 다운로드 받아서 설치하기

다음의 순서로 프로그램을 다운로드 받아서 설치합니다. (자세한 내용은 아래에 별도 탭으로 나타납니다)

  • Node.js 웹페이지로 이동합니다
    https://nodejs.org
  • 화면에서 Download for Windows(x64) 아래 버튼 [18.x.x LTS] 를 누릅니다.
  • 다운로드할 폴더를 선택합니다.
  • 파일 다운로드가 완료되면 파일을 열어서 설치를 시작합니다.
    특별한 사정이 없으면 통상적인 프로그램의 설치 절차를 따르면 됩니다.
Node.js를 다운로드 받아서 설치하기 화면 설명

 1  Node.js 웹페이지로 이동합니다
https://nodejs.org

 2  Download for Windows(x64) 아래에 있는 [18.x.x LTS] 버튼을 누릅니다.

 3  다운로드 폴더와 파일을 지정하고 [저장] 버튼을 누릅니다.

 4  다운로드가 완료되면 [열기]를 선택합니다.

 5  설치 프로그램이 시작되면 [Next] 버튼을 누릅니다.

 6  accept the terms in the License Agreement 앞의 체크박스를 선택하고 [Next] 버튼을 누릅니다.

 7  기본 폴더에 설치하기 위하여 [Next] 버튼을 누릅니다. 이 때 원하는 폴더를 선택할 수도 있습니다.

 8  Node.js runtime을 설치하기 위하여 [Next]를 누릅니다.

 9  설치 위치 선택에서 설치를 누릅니다.

 10  Tools for Native Module만 설치하기 위하여 [Next] 버튼을 누릅니다.

 11  [Install] 버튼을 누르면 프로그램 설치가 시작됩니다.

 12  프로그램이 설치되는 동안 기다립니다.

 13  [Finish] 버튼을 눌러서 설치를 마칩니다.

 2  Node.js가 제대로 설치되었는지 확인하기

Node.js가 제대로 설치되었는지는 윈도우즈 명령 프롬프트에서 확인할 수 있습니다.

 1  키보드 을 누르면 실행 화면이 나옵니다. 여기에 cmd를 입력하고 [확인] 버튼을 누르면, 명령 프롬프트가 실행됩니다.

 2  실행 화면의 명령 프롬프트에 다음 명령어를 입력합니다.

node --version && npm --version

두 개의 버젼이 표시되면 Node.js가 제대로 설치된 것입니다. 명령어에서 node는 Node.js를 말하고 npm은 패키지 매니저(Node Package Manager)를 말합니다.

 3  npm 명령어로 Node-RED 설치하기

앞에서 열어 둔 실행 화면의 명령 프롬프트에 다음 내용을 입력하면 Node-RED가 설치됩니다.

npm install -g --unsafe-perm node-red

앞 화면에서 Node-RED 가 제대로 설치된 것을 확인할 수 있습니다.

 4  Node-RED 실행하기

실행 화면의 명령 프롬프트에 node-red를 입력하면 Node-RED가 실행됩니다.

node-red

이제 node-red가 실행되었습니다. 이 실행화면은 [최소화]해 둘 수 있습니다. 이 실행화면에서 키보드 를 누르거나 [닫기]하면 Node-RED는 종료됩니다.

새로운 명령어를 입력해야 할 경우에는 새로운 실행 화면을 만들어서 사용합니다.

 5  브라우져에서 Node-RED 개발 화면 실행하기

Node-RED가 실행되고 있는 PC의 브라우져에서는 다음 URL을 입력화면 Node-RED 개발 화면이 나옵니다.

http://localhost:1880

다른 PC의 브라우져에서 접속할 때는 Node-RED가 설치되어 있는 PC의 IP 주소를 직접 입력해야 합니다. 아래는 Node-RED가 설치된 PC의 IP 주소가 192.168.0.100인 예입니다.

http://192.168.0.100:1880

앞의 화면이 나오면 Node-RED가 제대로 작동하는 것입니다.

 6  Nod-RED 보안 설정하기

Node-RED를 설치만 하면 전혀 보안이 되지 않은 상태입니다. 동일한 로컬 네트워크에 있는 사람은 누구나 접속할 수 있으므로 주의하여야 합니다. 만약 다른 사람의 접속을 제한하거나 외부 인터넷에 개방할 때는 그에 상응하는 보안 조처를 해야 합니다.

Node-RED 사용자 지정하기

윈도우즈에 OpenSSL 설치하고 인증서 만들기

윈도우즈에서 Node-RED에 인증서 등록하고 SSL 적용하기

카테고리:IoT, Node-RED

아두이노 2.0 설치하고 ESP8266/ESP32 보드매니저 설정하기

2023-02-27 작성자 IoTmaker

책에서 사용하는 부품 구입하기

책(따라하면서 배우는 사물인터넷)에서 다룬 이전 버전(1.8.x)의 아두이노 IDE 설치 방법을 대체하기 위하여 새로운 웹페이지를 작성하였습니다.

https://iotmaker.kr/iotbook-install-arduino=ide

카테고리:분류안됨

윈도우즈에 설치한 Mosquitto에 원격 접속허용하기

2021-08-23 작성자 IoTmaker 댓글 달기

책에서 사용하는 부품 구입하기

 1  Mosquitto는 초기설정으로는 동일 기기내에서만 접속이 됩니다.

윈도우즈에 Mosquitto를 설치하면 기본적으로 동일 기기(로컬 머신)에서만 접속이 허용됩니다.

외부 기기에서 원격 접속이 가능하도록 하기 위해서는 Mosquitto 설치 디렉토리에 있는 mosquitto.conf 파일의 내용을 다음과 같이 수정하여야 합니다.

mosquitto.conf 파일은 디렉토리 c:\Program Files\Mosquitto 또는 c:\Program Files (x86)\Mosquitto 안에 있습니다. 다만 이 파일은 일반 사용자 자격으로는 수정이 되지 않으므로 이 글 뒷부분의 mosquitto.conf 파일 수정하는 방법을 확인하시기 바랍니다.

해당 파일의 내용이 많으므로 두 군데만 표시합니다.

listner 1883을 지정합니다.
# On systems that support Unix Domain Sockets, it is also possible
# to create a # Unix socket rather than opening a TCP socket. In
# this case, the port number should be set to 0 and a unix socket
# path must be provided, e.g.
# listener 0 /tmp/mosquitto.sock
#
# listener port-number [ip address/host name/unix socket path]
listener 1883

# By default, a listener will attempt to listen on all supported IP protocol
# versions. If you do not have an IPv4 or IPv6 interface you may wish to
# disable support for either of those protocol versions. In particular, note
# that due to the limitations of the websockets library, it will only ever
# attempt to open IPv6 sockets if IPv6 support is compiled in, and so will fail
# if IPv6 is not available.
모든 사용자에게 접속을 허용할 때는 allow_anonymous true를 지정합니다.
# Defaults to false, unless there are no listeners defined in the configuration
# file, in which case it is set to true, but connections are only allowed from
# the local machine.
allow_anonymous true

# -----------------------------------------------------------------
# Default authentication and topic access control
# -----------------------------------------------------------------

# Control access to the broker using a password file. This file can be
# generated using the mosquitto_passwd utility. If TLS support is not compiled
# into mosquitto (it is recommended that TLS support should be included) then
# plain text passwords are used, in which case the file should be a text file

mosquitto.conf을 수정하여 저장한 후 다음과 같은 명령어로 mosquitto를 다시 실행합니다. mosquitto가 이미 실행중일 때는 그 터미널 화면을 종료하면 됩니다.

윈도우즈 키 + R을 누르면 팝업 화면이 나옵니다. cmd를 입력하면 윈도우즈 터미널 환경이 됩니다. 다음 명령어로 mosquitto를 실행합니다.

설치된 Mosquitto가 64비트 윈도우즈 버전일 때

cd c:\Program Files\Mosquitto
mosquitto -c mosquitto.conf -v

설치된 Mosquitto가 32비트 윈도우즈 버전일 때

cd c:\Program Files (x86)\Mosquitto
mosquitto -c mosquitto.conf -v

 2  mosquitto.conf 파일 수정하는 방법

mosquitto.conf 파일은 시스템 파일이므로 일반적인 사용자 자격으로는 수정이 수정이 불가능합니다. 다음의 링크에 그 파일을 수정할 수 있는 방법이 안내되어 있습니다.

mosquitto.conf 파일 수정이 거부되었을 때 해결 방법

카테고리:ESP32, IoTbook

ESP32의 아나로그 핀 사용법

2021-02-01 작성자 IoTmaker 댓글 달기

책에서 사용하는 부품 구입하기

 1  아나로그 입력

ESP32를 사용하는 개발 보드에서 아나로그 입력 핀을 사용하는 방법을 설명합니다.

아나로그 입력에 사용할 수 있는 핀

마이크로컨트롤러에는 아나로그 전압을 읽어서 디지털 형식의 숫자로 알려주는 장치가 있는데 이 것을 ADC(Analog to Digital Converter)라고 합니다. ESP32에는 두 개의 ADC장치가 있습니다. ADC장치1에는 8개의 채널이 있는데, 핀(GPIO) 32~39가 연결되어 있습니다. ADC장치2에는 10개의 채널이 있고, 핀(GPIO) 0, 2, 4, 12 ~ 15 ,25 ~ 27이 연결되어 있습니다.

ADC장치2는 WiFi 를 실행할 때 사용되므로 ADC장치2에 연결되어 있는 핀은 아나로그 입력용으로 사용하지 않는 것이 좋습니다. ADC장치1에 연결되어 있는 핀이 8개이긴 해도, 개발보드에 모두 노출되어 있지는 않고, 노출되어 있는 핀도 보드의 사정에 따라 사용이 제한될 수 있습니다. 핀을 제대로 사용하기 위해서는 사전에 개발 보드의 핀 특성을 미리 익혀 두어야 합니다.

[그림1]은 MH-ET LIVE ESP32 Mimikit이라는 ESP32 개발보드의 핀 구성도입니다. 이 보드에는 양쪽에 두줄로 핀이 있는데 안쪽 핀 두줄은 LOLIN(Wemos) D1 mimi의 핀과 호환이 됩니다. 그래서 이 보드에는 LOLIN(Wemos) D1 mini의 실드를 사용할 수 있습니다. (다만 베이스 실드를 사용할 때는 핀 간격 문제로 사용에 제약이 있습니다.)

[그림1] MH-ET LIVE ESP32 minikit 핀 구성도 (출처 www.esp32learning.com)

이 그림에 의하면 GPIO36,39,35,34를 아나로그 입력핀으로 사용하도록 권장하고 있습니다. ADC장치1에 연결되어 있는 나머지 핀(GPIO32,33)을 아나로그 입력핀으로 사용하기 위해서는 상황에 맞는테스트를 한 후, 정상 작동이 되는지 확인하여야 합니다. WiFI를 사용하지 않는 경우에는ADC장치2에 연결되어 있는 핀도 아나로그 입력핀으로 사용할 수 있지만, 다른 기능과 충돌이 되지 않도록 주의하여야 합니다.

ADC의 해상도(resolution)

입력된 아나로그 전압을 디지털 숫자로 표현할 때 그 정밀도를 해상도(또는 분해능)라고 합니다. ESP32의 해상도는 12비트이므로 입력되는 전압을 4096(=212) 단계로 나누어서 표시합니다. 그래서 0V는 0이 되고 최대 측정 전압이면 4095(=212-1)가 됩니다.

3.3V 기준의 개발보드에서 아나로그 핀에 걸리는 전압을 읽으면 0~4095의 값을 얻게 됩니다. 만약 핀에서 읽은 값이 512라면 핀에 걸리는 전압은 0.41(=3.3/4095*512)V입니다.

ESP8266(Wemos D1 mini)의 해상도는 10비트이므로, A0핀에 3.3V가 걸리면 읽을 수 있는 값은 1023(=210-1)입니다. (*실제로 테스트를 하면 1024가 읽힙니다. 1023이 읽히는 것이 바람직합니다.)

회로 구성하기

다음과 같이 Wemos D1 mini 기준 A0핀에 3.3V 핀을 연결한 회로를 만듭니다.

[그림2] 회로도(A0에 3.3V를연결하기)
analogRead()함수를 사용하기

[그림2]와 같은 회로에서 analogRead()함수로 값을 읽는 프로그램입니다.

analogRead_test1

const int A0pin = 36; // A0: Wemos D1 mini
void setup() {
  Serial.begin(115200);
  Serial.println();
  int readVal = analogRead(A0pin);
  Serial.println(readVal);
}

void loop() {
}


출력 결과:
4095

analogReadResolution()함수를 사용하기
analogReadResolution()함수를 사용하여 해상도를 설정할 수 있습니다. 이 때 값은 9~12(비트)사이에서 지정합니다.

analogRead_test2

const int A0pin = 36; // A0: Wemos D1 mini
void setup() {
  Serial.begin(115200);
  Serial.println();
  analogReadResolution(10); // 10bit 해상도로 설정
  int readVal = analogRead(A0pin);
  Serial.println(readVal);
}

void loop() {
}


출력 결과:
1023

 2  아나로그 출력

아두이노 우노나 ESP8266에서는 analogWrite() 함수를 이용하여 PWM 방식으로 아나로그 출력을 합니다. 그러나 ESP32에서는 analogWrite()함수를 기본으로 제공하지 않습니다. 그래서 아두이노 표준이 아닌 별도의 함수를 이용하여 PWM 출력을 하여야 합니다.

PWM을 위한 3개의 ledc함수군

ESP32에는 LED를 정교하게 다루기 위한 PWM 관련 함수가 준비되어 있습니다. 이러한 함수의 이름은 모두 ledc(LED Controller)로 시작합니다.

ESP32에는 PWM 제어를 위한 채널이 16개 있습니다.

 1   먼저 채널을 선택하여 속성을 정의하고, ledcSetup()
 2  이 채널에 한 개 또는 복수 개의 핀을 할당합니다.ledcAttachPin()
 3  마지막으로 채널에 듀티 사이클을 지정하여 PWM을 실행합니다.ledcWrite()

그러면 해당 채널에 딸린 모든 핀에 동시에 PWM이 출력됩니다.

즉, ESP32에서는 PWM을 출력할 때 핀 번호가 아니라 채널 번호 기준으로 실행합니다.

기능 함수 이름 인수
채널 설정ledcSetup채널 번호0~15
주파수(Hz)숫자를 직접 지정
듀티 해상도
(비트)
1~12
8로 지정하면 0~255까지의 듀티 사이클 사용 가능
채널에
핀 할당
ledcAttachPin핀 번호GPIO를 지정
채널 번호 채널 설정에서 지정한 채널번호
여러 개의 핀을 하나의 채널에 지정할 수 있음.
이 경우 채널에 연결되어 있는 모든 핀이 한꺼번에 동작함.
채널의
듀티 변경
ledcWrite채널 번호 채널 설정에서 지정한 채널번호
듀티 사이클예를들면 0~255
채널 설정에서 정한 듀티 해상도 범위의 값을 지정

회로 구성하기

다음과 같이 GPIO16과 17에 LED를 각각 연결한 회로를 만듭니다.

[그림3] 회로도(GPIO14에 LED 연결하기)
ledc함수군을 사용하여 LED의 밝기를 한꺼번에 바꾸기

[그림3]와 같은 회로에서 두 개의 LED의 밝기를 한꺼번에 연속적으로 바꾸는 프로그램입니다.

ledc_test1

const int ledPin1 = 16; // GPIO16 = D4(Wemos D1 mini)
const int ledPin2 = 17; // GPIO17 = D3(Wemos D1 mini)

// PWM 속성 지정
const int freq = 5000;    // 주파수(Hz)
const int ledChannel = 0; // 채널 번호
const int resolution = 8; // 0~255
 
void setup(){
  // 0번 채널을 지정함(5000Hz,8비트 해상도)
  ledcSetup(ledChannel, freq, resolution);
  
  // 0번 채널에 을 GPIO16과 17을 동시에 연결함
  ledcAttachPin(ledPin1, ledChannel);
  ledcAttachPin(ledPin2, ledChannel);
}
 
void loop(){
  // LED 밝기를 높임
  for(int dutyCycle = 0; dutyCycle <= 255; dutyCycle++){   
    // 채널0(두 개의 핀)의 밝기를 PWM을 사용해서 바꿈
    ledcWrite(ledChannel, dutyCycle);
    delay(10);
  }

  // LED 밝기를 낯춤
  for(int dutyCycle = 255; dutyCycle >= 0; dutyCycle--){
    // 채널0(두 개의 핀)의 밝기를 PWM을 사용해서 바꿈
    ledcWrite(ledChannel, dutyCycle);   
    delay(10);
  }
}

외부 analogWrite함수를 사용하여 LED의 밝기를 한꺼번에 바꾸기

ESP32에서 공식적으로 제공하지는 않지만, 외부 인사(Abdelouahed ERROUAGUY)가 만든 analogWrite라이브러리를 여기(github)에서 다운로드 받아서 설치합니다.

프로그램 안에서는 #include <analogWrite.h> 지시어를 지정해야 합니다.

다음은 [그림3]와 같은 회로에서 두 개의 LED의 밝기를 한꺼번에 연속적으로 바꾸는 프로그램입니다.

analogWrite_test

#include <analogWrite.h>  // https://github.com/ERROPiX/ESP32_AnalogWrite
const int ledPin1 = 16; // GPIO16 = D4(Wemos D1 mini)
const int ledPin2 = 17; // GPIO17 = D3(Wemos D1 mini)

// PWM 속성 지정
const int freq = 5000;    // 주파수(Hz)
const int resolution = 8; // 0~255

void setup(){
  // 모든 핀의 주파수와 해상도를 지정함
  analogWriteFrequency(freq);   // 생략하면 기본값은 5000
  analogWriteResolution(resolution);   // 생략하면 기본값은 8
}
 
void loop(){
  // LED 밝기를 높임
  for(int dutyCycle = 0; dutyCycle <= 255; dutyCycle++){   
    // 두 핀의 밝기를 PWM을 사용해서 바꿈
    analogWrite(ledPin1,dutyCycle);
    analogWrite(ledPin2,dutyCycle);
    delay(10);
  }

  // LED 밝기를 낯춤
  for(int dutyCycle = 255; dutyCycle >= 0; dutyCycle--){
    // 두 핀의 밝기를 PWM을 사용해서 바꿈
    analogWrite(ledPin1,dutyCycle);
    analogWrite(ledPin2,dutyCycle); 
    delay(10);
  }
}

 3  ESP32 호환 보드 납땜 사례

MH-ET LIVE ESP32 minikit를 납땜하여 실드에 적층하여 사용하는 사례입니다. 안쪽에 있는 핀만 아래쪽으로 다리가 노출되어야 합니다.

[그림4] MH-ET LIVE ESP32 minikit 납땜 사례
[그림5] MH-ET LIVE ESP32 minikit를 납땜 후 트리플 베이스 실드에 적층한 사례(1)
[그림6] MH-ET LIVE ESP32 minikit를 납땜 후 트리플 베이스 실드에 적층한 사례(2)

카테고리:ESP32, IoTbook

  • Page 1
  • Page 2
  • Go to Next Page »

Primary Sidebar

최신 글

  • 윈도우즈에서 Node-RED에 인증서 등록하고 SSL 적용하기
  • 윈도우즈에 Openssl 설치하고 인증서 만들기
  • 윈도우즈에 Node-RED 설치하고 실행하기
  • 아두이노 2.0 설치하고 ESP8266/ESP32 보드매니저 설정하기
  • 윈도우즈에 설치한 Mosquitto에 원격 접속허용하기

최신 댓글

    보관함

    • 2023년 3월
    • 2023년 2월
    • 2021년 8월
    • 2021년 2월
    • 2020년 10월
    • 2020년 8월
    • 2020년 7월

    카테고리

    • ESP32
    • ESP8266
    • IoT
    • IoTbook
    • Node-RED
    • 분류안됨

    메타

    • 로그인
    • 엔트리 피드
    • 댓글 피드
    • WordPress.org

    Footer

    Copyright © 2025 ·로그인