วงจร

วิธีการสร้างหุ่นยนต์ - บทที่ 6: สร้างหุ่นยนต์ Arduino ที่สามารถตรวจสอบความหนาแน่นของ CO2: 11 ขั้นตอน

Faith Evans feat. Stevie J – "A Minute" [Official Music Video]

Faith Evans feat. Stevie J – "A Minute" [Official Music Video]

สารบัญ:

Anonim

นี่คือบทช่วยสอนที่ห้าของซีรี่ส์ "วิธีสร้างหุ่นยนต์" ในบทช่วยสอนนี้เราจะรวมแพลตฟอร์มหุ่นยนต์กับเซ็นเซอร์ CO2 เพื่อให้คุณสามารถตรวจจับความหนาแน่นของ CO2 ในบางพื้นที่

เช่นเดียวกับสี่บทเรียนสุดท้ายชุดหุ่นยนต์ Arduino (Pirate: 4WD Arduino ชุดหุ่นยนต์เคลื่อนที่พร้อมบลูทู ธ 4.0) ถูกนำมาใช้ที่นี่เป็นตัวอย่าง

เมนูบทเรียน:

บทที่ 1: บทนำ

บทที่ 2: สร้างหุ่นยนต์ Arduino พื้นฐาน

บทที่ 3: สร้างหุ่นยนต์ Arduino ติดตามสาย

บทที่ 4: สร้างหุ่นยนต์ Arduino ที่สามารถหลีกเลี่ยงอุปสรรค

บทที่ 5: สร้างหุ่นยนต์ Arduino ด้วยแสงและเสียงประกอบ

บทที่ 6: สร้างหุ่นยนต์ Arduino ที่สามารถตรวจสอบสภาพแวดล้อม

บทที่ 7: สร้างหุ่นยนต์ Arduino ที่ควบคุมบลูทู ธ

ส่วนประกอบฮาร์ดแวร์

เซ็นเซอร์ก๊าซ CO2 สำหรับ Arduino × 1

วัสดุ:

ขั้นตอนที่ 1:

เซ็นเซอร์สัมผัสดิจิตอล× 1

ขั้นตอนที่ 2:

โล่ปุ่มกดจอแอลซีดีสำหรับ Arduino × 1

ขั้นตอนที่ 3:

M3 * 6 มม. เสาไนลอนและแถบรัดสาย

ขั้นตอนที่ 4:

คำแนะนำการประกอบ:

ขั้นตอนที่ 1: เพิ่มเซ็นเซอร์สัมผัส

เซ็นเซอร์สัมผัสมีรูสองรูสำหรับยึดเสาไนลอน

แก้ไขคอลัมน์ไนล่อน โปรดอย่าบิดคอลัมน์เหล่านั้นมากเกินไป

ขั้นตอนที่ 5:

จากนั้นติดตั้งเซ็นเซอร์สัมผัสลงบนจาน

ขั้นตอนที่ 6:

ขั้นตอนที่ 2: เพิ่มหน้าจอ LCD

เลื่อนชายฝั่งเข้าในสี่หลุมของหน้าจอ LCD และแก้ไข ตัดส่วนที่เหลือของ tie-wraps

ขั้นตอนที่ 7:

ขั้นตอนที่ 3: เพิ่มเซ็นเซอร์ CO2

แก้ไขคอลัมน์ Nylon บนเซ็นเซอร์ CO2 ติดตั้งเซ็นเซอร์ CO2 บนแผ่นเซ็นเซอร์

ขั้นตอนที่ 8:

คุณเกือบเสร็จสิ้นการชุมนุม โปรดอย่าแก้ไขแผ่นบนลงบนแพลตฟอร์มเนื่องจากเราจำเป็นต้องทำงานกับการเชื่อมต่อวงจรในภายหลัง

ขั้นตอนที่ 9:

เชื่อมต่อฮาร์ดแวร์:

กรุณารักษาสายเคเบิลตามลำดับ

อินเทอร์เฟซมีสีดังนี้:

สีแดงหมายถึงพลังงาน

สีดำหมายถึงพื้นดิน

สีฟ้าหมายถึงขาอินพุตของอนาล็อก

สีเขียวหมายถึง Pin I / O ดิจิตอล

จอภาพ LCD ควรเชื่อมต่อกับ VCC, GND, SCL และ SDA ตามลำดับนั้น ๆ

ขั้นตอนที่ 10:

การเขียนโปรแกรม

