정확한 빛의 세기를 일반적으로 사용하는 LUX단위로 측정하기 위해서는 제대로 된 광량측정센서를 사용해야 하지만, 단지 빛의 세기가 강한지 어두운 밤인지 정도를 판별하는 용도라면 100원 이하의 센서 비용으로도 원하는 기능을 구현할 수 있다.  

 

CDS센서는 빛의 세기에 따라 저항 값이 변하는(빛의 세기가 셀수록 저항이 작아짐) 광 가변저항이다. 일반적으로 CdS(황화카드뮴)를 사용하므로 CdS라고 한다. 광센서(sensor) 중에 하나로 저렴한 것은 개당 몇십원 정도로 값싸고 간단한 센서이지만 많은 곳에 유용하게 사용할 수 있다.

 

 

 

 

CDS센서의 특성을 이용한 빛의 세기 측정방법

 

센서의 모델별로 편차가 있지만 소형 모델인 경우 밝을 때 0.2K옴, 어두울 때 60K옴 정도로 빛의 세기에 따라 저항값이 바뀌므로 다음과 같은 회로를 구성하고 Pin A에서의 전압값을 측정하면 빛의 세기를 판별할 수 있게된다.  

 

 

 

즉, 전체 전압이 5V이고 밝을 때 CDS의 저항은 0.2K옴 정도이라면 5V전압은 저항에 비례하여 나눠지므로 5 X (10K/(0.2K+10K) = 4.9 V 즉 Pin A에서의 전압은 4.9V 정도로 측정될 것이고, 어두울 때 CDS의 저헝은 50K이라면 Pin A에서의 전압은  0.8V 정도가 측정될 것이다.

그리고 이 Pin A를 아두이노 Analog Input단자에 연결하면 0~5V가 0~1024의 숫자로 표시되므로 이 숫자를 확인하여 현재 빛의 세기를 측정할 수 있다. 물론 이 숫자를 바로 LUX단위로 변환하기는 어렵지만 대략적인 빛의 세기는 이와 같이 간단하게 측정할 수 있게 된다.

 

이와 같이 상황에 따라 저항값이 바뀌는 소자를 이용하여 여러 가지 센서가 가능한데, 예를 들어 온도변화에 따라 저항값이 바뀌는 소자를 이용한 온도센서 또는 토양의 수분의 양에 따라 바뀌는 두 전극사이의 저항값 변화를 이용한 토양수분센서 등이 있다.

 

 

 

아두이노와의 연결

 

 

위와 같이 Pin A 부분을 Analog Input 단자에 연결한다.

 

 

샘플프로그램

 


위 프로그램을 실행시키고 밝은 곳에서 어두운 곳으로 옮겨 보면  다음과 같이 900대의 수치에서 100대의 수치로 변화되는 것을 확인할 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

아두이노 나노는 아두이노 우노와 동일하게 ATMega328 MCU 칩을 사용하고 기능과 성능도 거의 동일하다. 나노 기종은 우노 기종에서의 핀소켓,중복핀,별도 전원단자 등을 생략해서 크기를 최소화 한것이다. 즉, 우노가 실습 편의를 위해 디자인 되었다면 나노 기종은 다른 장치에 쉽게 부착해서 사용할 수 있도록 크기를 최소화한 디자인이라 할 수 있다.

 

 

 

 

 

아두이노 NANO SPEC

 

Microcontroller ATmega328
Architecture AVR
Operating Voltage 5 V
Flash Memory 32 KB of which 2 KB used by bootloader
SRAM 2 KB
Clock Speed 16 MHz
Analog IN Pins 8
EEPROM 1 KB
DC Current per I/O Pins 40 mA (I/O Pins)
Input Voltage 7-12 V
Digital I/O Pins 22 (6 of which are PWM)
PWM Output 6
Power Consumption 19 mA
PCB Size 18 x 45 mm
Weight 7 g

 

 

보드의 구성

 

 

 

 

1) Mini USB 단자  : PC와 연결하여 전원도 공급하고 PC와의 통신을 통해 프로그램을 설치하거나 상태를 확인할 수 있는 단자이다. USB 단자 타입은 Mini 형이 기본이지마, 간혹 흔히 사용하는 Micro 타입으로 되어 있는 경우도 있다.

 

2) VIN : PC와 연결되지 않은 상태에서도 동작시키기 위한 전원단자로서 5 ~12V의 전압을 가해 주면 아두이노 나노 내부적으로 5V로 조절하여 사용된다. 

 

3) 디지털 I/O핀 D0~D13번
    - 디지털 신호 (HIGH는 LOW값)을 입출력하기 위한 핀들로서 각조 센서나 부품들을 연결할 수 있다.
     -D0번과 D1번은 기본 통신용으로 사용되므로 TX, RX로 표시되어 있으며,  D13핀은 내부LED와 연결되어 있어 초기 부팅시 등에 수시로 내부LED가  깜박일때 D13번핀에도 동일한 전류가 흐르므로 이를 감안하고 사용해야 한다.
 
4) 아날로그 Input핀  : 단순한 HIGH/LOW신호가 아닌 세분화된 값(0~1023)을 읽기 위한 핀으로서 저항값 형태로 측정되는 센서들을 연결할 때 주로 사용한다.  

 

