Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 81 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
81
Dung lượng
4,12 MB
Nội dung
TR NG B B GIÁO D C & ĨO T O I H C S PH M K THU T TP H CHÍ MINH KHOA I N ậ I N T MỌN I N T CÔNG NGHI P ậ Y SINH ÁN T T NGHI P NGÀNH CÔNG NGH K THU T I N T TRUY N THÔNG TÀI: I U KHI N XE ROBOT B NG GI NG NÓI V I RASPBERRY PI GVHD: ThS Nguy n Duy Th o SVTH: Phan Thanh Tồn MSSV: 11141222 Tp H Chí Minh - 07/2018 TR B GIÁO D C & ĨO T O NG I H C S PH M K THU T TP H CHÍ MINH KHOA I N ậ I N T B MỌN I N T CÔNG NGHI P ậ Y SINH - ÁN T T NGHI P NGÀNH K THU T I N T TRUY N THÔNG TÀI: I U KHI N XE ROBOT B NG GI NG NÓI V I RASPBERRY PI GVHD: Th.S Nguy n Duy Th o SVTH: Phan Thanh Tồn MSSV: 11141222 Tp H Chí Minh ậ 07/2018 TR B NG H SPKT TP H CHệ MINH KHOA I N- I N T MỌN I N T CỌNG NGHI P ậ Y SINH C NG HọA Xĩ H I CH NGH A VI T NAM C L P - T DO - H NH PHÚC o0o Tp:HCM ngày 01 thánh 07 n m 2018 NHI M V H tên sinh viên: Chuyên ngành: H đào t o: ÁN T T NGHI P Phanh Thanh Toàn MSSV: 11141222 Võ Hoàng Khánh MSSV: 11141102 i n T Cơng Nghi p i h c quy Khóa : 11 I TểN Mã ngành: 141 Mã h : 11 L p 11141DT1A TÀI: ĐI U KHI N XE ROBOT B NG GI NG NÓI V I RASPBERRY PI II NHI M V Các s li u ban đ u: (ghi nh ng thông s , t p tài li u tín hi u, hình nh,…) Thông s ban đ u x lý tín hi u âm Tài li u: Giáo trình K thu t truy n s li u N i dung th c hi n: (ghi nh ng n i dung c n th c hi n nh ph n t ng quan) t v n đ , nêu m c tiêu đ tài,nh ng n i dung nghiên c u, b c c c a đ tài cu i nh ng gi i h n c a đ tài III NGÀY GIAO NHI M V : 20/03/2018 IV NGÀY HOÀN THÀNH NHI M V : V H VÀ TÊN CÁN B H CÁN B H NG D N 30/06/2018 NG D N: Th.S Nguy n Duy Th o BM I N T CÔNG NGHI P – Y SINH TR B NG H SPKT TP H CHÍ MINH KHOA I N- I N T MỌN I N T CỌNG NGHI P ậ Y SINH C NG HọA Xĩ H I CH NGH A VI T NAM C L P - T DO - H NH PHÚC o0o Tp HCM, ngày 20 tháng 03 n m 2018 L CH TRÌNH TH C HI N ÁN T T NGHI P H tên sinh viên 1: Phan Thanh Toàn L p: 11141DT1A MSSV:11141222 H tên sinh viên 2: Võ Hoàng Khánh L p: 11141DT1A MSSV:11141102 Tên đ tài: I U KHI N XE ROBOT B NG GI NG NÓI V I RASPBERRY PI Tu n/ngày N i dung Tu n1 Ch n đ tài Tu n Tìm hi u nh n đ tài Tu n Nh n đ tài đ th c hiên Tu n Nghiên c u v đ tài Tu n Tìm tài li u v đ tài Tu n Chu n b mua linh ki n Tu n Ti n hành thi công ph n c ng Tu n Thi công ph n c ng Tu n Thi công ph n c ng Tu n 10 Vi t ch ng trình Tu n 11 Vi t ch ng trình Tu n 12 N p code ch y đ mode Tu n 13 Hoàng thành 100% s n ph m Tu n 14 Vi t báo cáo đ tài Tu n 15 Hoàng thành file báo cáo Xác nh n GVHD GV H NG D N (Ký ghi rõ h tên L I CAM OAN tài t th c hi n d a vào m t s tài li u tr t tài li u hay cơng trình đư có tr c khơng chép c Ng i th c hi n đ tài Phan Thanh Toàn Võ Hoàng Khánh L IC M N L i đ u tiên nhóm sinh viên th c hi n đ tài xin g i l i cám n chân thành t i th y cô giáo tr ng i H c S Ph m K Thu t Thành Ph H Chí Minh nói chung th y cô giáo khoa i n– i n t nói riêng đư t n tình gi ng d y, truy n đ t cho nh ng ki n th c, kinh nghi m quý báu su t th i gian qua c bi t xin g i l i c m n sâu s c đ n th y Nguy n Duy Th o đư đ nh h ng, h ng d n t n tình t o u ki n t t nh t cho su t trình chúng tơi th c hi n đ tài Sau xin g i l i c m n t i anh, ch , b n đư giúp đ , chia s kinh nghi m, đóng góp ý ki n cho chúng tơi đ hồn thành t t đ tài Trong trình th c hi n đ tài s không tránh kh i thi u xót R t mong nh n đ c s góp ý c a q th y b n đ đ tài đ c hoàn thi n h n Nhóm th c hi n đ tài xin chân thành c m n! Nhóm th c hi n đ tài Phan Thanh Toàn Võ Hoàng Khánh M CL 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 v xe robot u n b ng gi ng nói……………………………5 2.1.2 u m c a xe robot u n b ng 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 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 c DC 26 2.2.9 Led Matrix 8x8 MAX7219 26 CH NG TệNH TOÁN VĨ THI T K 27 3.1 Gi i thi u 28 3.2 Tính tố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ý c a 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 đ c a h th ng u n xe robot b ng 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 u n đ ng c 62 5.3.B vi u n 63 5.4.K t đ t đ CH c…………………………………………………………………63 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 c a đ 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 u n b ng 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 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 hi n c a SRF04 20 Hình 2.18 Board Arduino Mega 2560 20 Hình 2.19 Hình nh vi u 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 c DC GA25 26 Hình 2.24 Module Led Matrix 8x8 MAX7219 27 Hình 3.1 S đ kh i c a 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 u n đ ng c 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 đ nguyên lý Toàn m ch 32 Hình 3.8 S đ k t n i Raspberry pi v i module u n đ ng c 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 c 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 h a k t n i sai gi a Raspberry pi v i Srf04……….…….48 Hình 4.9 Hình nh minh h a k t n i gi a 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 u n Windows 10 IoT Core qua PowerShell 57 LI T KÊ B NG B ng Trang B ng 4.2.B ngso sánh m t vài thu c tính c a h u hành Windows………… 58 NG K T LU N VĨ H CH NG PHÁT TRI N NG K T LU N VĨ H CH NG PHÁT TRI N 6.1.K T LU N N m rõ đ c giao ti p Raspberry pi v i SRF04 giúp cho xe phát hi n đ cv t c n N m rõ đ n đ c giao ti p Raspberry pi v i L298 giúp cho h th ng xe có th u c đ ng c ch y thu n hay ch y ngh ch X lý đ c tín hi u gi ng nói giúp u n h th ng thơng qua gi ng nói c a ng Nhúng ch Hi u đ i u n ng trình ARM vào Raspberry pi c h u hành win 10 Iot core , H u hành win 10 Iot core đ c 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 hi n đ c đ tài u n xe b ng gi ng nói Nhóm đư hồn thành đ tài kho ng 95% v i muchj đích đư đ S n ph m c a 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 u n b ng ti ng anh Còn nhi u tín hi u nhi u ây la nh ng v n đ nhóm ch a làm đ c 6.3.H NG PHÁT TRI N 6.3.1 H ng kh c ph c cách h n ch c a đ tài Tín hi u u n đ c b ng ti ng vi t S d ng nh ng thi t b thu nh n âm t t h n đ l c nhi u ti ng n t t nh t 6.3.2 H ng phát tri n t ng lai Nhóm s phát tri n thành h th ng xe l n u n b ng gi ng nói Phát tri n h th ng ng B MỌN I N T i robot làm vi c đ c u n b ng gi ng nói CÔNG NGHI P ậ Y SINH 55 TÀI LI U THAM KH O TÀI LI U THAM KH O oàn V n Ban, phân tích thi t k h [1] 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 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); } } } Code ch ng tr̀nh con:Drive_đ ng c 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; } } } 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 ... Toàn m ch 32 Hình 3. 8 S đ k t n i Raspberry pi v i module u n đ ng c 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 c bánh xe 45... áp 30 Hình 3. 4 S đ chân Raspberry pi 30 Hình 3. 5 S đ nguyên lý Module u n đ ng c 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 đ nguyên... 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 u n b ng gi ng nói Xe robot u n b ng gi ng nói (ti ng Anh:speech controlled car robot) tí hi u ti ng nói qua micro s