ข้ามไปที่เนื้อหาหลัก

เครื่อง ควบคุมพัดลมหันติดตามวัตถุแยกสี (สีแดง) (งานที่ 19)


เครื่อง ควบคุมพัดลมหันติดตามวัตถุแยกสี (สีแดง)

รูปที่ 1 วงจร
วงจรที่นำมาใช้งาน ประกอบด้วย
1. STM32F4 Discover
2. LCD Backlight
3. aMG USB Converter – N

2
รูปที่ 2 กล้องและพัดลมที่นำมาใช้งาน
กล้องที่นำมาใช้งาน เป็นกล้องเว็บแคม Webcam OKER (177) Silver/Black กับพัดลมยี่ห้อ Hatari
3
รูปที่ 3 มอเตอร์ที่นำมาใช้งาน
มอเตอร์ที่นำมาใช้งาน เป็นมอเตอร์ประเภท RC Servo motor ยี่ห้อ TowerPro MG995
ใช้ไฟประมาณ 5V 12A มีแรงบิดประมาณ 10kg/cm
5
รูปที่ 4 สวิตชิ่ง
สวิตชิ่งที่นำมาใช้มีแรงดันขนาน 5V 12A โดยจะนำไปใช้ขับมอเตอร์โดยตรง

ที่มาและความเป็นมาของโครงงาน
การใช้งานพัดลมในปัจจุบัน จะทำงานโดยที่ไม่สามารถรู้ตำแหน่งของผู้ใช้ได้ โดยปรกติทั่วไป พัดลมจะหันตามรอบเฟืองตัวหนอนจากมอเตอร์ แล้วขับไปที่แกนเหล็กเพื่อที่จะทำให้สามารถหมุนพัดลมได้
ผมได้ทดลองออกแบบพัดลมที่จะหันติดตามตัวบุคคลหรือวัตถุนั้นๆ โดยที่ให้กล้องจับเฉพาะสี โดยที่โครงงานตัวนี้ผมจะให้ตรวจจับวัตถุสีแดง หรือ บุคคลที่ใส่เสื้อหรือชุด ที่เป็นสีแดง แล้วให้ RC Servo Motor หมุนทำงานตามทิศทาง เพื่อที่จะทำให้พัดลมนั้นหันให้ได้ตรงตำแหน่งของวัตถุนั้นๆ
คุณสมบัติการทำงานของโครงงาน
  1. สามารถควบคุมมอเตอร์ RC Servo motor ด้วยกล้อง และ โปรแกรมได้
  2. สามารถติดตามวัตถุ หรือ บุคคล ที่ใส่ชุดเฉพาะสี (สีแดง) ได้ โดยสามารถแสดงผลออกมาทางหน้าจอได้ (สีขาว-ดำ)
  3. แสดงสถานะ PWM บนหน้าจอ LCD ได้
การต่อวงจรสำหรับวงจร ควบคุมพัดลมหันติดตามวัตถุแยกสี (สีแดง)
6
รูปที่ 5 วงจรสมบูรณ์
วงจรการต่อวงจรที่สมบูรณ์ของโครงงาน
          ส่วนที่ 1 ขาที่ใช้ของบอร์ด STM32F4 เป็นการเลือกขาของบอร์ด ที่เราจำเป็นต้องนำไปใช้งานในโครงงาน จะมีลูกศรชี้ขาที่ใช้ โดยมีขา PA1,PE7,PE8,PE9,PE12,PE13,PE14,PE15,PD8 และ PD9 โดยแต่ละขาใช้งานแต่ต่างกัน โดยขา PA1 เป็นขาที่จ่าย PWM ไปยังมอเตอร์ได้จึงได้เลือกขา PA1 มาใช้ ส่วนขาชุด PE7,PE8,PE9,PE12,PE13,PE14,PE15 เป็นขาที่ถูกกำหนดมาตั้งแต่เริ่มต้นจากบล็อกของ Waijung ส่วนขา PD8 และ PD9 คือขาที่ไว้เชื่อมต่อกับ USB Converter-N โดยทั้ง 2 ขานั้นได้ถูกกำหนดโดยบล็อกของ UART Setup
ส่วนที 2 aMG USB Converter-N เป็นการใช้งานในส่วนการรับส่งข้อมูลแบบตลอดเวลา เพื่อที่จะสามารถคำนวณจุดศูนย์กลางของสี และเชื่อมต่อกล้อง Web Cam จากคอมพิวเตอร์ โดยใช้ขาข้อมูล CLK/TX,MOSI/RX ของชุด A และขาไฟเลี้ยงตามลูกศร
ส่วนที่ 3 LCD Backlight มีไว้เพื่อที่จะเชื่อมต่อในการแสดง PWM ออกมาจากทางหน้าจอ LCD เพื่อที่จะได้ทราบค่า ว่าขณะนั้น PWM มีค่าเท่าไหร่ โดยจำเป็นที่จะต้องต่อขาสัญญาณทั้งหมดตามภาพและไฟเลี้ยง โดยที่จะต้องเชื่อมต่อกับบอร์ด STM23F4
ส่วนประกอบวงจรประกอบไปด้วย
  1. บอร์ด STM32F4-Discovery 2. USB Converter-N
  2. LCD Backlight 4×16 4. RC Servo Motor 5V 12A
  3. Web Cam 6. Switching Power Supply 5V 12A
