I. GIỚI THIỆU CHUNG VỀ ARDUINO
- Đó nền tảng nguồn mở giúp con người xây dựng các ứng dụng
điện tử khả năng liên kết, tương tác với nhau tốt hơn. thể xem như
một chiếc máy tính thu nhỏ vậy, giúp người dùng lập trình, thực hiện
các dự án điện tử không cần dùng tới công cụ chuyên biệt phục vụ cho
quá trình nạp code của người dùng. tương tác với thế giới xung quanh
bằng hoạt động cảm biến điện tử, động đèn.
- Arduino công cụ hỗ trợ đắc lực cho công việc lập trình. Arduino
(shield) để cắm chồng lên bo mạch Arduino.
- Với Arduino bạn thể ứng dụng vào những mạch đơn giản như mạch
cảm biến ánh sáng bật tắt đèn, mạch điều khiển động cơ,... hoặc cao hơn
nữa bạn thể làm những sản phẩm như: máy in 3D, Robot, khinh khí cầu,
máy bay không người lái,... Chính tính tiện lợi đơn giản cho người sử
dụng Arduino đã trở thành một hiện tượng trong ngành điện tử thế giới.
- Arduino được cấu tạo từ phần cứng phần mềm IDE.
1. Phần cứng:
Phần cứng hay ta vẫn nghe một cái tên quen thuộc vi điều khiển, board
mạch nguồn mở.
Hình 1: Một số hình ảnh board mạch chủ
2. Phần mềm:
Được phát triển trên nền tản IDE nên việc viết một chương trình (code) giờ
đây thật đơn giản. Với Arduino IDE gần như bạn không cần phải code nhiều
đã được các nhà sản xuất, doanh nghiệp, cộng đồng, nhân hỗ trợ
chương trình (code), thư viện. Việc duy nhất bạn phải làm lựa chọn
những đoạn code phù hợp để đưa vào thực thi.
II. GIỚI THIỆU VỀ ARDUINO NANO
-Arduino Nano một bảng vi điều khiển thân thiện, nhỏ gọn, đầy
đủ. Arduino Nano nặng khoảng 7g với kích thước từ 1,8cm - 4,5cm. Arduino
Nano chức năng tương tự như Arduino Duemilanove nhưng khác nhau về
dạng mạch. Nano được tích hợp vi điều khiển ATmega328P, giống như Arduino
UNO. Sự khác biệt chính giữa chúng bảng UNO dạng PDIP (Plastic Dual-
In-line Package) với 30 chân còn Nano sẵn trong TQFP (plastic quad flat
pack) với 32 chân. Trong khi UNO 6 cổng ADC thì Nano 8 cổng
ADC. Bảng Nano không giắc nguồn DC như các bo mạch Arduino khác,
thay vào đó cổng mini-USB. Cổng này được sử dụng cho cả việc lập trình
bộ giám sát nối tiếp. Tính năng hấp dẫn của arduino Nano sẽ chọn công
xuất lớn nhất với hiệu điện thế của nó.
1. Đặc điểm kỹ thuật Arduino Nano:
- Vi điều khiển: ATmega328
- Điện áp hoạt động: 5 VDC
- Tần số hoạt động : 16 MHz
- Dòng tiêu thụ: 30 mA
- Điện áp khuyên dùng: 7 - 12 VDC
- Điện áp giới hạn: 6 - 20 VDC
- Số chân Digital I/O: 14 (6 chân PWM)
- Số chân Analog: 8 (Độ phân giải 10 bit)
- Dòng tối đa trên mỗi chân I/O: 40 mA
- Dòng ra tối đa 5V: 500 mA
- Dòng ra tối đa 3.3V: 50 mA
- Bộ nhớ Flash: 32 KB (ATmega328) với 2KB dùng bởi bootloader
- SRAM: 2 KB (ATmega328)
- EEPROM: 1 KB (ATmega328)
2. đồ chân
Hình 2: Cấu tạo Arduino Nano
3. Chức năng của các chân
- Các chân: 1, 2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 16
Như đã đề cập trước đó, Arduino Nano 14 ngx vào/ra digital. Các chân
làm việc với điện áp tối đa 5V. Mỗi chân thể cung cấp hoặc nhận
dòng điện 40mA điện trở kéo lên khoảng 20-50kΩ. Các chân thể
được sử dụng làm đầu vào hoặc đầu ra, sử dụng các hàm pinMode (),
digitalWrite () digitalRead ().
- Ngoài các chức năng đầu vào đầu ra số, các chân này cũng một số
chức năng bổ sung.
- Chân 1, 2: Chân nối tiếp
- Hai chân nhận RX truyền TX này được sử dụng để truyền dữ liệu nối
tiếp TTL. Các chân RX TX được kết nối với các chân tương ứng của
chip nối tiếp USB tới TTL.
- Chân 6, 8, 9, 12, 13 14: Chân PWM
- Mỗi chân số này cung cấp tín hiệu điều chế độ rộng xung 8 bit. Tín hiệu
PWM thể được tạo ra bằng cách sử dụng hàm analogWrite ().
- Chân 5, 6: Ngắt
- Khi chúng ta cần cung cấp một ngắt ngoài cho bộ xử hoặc bộ điều
khiển khác, chúng ta thể sử dụng các chân này. Các chân này thể
được sử dụng để cho phép ngắt INT0 INT1 tương ứng bằng cách sử
dụng hàm attachInterrupt (). Các chân thể được sử dụng để kích hoạt
ba loại ngắt như ngắt trên giá trị thấp, tăng hoặc giảm mức ngắt thay
đổi giá trị ngắt.
- Chân 13, 14, 15 16: Giao tiếp SPI
- Khi bạn không muốn dữ liệu được truyền đi không đồng bộ, bạn thể sử
dụng các chân ngoại vi nối tiếp này. Các chân này hỗ trợ giao tiếp đồng
bộ với SCK. Mặc phần cứng tính năng này nhưng phần mềm
Arduino lại không có. vậy, bạn phải sử dụng thư viện SPI để sử dụng
tính năng này.
- Chân 16: Led
- Khi bạn sử dụng chân 16, đèn led trên bo mạch sẽ sáng.
- Chân 18, 19, 20, 21, 22, 23, 24, 25 26 : Ngx vào/ra tương tự
- Như đã đề cập trước đó UNO 6 chân đầu vào tương tự nhưng Arduino
này nghĩa bạn thể kết nối 8 kênh đầu vào tương tự để xử lý. Mỗi
chân tương tự này một ADC độ phân giải 1024 bit (do đó sẽ cho
giá trị 1024). Theo mặc định, các chân được đo từ mặt đất đến 5V. Nếu
bạn muốn điện áp tham chiếu 0V đến 3.3V, thể nối với nguồn 3.3V
cho chân AREF (pin thứ 18) bằng cách sử dụng chức năng
analogReference (). Tương tự như các chân digital trong Nano, các chân
analog cũng một số chức năng khác.
- Chân 23, 24 như A4 A5: chuẩn giao tiếp I2C
- Khi giao tiếp SPI cũng những nhược điểm của như cần 4 chân
giới hạn trong một thiết bị. Đối với truyền thông đường dài, cần sử dụng
giao thức I2C. I2C hỗ trợ chỉ với hai dây. Một cho xung (SCL) một
cho dữ liệu (SDA). Để sử dụng tính năng I2C này, chúng ta cần phải nhập
một thư viện tên Thư viện Wire.
- Chân 18: AREF
- Điện áp tham chiếu cho đầu vào dùng cho việc chuyển đổi ADC.
- Chân 28 : RESET
- Đây chân reset mạch khi chúng ta nhấn nút rên bo. Thường được sử
dụng để được kết nối với thiết bị chuyển mạch để sử dụng làm nút reset.
ỨNG DỤNG
1. Thiết kế nguồn
- Mạch Arduino Nano sử dụng IC ổn áp tuyến tính LM1117 tạo nên điện áp
5V, cung cấp cho vi điều khiển cấp nguồn cho các thiết bị bên ngoài. Mặc
IC này hiệu suất không cao nhưng thiết kế mạch đơn giản ít gợn nhiễu.
2. Thiết kế mạch dao động
- Bảng mạch điện tử Arduino Nano sử dụng thạch anh 16 Mhz để tạo nguồn
giao động, tạo ra các xung Clock giúp vi điều khiển hoạt động, thực thi các lệnh
được viết ra.
3. Thiết kế mạch nạp giao tiếp máy tính
- Bảng mạch Arduino Nano chứa vi điều khiển Atmega328P đã được nạp
sẵn 1 bootloader, cho phép mạch nhận chương trình mới thông qua các giao tiếp
UART những giây đầu tiên sau khi vi điều khiển reset.
Khi đó, máy tính giao tiếp với Arduino Nano qua cổng USB, thông qua một IC
Driver nhiệm vụ chuyển đổi cổng USB thành cổng UART để nạp chương
trình hoặc truyền nhận dữ liệu với máy tính. Khi nạp chương trình, đèn Led Rx
trên mạch nạp sẽ nhấp nháy, báo hiệu dữ liệu của máy tính đang gửi xuống vi
điều khiển ngược lại, đèn Tx sẽ nháy để báo hiệu dữ liệu truyền từ vi điều
khiển lên máy tính.
LẬP TRÌNH ARDUINO NANO
1. Thiết lập môi trường
- Môi trường lập trình Arduino Nano tương tự như môi trường lập trình Arduino
(IDE) một ứng dụng đa nền tảng. Người dùng thể sử dụng phần mềm
Arduino IDE để viết tải lên code lập trình cho board Arduino Nano.
- Arduino IDE một phần mềm miễn phí được cung cấp bở Arduino Software,
được hỗ trợ trên các nền tảng Windows, Mac OS Linux. Phần mềm này cung
cấp một trình phiên dịch cho phép biên dịch code lập trình chuyển đổi thành
ngôn nhữ máy để chạy trên board Arduino Nano. Ngoài ra, môi trường còn cung
cấp các thư viện để giúp người dùng dễ dàng lập trình các ứng dụng điện tử.
- Mật do người dùng viết chỉ yêu cầu hai chức năng bản, được sử dụng đẻ
bắt đầu bản phác thảo vòng lặp của chương trình chính, được biên dịch
liên kết với phần khai chương trình main () thành một chương trình thực thi theo
chu điều hành với chuỗi công cụ GNU, cũng được bao gồm trong bảng phân
phối IDE.
- Arduino IDE sử dụng chương trình avrdude để chuyển đổi thực thi thành
tệp văn bản hóa hệ thập lục phân được tải lên bảng Arduino bằng cách sử
dụng chương trình tải trong phần sụn của bảng.
2. Lập trình Arduino Nano
Lập trình Arduino Nano cũng tương tự như lập trình cho các board Arduino
khác. Người dùng thể sử dụng ngôn ngữ lập trình C/C++ để viết code cho
board Arduino Nano.
-Các bước lập trình Arduino Nano bao gồm:
1. Tải xuống cài đặt phần mềm Arduino IDE.
2. Kết nối board Arduino Nano với máy tính bằng cổng USB.
3. Chọn board Arduino Nano trong menu Tools > Board trong Arduino IDE.
4. Chọn cổng USB kết nối với board Arduino Nano trong menu Tools > Port
trong Arduino IDE.
5. Viết code lập trình trong khung soạn thảo( edittor ) của Arduino IDE.
6. Biên dịch code lập trình bằng cách nhân nút Upload trên Arduino IDE.
7. Đợi quá trình Upload code hoàn tất.
8. Board Arduino Nano sẽ thực hiện code lập trình đã được Upload lên.
-Cấu trúc của một chương trình lập trình Arduino
+ Phần 1: Khai báo biến
Đây phần khai báo các yếu tố như: kiểu biến, tên biến, định nghĩa các
chân cắm trên board. Một kiểu khai báo thông dụng hay dùng: * #define
Define được dịch định nghĩa. Hàm này tác dụng định nghĩa, hay còn hiểu
gán: gán một chân cắm, một ngx ra nào đó với 1 cái tên mình thích.
thể khai báo các kiểu biến khác như: int, float...
+ Phần 2: Thiết kế
Phần này dùng để xây dựng cho chương trình. Cấu trúc: void setup(). Cấu
trúc của sẽ dấu ngoặc đầu cuối. Nếu bị thiếu phần này khi chạy
chương trình thì chương trình sẽ báo lỗi.
Phần này quản các tốc độ truyền dữ liệu, kiểu chân ra hay chân vào.
Trong đó:
Serial.begin(9600): Dùng để truyền dữ liệu từ board Arduino lên laptop.
PinMode(biến, kiểu vào hoặc ra): dụ: pin Mode(ChanDO, INPUT)
dùng để xác định kiểu chân cắm vào hay ra.
+ Vòng lặp:
Dùng để viết các câu lệnh trong chương trình để board Arduino thực hiện
các tính năng chúng ta đã mong muốn. Vòng lặp thường bắt đầu bằng
void loop().
III. GIỚI THIỆU VỀ MODULE LCD 16x2A
- LCD chữ viết tắt của Liquid Crystal Display, nghĩa màn hình tinh thể
lỏng, đây loại thiết bị để hiện thị nội dung, cấu tạo các tế bào ( cũng các
điểm ảnh ) chứa các tinh thể lỏng ( Liquid Crystal ) khả năng thay đổi tính
phân cực của ánh sáng do đó thay đổi cường độ ánh sáng truyền qua khi kết
hợp các kính lọc phân cực. LCD ưu điểm phẳng, cho hình ảnh sáng chân
thật tiết kiệm năng lượng.
- LCD 16x2A rất nhiều ưu điểm so với dạng hiển thị khác như: khả năng
hiển thị tự đa dạng (chữ số, tự đồ họa); dễ dàng đưa vào mạch ứng dụng
nhiều giao thức giao tiếp khác nhau, tiêu tốn rất ít tài nguyên của hệ thống, giá
thành rẻ..
1. Thông số thuật của Module LCD 16x2A
- Điện áp MAX: 7V
- Điện áp MIN: -0.3V
- Hoạt động ổn định: 2.7 5.5 V
- Điện áp ra mức cao: >2.4V
- Điện áp ra mức thấp:<0.4V
- Dòng điện cấp nguồn: 350 -600 µA
- Nhiệt độ hoạt động: -30 75 độ C
2. đồ chân
Hình 3: Cấu tạo LCD 16x2A
3. Chức năng của từng chân LCD 16x2A
- Chân số 1 - VSS: chân nối đất cho LCD được nối với GND của mạch điều
khiển
- Chân số 2 - VDD: chân cấp nguồn cho LCD, được nối với VCC = 5V của
mạch điều khiển cực dương
- Chân số 3 VE : Điều khiển độ sáng màn hình của LCD
- Chân số 4 - RS: Lựa chọn thanh ghi (RS = 0 chọn thanh ghi lệnh, RS = 1 chọn
thanh ghi dữ liệu).
- Chân số 5 - R/W :chân chọn chế độ đọc/ghi (Read/Write), R/W = 0 ghi dữ liệu,
R/W = 1 đọc dữ liệu
- Chân 6 E: chân cho phép (Enable). Sau khi cac stins hiệu được đặt lên
busDB0- DB7, các lệnh này chỉ được chấp nhận khi xung cho phép củ chân
này như sau:
+ chế độ ghi: Dữ liệu bus sẽ được LCD chuyển vào thanh ghi bên trong
khi phát hiện một xung (high-ti-low transition) của tín hiệu chân E
+ chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát lên cạnh
bên ( low-to-high transition ) chân E được LCD giữ bus đén khi nào khi
nào chân E xuống mức thấp.
- Chân số 7 đến 14 D0 đén D7: 8 đường của bus dữ liệu dùng để trao đổi thông
tin với MPU. 2 chế độ sử dụng 8 đường này là: Chế độ 8 bit (dữ liệu được
truyền trên cả 8 đường, với bit MSB bit DB70 chế dộ 4 bit dữ liệu (dữ liệu
được truyền trên 4 đường từ Db4 tới DB7, bit MSB DB7)
- Chân số 15 A: nguồn dương cho đèn nền
- Chân số 16 K: nguồn âm cho đèn nền
IV. CẢM BIẾN SIÊU ÂM HC-SR04
- Cảm biến siêu âm HC-SR04 một dạng cảm biến module. Cảm biến y
thường chỉ một bản mạch, hoạt động theo nguyên thu phát sóng siêu âm
bởi 2 chiếc loa cao tần.
- Cảm biến siêu âm HC-SR04 thường được kết hợp với các bộ arduino, PIC,
AVR,… để chạy một số ứng dụng như : phát hiện vật cản trên xe robot, đo
khoảng cách vật,…
Hình 5: Module cảm biến siêu âm HC-SR04
1. Cấu tạo của HC-SR04
Cấu tạo của cảm biến siêu âm HC-SR04 gồm 3 phần:
-Bộ phận phát sóng siêu âm
Cấu tạo của các đầu phát đầu thu siêu âm các loa gốm đặc biệt, phát siêu
âm cường độ cao tần số thường 40kHz cho nhu cầu đo khoảng cách
Về nguyên lý, các loa này cần nguồn điện áp cao mới phát tốt được ( nhà sản
xuất công bố = 30V). Trên mạch công suất sử dụng IC MAX232 làm nhiệm vụ
đệm. IC này sẽ lấy tín hiệu từ bộ điều khiển, khuếch đại biên độ lên mức +/-30V
cấp nguồn cho bộ loa trên. IC này sẽ được đóng ngắt qua một transistor để hạn
chế việc tiêu thụ dòng.
-Bộ phận thu sóng siêu âm phản xạ
Thiết bị thu dạng loa gốm cấu tạo chỉ nhạy với một tần số chẳng hạn như
40KHz. Qua một loạt các linh kiện như OPAM TL072, transistor NPN…Tín
hiệu này liên tục được khuếch đại biên độ cuối cùng đưa qua một bộ so
sánh, kết hợp với tín hiệu từ bộ điều khiển để đưa về bộ điều khiển.
-Bộ phận xử lý, điều khiển tín hiệu
Vi điều khiển (PIC16F688, STC11,…) được sử dụng làm nhiệm vụ phát xung,
xử tính toán thời gian từ khi phát đến khi thu được sóng siêu âm nếu nhận
được tín hiệu TRIG.
2. Nguyên hoạt động của HC-SR04
Để đo khoảng cách bằng cảm biến siêu âm HC-SR04, ta sẽ phát 1 xung rất ngắn
(5 microSeconds) từ chân Trig. Tiếp theo, 1 xung HIGH chân Echo sẽ được
cảm biến tạo ra phát đi cho đến khi nhận lại được sóng phản xạ chân này.
Lúc này, độ rộng của xung sẽ bằng với thời gian sóng siêu âm được phát từ cảm
biến phản xạ lại.
Trong không khí, tốc độ âm thanh đạt mức 340 m/s (hằng số), tương đương với
29,412 microSeconds/cm (106 / (340*100)).
Khi đã tính được thời gian, ta sẽ chia cho 29,412 để ra giá trị khoảng cách.
ch thước sóng cảm biến siêu âm HC-SR04
dụ đo mức chất lỏng trong bồn chứa bằng cảm biến siêu âm HC-SR04:
Ta sẽ các bước như sau:
Đặt chân TRIG lên mức Cao (5V) trong 10 μs (microseconds)
Sau đó module siêu âm ghi lại thời gian gửi ra sóng âm tần số 40Khz
Sóng siêu âm truyền xuống bề mặt chất lỏng trong bồn chứa phản xạ
lại
Sóng phản xạ truyền ngược về đầu
Module siêu âm nhận được sóng phản xạ đánh dấu thời gian nhận được
tín hiệu này
Cuối cùng, module siêu âm đưa chân ECHO lên mức cao trong khoảng thời gian
(microseconds ) phản hồi sóng âm (Gửi đi nhận về) tính toán ra khoảng
cách.
Kết quả trên chân ECHO: 58 μs/cm
vậy, nếu chân ECHO lên mức cao trong thời gian 5800 μs (5.8 ms) , thì
chúng ta tính được khoảng cách giữa cảm biến mức chất lỏng trong bể là:
5800μs / 58μs/cm = 100cm = 1m
3.Thông số kỹ thuật cảm biến siêu âm HC-SR04
Trước khi đi vào tìm hiểu các phần tiếp theo của dòng cảm biến này, chúng ta
cùng điểm qua một vài thông số kỹ thuật nổi bật của cảm biến siêu âm HC-SR04
như sau:
Model: HC-SR04
Điện áp làm việc: 5VDC
Dòng điện: 15mA
Tần số: 40 KHZ
Khoảng cách phát hiện: 2cm 4m
Tín hiệu đầu ra: Xung mức cao 5V, mức thấp 0V
Góc cảm biến: Không quá 15 độ.
Độ chính xác cao: Lên đến 3mm
Chế độ kết nối: VCC / Trig (T-Trigger) / Echo (R-Receive) / GND
4.Sơ đồ kết nối cảm biến siêu âm HC-SR04 với arduino
Một số đồ kết nối bản khi kết hợp module cảm biến siêu âm HC-SR04 với
các bộ kit arduino như hình thể hiện bên dưới.
Hình 6: đồ mạch cảm biến siêu âm HC-SR04
Module cảm biến 4 chân:
Chân : Dùng để cấp nguồn 5vVCC
Chân : Chân digital outputTrig
Chân : Chân digital inputEcho
Chân : Chân 0vGND
CHƯƠNG II: THIÉT KẾ, LẬP TRÌNH LẮP ĐẶT MẠCH ĐO
KHOẢNG CÁCH
I. ĐỒ KHỐI
Chức năng của các khối
-Cảm biến HC-SR04: chức năng đo khoảng cách gửi giá trị đo được cho
Arduino khi tín hiệu yêu cầu
-Khối xử trung tâm Arduino Nano: chức năng điều khiển cảm biến HC-
SR04 đo khoảng cách đồng thời hiển thị giá trị lên LCD
-Khối hiển thị LCD: chức năng hiển thị giá trị đo được
II. THIẾT KẾ MẠCH TRÊN PROTEUS
Hình 7: đồ nguyên toàn mạch
Cm biến
HC-SR04
Arduino Nano
(Xlý trung tâm)
Hin th LCD
III. NGUYÊN HOẠT ĐỘNG CỦA MẠCH
Để đo khoản cách, ta sẽ phát 1 xung rất ngắn (5µs) từ chân Trig. Sau đó, cảm
biến sẽ tạo ra 1 xung high chân Echo cho đến khi nhận lại được sóng phản xạ
pin này. Chiều rộng của xung sẽ bằng với thời gian sóng siêu âm được phát từ
cảm biến quay trở lại.
Tốc độ của âm thanh trong không khí 340 m/s, tương đương với 29,412
microSeconds/cm ( 10 ).Khi đã tính được thời gian, ta sẽ chia cho 29,412
6
*100)
để nhận được khoảng cách.
IV. LẬP TRÌNH CHO ARDUINO NANO
V. MẠCH IN SẢN PHẨM
Hình 8: Mạch in
Hình 10: Sản phẩm
VI. KẾT LUẬN ĐÁNH GIÁ