4) 5V, 3.3V출력핀 : 연결되는 센서나 부품들에 전원을 공급하기 위한 단자.

 

5) Memory  : 프로그램제작용으로 사용할 수 있는 영역은 약30KB로서, 큰 용량은아니지만 웬만한 제어용 기기 제작용도로는 사용할 수 있다.  

 

 

 

상세 PIN LAYOUT


 

 

 

사용방법

 

- 아두이노 IDE에서 기본으로 사용가능하므로 별도의 보드메니저등을 설치할 필요는 없고, 툴메뉴 -> 보드를 선택해서 Arduino Nano를 선택하기만 하면 된다.

 

 

 

구매좌표 :

-해외 : 배송시간이 오래(2~3주) 걸리지만 가격이 싸다.

 

US $1.15 23% OFF|NANO V3.0 Controller Terminal Adapter Expansion Board NANO IO Shield Simple Extension Plate For Arduino AVR ATM

Smarter Shopping, Better Living! Aliexpress.com

www.aliexpress.com

 

국내 : 

https://link.coupang.com/a/j8fU7

 

아두이노 나노 Nano V3.0 호환보드(나노전용케이블 30cm 포함)

COUPANG

www.coupang.com

쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받을 수 있습니다.

 

 

아두이노 피지컬컴퓨팅 교구로 활용할 수 있는 실 생할용품 메이킹 프로젝트(워터맨IOT) 열세번째.

 

접속할 공유기의 명칭/암호는 사용하는 환경에 따라 달라지며 각종 IOT 클라우드 서비스의 키값들은 사용자가 바뀌면 그 사람의 고유키로 지정해 주어야 한다.

 

이러한 값들을 프로그램코드내에 직접 코딩해 놓으면 그 값이 바뀔 때마다 새로 코딩하고 컴파일하는 작업을 새로 해주어야 하기 때문에 매우 번거롭다. 따라서 변동가능한 ID,Password,각종 키값을 프로그램 수정작업 없이 간편하게 임의로 설정할 수 있는 기능을 구현해 본다.

 

 

설정기능 처리FLOW

 


 

설정기능 구현 샘플프로그램

 

 

 

 4 line:  EEPROM 영역을 메모리로 사용하기 위한 선언
16 line:  AP모드로 시작될 떄 사용할 SSID, 즉 스마트폰에서 이 이름의 공유기에 접속하여 설정작업을 하면 된다.
19~56 line:  EEPROM memory를 읽어 시작mode와 설정값을 set시키기 위한 함수
 21     line:  memory 0번지 값을 읽어 STA mode로 시작할 지 AP모드로 시작할 것인지 지정
25~46 line STA mode이고 설정 데이터가 있으면 이값을 읽어 SSID,Password,키값등으로 사용
57~89 line:  EEPROM memory에 각종 설정값을 기록하기 위한 함수
60      line:  다음번 기동시 STA mode로 시작할 수 있도록 0번지에 mode=1 값을 기록
63~82 line:  SSID,Password,키값등 현재값을 EEPROM 메모리에 기록
85~87 line:  EEPROM에 기록된 값을 다시 읽어 확인 
90~103 line: 웹서버로서 기능을 정의하는 함수. 즉 접속되면 다음과 같은 설정데이터 입력화면을 표시하기 위한 HTML 코드을 작성하여 응답한다.        


104~123 line: 웹서버의 기능을 정의하는 함수. 입력된 HTML Form에서 데이터를 추출하여 해당 데이터항목에 값을 교체한다.
121~122 line: EEPROM에 값을 기록하기 위한 함수를 callㅎ고 Device를 rebooting한다. 
124~134 line: Setting mode 버튼이 눌려졌을 떄 실행될 기능을 지정하는 함수
126~128 line: 다음번 기동될 떄 AP mode시작되도록 EEPROM에 mode=1을 기록
133      line:  Devide를 rebooting한다.
139~145 line: EEPROM에 mode=1로 지정되어 있으면 STA모드로 WIFI start
143~144 line: BtnSetting핀값이  FALLING될 때(0로 바뀔때,즉 버튼이 눌러졌을 때)를 감지하여 procSetting함수를 실행
146~157 line: EEPROM에 mode=0로 지정되어 있으면 AP모드로 WIFI start
 153  line: 웹서버 기능을 정의. 즉 /(root) url이 입력되면 procAProot 함수를 호출
 154  line: 웹서버 기능을 정의. 즉 /setting  url이 입력되면 procAPsetting 함수를 호출
 155  line: 웹서버 기능 begin

 

 

참조:EEPROM Memory( Device의 전원을 OFF해도 지워지지 않고 보존되는 memory) 사용방법

 

EEPROM.begin(xxx) :  xxxbyte를 사용하겠다고 선언
EEPROM.read(x);  x번지의 값을 읽어내기
EEPROM.write(x,y);  x번지 영역에 y라는 값을 보관.
EEPROM.commit();  실제로 EEPROM에 값을 저장. (write를 전부 한후 commit해주어야 기록)
EEPROM.end();  EEPROM 사용을 종료

 

 

+ Recent posts