Điều khiển xe robot bằng giọng nói với raspberry pi

75 70 0
Điều khiển xe robot bằng giọng nói với raspberry pi

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Trong những năm qua, khoa học máy tính và xử lý thông tin có những bướctiến vượt bậc và ngày càng có những đóng góp to lớn vào cuộc cách mạng khoa họckỹ thuật hiện đại. Đặc biệt sự ra đời và phát triển nhanh chóng của kỹ thuật số làmcho ngành điện tử trở nên phong phú và đa dạng hơn. Nó góp phần rất lớn trongviệc đưa kỹ thuật hiện đại thâm nhập rộng rãi vào mọi lĩnh vực của hoạt động sảnxuất, kinh tế và đời sống xã hội. Từ những hệ thống máy tính lớn đến những hệthống máy tính cá nhân, từ những việc điều khiển các máy công nghiệp đến cácthiết bị phục vụ đời sống hằng ngày của con người. Trong các hệ thống đó, việctrao đổi thông tin là vô cùng quan trọng. Công nghệ truyền tin trước đây bàn phímvà thậm chí thông qua màn hình cảm ứng. Tất cả các thiết bị này đòi hỏi một số loạitiếp xúc vật lý để vận hành chúng.Với hang thập kỹ qua thì công nghệ xử lý thôngtin ngày càng được nân cao. Một loại thông tin đầu vào ra đời đó là xử lý giọng nói.Đồ án này trình bày kết quả nghiên cứu điều khiển xe robot bằng giong nói sửdụng kít Rasberry pi 3 tương tác với 2 phần mềm đó là Microsoft windows 10 Iotcore và Microsoft visual studio 2017.hiện nay. Nó mang lại rất nhiều lợi ý cho con người trong vấn đề di chuyển và điềukhiển mọi vật không chỉ là xe

