- ส่วนประกอบที่จำเป็น:
- TCS3200 เซ็นเซอร์สีทำงาน
- Pinout ของ TCS3200 Color Sensor:
- แผนภูมิวงจรรวม
- คำอธิบายรหัส
ในโครงการนี้เราจะไปทำงานในความคิดโครงการนวัตกรรม Arduino ที่เราสามารถนับธนบัตรกระดาษและคำนวณปริมาณของพวกเขาโดยการตรวจจับเงินตรากระดาษโดยใช้เซนเซอร์ตรวจจับสีและ Arduino เซ็นเซอร์สี TCS230 จะใช้สำหรับตรวจจับธนบัตรสกุลเงินและ Arduino UNO สำหรับประมวลผลข้อมูลและแสดงยอดเงินคงเหลือบนจอ LCD 16x2
ส่วนประกอบที่จำเป็น:
- Arduino UNO
- TCS230 เซ็นเซอร์สี
- เซ็นเซอร์ IR
- เขียงหั่นขนม
- 16 * 2 LCD ตัวอักษรและตัวเลข
- การเชื่อมต่อสายไฟ
TCS3200 เซ็นเซอร์สีทำงาน
เซ็นเซอร์สี TCS3200 ใช้เพื่อตรวจจับสีที่หลากหลาย ก่อนหน้านี้เราได้เชื่อมต่อเซ็นเซอร์สี TCS3200 กับ Arduino และ Raspberry pi และยังสร้างโครงการที่มีประโยชน์บางอย่างเช่นเครื่องคัดแยกสี
เซ็นเซอร์ TCS230 มีไฟ LED อินฟราเรดในตัวซึ่งใช้ในการส่องสว่างวัตถุที่ต้องการตรวจจับสี สิ่งนี้ทำให้มั่นใจได้ว่าจะไม่มีผลกระทบของแสงรอบข้างภายนอกกับวัตถุ เซ็นเซอร์นี้อ่านโฟโตไดโอด 8 * 8 อาร์เรย์ซึ่งประกอบด้วย16 photodiodes กับฟิลเตอร์สีแดง 16 พร้อมด้วยฟิลเตอร์สีฟ้า 16 พร้อมด้วยฟิลเตอร์สีเขียวและ 16 photodiodes โดยไม่ต้องกรองใดอาร์เรย์เซ็นเซอร์แต่ละชุดในอาร์เรย์ทั้งสามนี้จะถูกเลือกแยกกันขึ้นอยู่กับข้อกำหนด ดังนั้นจึงเรียกว่า เซ็นเซอร์ที่ตั้งโปรแกรมได้ โมดูลนี้สามารถแสดงให้เห็นถึงสีที่เฉพาะเจาะจงและปล่อยให้สีอื่น ๆ ประกอบด้วยตัวกรองสำหรับวัตถุประสงค์การเลือกนั้น มีโหมดที่สี่เรียกว่า 'โหมดไม่กรอง' ซึ่งเซ็นเซอร์จะตรวจจับแสงสีขาว
สัญญาณเอาต์พุตของเซ็นเซอร์สี TCS230 เป็นคลื่นสี่เหลี่ยมที่มีรอบการทำงาน 50% และความถี่ของมันเป็นสัดส่วนกับความเข้มแสงของฟิลเตอร์ที่เลือก
Pinout ของ TCS3200 Color Sensor:
VDD- ขาจ่ายแรงดันของเซนเซอร์ มาพร้อมกับ 5V DC
GND- พินอ้างอิงกราวด์ของเซ็นเซอร์สี
S0, S1 - อินพุตการเลือกมาตราส่วนความถี่เอาต์พุต
S2, S3 - อินพุตการเลือกชนิดโฟโต้ไดโอด
OUT- ขาเอาต์พุตของเซ็นเซอร์สี
OE- เปิดใช้งานพินสำหรับความถี่เอาต์พุต
นอกจากนี้เรายังใช้เซ็นเซอร์ IR ในโครงการนี้ซึ่งสามารถเข้าใจการทำงานได้จากลิงค์ต่อไปนี้
แผนภูมิวงจรรวม
ด้านล่างนี้คือแผนภาพวงจรสำหรับArduino Money Counter:
ที่นี่ฉันได้สร้างโครงสร้างขนาดเล็กเช่นเครื่องรูดสกุลเงิน POS โดยใช้กระดาษแข็ง ในโครงสร้างนี้เซ็นเซอร์สีและเซ็นเซอร์ IR ได้รับการแก้ไขด้วยกระดาษแข็งดังที่แสดงในภาพด้านล่าง
ที่นี่เซ็นเซอร์ IR ใช้เพื่อตรวจจับการมีอยู่ของสกุลเงินภายในสล็อตและหากมีโน้ตเซ็นเซอร์สีจะตรวจจับสีของโน้ตและส่งค่าสีไปยัง Arduino และ Arduino จะคำนวณค่าสกุลเงินเพิ่มเติมตามสีของโน้ต
คำอธิบายรหัส
รหัสที่สมบูรณ์พร้อมกับวิดีโอสาธิตจะได้รับในตอนท้ายของบทความ นี่คือคำอธิบายทีละขั้นตอนของโค้ดที่สมบูรณ์ด้านล่าง
ขั้นแรกให้รวมไลบรารีทั้งหมดในโปรแกรม ที่นี่เราต้องการเพียงไลบรารี LCD เพื่อรวมอยู่ในโปรแกรม จากนั้นประกาศตัวแปรทั้งหมดที่ใช้ในโค้ด
# รวม
ภายใน การตั้งค่า () พิมพ์ข้อความต้อนรับบน LCD และกำหนดทิศทางข้อมูลทั้งหมดของหมุดดิจิทัลที่ใช้ในโครงการนี้ จากนั้นตั้งค่ามาตราส่วนความถี่เอาท์พุทของเซ็นเซอร์สีในกรณีของฉันมันถูกตั้งค่าเป็น 20% ซึ่งสามารถตั้งค่าได้โดยให้ชีพจรสูงเป็น S0 และชีพจรต่ำถึง S1
การตั้งค่าเป็นโมฆะ () {Serial.begin (9600); lcd.begin (16, 2); lcd.setCursor (0, 0); lcd.print ("Smart Wallet"); lcd.setCursor (0, 1); lcd.print ("วงจรย่อย"); ล่าช้า (2000); lcd.clear (); pinMode (2, เอาท์พุท); // S0 pinMode (3, เอาท์พุท); // S1 pinMode (11, เอาท์พุท); // S2 pinMode (12, เอาท์พุท); // S3 pinMode (13, INPUT); // OUT digitalWrite (2, สูง); digitalWrite (3, ต่ำ); }
ภายใน ลูป ไม่มีที่สิ้นสุด () อ่านข้อมูลทั้งหมดที่ส่งออกจากเซ็นเซอร์ เอาต์พุตจากเซ็นเซอร์ IR สามารถพบได้โดยการอ่านพิน A0 และความถี่สีของเอาต์พุตสามารถพบได้โดยการเรียกฟังก์ชันแต่ละฟังก์ชันที่เขียนว่า red (), blue () และ green () จากนั้นพิมพ์ทั้งหมดบน Serial monitor สิ่งนี้จำเป็นเมื่อเราต้องการเพิ่มสกุลเงินใหม่ในโครงการของเรา
เซ็นเซอร์ int = digitalRead (A0); int red1 = สีแดง (); int blue1 = สีน้ำเงิน (); int green1 = สีเขียว (); Serial.println (red1); Serial.println (blue1); Serial.println (green1); Serial.println ("-----------------------------");
จากนั้นเขียนเงื่อนไขทั้งหมดเพื่อตรวจสอบความถี่เอาต์พุตของเซ็นเซอร์สีด้วยความถี่อ้างอิงที่เราตั้งไว้ก่อนหน้านี้ หากตรงกันให้หักจำนวนเงินที่ระบุออกจากยอดคงเหลือในกระเป๋าสตางค์
ถ้า (red1> = 20 && red1 <= 25 && blue1> = 30 && blue1 <= 35 && green1> = 30 && green1 <= 35 && a == 0 && sensor == HIGH) {a = 1; } else if (เซ็นเซอร์ == LOW && a == 1) {a = 0; ถ้า (รวม> = 10) {lcd.setCursor (0, 1); lcd.print ("10 รูปี !!!"); รวม = ทั้งหมด -10; ล่าช้า (1500); lcd.clear (); }}
ที่นี่เราได้กำหนดเงื่อนไขสำหรับสี 10 รูปีและ 50 รูปีโน้ตคุณสามารถกำหนดเงื่อนไขเพิ่มเติมเพื่อตรวจจับไม่ได้มากขึ้น ของธนบัตรสกุลเงิน
หมายเหตุ:เอาต์พุตความถี่อาจแตกต่างกันในกรณีของคุณขึ้นอยู่กับการตั้งค่าแสงภายนอกและเซ็นเซอร์ ดังนั้นขอแนะนำให้ตรวจสอบความถี่เอาต์พุตของสกุลเงินของคุณและตั้งค่าอ้างอิงตามนั้น
รหัสด้านล่างนี้จะแสดงยอดเงินคงเหลือในกระเป๋าเงินบนจอ LCD 16x2
lcd.setCursor (0, 0); lcd.print ("ยอดรวม:"); lcd.setCursor (11, 0); lcd.print (รวม); ล่าช้า (1,000);
ฟังก์ชั่นต่อไปนี้จะได้รับความถี่สีเอาต์พุตของเนื้อหาสีแดงในสกุลเงิน ในทำนองเดียวกันเราสามารถเขียนฟังก์ชันอื่น ๆ เพื่อให้ได้ค่าสำหรับเนื้อหาสีฟ้าและสีเขียว
int สีแดง () {digitalWrite (11, LOW); digitalWrite (12, ต่ำ); ความถี่ = pulseIn (OutPut, LOW); ความถี่กลับ }
นี่คือวิธีที่ตัวนับเงินที่ใช้ Arduinoสามารถสร้างได้อย่างง่ายดายโดยใช้ส่วนประกอบไม่กี่ชิ้น เราสามารถแก้ไขเพิ่มเติมได้โดยการรวมการประมวลผลภาพและกล้องเข้าด้วยกันเพื่อตรวจจับสกุลเงินโดยใช้ภาพวิธีนี้จะมีความแม่นยำมากขึ้นและจะสามารถตรวจจับสกุลเงินใดก็ได้