ค้นหารหัสชื่อ DHT11_Display.ino และดาวน์โหลด อย่าลืมห้องสมุดสำหรับ LiquidCrystal_I2C และ CO2

ขั้นตอนที่ 11:

หลังจากดาวน์โหลดรหัสเรียบร้อยแล้วความหนาแน่นของ CO2 แบบเรียลไทม์จะแสดงบนหน้าจอ LCD เซ็นเซอร์สัมผัสมีสองฟังก์ชั่นที่นี่:

1. หากคุณไม่ได้สัมผัสเซ็นเซอร์หลังจากเวลาผ่านไปก็จะปิดโดยอัตโนมัติ

2. หากคุณต้องการเพิ่มเซ็นเซอร์เพิ่มเติมเพื่อตรวจสอบข้อมูลสิ่งแวดล้อมอื่น ๆ เซ็นเซอร์สัมผัสสามารถสลับข้อมูลการตรวจสอบบน LCD

รหัสห้องสมุดสรุปเป็นสิ่งสำคัญ เป็นการยากที่จะเข้าใจห้องสมุดที่ไม่มีห้องสมุด

#include #include

LiquidCrystal_I2C lcd (0x20,16,2);

#include "CO2.h"

CO2Sensor CO2ppm;

ที่นี่คุณต้องรู้เกี่ยวกับ CO2Pin ซึ่งเป็นตัวแปรที่ใช้ในการประกาศพินของเซ็นเซอร์

int CO2Pin = A1;

กล่าวคือ DHT11Pin แสดงถึง Analog Pin1 กล่าวคือเซ็นเซอร์ CO2 ของเราเชื่อมต่อกับ Analog Pin1

ต่อไปนี้คือการประกาศบางอย่างสำหรับตัวแปรเวลา TouchPin หมายถึงเซ็นเซอร์สัมผัสในขณะที่ 13 หมายถึงพินดิจิตอล

long currentMillis = 0;

ยาวก่อนหน้ามิลลิส;

ช่วงเวลาที่ยาวนาน = 4000;

int count = 0; // การนับตัวเลข

int touchPin = 13;

นำฟังก์ชั่นการตั้งค่า () ซึ่งเป็นการตั้งค่าสำหรับการเริ่มต้น

pinMode (touchPin, INPUT);

จากนั้นให้เซ็นเซอร์สัมผัสอยู่ในโหมดพิมพ์ สำหรับข้อมูลเฉพาะคุณสามารถตรวจสอบการอ้างอิง Arduino ในเว็บไซต์ Arduino (www.arduino.cc) ซึ่งมีการแนะนำฟังก์ชั่นของ pinMode ()

ถัดไปคุณต้องเริ่มต้นหน้าจอ LCD และเปิดไฟ LCD ซึ่งแสดงว่าหน้าจอ LCD พร้อมใช้งาน

lcd.init ();

lcd.backlight ();

ล่าช้า (100);

lcd.setBacklight (0);

ตอนนี้ถึงคราวฟังก์ชั่นการวนซ้ำ () ก่อนอื่นเราต้องอ่านค่าจากเซ็นเซอร์สัมผัสและเก็บข้อมูลเหล่านั้นด้วย touchState ตัวแปรเดียว

int touchState = digitalRead (touchPin);

จากนั้นตรวจสอบว่าคอนโทรลเลอร์จะรับสัญญาณ HIGH เมื่อคุณสัมผัสเซ็นเซอร์สัมผัสด้วยนิ้วของคุณหรือไม่ 1 จะถูกเพิ่มเข้าไปในการนับ

if (touchState == HIGH) {count ++; previousMillis = millis (); }

จำนวนครั้งนี้หมายถึงจำนวนครั้งที่คุณสัมผัสหน้าจอ แต่ถ้าคุณแตะเซ็นเซอร์เพียงครั้งเดียวปริมาณของเวลาสำหรับการแตะแต่ละครั้งจะถูกรวมไว้ในฟังก์ชั่นของมิลลิวินาที ()

เราเปลี่ยนระยะเวลาการสัมผัสด้วยประโยคย่อยที่เริ่มด้วยถ้า ช่วงเวลาที่นี่หมายถึงระยะเวลาสำหรับการสัมผัสที่เราตั้งค่า ดังนั้นเรารู้ว่าการกระทำใดจะต้องดำเนินการภายในสี่วินาทีของการสัมผัสและการสัมผัสมากกว่าสี่วินาทีตามลำดับ