MỤC LỤC Trang bìa I Nhiệm vụ đồ án II Lịch trình III Cam đoan IV Lời cảm ơn V Mục lục VI Liệt kê hình vẽ VII Liệt kê bảng vẽ …………………………………….…………………………… VIII Tóm tắt IX CHƯƠNG TỔNG QUAN 1.1.Đặt vấn đề 1.2.Mục tiêu 1.3.Nội dung nghiên cứu 1.4.Giới hạn 1.5.Bố cục CHƯƠNG CƠ SỞ LÝ THUYẾT 2.1.Tổng quan xe robot điều khiển giọng nói……………………………5 2.1.2 Ưu điểm xe robot điều khiển giọng nói 2.2 Giới thiệu phần cứng 2.2.1 Giới thiệu Raspberry Pi 2.2.2 Hệ điều hành phần mềm 15 2.2.3 Mạch công suất cầu H (L298N)………………………………… ………14 2.2.4 Cảm biến siêu âm 17 2.2.5 Board Arduino 20 2.2.6 USB Sound Card 21 2.2.7 Micro không dây Daile V10 24 2.2.8 Động DC 26 2.2.9 Led Matrix 8x8 MAX7219 26 CHƯƠNG TÍNH TỐN VÀ THIẾT KẾ 27 3.1 Giới thiệu 28 3.2 Tính toán thiết kế hệ thống 28 3.2.1 Thiết kế sơ đồ khối hệ thống 32 3.2.2 Sơ đồ nguyên lý toàn mạch 32 CHƯƠNG THI CÔNG HỆ THỐNG 44 4.1 Giới thiệu 44 4.2.Thi công hệ thống 44 4.2.1.Chuẩn bị phần cứng 44 4.2.2 Lắp ráp kiểm tra 45 4.3 Lập trình hệ thống 54 4.3.1 Lưu đồ hệ thống điều khiển xe robot giọng nói 54 4.3.2 Phần mềm lập trình visual studio 2017 55 CHƯƠNG KẾT QUẢ_NHẬN XÉT_VÀ ĐÁNH GIÁ 60 5.1 Cảm biến 61 5.2.Bộ điều khiển động 62 5.3.Bộ vi điều khiển 63 5.4.Kết đạt được…………………………………………………………………63 CHƯƠNG KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN…………………67 6.1 Kết luận …………………………………………………………………… 67 6.2 Những hạn chế đề tài……………………………………………………67 6.3 Hướng phát triển…………………………………………………………….67 TÀI LIỆU THAM KHẢO PHU LỤC LIỆT KÊ HÌNH VẼ Hình Trang Hình 2.1 Hình ảnh xe robot điều khiển giọng nói… Hình 2.2 Bo mạch Raspberry Pi Hình 2.3 Sơ đồ cấu tạo Raspberry Pi .7 Hinh 2.4 Sơ đồ chân GPIO Raspberry pi…………………… ……… Hình 2.7 Hệ điều hành SNAPPY ………… ……………….…………… …… 11 Hình 2.10 Module mạch cầu H L298N……………………………………………14 Hình 2.11 Sơ đồ nguyên lý L298N 15 Hình 2.16 Phản xạ sóng siêu âm theo góc 20 Hình 2.17 Vùng phát SRF04 20 Hình 2.18 Board Arduino Mega 2560 20 Hình 2.19 Hình ảnh vi điều khiển board Arduino Mega 2560 21 Hình 2.20.Hình ảnh chân ngõ vào/ra board Arduino Mega 2560………… …21 Hình 2.23 Động DC GA25 26 Hình 2.24 Module Led Matrix 8x8 MAX7219 27 Hình 3.1 Sơ đồ khối hệ thống 28 Hình 3.2 Sơ đồ nguyên lý mạch nguồn 29 Hình 3.3 Sơ đồ nguyên lý mạch hạ áp 30 Hình 3.4 Sơ đồ chân Raspberry pi 30 Hình 3.5 Sơ đồ nguyên lý Module điều khiển động L298N 31 Hình 3.6 Sơ nguyên lý Module Cảm biến Siêu âm SRF04 31 Hình 3.7 Sơ đồ ngun lý Tồn mạch 32 Hình 3.8 Sơ đồ kết nối Raspberry pi với module điều khiển động L298N … 33 Hình 3.9 Sơ đồ kết nối module Cảm biến siêu âm với Raspberry pi 33 Hình 4.1 động bánh xe 45 Hình 4.2 khung xe robot 45 Hình 4.3 Pin dự phòng 5v 46 Hình 4.5 Pin cell 3.7v 47 Hình 4.6 Mạch giảm áp DC-DC 47 Hình 4.7 Module led matrix 47 Hình 4.8 Hình ảnh Srf04……….…….48 họa kết nối sai Raspberry pi với Hình 4.9 Hình ảnh minh họa kết nối Raspberry pi với Srf04 48 Hình 4.10 Mạch cầu phân áp 49 Hình 4.11 Hình ảnh thực tế kết nối raspberry pi với module SRF04 50 Hình 4.12 Hình ảnh thực tế kết nối raspberry pi với module L298N 50 Hình 4.13 Mơ hình thực tế xe robot phía trước 51 Hình 4.14 Mơ hình thực tế xe robot phía sau 52 Hình 4.16 Giao diện đăng nhập Windows 10 IoT Core web 55 Hình 4.18 Giao diện kết nối Windows 10 IoT Core qua PowerShell 56 Hình 4.20 Giao diện điều khiển Windows 10 IoT Core qua PowerShell 57 LIỆT KÊ BẢNG Bảng Trang Bảng 4.2.Bảngso sánh vài thuộc tính hệ điều hành Windows………… 58 TĨM TẮT Trong năm qua, khoa học máy tính xử lý thơng tin có bước tiến vượt bậc ngày có đóng góp to lớn vào cách mạng khoa học kỹ thuật đại Đặc biệt đời phát triển nhanh chóng kỹ thuật số làm cho ngành điện tử trở nên phong phú đa dạng Nó góp phần lớn việc đưa kỹ thuật đại thâm nhập rộng rãi vào lĩnh vực hoạt động sản xuất, kinh tế đời sống xã hội Từ hệ thống máy tính lớn đến hệ thống máy tính cá nhân, từ việc điều khiển máy công nghiệp đến thiết bị phục vụ đời sống ngày người Trong hệ thống đó, việc trao đổi thông tin vô quan trọng Công nghệ truyền tin trước bàn phím chí thơng qua hình cảm ứng Tất thiết bị đòi hỏi số loại tiếp xúc vật lý để vận hành chúng.Với hang thập kỹ qua cơng nghệ xử lý thông tin ngày nân cao Một loại thơng tin đầu vào đời xử lý giọng nói Đồ án trình bày kết nghiên cứu điều khiển xe robot giong nói sử dụng kít Rasberry pi tương tác với phần mềm Microsoft windows 10 Iot core Microsoft visual studio 2017 Nó mang lại nhiều lợi ý cho người vấn đề di chuyển điều khiển vật không xe CHƯƠNG TỔNG QUAN CHƯƠNG TỔNG QUAN 1.1.ĐẶT VẤN ĐỀ Nhận dạng giọng nói có nghĩa dịch từ nói sang văn bảng tương đương Có thể chia làm phần sau : xử lý tín hiệu giải mã giọng nói Xe điều khiển giọng nói đề tài nhiều người quan tâm loại xe ta phải điều khiển thông qua tiếp xúc vật lý để điều khiển được, xe điều khiển giọng nói ta khơng cần thơng qua vật trung gian mà điều khiển trực tiếp giọng nói Vơ tiện lợi Với hàng thập kỷ qua cơng nghê có đột biến so với công nghệ cũ.Các thiết bị không dây bắt đâu đời làm cho thứ trở nên đơn giản Và với nâng cao phần mềm phần cứng loại đầu vào đời : tín hiệu giọng nói Điều khiển giọng nói (nói chung), xe điều khiển giọng nói (nói riêng) xu hướng phát triển tương lại Và nghành công nghiệp mạnh Điều khiển giọng nói ứng dụng rộng rãi xe oto, nhà điều khiển giọng nói điểu khiến điện thoại Hiện Việt Nam cộng nghệ điều khiển giọng nói chưa phát triển nhiều nước Nhưng đặc biệt điều khiển xe giọng nói chế tạo xe lăn điều khiển giọng nói dành cho người bị khuyết tay lẫn chân.Ý tưởng bạn Khánh Đạt nghiên cứu thực giành giải thi khoa học kỹ thuật cấp quốc gia Hiện sản phẩm nâng cấp cải tiến để giúp đỡ người khuyết tật việt Nam Còn vài nghiên cứu khác “ Ngơi nhà thơng minh điều khiển giọng nói “ nghiên cứu phát triển công ty lumy việt nam “ Điều khiển thiết bị giọng nói” Trên giới điều khiển giọng nói xu thay loại điều khiển khác tương lai Hiên có nhiều nước nghiên BỘ MƠN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH CHƯƠNG TỔNG QUAN cứu phát triển cộng nghệ Đầu năm 2018 CES cho đời bồn cầu đa điều khiển giọng nói, TV LG điều khiển giọng nói, iphone Samsung phát triển công nghệ điều khiển giọng nói lên điện thoại hãng điện thoại lớn giới 1.2.MỤC TIÊU v Đề tài có mục tiêu sau : - Điều khiển xe robot chạy tiến ,lùi ,trái phải - Sử dụng cảm biến siêu âm trước để tránh vật cản - Sử dụng ardiuno làm mắt led ma trận cho xe - Viết chương trình điều khiển cho kit raspberry pi - Thi cơng mơ hình xe robot - Sản phẩm cuối chạy thực tế 1.3.NỘI DUNG NGHIÊN CỨU v Đề tài điều khiển xe robot giọng nói với raspberrypi có nội dung sau: - NỘI DUNG 1: Thu thập liệu quy trình thiết kế hệ thống điều khiển xe giọng nói - NỘI DUNG 2: Các giải pháp thiết kế hệ thống, mơ hình điều khiển xe giọng nói - NỘI DUNG 3: Lựa chọn thiết bị việc thiết kế mơ hình điều khiển xe giọng nói - NỘI DUNG 4: Viết chương trình thiết kế hệ thống điều khiển - NỘI DUNG 5: Thiết kế mơ hình - NỘI DUNG 6: Đánh giá kết thực 1.4.GIỚI HẠN v Đề tài hệ thống điều khiển xe giọng nói có giới hạn bao gồm: - Vấn đề phát âm khác biệt cần giọng nói chuẩn để điều khển xe BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH CHƯƠNG TỔNG QUAN - Hiện nhóm điều khiển xe ngơn ngữ tiếng anh - Chẫm trễ khâu xử lý giọng nói nên điều khiễn tiếp nhận trễ - Vì điều kiện kinh tế không cho phép nên micro nhận dạng khoảng 1m3m 1.5.BỐ CỤC v Nội dung đề tài gồm phần sau: Chương 1: Tổng quan - Đặt vấn đề - Mục tiêu đề tài - Nhiệm vụ đề tài - Giới hạn Chương 2: Cơ sở lý thuyết - Giới thiệu hệ điều hành raspberry pi - Giới thiệu Board mạch raspberry pi - Giới thiệu mạch công suất L298N - Giới thiệu mạch cảm biến siêu âm Chương 3: Tính tốn thiết kế - Giới thiệu phần mềm lập trình - Viết chương trình giao tiếp - Kết lập trình Chương 4:Thi cơng hệ thống - Thiết kế phần cứng - Giới thiệu linh kiện sử dụng thiết kế - Mơ hình xe robot - Giao tiếp thiết bị điều khiển mơ hình Chương 5: Kết Quả, Nhận Xét Đánh Giá - Cảm biến BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH CHƯƠNG TỔNG QUAN - Bộ điều khiển động - Bộ vi điều khiển - Kết đạt Chương 6: Kết luận hướng phát triển - Kết luận - Những hạn chế đề tài - Hướng phát triển BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH CHƯƠNG CƠ SỞ LÝ THUYẾT CHƯƠNG 2.CƠ SỞ LÝ THUYẾT 2.1.TỔNG QUAN VỀ XE ROBOT ĐIỀU KHIỂN BẰNG GIỌNG NÓI 2.1.1 Định nghĩa xe robot điều khiển giọng nói Xe robot điều khiển giọng nói (tiếng Anh:speech controlled car robot) tí hiệu tiếng nói qua micro xử lý nhận dạng kit raspberry pi sau phát tín hiệu điều khiển mạch công suất Mạch công suất mạch cầu H điều khiển động chạy theo tiếng nói mà nói v Một xe robot điều khiển giọng nói , thường bao gồm tính năng: - Xe chay tới, lui, qua trái, qua phải, đướng lại - Xe gặp vật cản đứng lại H nh 2.1 Hình ảnh xe robot điều khiển giọng nói 2.1.2 Ưu điểm xe điều khiển giọng nói Xe điều khiển giọng nói có ưu điểm không cần thông qua tiếp xúc vật lý để điều khiển thiết bị BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH CHƯƠNG KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN CHƯƠNG KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 6.1.KẾT LUẬN - Nắm rõ giao tiếp Raspberry pi với SRF04 giúp cho xe phát vật cản - Nắm rõ giao tiếp Raspberry pi với L298 giúp cho hệ thống xe điều khiển động chạy thuận hay chạy nghịch - Xử lý tín hiệu giọng nói giúp điều khiển hệ thống thơng qua giọng nói người điều khiển - Nhúng chương trình ARM vào Raspberry pi - Hiểu hệ điều hành win 10 Iot core , Hệ điều hành win 10 Iot core tích hợp nhiều ứng dụng Trong ứng dung xử lý âm dự mã nguồn mở giúp cho nhóm thực đề tài điều khiển xe giọng nói - Nhóm hồn thành đề tài khoảng 95% với muchj đích đề - Sản phẩm nhóm chạy ổn định va mơ hình xe đẹp mắt 6.2 NHỮNG HẠN CHẾ CỦA ĐỀ TÀI - Tín hiệu điều khiển tiếng anh - Cịn nhiễu tín hiệu nhiều - Đây la vần đề nhóm chưa làm 6.3.HƯỚNG PHÁT TRIỂN 6.3.1 Hướng khắc phục cách hạn chế đề tài - Tín hiệu điều khiển tiếng việt - Sử dụng thiết bị thu nhận âm tốt để lọc nhiễu tiếng ồn tốt 6.3.2 Hướng phát triển tương lai - Nhóm phát triển thành hệ thống xe lăn điều khiển giọng nói - Phát triển hệ thống người robot làm việc điều khiển giọng nói BỘ MƠN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 55 TÀI LIỆU THAM KHẢO TÀI LIỆU THAM KHẢO [1] Đồn Văn Ban, phân tích thiết kế hướng đối tượng, NXB Khoa học Kỹ thuật.1999 [2] Cộng đồng Microsoft,Trang web www.support.microsoft.com [3] Nguyễn Việt Hùng, Nguyễn Ngơ Lâm, Nguyễn Văn Phúc, Giáo trình Kỹ thuật truyền số liệu, Trường ĐH Sư Phạm Kỹ Thuật, 9.2011 [4] Ivar Jacobson Object – Oriented Software Engineering, Addison-Wesley Publishing Company, 1992 [5] Cộng đồng Raspberry Việt Nam, Trang web www Raspberry.com.vn BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 56 PHỤ LỤC PHỤ LỤC: CODE CHƯƠNG TRÌNH ĐIỀU KHIỂN XE ROBOT BẰNG GIỌNG NĨI v Code chương tr nh using System; using System.Diagnostics; using System.Threading.Tasks; using Windows.ApplicationModel; using Windows.Media.SpeechRecognition; using Windows.Storage; using Windows.UI.Xaml.Controls; namespace SpeechControlledRobot RPi2_ { public sealed partial class MainPage : Page { private SpeechRecognizer MyRecognizer; private bool AvoidObstacle = true; public MainPage() { this.InitializeComponent(); MotorDriver.InitializePins(MotorDriver.AvailableGpioPin.GpioPin_5, MotorDriver.AvailableGpioPin.GpioPin_6, MotorDriver.AvailableGpioPin.GpioPin_13, MotorDriver.AvailableGpioPin.GpioPin_26); InitializeSpeechRecognizer(); Sensor.UltrasonicDistanceSensor Front_DistanceSensor = new Sensor.UltrasonicDistanceSensor(Sensor.UltrasonicDistanceSensor.AvailableGpioP in.GpioPin_12, Sensor.UltrasonicDistanceSensor.AvailableGpioPin.GpioPin_16); Sensor.ObstacleDetection Front_ObstacleDetection = new Sensor.ObstacleDetection(Front_DistanceSensor); Front_ObstacleDetection.ObstacleDetected += Front_ObstacleDetection_ObstacleDetected; } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 57 PHỤ LỤC private void Front_ObstacleDetection_ObstacleDetected(Sensor.ObstacleDetection.DetectionSta te arg1, double arg2) { if (AvoidObstacle == true) { if (arg1 == Sensor.ObstacleDetection.DetectionState.Detected && MotorDriver.CurrentState == MotorDriver.State.MovingForward) { MotorDriver.Stop(); Debug.WriteLine("Robot stopped! (Obstacle Detected)"); } } if (AvoidObstacle == true) { if (arg1 == Sensor.ObstacleDetection.DetectionState.Detected && MotorDriver.CurrentState == MotorDriver.State.MovingReverse) { MotorDriver.Stop(); Debug.WriteLine("Robot stopped! (Obstacle Detected)"); } } } /// /// Initializes MyRecognizer and Loads Grammar from File 'Grammar\MyGrammar.xaml' /// private async void InitializeSpeechRecognizer() { MyRecognizer = new SpeechRecognizer(); MyRecognizer.StateChanged += MyRecognizer_StateChanged; MyRecognizer.ContinuousRecognitionSession.ResultGenerated += MyRecognizer_ResultGenerated; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 58 PHỤ LỤC StorageFile GrammarContentFile = await Package.Current.InstalledLocation.GetFileAsync(@"Grammar\MyGrammar.xml"); SpeechRecognitionGrammarFileConstraint GrammarConstraint = new SpeechRecognitionGrammarFileConstraint(GrammarContentFile); MyRecognizer.Constraints.Add(GrammarConstraint); SpeechRecognitionCompilationResult CompilationResult = await MyRecognizer.CompileConstraintsAsync(); Debug.WriteLine("Status: " + CompilationResult.Status.ToString()); if (CompilationResult.Status == SpeechRecognitionResultStatus.Success) { await MyRecognizer.ContinuousRecognitionSession.StartAsync(); } } /// /// Fires when MyRecognizer successfully parses a speech /// /// /// private void MyRecognizer_ResultGenerated(SpeechContinuousRecognitionSession sender, SpeechContinuousRecognitionResultGeneratedEventArgs args) { Debug.WriteLine(args.Result.Text); switch (args.Result.Text) { case "move forward": MotorDriver.MoveForward(); break; case "move reverse": MotorDriver.MoveReverse(); break; case "turn right": MotorDriver.TurnRight(); break; case "turn left": BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 59 PHỤ LỤC MotorDriver.TurnLeft(); break; case "stop": MotorDriver.Stop(); break; case "engage obstacle detection": AvoidObstacle = true; break; case "disengage obstacle detection": AvoidObstacle = false; break; default: break; } } /// /// Fires when MyRecognizer's state changed /// /// /// private void MyRecognizer_StateChanged(SpeechRecognizer sender, SpeechRecognizerStateChangedEventArgs args) { Debug.WriteLine(args.State); } } } v Code chương tr nh con:Drive_động using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Windows.Devices.Gpio; namespace SpeechControlledRobot RPi2_ { BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 60 PHỤ LỤC /// /// Provides abstraction layer to drive robot /// public static class MotorDriver { private static GpioPin MotorLeft_A, MotorLeft_B; private static GpioPin MotorRight_A, MotorRight_B; private static State _CurrentState; /// /// Available Gpio Pins Refer: /// public enum AvailableGpioPin : int { /// /// Raspberry Pi - Header Pin Number : 29 /// GpioPin_5 = 5, /// /// Raspberry Pi - Header Pin Number : 31 /// GpioPin_6 = 6, /// /// Raspberry Pi - Header Pin Number : 32 /// GpioPin_12 = 12, /// /// Raspberry Pi - Header Pin Number : 33 /// GpioPin_13 = 13, /// /// Raspberry Pi - Header Pin Number : 36 /// GpioPin_16 = 16, /// /// Raspberry Pi - Header Pin Number : 12 /// GpioPin_18 = 18, /// /// Raspberry Pi - Header Pin Number : 15 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 61 PHỤ LỤC /// GpioPin_22 = 22, /// /// Raspberry Pi - Header Pin Number : 16 /// GpioPin_23 = 23, /// /// Raspberry Pi - Header Pin Number : 18 /// GpioPin_24 = 24, /// /// Raspberry Pi - Header Pin Number : 22 /// GpioPin_25 = 25, /// /// Raspberry Pi - Header Pin Number : 37 /// GpioPin_26 = 26, /// /// Raspberry Pi - Header Pin Number : 13 /// GpioPin_27 = 27 } /// /// Available driving states /// public enum State : byte { MovingForward, MovingReverse, RotatingRight, RotatingLeft, TurningRight, TurningLeft, Stopped } public static State CurrentState { BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 62 PHỤ LỤC get { return _CurrentState; } } /// /// Initializes four pins for motor driver /// /// Left motor's Pin A. /// Left motor's Pin B. /// Right motor's Pin A. /// Right motor's Pin B. public static void InitializePins(AvailableGpioPin Pin_MotorLeft_A, AvailableGpioPin Pin_MotorLeft_B, AvailableGpioPin Pin_MotorRight_A, AvailableGpioPin Pin_MotorRight_B) { GpioController MyGpioConroller = GpioController.GetDefault(); if (MotorLeft_A != null) { MotorLeft_A = null; MotorLeft_B = null; MotorRight_A = null; MotorRight_B = null; } MotorLeft_A = MyGpioConroller.OpenPin((int)Pin_MotorLeft_A); MotorLeft_B = MyGpioConroller.OpenPin((int)Pin_MotorLeft_B); MotorRight_A = MyGpioConroller.OpenPin((int)Pin_MotorRight_A); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 63 PHỤ LỤC MotorRight_B = MyGpioConroller.OpenPin((int)Pin_MotorRight_B); MotorLeft_A.SetDriveMode(GpioPinDriveMode.Output); MotorLeft_B.SetDriveMode(GpioPinDriveMode.Output); MotorRight_A.SetDriveMode(GpioPinDriveMode.Output); MotorRight_B.SetDriveMode(GpioPinDriveMode.Output); _CurrentState = State.Stopped; } public static void MoveForward() { if (MotorLeft_A == null) return; MotorLeft_A.Write(GpioPinValue.Low); MotorLeft_B.Write(GpioPinValue.High); MotorRight_A.Write(GpioPinValue.Low); MotorRight_B.Write(GpioPinValue.High); _CurrentState = State.MovingForward; } public static void MoveReverse() { if (MotorLeft_A == null) return; MotorLeft_A.Write(GpioPinValue.High); MotorLeft_B.Write(GpioPinValue.Low); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 64 PHỤ LỤC MotorRight_A.Write(GpioPinValue.High); MotorRight_B.Write(GpioPinValue.Low); _CurrentState = State.MovingReverse; } public static void TurnRight() { // Return if pins are not initialized if (MotorLeft_A == null) return; // Left Motor MotorLeft_A.Write(GpioPinValue.High); MotorLeft_B.Write(GpioPinValue.Low); // Right Motor MotorRight_A.Write(GpioPinValue.Low); MotorRight_B.Write(GpioPinValue.High); // Set current state _CurrentState = State.RotatingRight; } public static void TurnLeft() { if (MotorLeft_A == null) return; MotorLeft_A.Write(GpioPinValue.Low); MotorLeft_B.Write(GpioPinValue.High); MotorRight_A.Write(GpioPinValue.High); MotorRight_B.Write(GpioPinValue.Low); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 65 PHỤ LỤC _CurrentState = State.RotatingLeft; } public static void Stop() { if (MotorLeft_A == null) return; MotorLeft_A.Write(GpioPinValue.Low); MotorLeft_B.Write(GpioPinValue.Low); MotorRight_A.Write(GpioPinValue.Low); MotorRight_B.Write(GpioPinValue.Low) _CurrentState = State.Stopped; } } } v Code chương tr nh con:cảm biến siêu âm SRF04 using System; using System.Diagnostics; using System.Threading; using System.Threading.Tasks; using Windows.Devices.Gpio; namespace SpeechControlledRobot RPi2_.Sensor { public class UltrasonicDistanceSensor { private GpioPin Pin_Trig, Pin_Echo; private Stopwatch _StopWatch; private double? _Distance; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 66 PHỤ LỤC /// /// Available Gpio Pins Refer: https://ms-iot.github.io/content/enUS/win10/samples/PinMappingsRPi2.htm /// public enum AvailableGpioPin : int { /// /// Raspberry Pi - Header Pin Number : 29 /// GpioPin_5 = 5, /// /// Raspberry Pi - Header Pin Number : 31 /// GpioPin_6 = 6, /// /// Raspberry Pi - Header Pin Number : 32 /// GpioPin_12 = 12, /// /// Raspberry Pi - Header Pin Number : 33 /// GpioPin_13 = 13, /// /// Raspberry Pi - Header Pin Number : 36 /// GpioPin_16 = 16, /// /// Raspberry Pi - Header Pin Number : 12 /// GpioPin_18 = 18, /// /// Raspberry Pi - Header Pin Number : 15 /// GpioPin_22 = 22, /// /// Raspberry Pi - Header Pin Number : 16 /// GpioPin_23 = 23, BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 67 PHỤ LỤC /// /// Raspberry Pi - Header Pin Number : 18 /// GpioPin_24 = 24, /// /// Raspberry Pi - Header Pin Number : 22 /// GpioPin_25 = 25, /// /// Raspberry Pi - Header Pin Number : 37 /// GpioPin_26 = 26, /// /// Raspberry Pi - Header Pin Number : 13 /// GpioPin_27 = 27 } public UltrasonicDistanceSensor(AvailableGpioPin TrigPin, AvailableGpioPin EchoPin) { _StopWatch = new Stopwatch(); var gpio = GpioController.GetDefault(); Pin_Trig = gpio.OpenPin((int)TrigPin); Pin_Trig.SetDriveMode(GpioPinDriveMode.Output); Pin_Trig.Write(GpioPinValue.Low); Pin_Echo = gpio.OpenPin((int)EchoPin); Pin_Echo.SetDriveMode(GpioPinDriveMode.Input); } public double GetDistance() { var mre = new ManualResetEventSlim(false); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 68 PHỤ LỤC Pin_Trig.Write(GpioPinValue.High); mre.Wait(TimeSpan.FromMilliseconds(0.01)); Pin_Trig.Write(GpioPinValue.Low); var time = PulseIn(Pin_Echo, GpioPinValue.High,500); var distance = time * 17000; return distance; } private double PulseIn(GpioPin pin, GpioPinValue value, ushort timeout) { var sw = new Stopwatch(); var sw_timeout = new Stopwatch(); sw_timeout.Start(); while (pin.Read() != value) { if (sw_timeout.ElapsedMilliseconds > timeout) return 3.5; } sw.Start(); while (pin.Read() == value) { if (sw_timeout.ElapsedMilliseconds > timeout) return 3.4; } sw.Stop(); return sw.Elapsed.TotalSeconds; } } } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 69 ... 2.1.TỔNG QUAN VỀ XE ROBOT ĐIỀU KHIỂN BẰNG GIỌNG NÓI 2.1.1 Định nghĩa xe robot điều khiển giọng nói Xe robot điều khiển giọng nói (tiếng Anh:speech controlled car robot) tí hiệu tiếng nói qua micro... năng: - Xe chay tới, lui, qua trái, qua phải, đướng lại - Xe gặp vật cản đứng lại H nh 2.1 Hình ảnh xe robot điều khiển giọng nói 2.1.2 Ưu điểm xe điều khiển giọng nói Xe điều khiển giọng nói có... mạnh Điều khiển giọng nói ứng dụng rộng rãi xe oto, nhà điều khiển giọng nói điểu khiến điện thoại Hiện Việt Nam cộng nghệ điều khiển giọng nói chưa phát triển nhiều nước Nhưng đặc biệt điều khiển

Ngày đăng: 05/06/2021, 12:53

Tài liệu cùng người dùng

Tài liệu liên quan