โปรแกรม Simulink ที่สมบูรณ์ของโครงงาน
7
รูปที่ 6 โปรแกรม Simulink ในส่วนของ STM32F4-Discovery
8
รูปที่ 7 โปรแกรม Simulink ในส่วนของ USB Converter-N

รายละเอียดของบล็อกทั้งหมดที่ใช้ในโครงงาน
หมายเลข 1 เป็นการประกาศเพื่อกำหนด เลือกตัวคอมไพเลอร์ เบอร์ไมโครคอลโทรลเลอร์ที่จะทำการเขียน ความเร็วในการประมวลผมที่จะใช้ และ รูปแบบของการดาวน์โหลดโปรแกรมลงตัว ไมโครคอลโทรลเลอร์
หมายเลข 2 และ 3 เป็นการประการตัวแปรเพื่อจองพื้นที่หน่วยความจำภายในไมโครคอลโทรเลอร์เพื่อเก็บค่าต่างๆที่ใช้ในการแสดงผลออกทางหน้าจอ LCD
หมายเลข 4 เป็นการกำหนดค่าคงที่ในการแสดงผลให้แก่จอ LCD ซึ่งเป็นการกำหนดแถว บรรทัด แลจุดเริ่มต้นในการแสดงผล
หมายเลข 5 เป็นการส่งข้อมูลไปยังจอ LCD ในแต่ละบรรทัด
หมายเลข 6 เป็นการนำค่าที่ได้เก็บไว้ในตัวแปลส่งไปแสดงผลที่จอ LCD
หมายเลข 7 เป็นการประกาศการใช้ UART โดยในที่นี้ได้ประกาศเป็น USART_3
หมายเลข 8 เป็นการรับค่าจาก UART โดยที่นี้มีค่าเป็น Double เนื่องจากส่งข้อมูลได้รวดเร็วที่สุด
หมายเลข 9 เป็นการส่งค่าเป็น PWM ไปยังขา CH2 PA1 เพื่อที่จะนำไปขับ RC Servo Motor ต่อไป
หมายเลข 10 เป็นการส่งค่าไปยังจอ LCD เพื่อที่จะได้ทราบค่าว่าในขณะนั้นมีค่า PWM เท่าไหร่
หมายเลข 11 เป็นการประกาศตัวแปรว่าเป็น Host และใช้ COM3
หมายเลข 12 เป็นการนำเข้าภาพเคลื่อนไหวจากกล้อง Web Cam และแปลงค่าออกมาเป็น RGB
หมายเลข 13 เป็นการแปลงข้อมูลภาพจาก RGB ให้กลายเป็น HSV เพื่อที่จะนำไปใช้งานต่อไป
หมายเลข 14 เป็นการแปลงค่าจาก 0 – 1 ให้กลายเป็น 0 – 255 เพื่อที่จะทำให้ค่านั้นละเอียดขึ้น ซึ้งสามารถนำไปแยกเป็นช่วงของสีต่างๆได้
หมายเลข 15 เป็นการสร้างเงื่อนไขในการส่งข้อมูลไปยังบล็อกถัดไป โดยในส่วนของ H นั้น จะกำหนดให้อยู่ในระหว่าง 220 – 20
หมายเลข 16 เป็นการรวมข้อมูลจากทั้ง 2 หรือ 3 เงื่อนไขก่อนหน้าโดยใช้ AND โดยที่ในส่วนของ H นั้นต้องใช้ 2 ตัวเนื่องจากต้องกำหนดในช่วง 220 – 255 และ 0 – 20 โดยที่ต้องแยกเป็น 2 ทางในการรวมข้อมูล
หมายเลข 17 เป็นการรวมข้อมูลจาก H ที่ผ่านการ AND มาแล้วก่อนหน้า โดยขั้นตอนนี้นั้นจำเป็นต้องใช้การ OR เพื่อที่จะไม่ให้ข้อมูลทับกัน
หมายเลข 18 เป็นการแปลงข้อมูลให้อยู่ในรูปของ single เพื่อที่จะนำไปใช้ในบล็อกถัดไป
หมายเลข 19 เป็นการกรองข้อมูลจากบล็อกก่อนหน้าเพื่อที่จะนำไปใช้งานต่อไป
หมายเลข 20 เป็นการแสดงรูปภาพหลังจากที่กรองข้อมูลออกมาจากทางหน้าจอคอมพิวเตอร์
หมายเลข 21 เป็นการแปลงค่าเป็น Boolean เพื่อที่จะสามารถนำไปใช้ใน Blob Analysis
หมายเลข 22 เป็นการสร้างเงื่อนไขโดยกำหนดให้หาจุดศูนย์กลาง (Centroid) ของภาพสีขาว
หมายเลข 23 เป็นการแสดงค่าในรูปแบบของ Display และแสดงบนโปรแกรมเป็นค่าในรูปของแกน X และแกน Y
หมายเลข 24 เป็นการแยกข้อมูลออกมาให้อยู่ในรูปข้อมูลเดี่ยว โดยจะส่งไปที่ Display
หมายเลข 25 เป็นการจ่าย Pulse ไปยัง state-flow

