763 123200 1408243681 0 h11

Xin chào các bạn !

Bài viết dưới đây mình sẽ giới thiệu đến các bạn làm thế nào để lấy được file .hex từ trình biên dịch Arduino IDE. (Chắc hẳn những bạn nào đã từng lập trình 8051 trên Keil C hoặc AVR trên Code Vision, Studio…đều đã quá quen thuộc với file .hex này). 

Kế đó là sơ lược về phần mềm mô phỏng mạch Proteus và cách mô phỏng Arduino trên Proteus.  

Mục đích bài viết

File .hex là gì và chúng ta lấy file .hex để làm gì? 

hex ở đây được viết tắt bởi từ hexadecimal có nghĩa là hệ cơ số 16 hay hệ thập lục phân. Khi bạn viết code và nạp chương trình cho vi điều khiển và tinh chỉnh ( đơn cử với board Arduino UNO là ATMEGA 328 ) thì không đơn thuần là nạp những ” câu lệnh ” bạn viết ra đưa vào vi tinh chỉnh và điều khiển, mà phải trải qua trình biên dịch ( Aruduino IDE, Code Vision, Keil C. .. đều là trình biên dịch ) ” dịch ” lại những gì mình viết và tạo ra một chuỗi kí tự gồm những chữ ( từ A đến F ) và số ( từ 0 đến 9 ) thuộc hệ thập lục phân. Những chữ số này nạp vào vi tinh chỉnh và điều khiển thì vi điều khiển và tinh chỉnh mới ” hiểu ” được. Những chữ số này được đóng gói và lưu lại thành một file có đuôi lan rộng ra là “. hex ” .
Khi bạn muốn nạp lại code thì chỉ cần lấy file. hex này nạp. Bạn cũng hoàn toàn có thể ” phẫu thuật ” file. hex này xem nó chứa gì bằng Notepad. Sau đây là một đoạn thập lục phân trong file. hex mình vừa tạo

: 060000002FC0 FECFFDCF72 : 10000600FCCFFBCFFACFF9 CFF8CFF7CFF6CFF5CFAE : 10001600F4 CFF3CFF2CFF1CFF0CFEFCFEECFEDCFDE : 1000260020202020202020202020202020202020CA : 100036002756494554204E414 D2720202020202078 : 100046002020202020202020202080C02 A0060019F : 1000560026000200A30150000000 F894EE27ECBB36 : 10006600F1 E0FBBFEBBFE5BFF8E1F1BDE1BD8DE01F : 10007600A2 E0BB27ED938A95E9F780E094E0A0E63D : 10008600ED930197 E9F7E2E5F0E085919591009708

Arduino IDE cũng dựa trên nguyên tắc cơ bản đó để nạp ” chương trình mình viết ” vào vi tinh chỉnh và điều khiển nhưng để đơn thuần cho người dùng không phải phức tạp qua nhiều thao tác như các trình biên dịch khác, Arduino IDE đã làm ẩn file. hex đi cho nên vì thế bạn chỉ cần ấn ” Upload ” chờ trong giây lát là xong mà không cần phải khổ sở tìm file. hex nào hết .

Nhưng có một thực tế đặt ra là Arduino IDE có thư viện code mẫu quá phong phú, viết chương trình trên Arduino IDE khá dễ dàng cộng thêm OpenSource viết riêng cho Arduino thì ngày càng nhiều (bởi cộng đồng Arduino ngày càng lớn mạnh mà ^^) chính vì vậy một số người trung thành với dòng AVR như ATMEGA 8, 16, 32, Tiny rất thích “địa” code của Arduino để nghiên cứu nhanh một đề tài dự án nào đó nhưng lại không có board Arduino. Điều này phát sinh ở họ là phải tìm cho được file .hex để nạp theo cách phổ thông. (Nếu có board Arduino bạn có thể tham khảo 2 bài viết sau: Attiny13 – Trợ thủ đắc lực của Arduino – Lập trình nó? và Nạp bootloader cho vi điều khiển trên Arduino)

Thứ hai nữa là dành cho những bạn trẻ nào “nghèo khó” không đủ điều kiện để mua một board Arduino nhưng lại có niềm đam mê với Arduino. Có một cách tiếp cận rất thực tế đó là sử dụng phần mềm mô phỏng Arduino trên máy tính mà mình sắp giới thiệu đây. Và tất nhiên, để mô phỏng được thì chúng ta cần phải trích xuất được file hex, sẽ nói kỹ hơn khi đi vào nội dung chi tiết. Sắp vào phần gay cấn rồi ^^ cố gắng bạn nhé!

Nội dung

1. Sơ lược về phần mềm Proteus:

Proteus là ứng dụng được cho phép mô phỏng hoạt động giải trí của mạch điện tử gồm có phần phong cách thiết kế mạch và viết chương trình tinh chỉnh và điều khiển cho các họ vi tinh chỉnh và điều khiển như MCS-51, PIC, AVR, … Proteus là ứng dụng mô phỏng mạch điện tử của Lancenter Electronics, mô phỏng cho hầu hết các linh phụ kiện điện tử thông dụng, đặc biệt quan trọng tương hỗ cho cả các MCU như PIC, 8051, AVR, Motorola .
Phần mềm gồm có 2 chương trình :

  • ISIS cho phép mô phỏng mạch
  • ARES dùng để vẽ mạch in.