if (currentMillis - previousMillis <Interval) {// ทำบางสิ่งใน 4 วินาที

อื่น {// ทำอะไรมากกว่า 4 วินาที}

lcd.setBacklight (0);

ฟังก์ชั่นของ setBacklight () ใช้สำหรับปิดไฟหน้าจอ LCD

จะต้องดำเนินการอย่างไรเมื่อเราสัมผัสเซ็นเซอร์มากกว่าสี่วินาที

หากเราสัมผัสเซ็นเซอร์นานกว่าสี่วินาทีเรารู้ว่าสามารถปิดไฟแบ็คไลท์ของ LCD ได้

การกระทำใดที่จะต้องดำเนินการภายในสี่วินาทีของการสัมผัส

ถ้า (นับ == 1) {// กดครั้งเดียวหน้าจอ LCD จะไม่แสดงความแตกต่างใด ๆ }

มิฉะนั้นถ้า (นับ == 2) {// แตะสองครั้งค่าจะปรากฏบนหน้าจอ LCD}

กดเซ็นเซอร์สัมผัสอีกครั้งภายในสี่วินาที หน้าจอจะยังคงปิดอยู่ เฉพาะเมื่อคุณสัมผัสสองครั้งในเวลาเดียวกันไฟแบ็คไลท์ LCD จะเปิดขึ้นและตัวเลขความหนาแน่นของ CO2 จะปรากฏขึ้น

โปรดจำไว้ว่าให้นับเป็นศูนย์หลังจากคุณสัมผัสเซ็นเซอร์เป็นครั้งสุดท้าย

นับ = 0;

ดังนั้นรหัสที่สมบูรณ์จะต้องเป็น:

if (count == 1) {lcd.setBacklight (0); }

อื่นถ้า (นับ == 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 (คอลัมน์, แถว) ใช้เพื่อแสดงให้เห็นว่าคอลัมน์และแถวที่เคอร์เซอร์จะแสดง, เริ่มต้นจากศูนย์ภายในวงเล็บ

lcd.print (CO2Value);

พิมพ์ () หมายถึงตัวเลขนี้สามารถแสดงบนหน้าจอโดยตรง

lcd.print ("");

lcd.print ("") หมายถึงพื้นที่ว่างที่แสดงบนหน้าจอ ใช้เพื่อล้างหน้าจอ

การรวมกันของเซ็นเซอร์หลายตัวคุณจะรวมเซ็นเซอร์สิ่งแวดล้อมหลายตัวเมื่อคุณซื้อเซ็นเซอร์บางชนิดได้อย่างไร

ไม่ต้องกังวล เราจะให้คุณแม่แบบการเข้ารหัสสำหรับการทดสอบเซ็นเซอร์หลายตัว คุณสามารถทำการปรับเปลี่ยนชุดค่าผสมได้โดยอ้างอิงจากเทมเพลตที่กล่าวถึง ในความเป็นจริงทฤษฎีนั้นเหมือนกับเซ็นเซอร์เดี่ยวยกเว้นว่ามีขั้นตอนสำหรับการเปลี่ยนแปลงของหน้าจอ LCD

การเข้ารหัสในสีแดงด้านล่างจะต้องมีการแก้ไข เราได้กล่าวไปแล้วว่าจำนวนครั้งนั้นหมายถึงจำนวนครั้งที่นิ้วสัมผัสกับเซ็นเซอร์ ดังนั้น count = 2 หมายความว่าเรากดสองครั้งแล้วมันจะแสดงตัวเลขสำหรับเซ็นเซอร์ตัวแรก ทำต่อไป! โปรดจำไว้ว่าคุณจะต้องนับศูนย์อีกครั้ง

รหัสตัวอย่าง:

if (currentMillis - previousMillis <Interval) {

if (count == 1) {lcd.setBacklight (0); }

อื่นถ้า (count == 2) {//No.1 เซนเซอร์ Sensor1Show (); lcd.backlight (); }

อื่นถ้า (นับ == 3) {//No.2 เซนเซอร์ Sensor2Show (); lcd.backlight (); count = 0; }

แน่นอนการเริ่มต้นการตั้งค่าการประกาศของตัวแปรที่จุดเริ่มต้นสำหรับเซ็นเซอร์เป็นสิ่งสำคัญ

คุณสามารถตรวจสอบรหัสตัวอย่างที่ชื่อ WeatherStation.ino เพื่อการอ้างอิงหากคุณยังไม่ทราบวิธีการแก้ไขรหัสของคุณ