โปรแกรม Simulink ที่ใช้ทั้งหมดในโครงงาน
โปรแกรมที่ใช้ในบอร์ด STM32F4-Discovery
การใช้โปรแกรม Matlab เขียนโค้ดบน Simulink ของเครื่อง ควบคุมพัดลมหันติดตามวัตถุแยกสี (สีแดง) ได้ทำการใช้บล็อก UART Rx เพื่อที่จะทำการรับค่าแบบตลอดเวลาจาก aMG USB Converter-N ของบล็อก Host Serial Tx และนำไปแสดงผลผ่าน LCD Backlight เพื่อที่จะแสดงค่า PWM แล้วส่งค่าไปยังมอเตอร์ เพื่อให้มอเตอร์ทำงานตามตำแหน่งที่ต้องการ
โปรแกรมที่ใช้ในบอร์ด aMG USB Converter-N
ในส่วนของโปรแกรมในส่วนนี้ จะทำงานร่วมกับกล้อง Web Cam เพื่อที่จะนำมาแยกสีให้เป็น HSV โดยเลือกในส่วนของ H และนำไปยัง Gain เพื่อทำการขยายค่าให้เป็น 0 ถึง 255 ซึ่งค่า H จากสีที่แยกออกจาก HSV ที่ได้จะต้องกำหนดค่าของสีในแต่ละช่วง โดยสีแดงนั้นจะอยู่ในช่วง 220 ถึง 20 เนื่องจากไม่สามารถกำหนดค่าในบล็อก AND ตัวเดียวได้ จำเป็นต้องกำหนดมี 2 ช่วงคือ 220 ถึง 255 และ 0 ถึง 20 แล้วถึงจะนำมา OR กันในบล็อกถัดไป เพื่อต้องการให้เกิดภาพขึ้นนั้น จำเป็นต้องใช้ S และ V เพื่อที่จะทำให้ภาพสมบูรณ์ จำเป็นต้องเข้าไปยัง Gain เช่นกัน แล้วถึงนำผล HSV ทั้ง 3 มา AND กัน หลังจากนั้นให้แปลงค่าอยู่ในลักษณะ Single เพื่อที่จะนำมากรองข้อมูลผ่าน Filter หลังจากนั้นจำเป็นต้องแปลงค่าให้อยู่ในลักษณะ Boolean เพื่อที่จะนำค่าไปใช้ใน Blob Analysis เพื่อจะกำหนดเงื่อนไขให้ข้อมูลออกมาเป็นจุดศูนย์กลางของรูปภาพในลักษณะของสีขาว โดยจะแสดงผลออกมาจากทางหน้าจอคอมพิวเตอร์ หลังจากนั้นนำไปแยกเป็น 2 ส่วนคือ แกน X และ Y โดยพัดลมนั้นปรกติสามารถหันซ้ายหรือขวาได้เท่านั้น จึงไม่จำเป็นต้องใช้แกน Y จึงนำแกน X มาใช้เพียงอย่างเดียว แล้วเข้าไปยัง State-Flow และส่งค่าไปยัง Host Serial Tx เพื่อที่จะควบคุมมอเตอร์ต่อไป

การเขียน State-flow
9
รูปที่ 8 บล็อก State-Flow

