Ngoại vi của Jetson Nano

Một phần của tài liệu Ứng dụng xử lý ảnh trong chạy theo làn đường, nhận diện biển báo và áp dụng lên xe tự hành (Trang 32)

26 Hình 3.3: Sơ đồ cấu tạo của Jetson Nano

27

Arduino Uno R3

Arduino Uno R3 là kit Arduino Uno thế hệ thứ 3,với khả năng lập trình cho các ứng dụng phức tạp do được trang bị cấu hình mạnh trong các loại bộ nhớ ROM,RAM và Flash,các ngõ vào ra Digital I/O trong đó có nhiều ngõ có khả năng xuất tín hiệu PWM,các ngõ đọc tín hiệu Analog vad các chuẩn giao tiếp đa dạng như UART, SPI,TWI(I2C).

Hình 3.5: Sơ đồ cấu tạo của Arduino Uno R3

Nguồn cấp cho Arduino Uno R3 có thể là 5V thơng qua USB hoặc cấp nguồn ngồi với điện áp khuyên dùng là 7-12V DC cho kit Arduino Uno.Nếu nguồn vượt quá ngưỡng giới hạn 20V kit sẽ cháy,nên tuyệt đối cẩn thận khi cấp nguồn ngoài cho kit.

GND (Ground): đất của nguồn điện cấp cho kit. Khi bạn dùng các ứng dụng sử dụng nguồn điện riêng hoặc nhiều nguồn thì phải nối những chân GND này với nhau .

5V: Đầu ra điện áp 5V . Các bạn phải lưu ý là dòng tối đa cho phép cấp ở pin này là 0.5A.

3.3V: Đầu ra điện áp 3.3V . Dòng tối đa cho phép cấp ở pin này là 0.05A.

Vin (Voltage Input): Cấp nguồn ngoài cho kit. Khi kết nối, tiến hành nối cực dương của nguồn với pin này và cực âm của nguồn với pin GND.

IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO. Bạn có thể dùng đồng hồ đo được ở pin này. Khi đo bạn sẽ thấy nó ln là 5V. Tuy nhiên ko được lấy nguồn từ pin này cấp đi chỗ khác, vì đơn giản chức năng của nó khơng phải là cấp nguồn

28

RESET: Chân reset sẽ được nối với nút bấm. Khi bạn nhấn nút Reset, kit sẽ reset vi điều khiển. Nguyên lý là chân RESET sẽ được nối với Ground qua 1 điện trở 10KΩ.

2 chân Serial:1 (TX) và 0 (RX):dùng để nhận (receive-RX) và gửi (transmit-TX) dữ liệu TTL Serial.Arduino Uno có thể giao tiếp với thiết bị khác qua 2 chân này.

