이것은 '로봇을 만드는 방법'시리즈의 다섯 번째 자습서입니다. 이 튜토리얼에서는 로봇 플랫폼과 CO2 센서를 결합하여 특정 지역의 CO2 밀도를 감지 할 수 있습니다.
마지막 4 개의 튜토리얼과 마찬가지로 여기 Arduino 로봇 키트 (Pirate : 4WD Arduino Mobile Robot Kit with Bluetooth 4.0)가 예제로 사용됩니다.
강의 메뉴 :
수업 1 : 소개
2 단원 : 기본 Arduino 로봇 만들기
3 단원 : 라인 추적 Arduino 로봇 제작
4 단원 : 장애물을 피할 수있는 Arduino 로봇 제작
수업 5 : 빛과 소리 효과로 Arduino 로봇 만들기
6 단원 : 환경을 모니터링 할 수있는 Arduino 로봇 제작
7 단원 : Bluetooth로 제어되는 Arduino 로봇 만들기
하드웨어 구성 요소
Arduino 용 CO2 가스 센서 × 1
용품:
1 단계:
디지털 터치 센서 × 1
2 단계:
Arduino 용 LCD 키패드 쉴드 × 1
3 단계 :
M3 * 6MM 나일론 컬럼 및 타이 랩
4 단계 :
조립 지시 :
1 단계 : 터치 센서 추가
나일론 컬럼을 고정하기위한 터치 센서에는 두 개의 구멍이 있습니다.
나일론 기둥을 고정하십시오. 해당 열을 지나치게 꼬집지 마십시오.
5 단계 :
그런 다음 터치 센서를 플레이트에 부착하십시오.
6 단계 :
2 단계 : LCD 화면 추가
해안을 LCD 화면의 4 개의 구멍에 밀어 넣고 고정하십시오. 타이 랩 (tie-wrap)의 나머지 부분을 자릅니다.
7 단계 :
STEP3 : CO2 센서 추가
CO2 센서에 나일론 기둥을 고정하십시오. CO2 센서를 센서 플레이트에 부착하십시오.
8 단계 :
당신은 거의 조립을 완료합니다. 나중에 회로 연결을 위해 작업해야하므로 상부 판을 플랫폼에 고정하지 마십시오.
9 단계 :
하드웨어 연결 :
케이블을 정리하십시오.
인터페이스는 다음과 같이 색상이 지정됩니다.
빨간색은 전원을 나타냅니다.
검은 색은 땅을 나타냅니다.
파란색은 아날로그 입력 핀을 나타냅니다.
녹색은 디지털 I / O 핀을 나타냅니다.
LCD 모니터는 특정 순서로 VCC, GND, SCL 및 SDA에 연결해야합니다.
10 단계 :
코딩
DHT11_Display.ino라는 코드를 찾아 다운로드하십시오. LiquidCrystal_I2C 및 CO2 용 라이브러리를 잊지 마십시오.
11 단계 :
코드를 성공적으로 다운로드하면 실시간 CO2 농도가 LCD 화면에 표시됩니다. 터치 센서에는 두 가지 기능이 있습니다.
1. 잠시 후 센서를 만지지 않으면 자동으로 꺼집니다.
2. 다른 환경 데이터를 모니터링하기 위해 더 많은 센서를 추가하려면 터치 센서가 LCD의 모니터링 데이터를 전환 할 수 있습니다.
코드 구문 라이브러리는 중요합니다. 라이브러리가없는 라이브러리는 이해하기 어렵습니다.
#include #include
LiquidCrystal_I2C_cd (0x20, 16,2);
#include "CO2.h"
CO2 센서 또는 CO2ppm;
여기서 센서의 핀을 선언하는 데 사용되는 변수 인 CO2Pin에 대해 알아야합니다.
int CO2Pin = A1;
즉, DHT11Pin은 아날로그 Pin1을 나타냅니다. 즉, CO2 센서는 아날로그 핀 1에 연결됩니다.
다음은 시간 변수에 대한 몇 가지 선언입니다. TouchPin은 터치 센서를 나타내며 13은 디지털 핀을 의미합니다.
긴 currentMillis = 0;
긴 previousMillis;
긴 간격 = 4000;
int count = 0; // 숫자 세기
int touchPin = 13;
초기화를위한 설정 인 setup ()의 기능을 가져옵니다.
pinMode (터치 핀, 입력);
그런 다음 터치 센서를 유형 입력 모드로 유지합니다. 특정 정보를 얻으려면 pinMode ()의 기능을 소개하는 Arduino 웹 사이트 (www.arduino.cc)의 Arduino Reference를 확인하십시오.
그런 다음 LCD 화면을 초기화하고 LCD 표시등을 켜야합니다. 그러면 LCD 화면이 준비되었음을 알 수 있습니다.
lcd.init ();
lcd.backlight ();
지연 (100);
lcd.setBacklight (0);
이제는 loop () 함수로 돌아 간다. 먼저 터치 센서에서 값을 읽고 하나의 변수 인 touchState로 해당 데이터를 저장해야합니다.
int touchState = digitalRead (touchPin);
그런 다음 손가락으로 터치 센서를 터치 한 후 컨트롤러에 HIGH 신호가 수신되는지 확인하십시오. 1을 카운트에 더합니다.
if (touchState == HIGH) {카운트 ++; previousMillis = millis (); }
여기서 카운트 란 화면을 터치 한 횟수를 의미합니다. 그러나 센서를 한 번만 터치하면 각 터치의 시간이 millis () 함수에 포함됩니다.
if로 시작하는 서브 문장으로 터치 시간의 길이를 변경합니다. 여기서 간격은 우리가 만지는 접촉의 기간을 의미합니다. 따라서 우리는 4 초간의 접촉과 4 초 이상 만에 어떤 행동을 취해야하는지 알고 있습니다.
if (currentMillis - previousMillis <Interval) {// 4 초 안에 작업을 수행합니다.
else {// 4 초 이상 수행}
lcd.setBacklight (0);
setBacklight () 함수는 LCD 백라이트 램프를 끄는 데 사용됩니다.
4 초 이상 센서를 만질 때 어떤 행동을 취해야합니까?
센서를 4 초 이상 누르면 LCD 백라이트 램프를 끌 수 있습니다.
접촉의 4 초 이내에 어떤 행동을 취해야합니다.
if (count == 1) {// 원터치, LCD 화면에는 차이가 표시되지 않습니다.}
else if (count == 2) {// 두 번 터치하면 LCD 화면에 값이 표시됩니다}
4 초 이내에 터치 센서를 한 번 더 누르십시오. 화면은 여전히 꺼져 있습니다. 동시에 두 번 터치하는 경우에만 LCD 백라이트가 켜지고 CO2 농도 수치가 표시됩니다.
마지막으로 센서를 터치 한 후 카운트를 0으로 유지하십시오.
카운트 = 0;
따라서 완전한 코드는 다음과 같아야한다.
if (count == 1) {lcd.setBacklight (0); }
else if (count == 2) {lcd.backlight (); DustShow (); 카운트 = 0; }
그런 다음 우리는 이전 밀리와 비교할 수 있도록 현재 시간을 추적해야합니다. 이 점은 매우 중요합니다.
currentMillis = millis ();
CO2ppm.Read () 함수는 데이터를 읽는 데 사용됩니다. 변수 CO2Value는 CO2 센서의 데이터를 저장하는 데 사용됩니다.
int CO2Value = CO2ppm.Read (CO2Pin);
다음은 LCD 화면과 관련된 기능을 사용하는 방법입니다.
lcd.setCursor (0,0);
lcd.setCursor (0,1);
setCursor (column, row) 함수는 괄호 안에 0부터 시작하여 커서가 표시되는 열과 행을 보여줍니다.
lcd.print (CO2Value);
print ()는이 그림을 화면에 직접 표시 할 수 있음을 의미합니다.
lcd.print ( "");
lcd.print ( "")는 화면에 표시된 빈 공간을 의미합니다. 화면을 지우는 데 사용됩니다.
여러 센서의 조합 일단 어떤 종류의 센서를 구입하면 여러 환경 센서를 결합 할 수 있습니까?
걱정마. 여러 센서를 테스트하기위한 코딩 템플릿을 제공 할 것입니다. 언급 된 템플릿을 참조하여 조합을 조정할 수 있습니다. 사실, 이론은 단일 센서와 동일하지만 LCD 화면의 변경 단계가 있습니다.
아래의 빨간색 코드는 수정해야합니다. 손가락이 센서를 몇 번이나 터치했는지 언급하기 전에 언급했습니다. 따라서 count = 2는 두 번 눌렀다는 것을 의미하며 첫 번째 센서의 수치를 나타냅니다. 계속가! 카운트를 다시 제로로 유지한다는 것을 명심하십시오.
샘플 코드 :
if (currentMillis - previousMillis <Interval) {
if (count == 1) {lcd.setBacklight (0); }
else if (count == 2) {// No.1 Sensor Sensor1Show (); lcd.backlight (); }
else if (count == 3) {//No.2 Sensor Sensor2Show (); lcd.backlight (); 카운트 = 0; }
물론 초기 설정, 센서의 시작 부분에 변수 선언이 중요합니다.
WeatherStation.ino 샘플 코드에서 코드를 수정하는 방법을 모를 경우 참조 할 수 있습니다.