หน้าที่ของ State-Flow คือการสร้างเงื่อนไขในลักษณะของ if-else เพื่อเป็นตัวกำหนดให้พัดลม หันไปยังทิศทางไหน โดนจะมีสัญญาณเข้า 2 ตัวคือ ตัวที่ 1 Tamp เป็นการรับข้อมูลเข้ามาในบล็อก ส่วนตัวที่ 2 เป็นการกำหนดการทำงานของ State-Flow ให้เป็นจังหวะ โดยกำหนดให้ทำงานทั้งในช่วงของขอบขาขึ้นและขอบขาลง
10
รูปที่ 9 การเขียนโค้ด State-Flow
                เริ่มต้นการทำงานด้วยการกำหนดค่าเริ่มต้นของ PWM ที่ 7.8 แล้วส่งค่าไปยังสายต่างๆ โดยที่รับค่ามาจากกล้อง ผ่านการวัดจัดศูนย์กลางของรูป แล้วได้ค่าแกน X มา โดยจะจำแนกไว้ 2 กรณี คือ
  1. ถ้าแกน X มีค่ามากกว่า 160 จะให้ส่งสัญญาณต่อไป โดยที่จำแนกอีกครั้งว่า PWM ที่มีอยู่นั้นมีค่าน้อยกว่า 11.3 จะทำให้ PWM เพิ่มขึ้นทีละ 0.1 และถ้า PWM มีค่าเท่ากับ 11.4 แล้วจะไม่ให้ทำงานต่อ
  2. ถ้าแกน X มีค่าน้อยกว่าหรือเท่ากับ 160 จะให้ส่งสัญญาณต่อไป โดยจำแนกอีกครั้งว่า PWM ที่มีอยู่นั้นมีค่ามากกว่า 4.1 จะทำให้ PWM ลดลงทีละ 0.1 และถ้า PWM มีค่าเท่ากับ 4 แล้วจะไม่ให้ทำงานต่อไป
หลักการทำงานของ ควบคุมพัดลมหันติดตามวัตถุแยกสี (สีแดง)
                เมื่อมีวัตถุหรือบุคคลที่ใส่ชุดสีแดง จะทำให้กล้องตรวจจับแล้วนำไปแปลงค่าออกมาเป็นภาพขาว-ดำ โดยเมื่อมี วัตถุหรือบุคคลที่ใส่ชุดสีดังกล่าว จะทำให้กล้องสั่งการไปยังคอมพิวเตอร์และไปยังมอเตอร์ เพื่อที่จะควบคุมตำแหน่งในการตรวจจับสีนั้นๆโดยรับค่าจุด Centroid จากแกน X โดยกำหนดค่าสีของ H จากสีที่แยกออกมาอยู่ในรูปแบบ HSV

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

HSV (Hue-Saturation-Value) จะมีการแยกความสว่างของภาพ (Luminance) ออกจากข้อมูลสี (Chromaticity) ทำให้สามารถเปรียบเทียบค่าสีได้ง่าย โดยผลลัพธ์ที่ได้ H คือค่าสีบริสุทธิ์ S คือค่าแสงผสมกับค่าสีบริสุทธิ์ และ V คือค่าความสว่างของภาพ
11
รูปที่ 10 สีของ SHV
อุปกรณ์หลักที่ใช้ในการทำงาน
  1. Switching Power Supply 5V 12A เพื่อใช้เลี้ยงมอเตอร์
  2. เสียบ USB ที่เชื่อมต่อกับกล้อง
  3. เสียบ USB ที่เชื่อมต่อกับ aMG USB Converter-N เพื่อที่จะรับข้อมูลและส่งไปยัง STM32F4 ต่อไป
ผลการทดลอง
1.เมื่อมีบุคคลใส่ชุดสีแดงยืนอยู่ตรงกลาง (เริ่มต้น)
12
รูปที่ 11 เมื่อบุคคลอยู่ตรงกลางของกล้อง
2.เมื่อมีบุคคลใส่ชุดสีแดงยืนอยู่ทางขวาของพัดลม (เริ่มหัน)
13
รูปที่ 12 เมื่อบุคคลย้ายมาทางขวาของพัดลม/กล้อง
ขณะที่พัดลมกำลังหัน
3.เมื่อมีบุคคลใส่ชุดสีแดงยืนอยู่ทางขวาของพัดลม (หันเสร็จแล้ว)
14
รูปที่ 13 เมื่อพัดลมหันหาบุคคลจนสุดแล้ว

4.เมื่อมีบุคคลใส่ชุดสีแดงยืนอยู่ทางซ้ายของพัดลม (เริ่มหัน)
15
รูปที่ 15 เมื่อบุคคลย้ายมาทางซ้ายของพัดลม/กล้อง
ขณะที่พัดลมกำลังหัน
5.เมื่อมีบุคคลใส่ชุดสีแดงยืนอยู่ทางซ้ายของพัดลม (หันเสร็จแล้ว)
16
รูปที่ 16 เมื่อพัดลมหันหาบุคคลจนสุดแล้ว
PCB ที่สมบูรณ์ของโครงงาน
17
รูปที่ 17 PCB ที่สมบูรณ์ของโครงงาน

Link Youtube:VDO การสาธิตการทดลอง

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

การเขียนผังงาน (Flowchart)

โครงงานเรื่อง ล้อวัดระยะทางด้วย Encoder (งานที่ 17)

(บล็อกที่ 9). code รถบังคับจากแผ่นซีดี ควบคุมด้วยแอพแอนดรอยด์