Preview text:

I. GIỚI THIỆU CHUNG VỀ ARDUINO
- Đó là nền tảng mã nguồn mở giúp con người xây dựng các ứng dụng
điện tử có khả năng liên kết, tương tác với nhau tốt hơn. Nó có thể xem như
là một chiếc máy tính thu nhỏ vậy, nó giúp người dùng lập trình, thực hiện
các dự án điện tử mà không cần dùng tới công cụ chuyên biệt phục vụ cho
quá trình nạp code của người dùng. Nó tương tác với thế giới xung quanh
bằng hoạt động cảm biến điện tử, động cơ và đèn.
- Arduino là công cụ hỗ trợ đắc lực cho công việc lập trình. Arduino là
một platform đã được chuẩn hóa nên đã có rất nhiều các bo mạch mở rộng
(shield) để cắm chồng lên bo mạch Arduino.
- Với Arduino bạn có thể ứng dụng vào những mạch đơn giản như mạch
cảm biến ánh sáng bật tắt đèn, mạch điều khiển động cơ,... hoặc cao hơn
nữa bạn có thể làm những sản phẩm như: máy in 3D, Robot, khinh khí cầu,
máy bay không người lái,... Chính vì tính tiện lợi và đơn giản cho người sử
dụng mà Arduino đã trở thành một hiện tượng trong ngành điện tử thế giới.
- Arduino được cấu tạo từ phần cứng và phần mềm IDE. 1. Phần cứng:
Phần cứng hay ta vẫn nghe một cái tên quen thuộc là vi điều khiển, board mạch mã nguồn mở.
Hình 1: Một số hình ảnh board mạch chủ 2. Phần mềm:
Được phát triển trên nền tản IDE nên việc viết một chương trình (code) giờ
đây thật đơn giản. Với Arduino IDE gần như bạn không cần phải code nhiều
mà đã được các nhà sản xuất, doanh nghiệp, cộng đồng, cá nhân hỗ trợ mã
chương trình (code), thư viện. Việc duy nhất mà bạn phải làm là lựa chọn
những đoạn code phù hợp để đưa vào thực thi.
II. GIỚI THIỆU VỀ ARDUINO NANO
-Arduino Nanolà một bảng vi điều khiển thân thiện, nhỏ gọn, đầy
đủ. Arduino Nano nặng khoảng 7g với kích thước từ 1,8cm - 4,5cm. Arduino
Nano có chức năng tương tự như Arduino Duemilanove nhưng khác nhau về
dạng mạch. Nano được tích hợp vi điều khiển ATmega328P, giống như Arduino
UNO. Sự khác biệt chính giữa chúng là bảng UNO có dạng PDIP (Plastic Dual-
In-line Package) với 30 chân còn Nano có sẵn trong TQFP (plastic quad flat
pack) với 32 chân. Trong khi UNO có 6 cổng ADC thì Nano có 8 cổng
ADC. Bảng Nano không có giắc nguồn DC như các bo mạch Arduino khác, mà
thay vào đó có cổng mini-USB. Cổng này được sử dụng cho cả việc lập trình và
bộ giám sát nối tiếp. Tính năng hấp dẫn của arduino Nano là nó sẽ chọn công
xuất lớn nhất với hiệu điện thế của nó.
1. Đặc điểm kỹ thuật Arduino Nano:
- Vi điều khiển: ATmega328
- Điện áp hoạt động: 5 VDC
- Tần số hoạt động : 16 MHz - Dòng tiêu thụ: 30 mA
- Điện áp khuyên dùng: 7 - 12 VDC
- Điện áp giới hạn: 6 - 20 VDC
- Số chân Digital I/O: 14 (6 chân PWM)
- Số chân Analog: 8 (Độ phân giải 10 bit)
- Dòng tối đa trên mỗi chân I/O: 40 mA
- Dòng ra tối đa 5V: 500 mA
- Dòng ra tối đa 3.3V: 50 mA
- Bộ nhớ Flash: 32 KB (ATmega328) với 2KB dùng bởi bootloader - SRAM: 2 KB (ATmega328) - EEPROM: 1 KB (ATmega328) 2. Sơ đồ chân
Hình 2: Cấu tạo Arduino Nano
3. Chức năng của các chân
- Các chân: 1, 2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 và 16
Như đã đề cập trước đó, Arduino Nano có 14 ngx vào/ra digital. Các chân
làm việc với điện áp tối đa là 5V. Mỗi chân có thể cung cấp hoặc nhận
dòng điện 40mA và có điện trở kéo lên khoảng 20-50kΩ. Các chân có thể
được sử dụng làm đầu vào hoặc đầu ra, sử dụng các hàm pinMode (),
digitalWrite () và digitalRead ().
- Ngoài các chức năng đầu vào và đầu ra số, các chân này cũng có một số chức năng bổ sung.
- Chân 1, 2: Chân nối tiếp
- Hai chân nhận RX và truyền TX này được sử dụng để truyền dữ liệu nối
tiếp TTL. Các chân RX và TX được kết nối với các chân tương ứng của
chip nối tiếp USB tới TTL.
- Chân 6, 8, 9, 12, 13 và 14: Chân PWM
- Mỗi chân số này cung cấp tín hiệu điều chế độ rộng xung 8 bit. Tín hiệu
PWM có thể được tạo ra bằng cách sử dụng hàm analogWrite (). - Chân 5, 6: Ngắt
- Khi chúng ta cần cung cấp một ngắt ngoài cho bộ xử lý hoặc bộ điều
khiển khác, chúng ta có thể sử dụng các chân này. Các chân này có thể
được sử dụng để cho phép ngắt INT0 và INT1 tương ứng bằng cách sử
dụng hàm attachInterrupt (). Các chân có thể được sử dụng để kích hoạt
ba loại ngắt như ngắt trên giá trị thấp, tăng hoặc giảm mức ngắt và thay đổi giá trị ngắt.
- Chân 13, 14, 15 và 16: Giao tiếp SPI
- Khi bạn không muốn dữ liệu được truyền đi không đồng bộ, bạn có thể sử
dụng các chân ngoại vi nối tiếp này. Các chân này hỗ trợ giao tiếp đồng
bộ với SCK. Mặc dù phần cứng có tính năng này nhưng phần mềm
Arduino lại không có. Vì vậy, bạn phải sử dụng thư viện SPI để sử dụng tính năng này. - Chân 16: Led
- Khi bạn sử dụng chân 16, đèn led trên bo mạch sẽ sáng.
- Chân 18, 19, 20, 21, 22, 23, 24, 25 và 26 : Ngx vào/ra tương tự
- Như đã đề cập trước đó UNO có 6 chân đầu vào tương tự nhưng Arduino
Nano có 8 đầu vào tương tự (19 đến 26), được đánh dấu A0 đến A7. Điều
này có nghĩa là bạn có thể kết nối 8 kênh đầu vào tương tự để xử lý. Mỗi
chân tương tự này có một ADC có độ phân giải 1024 bit (do đó nó sẽ cho
giá trị 1024). Theo mặc định, các chân được đo từ mặt đất đến 5V. Nếu
bạn muốn điện áp tham chiếu là 0V đến 3.3V, có thể nối với nguồn 3.3V
cho chân AREF (pin thứ 18) bằng cách sử dụng chức năng
analogReference (). Tương tự như các chân digital trong Nano, các chân
analog cũng có một số chức năng khác.
- Chân 23, 24 như A4 và A5: chuẩn giao tiếp I2C
- Khi giao tiếp SPI cũng có những nhược điểm của nó như cần 4 chân và
giới hạn trong một thiết bị. Đối với truyền thông đường dài, cần sử dụng
giao thức I2C. I2C hỗ trợ chỉ với hai dây. Một cho xung (SCL) và một
cho dữ liệu (SDA). Để sử dụng tính năng I2C này, chúng ta cần phải nhập
một thư viện có tên là Thư viện Wire. - Chân 18: AREF
- Điện áp tham chiếu cho đầu vào dùng cho việc chuyển đổi ADC. - Chân 28 : RESET
- Đây là chân reset mạch khi chúng ta nhấn nút rên bo. Thường được sử
dụng để được kết nối với thiết bị chuyển mạch để sử dụng làm nút reset.  ỨNG DỤNG 1. Thiết kế nguồn
- Mạch Arduino Nano sử dụng IC ổn áp tuyến tính LM1117 tạo nên điện áp
5V, cung cấp cho vi điều khiển và cấp nguồn cho các thiết bị bên ngoài. Mặc dù
IC này có hiệu suất không cao nhưng thiết kế mạch đơn giản và ít gợn nhiễu.
2. Thiết kế mạch dao động
- Bảng mạch điện tử Arduino Nano sử dụng thạch anh 16 Mhz để tạo nguồn
giao động, tạo ra các xung Clock giúp vi điều khiển hoạt động, thực thi các lệnh được viết ra.
3. Thiết kế mạch nạp và giao tiếp máy tính
- Bảng mạch Arduino Nano có chứa vi điều khiển Atmega328P đã được nạp
sẵn 1 bootloader, cho phép mạch nhận chương trình mới thông qua các giao tiếp
UART ở những giây đầu tiên sau khi vi điều khiển reset.
Khi đó, máy tính giao tiếp với Arduino Nano qua cổng USB, thông qua một IC
Driver có nhiệm vụ chuyển đổi cổng USB thành cổng UART để nạp chương
trình hoặc truyền nhận dữ liệu với máy tính. Khi nạp chương trình, đèn Led Rx
trên mạch nạp sẽ nhấp nháy, báo hiệu dữ liệu của máy tính đang gửi xuống vi
điều khiển và ngược lại, đèn Tx sẽ nháy để báo hiệu dữ liệu truyền từ vi điều khiển lên máy tính.
LẬP TRÌNH ARDUINO NANO
1. Thiết lập môi trường
- Môi trường lập trình Arduino Nano tương tự như môi trường lập trình Arduino
(IDE) là một ứng dụng đa nền tảng. Người dùng có thể sử dụng phần mềm
Arduino IDE để viết và tải lên code lập trình cho board Arduino Nano.
- Arduino IDE là một phần mềm miễn phí được cung cấp bở Arduino Software,
được hỗ trợ trên các nền tảng Windows, Mac OS và Linux. Phần mềm này cung
cấp một trình phiên dịch cho phép biên dịch code lập trình và chuyển đổi thành
ngôn nhữ máy để chạy trên board Arduino Nano. Ngoài ra, môi trường còn cung
cấp các thư viện để giúp người dùng dễ dàng lập trình các ứng dụng điện tử.
- Mật mã do người dùng viết chỉ yêu cầu hai chức năng cơ bản, được sử dụng đẻ
bắt đầu bản phác thảo và vòng lặp của chương trình chính, được biên dịch và
liên kết với phần khai chương trình main () thành một chương trình thực thi theo
chu kì điều hành với chuỗi công cụ GNU, cũng được bao gồm trong bảng phân phối IDE.
- Arduino IDE sử dụng chương trình avrdude để chuyển đổi mã thực thi thành
tệp văn bản mã hóa hệ thập lục phân được tải lên bảng Arduino bằng cách sử
dụng chương trình tải trong phần sụn của bảng.
2. Lập trình Arduino Nano
Lập trình Arduino Nano cũng tương tự như lập trình cho các board Arduino
khác. Người dùng có thể sử dụng ngôn ngữ lập trình C/C++ để viết code cho board Arduino Nano.
-Các bước lập trình Arduino Nano bao gồm:
1. Tải xuống và cài đặt phần mềm Arduino IDE.
2. Kết nối board Arduino Nano với máy tính bằng cổng USB.
3. Chọn board Arduino Nano trong menu Tools > Board trong Arduino IDE.
4. Chọn cổng USB kết nối với board Arduino Nano trong menu Tools > Port trong Arduino IDE.
5. Viết code lập trình trong khung soạn thảo( edittor ) của Arduino IDE.
6. Biên dịch code lập trình bằng cách nhân nút Upload trên Arduino IDE.
7. Đợi quá trình Upload code hoàn tất.
8. Board Arduino Nano sẽ thực hiện code lập trình đã được Upload lên.
-Cấu trúc của một chương trình lập trình Arduino + Phần 1: Khai báo biến
Đây là phần khai báo các yếu tố như: kiểu biến, tên biến, định nghĩa các
chân cắm trên board. Một kiểu khai báo thông dụng hay dùng: * #define
Define được dịch là định nghĩa. Hàm này có tác dụng định nghĩa, hay còn hiểu
là gán: gán một chân cắm, một ngx ra nào đó với 1 cái tên mình thích.
Có thể khai báo các kiểu biến khác như: int, float... + Phần 2: Thiết kế
Phần này dùng để xây dựng cho chương trình. Cấu trúc: void setup(). Cấu
trúc của nó sẽ có dấu ngoặc ở đầu và cuối. Nếu bị thiếu phần này khi chạy
chương trình thì chương trình sẽ báo lỗi.
Phần này quản lí các tốc độ truyền dữ liệu, kiểu chân ra hay chân vào. Trong đó:
Serial.begin(9600): Dùng để truyền dữ liệu từ board Arduino lên laptop.
PinMode(biến, kiểu vào hoặc ra): Ví dụ: pin Mode(ChanDO, INPUT)
dùng để xác định kiểu chân cắm vào hay ra. + Vòng lặp:
Dùng để viết các câu lệnh trong chương trình để board Arduino thực hiện
các tính năng mà chúng ta đã mong muốn. Vòng lặp thường bắt đầu bằng mã void loop().
III. GIỚI THIỆU VỀ MODULE LCD 16x2A
- LCD là chữ viết tắt của Liquid Crystal Display, có nghĩa là màn hình tinh thể
lỏng, đây là loại thiết bị để hiện thị nội dung, cấu tạo các tế bào ( cũng là các
điểm ảnh ) chứa các tinh thể lỏng ( Liquid Crystal ) có khả năng thay đổi tính
phân cực của ánh sáng và do đó thay đổi cường độ ánh sáng truyền qua khi kết
hợp các kính lọc phân cực. LCD có ưu điểm là phẳng, cho hình ảnh sáng chân
thật và tiết kiệm năng lượng.
- LCD 16x2A có rất nhiều ưu điểm so với dạng hiển thị khác như: khả năng
hiển thị kí tự đa dạng (chữ số, kí tự đồ họa); dễ dàng đưa vào mạch ứng dụng
nhiều giao thức giao tiếp khác nhau, tiêu tốn rất ít tài nguyên của hệ thống, giá thành rẻ..
1. Thông số kĩ thuật của Module LCD 16x2A - Điện áp MAX: 7V - Điện áp MIN: -0.3V
- Hoạt động ổn định: 2.7 – 5.5 V
- Điện áp ra mức cao: >2.4V
- Điện áp ra mức thấp:<0.4V
- Dòng điện cấp nguồn: 350 -600 µA
- Nhiệt độ hoạt động: -30 – 75 độ C 2. Sơ đồ chân Hình 3: Cấu tạo LCD 16x2A
3. Chức năng của từng chân LCD 16x2A
- Chân số 1 - VSS: chân nối đất cho LCD được nối với GND của mạch điều khiển
- Chân số 2 - VDD: chân cấp nguồn cho LCD, được nối với VCC = 5V của
mạch điều khiển – cực dương
- Chân số 3 – VE : Điều khiển độ sáng màn hình của LCD
- Chân số 4 - RS: Lựa chọn thanh ghi (RS = 0 chọn thanh ghi lệnh, RS = 1 chọn thanh ghi dữ liệu).
- Chân số 5 - R/W :chân chọn chế độ đọc/ghi (Read/Write), R/W = 0 ghi dữ liệu, R/W = 1 đọc dữ liệu
- Chân 6 – E: chân cho phép (Enable). Sau khi cac stins hiệu được đặt lên
busDB0- DB7, các lệnh này chỉ được chấp nhận khi có xung cho phép củ chân này như sau:
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào thanh ghi bên trong
khi phát hiện một xung (high-ti-low transition) của tín hiệu chân E
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát lên cạnh
bên ( low-to-high transition ) ở chân E và được LCD giữ ở bus đén khi nào khi
nào chân E xuống mức thấp.
- Chân số 7 đến 14 – D0 đén D7: 8 đường của bus dữ liệu dùng để trao đổi thông
tin với MPU. Có 2 chế độ sử dụng 8 đường này là: Chế độ 8 bit (dữ liệu được
truyền trên cả 8 đường, với bit MSB là bit DB70 và chế dộ 4 bit dữ liệu (dữ liệu
được truyền trên 4 đường từ Db4 tới DB7, bit MSB là DB7)
- Chân số 15 – A: nguồn dương cho đèn nền
- Chân số 16 – K: nguồn âm cho đèn nền
IV. CẢM BIẾN SIÊU ÂM HC-SR04
- Cảm biến siêu âm HC-SR04 là một dạng cảm biến module. Cảm biến này
thường chỉ là một bản mạch, hoạt động theo nguyên lý thu phát sóng siêu âm bởi 2 chiếc loa cao tần.
- Cảm biến siêu âm HC-SR04 thường được kết hợp với các bộ arduino, PIC,
AVR,… để chạy một số ứng dụng như : phát hiện vật cản trên xe robot, đo khoảng cách vật,…
Hình 5: Module cảm biến siêu âm HC-SR04
1. Cấu tạo của HC-SR04
Cấu tạo của cảm biến siêu âm HC-SR04 gồm 3 phần:
-Bộ phận phát sóng siêu âm
Cấu tạo của các đầu phát và đầu thu siêu âm là các loa gốm đặc biệt, phát siêu
âm có cường độ cao ở tần số thường là 40kHz cho nhu cầu đo khoảng cách
Về nguyên lý, các loa này cần có nguồn điện áp cao mới phát tốt được ( nhà sản
xuất công bố = 30V). Trên mạch công suất sử dụng IC MAX232 làm nhiệm vụ
đệm. IC này sẽ lấy tín hiệu từ bộ điều khiển, khuếch đại biên độ lên mức +/-30V
cấp nguồn cho bộ loa trên. IC này sẽ được đóng ngắt qua một transistor để hạn
chế việc tiêu thụ dòng.
-Bộ phận thu sóng siêu âm phản xạ
Thiết bị thu là dạng loa gốm có cấu tạo chỉ nhạy với một tần số chẳng hạn như
40KHz. Qua một loạt các linh kiện như OPAM TL072, transistor NPN…Tín
hiệu này liên tục được khuếch đại biên độ và cuối cùng là đưa qua một bộ so
sánh, kết hợp với tín hiệu từ bộ điều khiển để đưa về bộ điều khiển.
-Bộ phận xử lý, điều khiển tín hiệu
Vi điều khiển (PIC16F688, STC11,…) được sử dụng làm nhiệm vụ phát xung,
xử lý tính toán thời gian từ khi phát đến khi thu được sóng siêu âm nếu nhận được tín hiệu TRIG.
2. Nguyên lí hoạt động của HC-SR04
Để đo khoảng cách bằng cảm biến siêu âm HC-SR04, ta sẽ phát 1 xung rất ngắn
(5 microSeconds) từ chân Trig. Tiếp theo, 1 xung HIGH ở chân Echo sẽ được
cảm biến tạo ra và phát đi cho đến khi nhận lại được sóng phản xạ ở chân này.
Lúc này, độ rộng của xung sẽ bằng với thời gian sóng siêu âm được phát từ cảm biến và phản xạ lại.
Trong không khí, tốc độ âm thanh đạt mức 340 m/s (hằng số), tương đương với
29,412 microSeconds/cm (106 / (340*100)).
Khi đã tính được thời gian, ta sẽ chia cho 29,412 để ra giá trị khoảng cách. Kí
ch thước và sóng cảm biến siêu âm HC-SR04
Ví dụ đo mức chất lỏng có trong bồn chứa bằng cảm biến siêu âm HC-SR04:
Ta sẽ có các bước như sau: 
Đặt chân TRIG lên mức Cao (5V) trong 10 μs (microseconds) 
Sau đó module siêu âm ghi lại thời gian và gửi ra sóng âm tần số 40Khz 
Sóng siêu âm truyền xuống bề mặt chất lỏng trong bồn chứa và phản xạ lại 
Sóng phản xạ truyền ngược về đầu dò 
Module siêu âm nhận được sóng phản xạ và đánh dấu thời gian nhận được tín hiệu này
Cuối cùng, module siêu âm đưa chân ECHO lên mức cao trong khoảng thời gian
(microseconds ) phản hồi sóng âm (Gửi đi – nhận về) và tính toán ra khoảng cách.
Kết quả trên chân ECHO: 58 μs/cm
Vì vậy, nếu chân ECHO lên mức cao trong thời gian 5800 μs (5.8 ms) , thì
chúng ta tính được khoảng cách giữa cảm biến và mức chất lỏng trong bể là:
5800μs / 58μs/cm = 100cm = 1m
3.Thông số kỹ thuật cảm biến siêu âm HC-SR04
Trước khi đi vào tìm hiểu các phần tiếp theo của dòng cảm biến này, chúng ta
cùng điểm qua một vài thông số kỹ thuật nổi bật của cảm biến siêu âm HC-SR04 như sau:  Model: HC-SR04  Điện áp làm việc: 5VDC  Dòng điện: 15mA  Tần số: 40 KHZ 
Khoảng cách phát hiện: 2cm – 4m 
Tín hiệu đầu ra: Xung mức cao 5V, mức thấp 0V 
Góc cảm biến: Không quá 15 độ. 
Độ chính xác cao: Lên đến 3mm 
Chế độ kết nối: VCC / Trig (T-Trigger) / Echo (R-Receive) / GND
4.Sơ đồ kết nối cảm biến siêu âm HC-SR04 với arduino
Một số sơ đồ kết nối cơ bản khi kết hợp module cảm biến siêu âm HC-SR04 với
các bộ kit arduino như hình thể hiện bên dưới.
Hình 6: Sơ đồ mạch cảm biến siêu âm HC-SR04
Module cảm biến có 4 chân: 
Chân VCC: Dùng để cấp nguồn 5v 
Chân Trig: Chân digital output 
Chân Echo: Chân digital input  Chân GND: Chân 0v
CHƯƠNG II: THIÉT KẾ, LẬP TRÌNH VÀ LẮP ĐẶT MẠCH ĐO KHOẢNG CÁCH I. SƠ ĐỒ KHỐI Cảm biến Arduino Nano HC-SR04 (Xử lý trung tâm) Hiển thị LCD
Chức năng của các khối
-Cảm biến HC-SR04: có chức năng đo khoảng cách và gửi giá trị đo được cho
Arduino khi có tín hiệu yêu cầu
-Khối xử lý trung tâm Arduino Nano: có chức năng điều khiển cảm biến HC-
SR04 đo khoảng cách và đồng thời hiển thị giá trị lên LCD
-Khối hiển thị LCD: có chức năng hiển thị giá trị đo được
II. THIẾT KẾ MẠCH TRÊN PROTEUS
Hình 7: Sơ đồ nguyên lí toàn mạch
III. NGUYÊN LÝ HOẠT ĐỘNG CỦA MẠCH
Để đo khoản cách, ta sẽ phát 1 xung rất ngắn (5µs) từ chân Trig. Sau đó, cảm
biến sẽ tạo ra 1 xung high ở chân Echo cho đến khi nhận lại được sóng phản xạ
ở pin này. Chiều rộng của xung sẽ bằng với thời gian sóng siêu âm được phát từ
cảm biến và quay trở lại.
Tốc độ của âm thanh trong không khí là 340 m/s, tương đương với 29,412
microSeconds/cm ( 10 6 *100) ).Khi đã tính được thời gian, ta sẽ chia cho 29,412
để nhận được khoảng cách.
IV. LẬP TRÌNH CHO ARDUINO NANO
V. MẠCH IN VÀ SẢN PHẨM Hình 8: Mạch in Hình 10: Sản phẩm
VI. KẾT LUẬN VÀ ĐÁNH GIÁ