Proteus là công cụ mô phỏng cho các loại vi tinh chỉnh và điều khiển khá tốt, nó tương hỗ các dòng vi tinh chỉnh và điều khiển PIC, 8051, PIC, dsPIC, AVR, HC11, MSP430, ARM7 / LPC2000 … các tiếp xúc I2C, SPI, CAN, USB, Ethenet, … ngoài những còn mô phỏng các mạch số, mạch tựa như một cách hiệu suất cao. Nếu bạn đang muốn học lập trình trên Arduino hoặc bất kỳ vi tinh chỉnh và điều khiển nào khác mà không có điều kiện kèm theo hoặc kinh nghiệm tay nghề để làm các mạch tăng trưởng hoặc bạn muốn kiểm tra chương trình trước khi nạp vào mạch tăng trưởng thì Proteus là lựa chọn không hề bỏ lỡ .
Ngoài tính năng mô phỏng ” bá đạo ” ra thì ứng dụng Proteus còn được sử dụng để phong cách thiết kế mạch, làm board, mô phỏng 3D. Hiện nay Proteus đã update đến phiên bản 8. Nhưng theo kinh nghiệm tay nghề sử dụng và đã cài qua bản 8.1 thì các bạn nên sử dụng bản 7.8 hoặc 7.10 ( Bài viết này mình sử dụng Proteus 7.8 SP2 để minh họa ) chính do nếu chỉ nghiệp dư dùng Proteus để mô phỏng thì ta cũng không cần ” đú ” lên 8.1 làm gì vừa tốn tài nguyên máy, vừa khó crack thành công xuất sắc vĩnh viễn và còn Open 1 số ít lỗi, những gì của bản 7. phân phối là dư sức cho ta sử dụng .
Bạn hoàn toàn có thể tải về ứng dụng này trên trang diendanbaclieu.net. Nếu bạn yêu thích và muốn khám phá sâu hơn về Proteus xin sung sướng tìm bài hướng dẫn trên google hoặc qua các video trên youtube, có rất nhiều tài liệu hay đấy bạn. Bài viết này chỉ mang đặc thù trình làng, không đi sâu vào cách sử dụng ứng dụng .
Mặc định thư viện mô phỏng Proteus không có board Arduino : ( nhưng cũng đừng lo ngại, bạn hãy tải về thư viện mô phỏng Arduino trên trang github.com/blogembarcadobr ( tải về ) sau đó giải nén và chép BLOGEMBARCADO.LIB vào thư mục LIBRARY của Proteus theo đường dẫn

C:\Program Files (hoặc Program Files (x86) nếu máy bạn nào sử dụng 64 bit) \Labcenter Electronics\Proteus 7 Professional\LIBRARY 

761 123200 1408242117 0 hinh 6

711 812200 1408242324 0 h7

Trong thư viện này hỗ trợ 5 loại board Arduino khác nhau và 1 cảm biến siêu âm Untrasonic

2. Mô phỏng trên Proteus

Sau khi đã cài đặt, add thư viện và crack thành công, bạn hãy mở ISIS Profesional bằng mọi “thủ đoạn” của bạn 😀 (ISIS Profesional là cái biểu tượng xanh)

762 123200 1408242453 0 h8

Để “lấy” Arduino và một số linh kiện khác ra mô phỏng bạn ấn phím “P” sẽ xuất hiện hộp thoại Pick Devices. Tại Keywords bạn gõ linh kiện cần lấy (mình sẽ lấy ra 1 board Arduino UNO, 1 con trở và 1 con led đỏ để mô phỏng chương trình chớp tắt 1 led bạn nhé).

712 812200 1408243674 0 h10

763 123200 1408243681 0 h11

                   716 882200 1408243669 0 h9

Sau khi lấy linh kiện xong, bạn sắp xếp và đi dây như trong hình, bạn nhớ double vào con điện trở để thay đổi giá trị 10K thành 330 nhé (Mẹo nhỏ: để phóng to thu nhỏ trong Proteus bạn có thể ấn F6 – F7 hoặc lăn chuột – thử xem thế nào nhé :D)

Bạn có để ý rằng nguồn cấp cho board Arduino đâu không thấy? Đó là một sự đơn giản khi mô phỏng, mặc định thư viện này đã thiết lập cấp nguồn sẵn cho Arduino, nhưng khi lắp mạch thực tế bạn nhớ cấp nguồn cho Arduino nhé.

717 882200 1408244986 0 h12

Tới đây chúng ta vẫn chưa thể ấn nút PLAY 719 882200 1408249178 0 play (là nút tam giác ở góc trái phía dưới màn hình) để mô phỏng được đâu, sẽ báo 2 Error(s) như hình trên, bởi vì board Arduino UNO chưa có CODE nạp vào mà. Lúc này ta cần phải đưa file .hex vào để mô phỏng. Bằng cách nào thì mời bạn tiếp tục đọc phần sau nhé! 😀  

3. Lấy file .hex từ Arduino IDE

Bạn hãy mở Arduino IDE lên, vì ta muốn mô phỏng led nhấp nháy nên sẽ vào File – Examples – 01. Basics – Blink (quá quen thuộc phải không nào) để mở đoạn code led nhấp nháy. Do không muốn phải chỉnh sửa code nên mình đã mắc sẵn led vào chân 13, bạn thấy đấy.  Cũng tại IDE bạn Click vào File – Preferences, sẽ xuất hiện hộp thoại Preferences, tại đây bạn tick vào ô vuông compilation, sau đó ấn OK.

Lưu ý với các bạn dùng phiên bản Arduino 1.6.x

Với các bản mới hơn đường dẫn như trong bài cũng dẫn đến file preferences.txt, nhưng file đó không chỉnh sửa được ( trong đó có ghi và hướng dẫn đến file preferences khác chỉnh sửa đc cho các hệ quản lý khác nhau ). Như bản 1.6.5 mình dùng thì là C : \ Users \ Tên người dùng \ AppData \ Roaming \ Arduino15 và làm như trong bài ( Lưu ý : Trc khi chỉnh sửa thì phải tắt Arduino IDE đi, nếu không tìm thấy AppData bật chọn hiện file ẩn ). Cho chắc như đinh nhất nên tìm ở đâu bạn vào File -> Preferences sẽ tìm thấy đường dẫn ở cuối .
Đóng góp của bạn @ SumoBBQ

Tiếp đó bạn ấn 713 812200 1408246429 0 verify để Built chương trình. Bạn để ý sẽ thấy điều khác biệt: trình biên dịch IDE sẽ Built cho chúng ta một file .hex được lưu ở đường dẫn như hình dưới:

 764 123200 1408246779 0 built

Bạn cũng cần quan tâm chọn board khớp với board mình sẽ mô phỏng nhé, ở đây mình mô phỏng Arduino Uno .

Đến đây bạn đã có thể vào đường dẫn này để lấy file .hex ra mô phỏng, tuy nhiên chúng ta sẽ thêm một số bước nữa để PRO hơn nhé.

Bước 1: Mở tập tin C:\Program Files\Arduino\lib\preferences.txt bằng Notepad hoặc Notepad++

Bước 2: Thêm dòng lệnh sau vào cuối file preferences.txt: build.path =  ( là đường dẫn đến thư mục mà bạn muốn chứa  file hex sau khi Arduino hoàn tất quá trình biên dịch)

Ví dụ: Để lưu vào thư mục Built_Arduino (mình vừa tạo) trên desktop của mình, mình viết như sau:

718 882200 1408248082 0 preferences

Sau đó bạn nhớ ấn Ctr + S để Save lại nhé 😀

tắt IDE đi và mở lại (nhất thiết phải vậy nhé), mở CODE Blink led nhấp nháy như trên mình trình bày và Verify Tiếp theo bạn ( nhất thiết phải vậy nhé ), mởled nhấp nháy như trên mình trình diễn vàBạn sẽ thấy file. hex đã không còn ở thư mục temp khó tìm nữa mà vào đúng thư mục mình mong ước .

714 812200 1408248598 0 built 2

4. Lắp ráp và hoàn tất

Bây giờ bạn đã có file. hex và mạch mô phỏng. Điều bạn cần làm lúc này là mở mạch hồi nãy bạn vẽ lên và double click vào board Arduino. Hộp thoại Edit Component Open. Tại khung Program File bạn tìm đến mục chứa file. hex lúc nãy bạn lưu. Sau đó ấn OK .

765 123200 1408248972 0 h14

Lúc này bạn chỉ cần ấn nút PLAY để mô phỏng và rung đùi xem thành quả đạt được thôi 😀

Để dừng mô phỏng bạn ấn STOP 715 812200 1408249186 0 stop nhé !

Nếu thấy LED sáng hơi mờ bạn thử thay đổi giá trị điện trở xuống còn 220 xem sao nhé.

Một cái kết

Phù, vậy là xong rồi đấy. Uống một cốc nước cho mát nào !
Mình hy vọng các bạn đọc bài viết này xong đều hoàn toàn có thể làm được. Tuy thấy dài vậy đó nhưng nắm được những ý cơ bản rồi thì chỉ cần 30 ‘ là OK con dê hết 😀 Chúc các bạn thành công xuất sắc nhé .
Mọi vướng mắc hay góp phần quan điểm về bài viết các bạn hoàn toàn có thể gửi phản hồi ở dưới nhé. Đây là bài viết tiên phong của mình trên forum này nên chắc như đinh sẽ không thoát khỏi sơ xuất. Rất mong nhận được những quan điểm quý báu từ các bạn 😀

Leave a Reply

Email của bạn sẽ không được hiển thị công khai.