CHƯƠNG 3 : THIẾT KẾ VÀ XÂY DỰNG ROBOT
3.2 Thiết kế mạch điện
3.2.3 Arduino Uno R3 (Slave)
Trong đề tài, Arduino Uno R3 được dùng làm Slave nhận tín hiệu từ Master để điều khiển động cơ thông qua giao tiếp I2C.
Thông số kỹ thuật:
- Chip: ATmega328P.
- Nguồn cấp: từ 7 đến 12 VDC. - Dòng max chân 5V: 500 mA. - Dòng max chân 3.3V: 50 mA. - Dòng max chân I/O: 30 mA.
SVTH: LÊ TRUNG KIÊN 49 - Số chân Analog: 6 chân.
- Flash Memory: 32 kb. - SRAM: 2 kb.
- EEPROM: 1 kb. - Clock Speed: 16 Mhz. - Kích thước: 68.6 x 53.4mm. - Khối lượng: 25 gam.
❖ Chức năng của các chân Arduino Uno
- Chân Vin: Đây là điện áp đầu vào được cung cấp cho board mạch Arduino Uno. Khác với chân 5V được cung cấp qua cổng USB. Chân này được sử dụng để cung cấp điện áp tồn mạch thơng qua jack nguồn, thơng thường khoảng từ 7 đến 12VDC.
- Chân 5V: Chân này được sử dụng để cung cấp điện áp đầu ra. Arduino Uno được cấp nguồn bằng ba cách đó là USB, chân Vin của board mạch hoặc jack nguồn. - USB: Dùng để giao tiếp với máy tính thơng qua cáp USB chúng ta có thể nạp chương trình cho Arduino hoạt động. Ngồi ra, USB cịn là nguồn cho Arduino nó hỗ trợ điện áp khoảng 5 VDC trong khi Vin và jack nguồn hỗ trợ điện áp trong khoảng từ 7V đến 20VDC.
- Chân GND: Chân mass chung cho toàn mạch Arduino.
- Chân Reset: Để thiết lập lại tồn bộ và đưa chương trình đang chạy trở về ban đầu.
- Chân này rất hữu ích khi Arduino bị treo khi đang chạy chương trình.
- Các chân Digital: Có 14 chân Digital trên board mạch Arduino Uno được ký hiệu từ 0 đến 13 với chức năng input và output sử dụng các hàm pinMode(), digitalWrite(), digitalRead() để điều khiển các chân này.
- Chân PWM: Được cung cấp bởi các chân 3,5,6,9,10,11. Các chân này được cấu hình để cung cấp PWM đầu ra 8 bit.
SVTH: LÊ TRUNG KIÊN 50 - Các chân Analog: Có 6 chân Analog trên board mạch Arduino Uno được ký hiệu từ A0 đến A5. Được sử dụng để đo điện áp tương tự trong khoảng từ 0 đến 5V. - Chân Rx, Tx: Dùng để thực hiện giao tiếp nối tiếp thông qua hai chân 0 (Rx) và chân 1 (Tx).
- Chân LED: Arduino Uno tích hợp đèn LED kết nối với chân 13. Cung cấp mức logic HIGH tương ứng ON và LOW tương ứng OFF.
- Chân AREF: Chân này được gọi là tham chiếu tương tự, được sử dụng để cung cấp điện áp tham chiếu cho các đầu vào tương tự.
- Chân SPI: Được dùng để giao tiếp ngoại vi nối tiếp. Các chân 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) cung cấp liên lạc SPI với sự trợ giúp của thư viện SPI.
- Chân ngắt ngoài: Chân 2 và 3 được sử dụng để cung cấp các ngắt ngoài. - Chân I2C: Dùng để giao tiếp I2C với các thiết bị. Chân A4 (SDA)và A5 (SCL) được sử dụng cho mục đích này.
SVTH: LÊ TRUNG KIÊN 51 3.2.4 Động cơ DC Hình 3.18: Động cơ DC giảm tốc Thông số động cơ: - Điện áp hoạt động: 3-9V. - Dòng điện tiêu thụ: 110-150 mA - Tỉ số truyền: 1:120 - Tốc độ động cơ: 100000 (vòng/phút) - Tốc độ qua hộp giảm tốc: 83 (vòng/phút)
3.2.5 Động cơ và module điều khiển động cơ bước ULN2003 V2
Động cơ bước 28BYJ-48: Động cơ bước 28BYJ-48 là động cơ bước 4 pha, 5 dây điều khiển 4 trong 5 dây này được kết nối với 4 cuộn dây trong động cơ và 1 dây là dây nguồn chung cho cả 4 cuộn dây. Mỗi bước của động cơ quét 1 góc 5,625 độ, vậy để quay 1 vịng động cơ phải thực hiện 64 bước.
Hình 3.19: Động cơ bước 28BYJ-48
SVTH: LÊ TRUNG KIÊN 52 - Điện áp hoạt động: 5V.
- Số pha: 4. - Tần số: 100Hz.
- Số bước trên vòng chưa qua giảm tốc: 64. - Góc mỗi bước: 5,625 độ.
- Tỉ số truyền: 1:64.
- Số bước sau hộp số giảm tốc (trục chính): 64 x 64 = 4096/1 (bước/vịng). - Đường kính trục: 5mm.
Hình 3.20: Module điều khiển động cơ L298 V2
Module điều khiển động cơ bước ULN2003 V2: Là một module có kích thước nhỏ và dễ sử dụng. Mạch sử dụng IC ULN2003A để khuếch đại các tín hiệu điều khiển từ mạch điều khiển và điện áp sử dụng cấp cho động cơ có thể lên đến 12V.
Thơng số kỹ thuật:
- Điện áp cung cấp: 5 ~ 12VDC.
- Tín hiệu ngõ vào: 4 chân in1, in2, in3, in4.
- Tín hiệu ngõ ra: Jack cắm động cơ bước 28BYJ-48. - 4 led hiển thị trạng thái hoạt động của động cơ. - Mức điện áp logic: 3 - 5.5V.
- Nhiệt độ hoạt động: -25 ~ 90℃. - Kích thước: 25mm x 35mm. - Trọng lượng: ~20g.
SVTH: LÊ TRUNG KIÊN 53
3.2.6 Module LM2596
Hình 3.21: Module LM2596
Thông số kỹ thuật:
- Điện áp đầu vào: Từ 3V đến 30V.
- Điện áp đầu ra: Điều chỉnh được trong khoảng 1.5V đến 30V. - Dòng đáp ứng tối đa là 3A.
- Hiệu suất: 92% - Công suất: 15W
Module LM2596 trong hệ thống dùng để giảm áp từ nguồn pin, cấp nguồn cho Arduino và động cơ.
3.2.7 Module LM393
Hình 3.22: Module LM393
SVTH: LÊ TRUNG KIÊN 54 - Điện áp làm việc: 3.3V – 5V DC.
- Kích thước: 3.2cm * 1.4cm
Hình 3.23: Sơ đồ nguyên lý cảm biến LM393
Module LM393 trong hệ thống giúp phát hiện tài liệu khi đưa vào cửa trước.
3.2.8 Module RFID RC522 Hình 3.24: Module RFID RC522 Thơng số kỹ thuật: - Điện áp: 3.3V - Dòng điện:13-26mA - Dòng điện ở chờ: 10-13mA - Dòng điện ở chế độ nghỉ: <80uA - Tần số hoạt động: 13.56MHz
SVTH: LÊ TRUNG KIÊN 55 - Khoảng cách hoạt động: 0 ~ 60 mm (mifarel card)
- Cổng giao tiếp: SPI
- Tốc độ truyền dữ liệu tối đa 10Мbps - Kích thước: 40мм х 60мм
- Các loại card RFID hỗ trợ: mifare1 S50, mifare1 S70, mifare UltraLight, mifare Pro,mifare Desfire
Module RFID 522 trong hệ thống dùng để kích động cơ để mở cửa sau với thẻ từ. 3.2.9 Màn hình hiển thị và cảm ứng MageDok T116D Thông số kỹ thuật: - Loại màn hình: A-Si, TFT-LCD - Độ phân giải: 1920 X 1080 - Kích thước: 11,6 inch - Khu vực hoạt động: 256,896 × 144,504 mm - Độ sáng: 300cd / M2 (Typ.) - Tỷ lệ tương phản: 800: 1 (Typ.) - Thời gian phản hồi: 26 (Typ.) (Ms)
- Đầu vào: Nguồn, cảm ứng, HDMI, Jack âm thanh 3,5 mm
SVTH: LÊ TRUNG KIÊN 56 Màn hình ở đây ta sử dụng để thiết kế giao diện điều khiển cho chatbot.
3.2.10 Pin hệ thống
Hình 3.26: Pin Lithium Polymer
Thơng số kỹ thuật:
- Dung lượng :~10000mAh - Điện áp định mức : 3.7 V - Điện áp tối đa : 4.2 V - Điện áp cắt: 2.5 V - Công suất : 37Wh - Dòng điện tối đa: 3C - Nội trở : < 40 Ohm
- Nhiệt độ xả: 20 ° C ~ 60 ° C - Chu kỳ nạp xả: >1000 lần
- Kích thước: 18 x 65 x 131 (mm)
Robot được sử dụng 4 cell pin để cấp nguồn cho toàn bộ hệ thống bao gồm nguồn cho Arduino, cảm biến và động cơ.
SVTH: LÊ TRUNG KIÊN 57
3.3 Mơ hình hồn chỉnh
Mơ hình được thiết kế hồn chỉnh với bộ khung chắc chắn và các cơ cấu chuyển động ổn định.
SVTH: LÊ TRUNG KIÊN 58
CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO
CHATBOT 4.1 Ứng dụng mạng nơ ron nhân tạo vào chatbot
Mạng nơ-ron nhân tạo (Artificial Neural Network – ANN) là một mô phỏng xử lý thông tin hay thường được gọi ngắn gọn là mạng nơ-ron, được nghiên cứu dựa trên hệ thống thần kinh của sinh vật, giống như một bộ não con người để xử lý các thông tin. ANN bao gồm một số lượng lớn các mối gắn kết để xử lý các yếu tố làm việc trong mối quan hệ giải quyết vấn đề rõ ràng. ANN được giới thiệu năm 1943 bởi nhà thần kinh học Warren McCulloch và nhà logic học Walter Pits, hoạt động của nó giống như hoạt động bộ não của con người, được học hỏi bởi kinh nghiệm thơng qua việc đào tạo, huấn luyện, có khả năng lưu giữ được các tri thức và sử dụng những tri thức đó trong việc phán đốn các dữ liệu mới, chưa biết (unseen data). Processing Elements (PE) của ANN gọi là nơ-ron, nhận các dữ liệu vào (inputs) xử lý chúng và cho ra một kết quả (output) duy nhất. Kết quả xử lý của một nơ-ron có thể làm input cho các nơ-ron khác.
SVTH: LÊ TRUNG KIÊN 59 Kiến trúc chung của một ANN gồm 3 thành phần đó là Input Layer, Hidden Layer và Output Layer
Trong đó, lớp ẩn (Hidden Layer) gồm các nơ-ron, nhận dữ liệu input từ các Nơ- ron ở lớp (Layer) trước đó và chuyển đổi các input này cho các lớp xử lý tiếp theo. Trong một mạng ANN có thể có nhiều Hidden Layer.
Lợi thế lớn nhất của các mạng ANN là khả năng được sử dụng như một cơ chế xấp xỉ hàm tùy ý mà “học” được từ các dữ liệu quan sát. Tuy nhiên, sử dụng chúng không đơn giản như vậy, một số các đặc tính và kinh nghiệm khi thiết kế một mạng nơ-ron ANN.
Phương pháp này là tính tốn tỷ lệ chính xác dữ liệu đầu ra (output) từ dữ liệu đầu vào (input) bằng cách tính tốn các trọng số cho mỗi kết nối (connection) từ các lần lặp lại trong khi “huấn luyện” dữ liệu cho chatbot. Mỗi bước “huấn luyện” dữ liệu cho chatbot sẽ sửa đổi các trọng số dẫn đến dữ liệu output được xuất ra với độ chính xác cao.
• Chọn mơ hình: Điều này phụ thuộc vào cách trình bày dữ liệu và các ứng
dụng. Mơ hình q phức tạp có xu hướng dẫn đền những thách thức trong q trình học.
• Cấu trúc và sự liên kết giữa các nơ-ron.
• Thuật tốn học: Có hai vấn đề cần học đối với mỗi mạng ANN, đó là học
tham số của mơ hình (parameter learning) và học cấu trúc (structure learning). Học tham số là thay đổi trọng số của các liên kết giữa các nơ-ron trong một mạng, còn học cấu trúc là việc điều chỉnh cấu trúc mạng bằng việc thay đổi số lớp ẩn, số nơ-ron mỗi lớp và cách liên kết giữa chúng. Hai vấn đề này có thể được thực hiện đồng thời hoặc tách biệt. Nếu các mơ hình, hàm chi phí và thuật tốn học được lựa chọn một cách thích hợp, thì mạng ANN sẽ cho kết quả có thể vơ cùng mạnh mẽ và hiệu quả.
SVTH: LÊ TRUNG KIÊN 60
Hình 4.2: Q trình xử lý thơng tin của một mạng nơ-ron nhân tạo
Inputs: Mỗi Input tương ứng với 1 đặc trưng của dữ liệu. Ví dụ như trong ứng
dụng của ngân hàng xem xét có chấp nhận cho khách hàng vay tiền hay khơng thì mỗi input là một thuộc tính của khách hàng như thu nhập, nghề nghiệp, tuổi, số con,…
Output: Kết quả của một ANN là một giải pháp cho một vấn đề, ví dụ như với
bài toán xem xét chấp nhận cho khách hàng vay tiền hay khơng thì output là yes hoặc no.
Connection Weights (Trọng số liên kết) : Đây là thành phần rất quan trọng của
một ANN, nó thể hiện mức độ quan trọng, độ mạnh của dữ liệu đầu vào đối với q trình xử lý thơng tin chuyển đổi dữ liệu từ Layer này sang layer khác. Quá trình học của ANN thực ra là quá trình điều chỉnh các trọng số Weight của các dữ liệu đầu vào để có được kết quả mong muốn.
Summation Function (Hàm tổng): Tính tổng trọng số của tất cả các input được
đưa vào mỗi Nơ-ron. Hàm tổng của một Nơ-ron đối với n input được tính theo cơng thức sau:
𝑌 = ∑ 𝑋𝑖𝑊𝑖
𝑛
𝑖=1
SVTH: LÊ TRUNG KIÊN 61
Transfer Function (Hàm chuyển đổi): Hàm tổng của một nơ-ron cho biết khả
năng kích hoạt của nơ-ron đó cịn gọi là kích hoạt bên trong. Các nơ-ron này có thể sinh ra một output hoặc khơng trong mạng ANN, nói cách khác rằng có thể output của 1 Nơ-ron có thể được chuyển đến layer tiếp trong mạng Nơ-ron theo hoặc không. Mối quan hệ giữa hàm tổng và kết quả output được thể hiện bằng hàm chuyển đổi.
Việc lựa chọn hàm chuyển đổi có tác động lớn đến kết quả đầu ra của mạng
ANN. Hàm chuyển đổi phi tuyến được sử dụng phổ biến trong mạng ANN là sigmoid hoặc tanh. 𝑓(𝑠) = 1 1 + 𝑒−𝑠 ≜ 𝜎(𝑠) ( 4.2 ) tanh(𝑠) = 𝑒 𝑠− 𝑒−𝑠 𝑒𝑠+ 𝑒−𝑠 ( 4.3 )
Trong đó, hàm tanh là phiên bản thay đổi tỉ lệ của sigmoid , tức là khoảng giá trị đầu ra của hàm chuyển đổi thuộc khoảng [-1, 1] thay vì [0,1] của Sigmoid nên chúng cịn gọi là hàm chuẩn hóa (Normalized Function).
Kết quả xử lý tại các nơ-ron (Output) đơi khi rất lớn, vì vậy hàm chuyển đổi được sử dụng để xử lý output này trước khi chuyển đến layer tiếp theo. Đơi khi thay vì sử dụng Transfer Function người ta sử dụng giá trị ngưỡng (Threshold value) để kiểm soát các output của các neuron tại một layer nào đó trước khi chuyển các output này đến các Layer tiếp theo. Nếu output của một neuron nào đó nhỏ hơn Threshold thì nó sẻ khơng được chuyển đến Layer tiếp theo.
Mạng nơ-ron của chúng ta dự đoán dựa trên lan truyền thẳng (forward propagation) là các phép nhân ma trận cùng với activation function để thu được kết quả đầu ra. Nếu input x là vector 2 chiều thì ta có thể tính kết quả dự đốn 𝑦̂ bằng cơng thức :
SVTH: LÊ TRUNG KIÊN 62 𝑧1 = 𝑥𝑊1+ 𝑏1
𝑎1 = tanh (𝑧1) 𝑧2 = 𝑎1𝑊1+ 𝑏2 𝑎2 = 𝑦̂ = 𝑠𝑜𝑓𝑡𝑚𝑎𝑥(𝑧2)
Trong đó, 𝑧𝑖 là input của layer thứ 𝑖, 𝑎𝑖 là output của layer thứ 𝑖 sau khi áp dụng activation function. 𝑊1, 𝑏1, 𝑊2, 𝑏2 là các tham số (parameters) cần tìm của mơ hình mạng nơ-ron. Huấn luyện để tìm các tham số cho mơ hình tương đương với việc tìm các tham số 𝑊1, 𝑏1, 𝑊2, 𝑏2 sao cho hàm lỗi của mơ hình đạt được là thấp nhất. Ta gọi hàm lỗi của mơ hình là loss function. Đối với softmax function, ta dùng crossentropy loss (còn gọi là negative log likelihood). Nếu ta có N ví dụ dữ liệu huấn luyện, và C nhóm phân lớp, khi đó hàm lỗi giữa giá trị dự đốn 𝑦̂ và 𝑦 được tính:
𝐿(𝑦, 𝑦̂) = −1
𝑁∑ ∑ 𝑦𝑛,𝑖𝑙𝑜𝑔𝑦̂𝑛,𝑖
𝑖∈𝑁 𝑛∈𝑁
( 4.4 )
Ý nghĩa công thức trên nghĩa là: lấy tổng trên toàn bộ tập huấn luyện và cộng dồn vào hàm loss nếu kết quả phân lớp sai. Độ dị biệt giữa hai giá trị 𝑦̂ và 𝑦 càng lớn thì độ lỗi càng cao. Mục tiêu của chúng ta là tối thiểu hóa hàm lỗi này. Ta có thể sử dụng phương pháp gradient descent để tối tiểu hóa hàm lỗi. Có hai loại gradient descent, một loại với fixed learning rate được gọi là batch gradient descent, loại cịn lại có learning rate thay đổi theo quá trình huấn luyện được gọi là SGD (stochastic gradient descent) hay minibatch gradient descent.
Gradient descent cần các gradient là các vector có được bằng cách lấy đạo hàm
của loss function theo từng tham số 𝜕𝐿
𝜕𝑊1, 𝜕𝐿
𝜕𝑏1, 𝜕𝐿
𝜕𝑊2, 𝜕𝐿
𝜕𝑏2 để tính các gradient này, ta sử dụng thuật toán lan truyền ngược (backpropagation). Đây là cách hiệu quả để tính gradient khởi điểm từ output layer.
SVTH: LÊ TRUNG KIÊN 63 𝜕3 = 𝑦 − 𝑦̂ 𝜕2 = (1 − 𝑡𝑎𝑛ℎ2𝑧1) ∗ 𝜕3𝑊2𝑇 𝜕𝐿 𝜕𝑊2 = 𝑎1 𝑇𝛿3 𝜕𝐿 𝜕𝑏2 = 𝛿3 𝜕𝐿 𝜕𝑊1 = 𝑥 𝑇𝛿2 𝜕𝐿 𝜕𝑏1 = 𝛿2
4.2 Một số thư viện Python hỗ trợ luận văn 4.2.1 Thư viện json 4.2.1 Thư viện json
4.2.1.1 Giới thiệu
JSON là từ viết tắt của ký hiệu đối tượng JavaScript. Python có gói tích hợp có tên ‘json’ để hỗ trợ làm việc với JSON trong Python. JSON về cơ bản được sử dụng để mã hóa và giải mã dữ liệu. Q trình mã hóa dữ liệu JSON được gọi là tuần tự hóa