TỔNG QUAN
GIỚI THIỆU
Arduino đã tạo ra một cơn sóng lớn trong cộng đồng DIY toàn cầu, tương tự như sự thành công của Apple trong lĩnh vực thiết bị di động Sự đa dạng và số lượng người dùng, từ học sinh phổ thông đến sinh viên đại học, đã khiến ngay cả những nhà sáng lập cũng phải ngạc nhiên về độ phổ biến của sản phẩm này.
Arduino là một nền tảng mã nguồn mở thu hút sự chú ý của sinh viên và nhà nghiên cứu tại các trường đại học danh tiếng như MIT, Stanford và Carnegie Mellon Sự quan tâm này không chỉ đến từ tính linh hoạt và khả năng sáng tạo mà Arduino mang lại, mà còn vì sự hỗ trợ từ các công ty lớn như Google, với việc phát hành bộ kit Arduino Mega ADK để phát triển ứng dụng Android tương tác với cảm biến và thiết bị khác.
Arduino là một bo mạch vi xử lý cho phép lập trình tương tác với các thiết bị phần cứng như cảm biến, động cơ và đèn Điểm nổi bật của Arduino là môi trường phát triển dễ sử dụng, với ngôn ngữ lập trình thân thiện, phù hợp cho cả những người mới bắt đầu Sự phổ biến của Arduino đến từ mức giá phải chăng, chỉ khoảng $30, cùng với tính chất nguồn mở của phần cứng và phần mềm Người dùng có thể sở hữu một bo Arduino với 20 ngõ I/O, cho phép điều khiển nhiều thiết bị khác nhau.
Arduino được ra đời tại thị trấn Ivrea, Ý, và mang tên vị vua King Arduino từ thế kỷ 9 Được giới thiệu vào năm 2005 như một công cụ cho sinh viên của giáo sư Massimo Banzi tại trường Interaction Design Institute Ivrea, Arduino nhanh chóng lan tỏa nhờ sự truyền miệng tích cực từ người dùng Ngày nay, Arduino đã trở thành biểu tượng công nghệ, thu hút du khách đến Ivrea để khám phá nơi khởi nguồn của nó.
Arduino được sử dụng rộng rãi như bộ não xử lý cho nhiều thiết bị, từ đơn giản đến phức tạp, nhờ vào khả năng thực hiện các nhiệm vụ phức tạp và tính ứng dụng linh hoạt Việc phát triển ứng dụng với Arduino trở nên nhanh chóng và dễ dàng nhờ sự hỗ trợ lớn từ cộng đồng toàn cầu Để nâng cao hiệu quả giảng dạy, việc ứng dụng mạch điện tử Arduino trong thiết kế mô hình trực quan là rất cần thiết Tuy nhiên, hiện tại các mô hình ứng dụng Arduino trong giáo dục còn hạn chế, do đó, xây dựng mô hình thí nghiệm đếm sĩ số lớp sẽ mang lại lợi ích cho giảng viên và sinh viên trong việc học tập và tham khảo Đề tài “Xây dựng mô hình đếm sĩ số lớp sử dụng mạch Arduino” không chỉ giúp sinh viên tiếp cận thực tế với Arduino mà còn củng cố các kiến thức liên quan.
CÁC NGHIÊN CỨU LIÊN QUAN ĐẾN ĐỀ TÀI
Các ứng dụng mạch điện tử Arduino đang trở thành xu hướng trong các lĩnh vực kỹ thuật, đáp ứng nhu cầu thí nghiệm cao Điển hình là ứng dụng trong nhà thông minh (Smart home) và Internet of Things (IoT), nơi mọi đồ vật và con người đều có định danh riêng và có khả năng truyền tải thông tin qua mạng mà không cần tương tác trực tiếp Ngoài ra, mạch Arduino còn được sử dụng làm mạch chủ điều khiển trong các máy CNC và máy in 3D, mở rộng đến các ứng dụng công nghiệp Một ví dụ cụ thể là mô hình đếm sĩ số lớp, thể hiện khả năng ứng dụng linh hoạt của mạch Arduino trong việc xử lý và kiểm soát hệ thống.
LÝ DO CHỌN ĐỀ TÀI
Arduino, mặc dù mới ra đời và phát triển, đã trở thành công cụ phổ biến trên toàn cầu với nhiều ứng dụng sáng tạo trong cộng đồng nguồn mở Tuy nhiên, tại Việt Nam, Arduino vẫn chưa được biết đến rộng rãi Bài viết này nhằm giới thiệu thông tin về Arduino, hy vọng mang đến cho giảng viên và sinh viên một lựa chọn mới đầy tiềm năng cho việc giảng dạy và thực hiện các dự án.
MỤC TIÊU NGHIÊN CỨU
Mô hình đếm sĩ số lớp ứng dụng mạch Arduino được xây dựng nhằm giới thiệu cho sinh viên về một mạch điện tử phổ biến trên toàn cầu, đồng thời thực hiện các ứng dụng hiệu quả Nghiên cứu và ứng dụng mô hình này trong các môn học như Vi điều khiển, Đo lường và Điều khiển bằng máy tính không chỉ giúp sinh viên tiếp cận kiến thức lý thuyết mà còn tạo cơ hội thực hành cụ thể, từ đó nâng cao kinh nghiệm thực tế của họ.
ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU
Tác giả nghiên cứu lý thuyết về phương pháp và ngôn ngữ lập trình cho mạch Arduino, đồng thời thiết kế và thi công mô hình đếm sĩ số lớp học Mô hình này sử dụng mạch Arduino kết hợp với cảm biến siêu âm và các thiết bị điện tử khác, mang lại hiệu quả cao trong việc quản lý sĩ số.
- Phát hiện đối tượng trong khoảng cách tối đa 3m
- Sử dụng LCD hiển thị thông tin
- Có nút nhấn dùng để đặt lại mức không (reset zero)
- Có thể kết nối với máy tính để theo dõi.
PHƯƠNG PHÁP NGHIÊN CỨU
CƠ SỞ LÝ THUYẾT
LẬP TRÌNH ARDUINO
Lập trình cho Arduino tương tự như C++ và được thiết kế để giúp những người không có nhiều kiến thức về vi điều khiển dễ dàng tiếp cận và ứng dụng Để bắt đầu, người dùng chỉ cần cài đặt phần mềm Arduino IDE, driver đi kèm và kết nối mạch Arduino với máy tính qua cổng USB, từ đó có thể viết code và nạp trực tiếp vào Arduino Phần mềm Arduino được chia thành ba phần chính.
- Phần 2: Đoạn lệnh chỉ chạy 1 lần (được đặt trong void setup())
- Phần 3: Đoạn lệnh chạy lập lại (được đặt trong void loop())
Hình 2.1: Các phần của code arduino
Để thuận tiện cho việc theo dõi, tác giả sẽ phân chia quá trình viết code thành các nhóm lệnh xử lý các công việc riêng biệt, sau đó sẽ kết nối chúng lại để tạo thành một chương trình hoàn chỉnh.
Mỗi phần của chương trình sẽ được trình bày các điểm chính, cùng với đó, các chương trình con và hàm được sử dụng cũng sẽ được giới thiệu trong các mục tiếp theo.
LẬP TRÌNH ANDROID DÙNG APP INVENTOR
App Inventor, ra mắt vào tháng 7/2010, cho phép người dùng tạo ứng dụng Android từ cơ bản đến nâng cao mà không cần kiến thức lập trình, thông qua các thao tác kéo-thả đơn giản.
App Inventor là một công cụ mạnh mẽ dựa trên nguyên tắc "những gì bạn thấy là những gì bạn có" (WYSIWYG), giúp người dùng dễ dàng tiếp cận và xây dựng ứng dụng Android Với giao diện trực quan và dễ hiểu, App Inventor cho phép truy cập vào nhiều chức năng của điện thoại, bao gồm cả GPS, góp phần làm phong phú thêm bộ sưu tập ứng dụng Android.
Ngày nay, MIT đã hoàn thiện App Inventor, cho phép người dùng dễ dàng tạo ứng dụng Android thông qua tài khoản Google Chỉ cần truy cập vào trang web của MIT và đăng nhập bằng tài khoản Google, người dùng có thể bắt đầu xây dựng ứng dụng từ những mảnh ghép đơn giản.
Nếu bạn là người mới bắt đầu hoặc chưa biết gì về App Inventor, MIT cung cấp nhiều hướng dẫn chi tiết để giúp bạn làm quen với chương trình Những tài liệu này sẽ hỗ trợ bạn trong việc phát triển ý tưởng của mình một cách hiệu quả.
Để bắt đầu sử dụng App Inventor, bạn hãy truy cập vào ai2.appinventor.mit.edu và đăng nhập bằng tài khoản Google của mình để truy cập vào trang quản lý các dự án.
Giao diện quản lý các dự án cho phép bạn xem, chỉnh sửa, xóa và xuất bản các dự án đã hoàn thành Hiện tại, chúng ta sẽ bắt đầu xây dựng một ứng dụng điều khiển qua Bluetooth.
Tạo project mới và giới thiệu tổng quan giao diện Để tạo một Project mới ta chọn Start New Project và đặt tên cho project đó
Hình 2.4: Giao diện thiết kế Project mới Giao diện thiết kế Project hiện ra rất đơn giản Bên trái là các control bao gồm: User
Interface, Media, Sensor, Social,… để sử dụng các bạn chỉ cần click chuột và kéo thả vào
Màn hình chính hiển thị mô phỏng ứng dụng, trong khi cửa sổ bên phải cho phép quản lý các thành phần, phương tiện và thuộc tính của từng điều khiển Hãy sử dụng tính năng kéo và thả để tùy chỉnh các thành phần một cách dễ dàng.
To achieve the desired interface, place labels and buttons onto the layers, ensuring to select the Bluetooth Client control in the Connectivity section For simplicity, click on the buttons and choose the Rename option to assign custom names as needed.
Hình 2.5: Giao diện thiết kế hoàn chỉnh
Sau khi được giao diện như trên, chúng ta sẽ tiến hành phần “code” Các bạn bấm vào Tab “Blocks” ở góc trên bên phải màn hình
Hình 2.6: Giao diện thiết kế của ứng dụng App Inventor
Cửa sổ "code" hiển thị bên trái với các khối lệnh như Control, Logic, Math, Text, cùng với các khối lệnh tương ứng cho mỗi nút Để thực hiện một lệnh, bạn chỉ cần kéo thả khối lệnh bằng cách nhấp chuột và kéo vào màn hình.
Các bạn lần lượt kéo các khối lệnh để được các dòng code sau:
Hình 2.7: Khối lệnh kết nối bluetooth
Khối lệnh truyền dữ liệu nút nhấn được thể hiện qua hình 2.8, trong đó các khối lệnh màu vàng đất đại diện cho các sự kiện (event) Dưới đây là một số giải thích về các sự kiện này để bạn đọc có thể hiểu rõ hơn.
• “When Screen1.Initialize do” có nghĩa là khi Screen1 được khởi tạo sẽ thực hiện lệnh đằng sau do
• “When moveforward.TouchDown do” có nghĩa khi sự kiện touchdown xảy ra với nút moveforward thì sẽ thực hiện lệnh đằng sau do
Tương tự với những câu lệnh còn lại nhé!
Chúng ta cần phân biệt các sự kiện Click, TouchDown, TouchUp :
• Click: có nghĩa quá trình ấn vào một button và lấy tay lên
• TouchDown: có nghĩa là việc ấn vào một button
• TouchUp: có nghĩa là việc đang nhấn một button và lấy tay ra
Hình 2.9: Tống quát chương trình
Hình 2.10: Giao diện thu thập tín hiệu trên Smartphone Đóng gói ứng dụng thành file *.apk
Để đóng gói ứng dụng thành file APK và cài đặt trên điện thoại, bạn hãy chọn Build và sau đó chọn App (cung cấp QR code cho apk) nếu muốn tạo QR code cho file APK Nếu bạn muốn lưu file APK vào máy tính, hãy chọn tùy chọn còn lại.
Hướng dẫn này cung cấp những bước cơ bản để tạo ứng dụng Android điều khiển xe qua Bluetooth mà không cần viết mã.
LẬP TRÌNH THU THẬP DỮ LIỆU TRÊN MÁY TÍNH
Phần mềm Visual Studio 2012, do Microsoft phát triển, là một công cụ lập trình hiện đại giúp tạo ra giao diện phần mềm một cách dễ dàng và tiện lợi Trong bài viết này, chúng tôi sẽ trình bày cách sử dụng Visual Studio để thiết kế giao diện đếm sĩ số lớp bằng ngôn ngữ Visual Basic.
Hình 2.11: Logo của phần mềm visual studio 2012 Giao diện đếm sĩ số lớp được viết ra có các thành phần như trong giao diện sau:
Giao diện được thiết kế hỗ trợ nghiên cứu, vẫn giữ lại nội dung truyền nhận để thuận tiện cho việc theo dõi và chỉnh sửa trong quá trình nghiên cứu.
Phần mềm không chỉ hiển thị các tính năng trực tiếp trên giao diện mà còn tích hợp hai bộ đếm thời gian, một cổng serial và một menu script Các chi tiết về cách lập trình cho từng phần sẽ được trình bày trong các mục tiếp theo.
Lập trình chung cho form
Phần lập trình chung cho form nhằm khai báo biến và hằng số dùng chung trong phần mềm, đồng thời thiết lập cổng COM và quy định cách thức hoạt động của nó.
;khai báo biến và hằng
Private readBuffer As String = String.Empty
Private nhangiatridat As String = String.Empty
Private cannang As String = String.Empty
;khai báo cổng com cùng những thông số để cổng hoạt động
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' read avaiable COM Ports:
Dim Portnames As String() = System.IO.Ports.SerialPort.GetPortNames
If Portnames Is Nothing Then
MsgBox("There are no Com Ports detected!")
ParityReplace = &H3B ' replace ";" when parity error occurs
PortName = "COM3" 'cboComPort.Text ;Tên cổng com rất quan trọng
BaudRate = CInt("9600") 'CInt(cboBaudRate.Text)
Parity = IO.Ports.Parity.None
StopBits = IO.Ports.StopBits.One
Handshake = IO.Ports.Handshake.None
ReceivedBytesThreshold = 1 'threshold: one byte in buffer > event is fired NewLine = vbCr ' CR must be the last char in frame This terminates the
' check whether device is avaiable:
SerialPort1.Open() comOpen = SerialPort1.IsOpen
MsgBox("Error Open: " & ex.Message)
Khi đã có cổng com, ta viết chương trình để phần mềm nhận tín hiệu từ arduino gửi lên máy tính
Nhận và sử lý dữ liệu đến và xuất ra màn hình
Dữ liệu từ Arduino được gửi theo trình tự , do đó, việc nhận và tách riêng các dữ liệu này là rất cần thiết để đảm bảo quá trình xử lý thông tin hiệu quả.
Private Sub SerialPort1_DataReceived(sender As Object, e As
IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Me.Invoke(New EventHandler(AddressOf DoUpdate))
''' update received string in UI
Public Sub DoUpdate(ByVal sender As Object, ByVal e As System.EventArgs) readBuffer = Trim(readBuffer)
; lưu dữ liệu nhận được vào Txt_nhan.Text cannang = Mid(readBuffer, 1, InStr(readBuffer, ";") - 1)
; gán giá trị từ ký tự 1 đến trước dấu ; của Txt_nhan.Text vào cannang
16 hienthicannang.Text= Mid(cannang, 2) readBuffer = Mid(readBuffer, InStr(readBuffer, ";") + 1)
; xóa từ đầu đến dấu ; trong readBuffer trangthaivan.Text = Mid(readBuffer, 1, InStr(readBuffer, ";") - 1)
; xuất giá trị chuỗi trước dấu ; trong readBuffer ra trangthaivan nhangiatridat = Mid(readBuffer, InStr(readBuffer, ";") + 1)
; gán giá trị đặt bằng nội dung sau dấu ; trong readBuffer sailech.Text = cannang – nhangiatridat
Timer1.Enabled = True ;khởi động timer 1
Ngoài đoạn mã chính, còn có một đoạn mã nhỏ liên quan đến timer 1, giúp nhận dữ liệu và thông báo khi hết thời gian nhận tín hiệu.
Private Sub Timer1_Tick(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Timer1.Tick
Giao diện đã xử lý dữ liệu gửi lên và hiển thị trên màn hình Tiếp theo, cần lập trình để giao diện có khả năng gửi yêu cầu xuống Arduino nhằm thực hiện điều khiển.
Để điều khiển Arduino, việc quy ước các ký hiệu khi gửi tín hiệu là rất quan trọng Sự đồng nhất trong lập trình Arduino giúp tránh hiểu nhầm và đảm bảo tín hiệu được truyền đi chính xác.
Mỗi lệnh gửi đi tương ứng với một nút nhấn trên giao diện và cần được lập trình riêng, mặc dù cấu trúc của các câu lệnh tương tự nhau Nút reset được lập trình theo cách riêng biệt.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Reset.Click
If comOpen Then SerialPort1.WriteLine(Txt_truyen.Text)
Đoạn code trên thực hiện hai nhiệm vụ khi nhấn nút: gán ký tự 'r' cho biến Txt_truyen và gửi nội dung này qua cổng nối tiếp Do đó, đoạn code có thể được rút gọn mà không cần sử dụng hộp Txt_truyen.Text để hiển thị nội dung truyền.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Reset.Click
If comOpen Then SerialPort1.WriteLine(“r”)
Tuy nhiên, để tiện cho việc theo dõi, tác giả sẽ chọn cách đầu là cho thể hiện ở Txt_truyen.Text để theo dõi
Các nút khác cũng được lập trình tương tự:
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Mo.Click
If comOpen Then SerialPort1.WriteLine(Txt_truyen.Text) tudong.Enabled = True
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles dong.Click
If comOpen Then SerialPort1.WriteLine(Txt_truyen.Text) tudong.Enabled = True
Nút nhấn mở và đóng được cải tiến với một dòng lệnh để chuyển chế độ enabled của nút tudong thành True Nhờ đó, khi nhấn vào một trong hai nút này, nút tudong sẽ nổi lên và có thể hoạt động bình thường.
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles tudong.Click
If comOpen Then SerialPort1.WriteLine(Txt_truyen.Text) tudong.Enabled = False
Khi nút nhấn tudong được nhấn thì giao diện sẽ gửi đi chữ t và đồng thời vô hiệu hóa chính nó
Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Dat.Click
Txt_truyen.Text += giatridat.Text
Nút nhấn dat (đặt) có chức năng gửi chuỗi bao gồm chữ s và giá trị số từ textbox giatri dat Để thực hiện điều này, cần sử dụng hai lệnh gửi đi (SerialPort1.Write): lần đầu gửi chữ s và lần sau gửi giá trị trong hộp thoại giatri dat Đồng thời, để hiển thị chuỗi gửi đi trong Txt_truyen, ta sử dụng lệnh gán cộng thêm: += để nối chuỗi s với nội dung trong giatri dat.
Ngoài ra, nút gửi và nút xóa cũng được lập trình:
Private Sub Btn_gui_Click(sender As Object, e As EventArgs) Handles Btn_gui.Click
If comOpen Then SerialPort1.WriteLine(Txt_truyen.Text)
Private Sub Btn_xoa_Click(sender As Object, e As EventArgs) Handles Btn_xoa.Click Txt_nhan.Text = " "
Hiển thị trạng thái bằng hình ảnh
Trong giao diện, có một khung hình ảnh được điều khiển bởi một timer dựa trên giá trị của biến trangthaivan.text Khi trangthaivan.text bằng 0, hình d sẽ không thay đổi Ngược lại, nếu trangthaivan.text khác 0, hình a, b và c sẽ được hiển thị luân phiên để tạo hiệu ứng ảnh động Để thực hiện điều này, cần sử dụng thêm một biến dem và một timer khác (timer2) Đoạn mã được viết trong timer2 như sau:
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
If (trangthaivan.Text = 0) Then dem = 0 Else dem = dem + 1
If (dem = 0) Then hinhhienthi.Image = System.Drawing.Image.FromFile _
If (dem = 1) Then hinhhienthi.Image = System.Drawing.Image.FromFile _
If (dem = 2) Then hinhhienthi.Image = System.Drawing.Image.FromFile _
If (dem = 3) Then hinhhienthi.Image = System.Drawing.Image.FromFile _
Đoạn mã này thực hiện kiểm tra trạng thái của van khi bộ đếm thời gian kích hoạt Nếu trạng thái van bằng 0, biến đếm sẽ được đặt về 0; nếu trạng thái van khác 0, biến đếm sẽ tăng lên 1 Dựa vào giá trị của biến đếm, nếu bằng 0 sẽ hiển thị hình d, bằng 1 hiển thị hình a, bằng 2 hiển thị hình b, và bằng 3 hiển thị hình c, sau đó biến đếm sẽ được reset về 0.
Tạo menuscrip và form thông tin
Có thể tạo thêm menuscrip như trong 2 hình sau và lập trình cho mỗi phần như biên dưới: Lập trình cho nút Exit:
Private Sub ExitToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ExitToolStripMenuItem.Click
Lập trình cho nút thông tin:
Private Sub ThôngTinToolStripMenuItem_Click(sender As Object, e As EventArgs)
Tiếp sau đây, phần lập trình arduino và thiết kế phần cứng cũng rất quan trọng để có một sản phẩm hoàn chỉnh
XÂY DỰNG MÔ HÌNH
CẤU TRÚC HỆ THỐNG
Máy vi tính & phần mềm mô phỏng Proteus
Máy vi tính đóng vai trò quan trọng trong cuộc sống hiện đại và nghiên cứu, đặc biệt trong lĩnh vực điện tử lập trình Bài viết này sẽ trình bày về việc sử dụng một máy vi tính có cấu hình trung bình, cụ thể là chip xử lý Core 2 Duo và RAM 2GB, đã được cài đặt sẵn một số phần mềm cần thiết.
- Phần mêm Arduino IDE dùng để rà soát lỗi và biên dịch lệnh cho arduino
- Phần mềm hỗ trợ lập trình giao diện
- Phần mềm Proteus: dùng để vẽ mạch nguyên lý và mạch in để làm mạch hiển thị-nút nhấn
Internet đóng vai trò quan trọng trong việc lập trình Arduino, cung cấp thư viện, mã mẫu và hướng dẫn hữu ích Để kết nối máy tính với Arduino, người dùng cần sử dụng cáp USB đi kèm.
Phần mềm Proteus là công cụ mạnh mẽ giúp mô phỏng hoạt động của mạch điện tử, bao gồm cả thiết kế mạch và lập trình điều khiển cho các vi điều khiển như MCS.
Proteus là phần mềm mô phỏng mạch điện tử của Lancenter Electronics, hỗ trợ mô phỏng hầu hết các linh kiện điện tử phổ biến Phần mềm này đặc biệt hỗ trợ các vi điều khiển như PIC, 8051, AVR và Motorola, giúp người dùng dễ dàng thiết kế và kiểm tra mạch điện tử.
Phần mềm Proteus bao gồm hai chương trình chính: ISIS cho phép mô phỏng mạch và ARES dùng để thiết kế mạch in Đây là công cụ lý tưởng cho việc mô phỏng các loại vi điều khiển như PIC, 8051, dsPIC, AVR và HC11, đồng thời hỗ trợ các giao tiếp như I2C, SPI, CAN, USB và Ethernet Ngoài ra, Proteus còn có khả năng mô phỏng hiệu quả các mạch số và mạch tương tự.
Hình 3.1: Giao diện khởi động phần mềm Proteus
Thư viện Arduino trong Proteus
Thư viện Arduino là một bổ sung rất hay cho phần mềm mô phỏng Proteus nó giúp cho việc mô phỏng Arduino được thuận tiện và dễ dàng hơn thay vì chỉ mô phỏng được chip ATmega328(nhân của Arduino), thư viện này được phát triển bởi các kĩ sư Cesar Osaka, Daniel Cezar, Roberto Bauer và được đăng tải trên blog tiếng Bồ Đào Nha: http://blogembarcado.blogspot.de/
Thư viện bao gồm các linh kiện sau:
- Arduino Uno (Phiên bản chip ATmega328 chân DIP)
- Arduino Uno (Phiên bản chip ATmega328 chân SMD)
- Cảm biến siêu âm Ultrasonic V2
Hình 3.2: Các linh kiện trong thư viện Arduino cho Proteus
Arduino là một board mạch vi xử lý mở, được thiết kế để xây dựng các ứng dụng tương tác với môi trường, sử dụng nền tảng vi xử lý AVR Atmel 8-bit hoặc ARM Atmel 32-bit Các model hiện tại bao gồm cổng USB, 6 chân đầu vào analog và 14 chân I/O kỹ thuật số, tương thích với nhiều board mở rộng Ra mắt vào năm 2005, Arduino cung cấp phương thức dễ dàng và tiết kiệm cho người yêu thích, sinh viên và chuyên gia trong việc tạo ra thiết bị tương tác với môi trường thông qua cảm biến và cơ cấu chấp hành Một số ứng dụng phổ biến cho người mới bắt đầu bao gồm robot đơn giản, điều khiển nhiệt độ và phát hiện chuyển động Arduino đi kèm với môi trường phát triển tích hợp (IDE) cho phép người dùng lập trình bằng ngôn ngữ C hoặc C++ trên máy tính cá nhân.
Hình 3.3: Các chân kết nối của arduino R3
Hình 3.4: Các chân kết nối của chíp Atmega328 và các chân trong arduino
Arduino UNO là dòng mạch nổi bật nhất trong lập trình Arduino, hiện đã phát triển đến thế hệ thứ 3 (R3).
Chúng ta có thể thiết kế một bo mạch rời sử dụng chip Atmega328 đã được nạp code bằng Arduino Trong đề tài này, tác giả thực hiện thi công một bo mạch độc lập với chip của Arduino, cho phép mạch hoạt động mà không cần sự hỗ trợ từ các thiết bị khác.
Sử dụng bo Arduino giúp tiết kiệm chi phí hiệu quả Để kết nối với máy tính, cần sử dụng mạch chuyển đổi serial sang USB Nếu cần giao tiếp với các chip vi điều khiển khác, có thể thực hiện trực tiếp qua cổng serial.
Cổng USB là giao tiếp quan trọng dùng để tải mã từ máy tính lên vi điều khiển, đồng thời cũng cho phép truyền dữ liệu giữa vi điều khiển và máy tính qua giao tiếp serial.
Để cung cấp nguồn cho Arduino, bạn có thể sử dụng cổng USB, nhưng không phải lúc nào cũng có thể kết nối với máy tính Trong trường hợp này, bạn cần nguồn điện từ 9V đến 12V.
- Có 14 chân vào/ra số đánh số thứ tự từ 0 đến 13, ngoài ra có một chân nối đất (GND) và một chân điện áp tham chiếu (AREF)
Vi điều khiển AVR là bộ xử lý trung tâm của toàn bộ bo mạch Arduino, và mỗi mẫu Arduino sử dụng một loại chip khác nhau Cụ thể, Arduino Uno sử dụng chip ATMega328.
- Các thông số chi tiết của Arduino Uno:
Vi xử lý: Atmega328 Điện áp hoạt động: 5V Điện áp đầu vào: 7-12V DC iện áp đầu vào (Giới hạn): 6-20V
Chân vào/ra (I/O) số: 14 (6 chân có thể cho đầu ra PWM)
Dòng điện trong mỗi chân I/O: 40mA
Dòng điện chân nguồn 3.3V: 50mA
Board Arduino Nano có thiết kế tương tự như Arduino Uno nhưng nhỏ gọn hơn, giúp dễ dàng sử dụng Với kích thước tối giản, Arduino Nano chỉ hỗ trợ nạp code và cung cấp điện qua một cổng mini USB duy nhất.
Hình 3.6: Board Arduino Nano Thông số kĩ thuật chi tiết:
Vi xử lý ATmega328 (phiên bản v3.0) Điện áp hoạt động 5 V Điện áp đầu vào 7-12 V (khuyến nghị) Điện áp đầu vào 6-20 V (giới hạn)
Chân vào/ra số 14 (6 chân có khả năng xuất ra tín hiệu PWM)
Dòng điện mỗi chân 40 mA
32 KB (ATmega328) - 2 KB dùng để nạp bootloader SRAM 1 KB (ATmega168) hoặc 2 KB (ATmega328)
EEPROM 512 bytes (ATmega168) hoặc 1 KB (ATmega328)
Cảm biến siêu âm HC-SR05
Cảm biến siêu âm hoạt động dựa trên nguyên lý phát sóng siêu âm và đo thời gian từ khi sóng được phát ra cho đến khi sóng phản xạ trở lại.
NGUYÊN LÝ HOẠT ĐỘNG
Mô hình đếm sĩ số lớp hoạt động dựa trên sự kết nối giữa mạch Arduino, máy tính và mạch nút nhấn - hiển thị Mạch Arduino đóng vai trò trung tâm, facilitating communication giữa các thiết bị Máy tính sử dụng giao diện để đọc thông tin từ Arduino và gửi tín hiệu điều khiển Mạch hiển thị - nút nhấn hiển thị số liệu từ Arduino và truyền trạng thái nút nhấn trở lại Arduino xử lý tất cả tín hiệu nhận được từ máy tính, đảm bảo hoạt động hiệu quả của hệ thống.