1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận Văn Điều khiển xe Robot bằng giọng nói với Raspberry Pi 3

81 73 0

Đ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

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

Ngày đăng: 16/11/2019, 14:53

TỪ KHÓA LIÊN QUAN