Chân PWM(~);3,5,6,9,10 và 11:cho phép bạn băm xung PWM với độ phân giải 8 bit(giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite().

Chân giao tiếp SPI: 10(SS), 11(MOSI) , 12(MISO), 13(SCK). Ngoài các chức năng thơng thường, 4 chân này cịn dùng để truyền dữ liệu bằng giao thức SPI với các thiết bị khác.

Analog Pin: 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit (0 → 210- 1) để đọc giá trị điện áp trong khoảng 0V → 5V. Bạn có thể để đưa vào chân AREF trên board điện áp tham chiếu khi sử dụng các chân analog. Nói cách khác, khi bạn cấp điện áp 2.5V vào chân này thì bạn có thể đo điện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit.

Giao tiếp I2C: 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết

bị khác.

29 3.2.2.2 Khối thu thập hình ảnh

Camera logitech C270 được sử dụng để thu thập hình ảnh của lane đường và biển báo.Được kết nối với Jetson Nano thông qua cổng USB 3.0.

Hình 3.7: Camera logitech C270

Thơng số kỹ thuật của Camera logitech C270: - Độ phân giải: lên đến 3MP

- Quay video: lên tới 1024 x 720 pixel

- Công nghê: Công nghệ tinh thể lỏng Logitech Fluid Crystal - Giao tiếp: USB 2.0 tốc độ cao

- Kích thước:15x10x5 cm - Khối lượng: 0.2 KG

3.2.2.3 Khối động cơ

Chức năng chính của khối động cơ là nhận tín hiệu từ Arduino Uno R3 được truyền từ Jetson Nano để xe có thể di chuyển tiến thẳng và dừng lại khi gặp biển báo.

Việc lựa chọn động cơ phải phù hợp với trọng lượng của chiếc xe,các thơng số vịng/phút,điện áp hoạt động,công suất của động cơ,..ảnh hưởng trực tiếp đến sự di chuyển của xe,nhất là khi xe di chuyển trên địa hình thực tế,sự ma sát của mặt đường là rất lớn.

Thơng qua việc tính tốn sơ bộ như trên về tải trọng tối đa mà xe có thể chở được,cũng như là xe di chuyển với vận tốc mong muốn thì động cơ được chọn là loại động cơ RS550

30 Hình 3.8: Động cơ RS550 Thông số kỹ thuật: - Điện áp hoạt động: 12V - Công suất: 35W -Tốc độ: 15000 RPM -Đường kính động cơ: 36mm -Chiều dài thân động cơ: 85mm

31

Để điều khiển được tốc độ của động cơ,đồng thời tránh hiện tượng cháy do quá dòng khi sử dụng module L298.Nên nhóm em đã sử dụng module BTS7960 43A để điều khiển

từng động cơ.

Hình 3.10: Module BTS7960 43A

BTS7960 là bộ điều khiển động cơ cho phép điều khiển tốc độ và hướng của động cơ DC.Module có thể điều khiển động cơ có điện áp 6~27V, với dịng điện tối đa lên đến 43A.Tín hiệu logic điều khiển là 3.3~5V.Tần số điều khiển tối đa là 25KHz.Module sẽ tự động shutdown khi điện áp thấp hơn 5.5V.

32

Sơ đồ chân:

- VCC : Nguồn tạo mức logic điều khiển ( 5V – 3V3 ) - GND : Chân đất.

- R_EN = 0 Disable nửa cầu H phải. R_EN = 1 : Enable nửa cầu H phải. - L_EN = 0 Disable nửa cầu H trái. L_EN = 1 : Enable nửa cầu H trái. - RPWM và LPWM : chân điều khiển đảo chiều và tốc độ động cơ. - RPWM = 1 và LPWM = 0 : Mô tơ quay thuận.

- RPWM = 0 và LPWM = 1 : Mô tơ quay nghịch

- RPWM = 1 và LPWM = 1 hoặc RPWM = 0 và LPWM = 0 : Dừng. - R_IS và L_IS : kết hợp với điện trở để giới hạn dòng qua cầu H

Với ứng dụng bình thường RPWM,LPWM nối với GPIO (VD : chân digital 2,3) để điều khiển chiều quay của động cơ.

Chân R_EN , L_EN nối chung lại rồi nối với PWM (VD chân digital 5) để điều khiển tốc độ động cơ.

33 3.2.2.4 Khối điều khiển lái

Chức năng của khối điều khiển lái là nhận tín hiệu từ Arduino Uno R3 truyền xuống sau khi đã qua xử lý của Jetson Nano để điều khiển xe di chuyển sang trái,phải hay ở giữa.

Để dẫn động hướng cho xe nhóm em đã sử dụng động cơ bước size 57.Động cơ có moment xoắn lớn,chạy êm- khơng gây nhiều tiếng ồn,động cơ có thể tùy chỉnh.

Hình 3.13: Động cơ bước

Thơng số của động cơ: - Góc bước: 1.8 độ - Số pha: 2 pha - Dòng điện: 3.0A - Momen xoắn: 1.8Nm - Khối lượng: 1.05KG - Đường kính trục: 6.35mm - Số dây: 4 dây

34

Các chế độ điều khiển động cơ bước:

Hình 3.14: Phương pháp điều khiển động cơ bước

- Điều khiển dạng sóng (Wave): là phương pháp điều khiển cấp xung điều khiển lần lượt theo thứ tự chon từng cuộn dây pha.

- Điều khiển bước đủ (Full step): là phương pháp điều khiển cấp xung đồng thời cho 2 cuộn dây pha kế tiếp nhau.

- Điều khiển nửa bước (Half step): là phương pháp điều khiển kết hợp cả 2 phương pháp đều khiển dạng sóng và điều khiển bước đủ. Khi điều khiển theo phương pháp này thì giá trị góc bước nhỏ hơn hai lần và số bước của động cơ bước tăng lên 2 lần so với phương pháp điều khiển bước đủ tuy nhiên phương pháp này có bộ phát xung điều khiển phức tạp.

- Điều khiển vi bước (Microstep): là phương pháp mới được áp dụng trong việc điều khiển động cơ bước cho phép động cơ bước dừng và định vị tại vị trí nửa bước giữa 2 bước đủ. Ưu điểm của phương pháp này là động cơ có thể hoạt động với góc bước nhỏ,độ chính xác cao. Do xung cấp có dạng sóng nên động cơ hoạt động êm hơn,hạn chế được vấn đề cộng hưởng khi động cơ hoạt động.

Để điều khiển động cơ bước một cách chính xác và dễ dàng hơn thì cách tối ưu nhất là nên sử dụng driver điều khiển động cơ bước.Vì vậy nhóm em sử dụng TB6600 để điều khiển động cơ bước trên.

35

Mạch điều khiển động cơ bước TB6600 sử dụng IC TB6600HQ/HG,dùng cho các loại động cơ bước:42/57/86 2 pha hoặc 4 dây,có dịng tải là 5A/42V DC. Ứng dụng trong làm các máy như CNC,Laser hay các máy tự động khác.

Hình 3.15: Driver TB6600

Điện áp cấp cho driver có thể từ 12- 48V,với dịng điện đầu ra tối đa là 5A đủ để cung cấp cho động cơ bước trên.

TB6600 cách ly Input và Output bằng opto,bảo vệ quá áp,thấp áp,quá dòng,bảo vệ ngắn mạch,tránh gây cháy động cơ.Nhiệt độ hoạt động từ -10 đến 45 độ C.

Cài đặt và ghép nối:

- DC+: Nối với nguồn điện từ 9 - 40VDC - DC- : Điện áp (-) âm của nguồn

- A+ và A -: Nối vào cặp cuộn dây của động cơ bước - B+ và B- : Nối với cặp cuộn dây cịn lại của động cơ

- PUL+: Tín hiệu cấp xung điều khiển tốc độ (+5V) từ BOB cho M6600 - PUL-: Tín hiệu cấp xung điều khiển tốc độ (-) từ BOB cho M6600

36

- DIR+: Tín hiệu cấp xung đảo chiều (+5V) từ BOB cho M6600 - DIR-: Tín hiệu cấp xung đảo chiều (-) từ BOB cho M6600

- ENA+ và ENA -: khi cấp tín hiệu cho cặp này động cơ sẽ khơng có lực momen giữ và quay nữa

- Có thể đấu tín hiệu dương (+) chung hoặc tín hiệu âm (-) chung

Hình 3.16: Sơ đồ kết nối TB6600 3.2.2.5 Khối nguồn 3.2.2.5 Khối nguồn

Khối nguồn cung cấp dòng điện và điện áp cho các khối khác hoạt động,dựa vào ngõ vào điện áp,dòng điện cấp vào của các thiết bị để chọn lựa nguồn cho thích hợp.

Dịng điện và điện áp hoạt động của Jetson Nano là 4A và 5 VDC,của Arduino Uno R3 là 30mA và 5VDC.Lựa chọn nguồn cung cấp cho Jetson Nano và Arduino hoạt động cần chú ý đến điện áp và dòng điện.Đặc biệt là dịng điện.

Cơng suất tải trong mạch: - Jetson Nano: 5 x 4 = 20 (W)

37

- Động cơ DC: 2 x 35 W= 70 (W) - Step motor: 12 x 3 = 36 (W) - Tổng cơng suất P = 126.15 (W)

Lựa chọn bình ắc quy cung cấp nguồn cho sự hoạt động của xe là điều vô cùng quan trọng.Thời gian sử dụng ắc quy được tính như sau:

t = 𝐴 × 𝑉 ×𝑛

𝑃 = 90 ×12 ×0.7

126.15 =6 (h)

Với:A là dung lượng của ắc quy; V là điện áp ngõ ra của ắc quy; n là hệ số sử dụng của ắc quy ( thông thường là 0.7); P là cơng suất tải (tổng cơng suất trên mạch).

Hình 3.17: Bình ắc quy Đồng Nai

Thơng số kỹ thuật của bình ắc quy Đồng Nai: - Dung lượng: 12V – 90Ah

38 3.2.3 Sơ đồ nguyên lý toàn mạch

Cuối cùng tiến hành vẽ mạch nguyên lý toàn mạch kết nối các khối đã thiết kế lại như sau:

39 3.3 CHUẨN BỊ LINH KIỆN – MÔ ĐUN

Dựa vào các cơ sở lý thuyết, sơ đồ khối, sự hoạt động của từng khối, sơ đồ mạch nguyên lý đã thiết kế ở phần trước để chuẩn bị linh kiện – mơ đun cho phần thi cơng mơ hình.

Bảng 3.1: Các linh kiện, mô đun sử dụng

STT Tên linh kiện/Mô đun Số lượng

1 Jetson Nano 1 2 Camera Logitech C270 2 3 Arduino Uno R3 1 4 Động cơ DC RS550 2 5 Module BTS7960 2 6 Step Motor 1 7 Driver BT6600 1 8 Servo 2 9 Acquy Đồng Nai 1 10 LCD TFT 1

11 Mơ hình xe điện mini 1

3.4 MƠ HÌNH XE TỰ HÀNH

Để mơ phỏng hình dáng chiếc xe so với thực tế nhóm em sử dụng phần mềm Inventor.Autodesk Inventor là phần mềm xây dựng mơ hình 3D, thiết kế, hình mẫu và kiểm tra sản phẩm.Các cơng cụ mơ phỏng, phân tích được tích hợp trong Inventor cho phép người dùng thiết kế từ cơ bản đến nâng cao như thiết kế chi tiết máy, trực quan hóa sản phẩm.Inventor cịn được tích hợp CAD và các công cụ giao tiếp thiết kế nhằm nâng cao năng suất làm việc của CAD và giảm thiểu phát sinh lỗi,tiết kiệm thời gian.Inventor cũng cung cấp một mơi trường thiết kế và phím tắt tương tự với AutoCAD,cho phép người dùng chuyển từ môi trường vẽ 2D hiện hành sang xây dựng mơ hình 3D.

40

Mơ hình xe tự hành sau khi vẽ bằng Inventor:

Hình 3.19: Mơ phỏng xe tự hành

41 3.5 LẬP TRÌNH HỆ THỐNG

3.5.1 Cài đặt hệ điều hành cho jetson nano

Việc cài đặt hệ điều hành cho jetson nano có thể cài đặt trên cả ba hệ điều hành thông dụng là windows, linux, mac os. Với mỗi hệ điều hành sẽ có một chút khác biệt nhỏ dựa trên đặt điểm của hệ điều hành, cơ bản sẽ bao gồm các bước như sau (đối với Windows):

- Bước 1: Tiến hành format thẻ nhớ bằng phần mềm chuyên dụng, ví dụ như SD Memory Card Formatter ( đối với windows). Nên sử dụng phần mềm chuyên dụng thay vì format mặc định của windows không thể format thẻ nhớ đã được cài đặt hệ điều hành jetson nano (linux không cần phần mềm chuyên dụng).

42

- Bước 2: Tải phiên bản hệ điều hành của jetson nano tại trang chủ (https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit#write) và Etcher để tiến hành ghi đè hệ điều hành lên thẻ nhớ. Với phần select image tiến hành chọn phiên bản của hệ điều hành ( chúng em sử dụng jetpack 4.3), select drive để chọn ổ đĩa ghi đè (thẻ nhớ). Và ta tiến hành cài đặt hệ điều hành, quá trình này tốn khoảng 30 phút.

43

- Bước 3: Tiến hành cài đặt thông số hệ điều hành bao gồm ngơn ngữ hệ thống, định dạng bàn phím, thời gian, tên , mật khẩu và tên máy tính.

Hình 3.23: Giao diện hệ điều hành 3.5.2 Cài đặt các chương trình và phần mềm cần thiết 3.5.2 Cài đặt các chương trình và phần mềm cần thiết

Với việc cài đặt jetpack thì trong hệ điều hành đã mặc định có thư viện opencv, cuda và libCudnn. Ngồi ra ta cần cài một số thư viện hệ thống cần thiết. Mở terminal và dùng câu lệnh như sau:

- sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8- dev liblapack-dev libblas-dev gfortran

Cài đặt thư viện pip3 ( hỗ trợ cài đặt thư viện cho python 3.x): - sudo apt-get install python3-pip

- sudo pip3 install -U pip testresources setuptools

Cài đặt thư viện cho python 3 bao gồm numpy, future, mock, h5py, keras_preprocessing, keras_applications, gast, futures, protobuf, pybind11, matplotlib. Bằng câu lệnh như sau:

44

Cài đặt thư viện tensorflow ( tensorflow-gpu). Tải phiên bản tensorflow phù hợp với phiên bản jetpack, với v43 là phiên bản jetpack 4.3, “tensorflow” là phiên bản tensorflow phù hợp với nhu cầu:

- sudo pip3 install --pre --extra-index-url

https://developer.download.nvidia.com/compute/redist/jp/v43 “tensorflow”

3.5.3 Cài đặt chương trình Visual studio code cho jetson nano

Để thuận lợi trong việc viết sửa chương trình cho jetson nano thì chúng em sử dụng visual code. Tuy nhiên jetson nano là hệ điều hành dựa trên ubuntu nhưng chạy trên nền ARM thì việc cài đặt có chút khác biệt so với thơng thường.

- Bước 1: Tải chương trình từ github: git clone https://github.com/JetsonHacksNano/installVSCode.git

- Bước 2: cd installVSCode - Bước 3: ./installVSCode.sh

Sau khi cài đặt hoàn thiện sử dụng lệnh “ code-oss” trên của sổ terminal để khởi động chương trình.

- Bước 4: Trong cửa sổ của visual studio, phía bên trái màn hình ở biểu tưởng 4 ô vuông, ta tải python để lập trình code dưới dang python.

- Bước 5: Ấn Ctrl + shift + P để chọn đường dẫn chứa chương trình python.

3.5.4 Cài đặt phần mềm trên máy tính chủ (máy tính dùng để đào tạo mơ hình) 3.5.4.1 Cài đặt Cuda , cuDNN 3.5.4.1 Cài đặt Cuda , cuDNN

Việc cài đặt Cuda và cuDNN nhằm mục đích tận dụng gpu rời của máy tham gia vào việc đào tạo mơ hình deep learning. Việc cài đặt và sử dụng cuda trên windows tương đối phức tạp do hạn chế về dòng card đồ họa hỗ trợ (của nvidia) cũng như sự kém tương thích giữa Cuda và cuDNN trên windows. Để đơn giản hóa vấn đề ta cài đặt các chương trình này trên ubuntu.

Đầu tiên thiết lập card đồ họa nvidia là mặc định, vào mục tìm kiếm chọn software and

Một phần của tài liệu Ứng dụng xử lý ảnh trong chạy theo làn đường, nhận diện biển báo và áp dụng lên xe tự hành (Trang 32)

Tải bản đầy đủ (PDF)

(98 trang)