Tải bản đầy đủ (.docx) (29 trang)

Báo cáo đồ án chế tạo oscilloscope bằng arduino có code

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.17 MB, 29 trang )

MỤC LỤC


LỜI NÓI ĐẦU
Hiện nay, máy hiện sóng là một thiết bị không thể thiếu của các sinh viên chuyên
ngành kỹ thuật điện tử, máy phục vụ cho việc nghiên cứu đồ án học tập cho sinh viên.
Bên cạnh đó, máy còn là công cụ đắc lực của các chuyên gia nghiên cứu về Công nghệ
và những người làm sản xuất, lắp ráp, sửa chữa thiết bị điện tử viễn thông, công nghệ
thông tin… Ngoài ra, máy hiện sóng không bị giới hạn chỉ trong thế giới của các thiết
bị điện tử. Với một bộ chuyển đổi thích hợp, một máy hiện sóng có thể đo đạc được tất
cả các kiểu hiện tượng vật lý, âm thanh, áp lực cơ khí, áp suất, ánh sáng hoặc nhiệt
độ…
Khoa học công nghệ ngày càng phát triển, vi điều khiển AVG và vi điều khiển
PIC ngày càng thông dụng và hoàn thiện hơn, nhưng có thể nói sự xuất hiện của
Arduino vào năm 2005 tại Italia đã mở ra một hướng đi mới cho vi điều khiển. Sự xuất
hiện của Arduino đã hỗ trợ cho con người rất nhiều trong lập trình và thiết kế, nhất là
đối với những người bắt đầu tìm tòi về vi điều khiển mà không có quá nhiều kiến thức,
hiểu sâu sắc về vật lý và điện tử. Phần cứng của thiết bị đã được tích hợp nhiều chức
năng cơ bản và là mã nguồn mở. Ngôn ngữ lập trình trên nền Java lại vô cùng dễ sử
dụng tương thích với ngôn ngữ C và hệ thư viện rất phong phú và được chia sẻ miễn
phí. Chính vì những lý do như vậy nên Arduino hiện đang dần phổ biến và được phát
triển ngày càng mạnh mẽ trên toàn thế giới.
Trên cơ sở kiến thức đã học trong môn học: Kỹ thuật vi điều khiển, Điện tử
tương tự và số…cùng với những hiểu biết về các thiết bị điện tử, chúng em đã quyết
định thực hiện đề tài: “Nghiên cứu, thiết kế mô hình oscilloscope hiện sóng bằng
Arduino và sử dụng màn hình LCD Nokia 5110” với mục đích để tìm hiểu thêm về
Arduino và làm quen với các thiết bị điện tử, nâng cao hiểu biết cho bản thân, quan
trọng hơn là tạo ra một thiết bị có thể đáp ứng phần nào nhu cầu công việc học tập,
nghiên cứu về lĩnh vực điện tử.
Do kiến thức còn hạn hẹp nên chắc chắn không tránh khỏi những thiếu sót và hạn
chế vì thế chúng em rất mong có được sự góp ý, nhắc nhở từ thầy giáo để có thể hoàn


thiện đề tài của mình.
Chúng em xin chân thành cảm ơn thầy giáo ThS. Tạ Hùng Cường đã giúp đỡ
chúng em rất nhiều trong quá trình tìm hiểu, thiết kế và hoàn thành đề tài này.
Nghệ An, ngày….tháng…..năm 2017
Sinh viên thực hiện
Lê Xuân Tiến
Trần Thị Thanh Trâm
2


CHƯƠNG I. TỔNG QUAN ARDUINO
1.1 Giới thiệu chung về Arduino
Arduino hiện nay đã được biết đến một cách rộng rãi tại Việt Nam, và trên thế
giới thì nó đã quá phổ biến. Sức mạch của chúng ngày càng được chứng tỏ theo thời
gian với vô vàn các ứng dụng mở độc đáo được chia sẻ rộng rãi.
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 bay không người lái, máy in 3D….
Arduino thực sự đã gây sóng gió trên thị trường người yêu thích chế tạo sản
phẩm trên toàn thế giớ trong những năm gần đây, gần giống với những gì Apple đã
làm đc trên thị trường thiết bị di động. Số lượng người dùng cực lớn và đa dạng với
trình độ trải rộng từ bậc phổ thông lên đến đại học đã làm cho ngay cả những người
sáng tạo ra chúng phải ngạc nhiên về mức độ phổ biến.
Arduino là một board mạch vi xử lý được dùng để 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ơ, đèn hoặc các thiết bị khác. Đặc điểm nổi bật
của Arduino là môi trường phát triển ứng dụng cực kỳ dễ sử dụng, với một ngôn ngữ
lập trình có thể học một cách nhanh chóng ngay cả với những người ít am hiểu về điện
tử và lập trình. Và điều làm nên hiện tượng Arduino chính là mức giá rất thấp và tính
chất nguồn mở từ phần cứng tới phầm mềm.
Những nhà thiết kế của Arduino cố gắng mang đến một phương thức dễ dàng,

không tốn kém cho những người yêu thích, sinh viên và giới chuyên nghiệp để tạo ra
những thiết bị có khả năng tương tác với môi trường thông qua các cảm biến và các cơ
cấu chấp hành. Những ví dụ phổ biến cho những người yêu thích mới bắt đầu bao gồm
các robot đơn giản, điều khiển nhiệt độ và phát hiện chuyển động. Đi cùng với nó là
một môi trường phát triển tích hợp (IDE) chạy trên các máy tính cá nhân thông thường
và cho phép người dùng viết các chương trình cho Aduino bằng ngôn ngữ C hoặc C++
1.2 Giới thiệu về board Arduino Uno R3
Nhắc tới dòng mạch Arduino dùng để lập trình, cái đầu tiên mà người ta thường
nói tới chính là dòng Arduino UNO. Hiện dòng mạch này đã phát triển tới thế hệ thứ 3
(R3)

Hình 1.1 Board Arduino Uno
3


Cổng USB: đây là loại cổng giao tiếp để ta upload code từ PC lên vi điều khiển.
Đồng thời nó cũng là giao tiếp serial để truyền dữ liệu giữa vi điều khiển và máy
tính.
- Jack nguồn: để chạy Arduino chỉ có thể lấy nguồn từ cổng USB ở trên, nhưng
không phải lúc nào cũng có thể cắm với máy tính được. Lúc đó ta cần một nguồn
từ 9V-12V.
- Có 14 chân vào/ra đá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: đây là bộ xử lí trung tâm của toàn bo mạch. Với mỗi mẫu
Arduino khác nhau thì con chip là khác nhau. Ở Arduino Uno này sử dụng
ATMega328.
1.2.1 Các thông số chi tiết của Arduino Uno R3:
-

Vi điều khiển

Điện áp hoạt động
Tần số hoạt động
1.2.2
Dòng tiêu thụ
Điện áp vào khuyên dùng
Điện áp vào giới hạn
Số chân Digital I/O
Số chân Analog
Dòng tối đa trên mỗi chân
I/O
Dòng ra tối đa (5V)
Dòng ra tối đa (3.3V)
Bộ nhớ flash
SRAM
EEPROM
điều khiển:

ATMega328 họ 8 bit
5V DC (chỉ được cấp qua cổng USB)
16 MHz
Khoảng 30 mA
7V – 12V DC
6V – 20V DC
14 (6 chân hardware PWM)
6 (độ phân giải 10bit)
30 mA

V
i


500 mA
50 mA
32 KB (ATMega328) với 0.5KB dùng bởi
bootloader
2 KB (ATMega328)
1 KB (ATMega328)

Hình 1.2 Vi điều khiển của board Arduino.

4


Hình 1.3 Sơ đồ chân Atmega328
Arduino UNO có thể sử dụng 3 vi điều khiển họ 8 bit AVT Atmega8, Atmega168,
Atmega328. Bộ não này có thể xử lý những tác vụ đơn giản như điều khiển đèn LED
nhấp nháy, xử lý tín hiệu cho xe điều khiển từ xa, làm một trạm đo nhiệt độ - độ ẩm
và hiển thị lên màn hình LCD...
Mạch Arduino UNO R3 với thiết kế tiêu chuẩn sử dụng vi điều khiển
Atmega328. Tuy nhiên nếu yêu cầu phần cứng không cao hoặc giá thành cao thì có thể
sử dụng các loại vi điều khiển khác có chức năng tương đương nhưng rẻ hơn như
Atmega8 ( bộ nhớ flash 8kb) hoặc Atmega168 ( bộ nhớ flash 16kb).
• Tổng quan về chip Atmega328:
Atmega328 là một chíp vi điều khiển được sản xuất bời hãng Atmel thuộc họ
MegaAVR có sức mạnh hơn hẳn Atmega8. Atmega 328 là một bộ vi điều khiển 8 bít
dựa trên kiến trúc RISC bộ nhớ chương trình 32KB ISP flash có thể ghi xóa hàng
nghìn lần, 1KB EEPROM, một bộ nhớ RAM vô cùng lớn trong thế giới vi xử lý 8 bít
(2KB SRAM).
Với 23 chân có thể sử dụng cho các kết nối vào hoặc ra i/O, 32 thanh ghi, 3 bộ
timer/counter có thể lập trình, có các gắt nội và ngoại (2 lệnh trên một vector ngắt),
giao thức truyền thông nối tiếp USART, SPI, I2C. Ngoài ra có thể sử dụng bộ biến đổi

số tương tự 10 bít (ADC/DAC) mở rộng tới 8 kênh, khả năng lập trình được watchdog
timer, hoạt động với 5 chế độ nguồn, có thể sử dụng tới 6 kênh điều chế độ rộng xung
(PWM), hỗ trợ bootloader.
Atemega328 có khả năng hoạt động trong một dải điện áp rộng (1.8V - 5.5V), tốc
độ thực thi (thông lượng) 1MIPS trên 1MHz.
Thông số chính của Atmega328P-PU:
+ Kiến trúc:
AVR 8bit
5


+ Xung nhịp lớn nhất:
20Mhz
+ Bộ nhớ chương trình (FLASH):
32KB
+ Bộ nhớ EEPROM:
1KB
+ Bộ nhớ RAM:
2KB
+ Điện áp hoạt động rộng:
1.8V - 5.5V
+ Số timer: 3 timer gồm 2 timer 8-bit và 1 timer 16-bit
+ Số kênh xung PWM: 6 kênh (1timer 2 kênh)
Ngày nay vi điều khiển Atmega328 thực sử được sử dụng phổ biến từ các dự án
nhỏ của sinh viên, học sinh với giá thành rẻ, xử lý mạnh mẽ, tiêu tốn ít năng lượng
(chế độ hoạt động: 0.2 mA, chế độ ngủ: 0.1 μA, chế độ tích kiệm: 0.75 μA) và sự hỗ
trợ nhiệt tình của cộng đồng người dùng AVR. Và không thể không nhắc tới sự thành
công của Vi điều khiển Atmega328 trong dự án mã nguồn mở Arduino với các modul
Adruino Uno (R3), Arduino Nano, Arduino Pro mini những sản phẩm dẫn dắt chúng ta
vào thế giới mã nguồn mở để hoàn thành một chương trình trong “nháy mắt”.

1.2.3 Nguồn sử dụng:
Arduino UNO R3 có thể được cấp nguồn 5V thông qua cổng USB hoặc cấp nguồn
ngoài với điện áp khuyên dùng là 7 – 12V DC hoặc điện áp giới hạn là 6 – 20V. Nếu
cấp nguồn vượt quá ngưỡng giới hạn trên thì sẽ hỏng Arduino UNO.
1.2.4 Các chân năng lượng:
+ GND (Ground): cực âm của nguồn điện cấp cho Arduino UNO. Khi dùng các thiết
bị sử dụng những nguồn điện riêng biệt thì những chân này phải được nối với nhau.
+ 5V: cấp điện áp 5V đầu ra. Dòng tối đa cho phép ở chân này là 500mA.
+ 3.3V: cấp điện áp 3.3V đầu ra. Dòng tối đa cho phép ở chân này là 50mA.
+ Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, nối cực dương của
nguồn với chân này và cực âm của nguồn với chân GND.
+ IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể được đo ở
chân này. Và dĩ nhiên nó luôn 5V. Mặc dù vậy không được lấy nguồn 5V từ chân này
để sử dụng bởi chức năng của nó không phải là cấp nguồn.
+ RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương đương với việc
chân RESET được nối với GND qua 1 điện trở 10 kΩ.
1.2.5 Bộ nhớ sử dụng:
Vi điều khiển Atmega328 tiêu chuẩn sử dụng trên Arduino uno r3 có:
+ 32KB bộ nhớ flash: những đoạn lệnh lập trình sẽ được lưu trữ trong bộ nhớ flash của
vi điều khiển. Thường thì sẽ có khoảng vài KB trong số này sẽ được dùng cho
bootloader nhưng hiếm khi nào cần quá 20KB bộ nhớ này.
+ 2KB cho SRAM (Static Random Acces Memory): giá trị các biến khai báo khi lập
trình sẽ lưu ở đây. Khi khai báo càng nhiều biến thì càng cần nhiều bộ nhớ RAM. Tuy
6


vậy, thực sự thì cũng hiếm khi nào bộ nhớ RAM lại trở thành thứ cần bận tâm. Khi mất
biện, dữ liệu trên SRAM sẽ bị mất.
+ 1KB cho EEPROM (Electrically Eraseble Programmable Read Only Memory): đây
giống như một chiếc ổ cứng mini – nơi có thể đọc và ghi dữ liệu vào mà không phải lo

bị mất khi cúp điện giống như dữ liệu trên SRAM.
1.2.6 Các cổng vào/ra trên Arduino:

Hình 1.4 Các cổng vào/ra trên Arduino
Mạch Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu. Chúng chỉ có 2
mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA. Ở mỗi chân
đều có các điện trở pull-up từ được cài đặt ngay trong vi điều khiển Atmega328.
Một số chân digital có các chức năng đặc biệt như sau:
+ 2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận (receive –
RX) dữ liệu TTL Serial. Arduino Uno có thể giao tiếp với thiết bị khác thông qua 2
chân này. Kết nối bluetooth thường chính là kết nối Serial không dây. Nếu không cần
giao tiếp Serial thì không nên sử dụng 2 chân này nếu không cần thiết.
+ Chân PWM: 3,5,6,9,10 và 11: cho phép xuất ra xung PWM với độ phân giải 8 bit
(giá trị từ 0 -> tương ứng với 0V -> 5V) bằng hàm analogWrite. Nói một cách đơn
giản là có thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến 5V thay vì chỉ cố
định ở mức 0V và 5V như những chân khác.
+ 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 phát dữ liệu bằng giao thức SPI với
các thiết bị khác.
+ LED 13: trên Arduino UNO có 1 đèn led màu cam (ký hiệu L). Khi bấm nút Reset,
bạn sẽ thếy đèn này nhấp nháy để báo hiệu. Nó được nối với chân số 13. Khi chân này
được người dùng sử dụng, LED sẽ sáng.
Arduino UNO board có 6 chân analog (A0 – A5) cung câó độ phân giải tín hiệu 10 bit
(0 -> ) để đọc giá trị điện áp trong khoảng 0V – 5V. Với chân AREF trên board có thể
đưa vào điện áp tham chiếu khi sử dụng các chân analog. Tức là nếu cấp điện 2.5V vào
7


chân này thì có thể dùng các chân analog để đo điện áp trong khoảng từ 0V – 2.5V với
độ phân giải vẫn là 10 bit.

Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI
với các thiết bị khác.
1.2.7 Phần cứng của Arduino:
Arduino là một nền tảng phần cứng mã nguồn mở: Các thiết kế phần cứng tham
khảo của Arduino được phân phối dưới dạng Creative CommonsAttribution ShareAlike 2.5 license và có sẵn trên website của Arduino
Một mạch Arduino bao gồm một vi điều khiển AVR với nhiều linh kiện bổ sung
giúp dễ dàng lập trình và có thể mở rộng với các mạch khác. Một khía cạnh quan trọng
của Arduino là các kết nối tiêu chuẩn của nó, cho phép người dùng kết nối với CPU
của board với các module thêm vào có thể dễ dàng chuyển đổi, được gọi là shield. Vài
shield truyền thông với board Arduino trực tiếp thông qua các chân khách nhau, nhưng
nhiều shield được định địa chỉ thông qua serial bus I²C-nhiều shield có thể được xếp
chồng và sử dụng dưới dạng song song. Arduino chính thức thường sử dụng các dòng
chip megaAVR, đặc biệt là ATmega8, ATmega168, ATmega328, ATmega1280, và
ATmega2560. Một vài các bộ vi xử lý khác cũng được sử dụng bởi các mạch Aquino
tương thích. Hầu hết các mạch gồm một bộ điều chỉnh tuyến tính 5V và một thạch anh
dao động 16 MHz (hoặc bộ cộng hưởng ceramic trong một vài biến thể), mặc dù một
vài thiết kế như LilyPad chạy tại 8 MHz và bỏ qua bộ điều chỉnh điện áp onboard do
hạn chế về kích cỡ thiết bị. Một vi điều khiển Arduino cũng có thể được lập trình sẵn
với một boot loader cho phép đơn giản là upload chương trình vào bộ nhớ flash onchip, so với các thiết bị khác thường phải cần một bộ nạp bên ngoài. Điều này giúp
cho việc sử dụng Arduino được trực tiếp hơn bằng cách cho phép sử dụng 1 máy tính
gốc như là một bộ nạp chương trình.
Theo nguyên tắc, khi sử dụng ngăn xếp phần mềm Arduino, tất cả các board
được lập trình thông qua một kết nối RS-232, nhưng cách thức thực hiện lại tùy thuộc
vào đời phần cứng. Các board Serial Arduino có chứa một mạch chuyển đổi giữa
RS232 sang TTL. Các board Arduino hiện tại được lập trình thông qua cổng USB,
thực hiện thông qua chip chuyển đổi USB-to-serial như là FTDI FT232. Vài biến thể,
như Arduino Mini và Boarduino không chính thức, sử dụng một board adapter hoặc
cáp nối USB-to-serial có thể tháo rời được, Bluetooth hoặc các phương thức khác.
(Khi sử dụng một công cụ lập trình vi điều khiển truyền thống thay vì ArduinoIDE,
công cụ lập trình AVR ISP tiêu chuẩn sẽ được sử dụng.)


8


Board Arduino sẽ đưa ra hầu hết các chân I/O của vi điều khiển để sử dụng cho
những mạch ngoài. Diecimila, Duemilanove, và bây giờ là Uno đưa ra 14 chân I/O kỹ
thuật số, 6 trong số đó có thể tạo xung PWM (điều chế độ rộng xung) và 6 chân input
analog, có thể được sử dụng như là 6 chân I/O số. Những chân này được thiết kế nằm
phía trên mặt board, thông qua các header cái 0.10-inch (2.5 mm). Nhiều shield ứng
dụng plug-in cũng được thương mại hóa. Các board Arduino Nano, và Arduinocompatible Bare Bones Board và Boarduino có thể cung cấp các chân header đực ở
mặt trên của board dùng để cắm vào các breadboard.
Có nhiều biến thể như Arduino-compatible và Arduino-derived. Một vài trong số
đó có chức năng tương đương với Arduino và có thể sử dụng để thay thế qua lại. Nhiều
mở rộng cho Arduino được thực thiện bằng cách thêm vào các driver đầu ra, thường sử
dụng trong các trường học để đơn giản hóa các cấu trúc của các 'con rệp' và các robot
nhỏ. Những board khác thường tương đương về điện nhưng có thay đổi về hình dạngđôi khi còn duy trì độ tương thích với các shield, đôi khi không. Vài biến thể sử dụng
bộ vi xử lý hoàn toàn khác biệt, với các mức độ tương thích khác nhau.
1.2.8

Môi trường lập trình board mạch Arduino:

Thiết kế board mạch nhỏ gọn, trang bị nhiều tính năng thông dụng mang lại nhiều
lợi thế cho Arduino, tuy nhiên sức mạnh thực sự của Arduino nằm ở phần mềm. Môi
trường lập trình đơn giản dễ sử dụng, ngôn ngữ lập trình Wiring dễ hiểu và dựa trên nền
tảng C/C++ rất quen thuộc với người làm kỹ thuật. Và quan trọng là số lượng thư viện
code được viết sẵn và chia sẻ bởi cộng đồng nguồn mở là cực kỳ lớn.
Môi trường lập trình Arduino IDE có thể chạy trên ba nền tảng phổ biến nhất
hiện nay là Windows, Macintosh OSX và Linux. Do có tính chất nguồn mở nên môi
trường lập trình này hoàn toàn miễn phí và có thể mở rộng thêm bởi người dùng có
kinh nghiệm.

Ngôn ngữ lập trình có thể được mở rộng thông qua các thư viện C++. Và do ngôn
ngữ lập trình này dựa trên nền tảng ngôn ngữ C của AVR nên người dùng hoàn toàn có
thể nhúng thêm code viết bằng AVR C vào chương trình nếu muốn
Để lập trình cũng như gửi lệnh và nhận tín hiệu từ mạch Arduino, nhóm phát
triển dự án này đã cung cấp đến cho người dùng một môi trường lập trình Arduino
được gọi là Arduino IDE (Intergrated Development Environment) như hình sau:

9


Hình 1.5 Giao diện lập trình cho Arduino
Các loại board mạch Arduino

1.2.9

Được phát triển trong nhiều năm nên có rất nhiều loại Board Arduino được đề
xuất. Ta sẽ đi tìm hiểu các chức năng của Board này để làm sao lựa chọn cho phù hợp
với yêu cầu thiết kế của bạn.Tất cả các Board được thể hiện ở các hình trên, trên mỗi
Board có in tên, bạn chú ý để khỏi nhầm lẫn.
Arduino Uno

-

Đây là Board cơ bản nhất cho người mới bắt đầu. Giá của nó khoảng 200 nghìn,
bạn có thể hỏi mua ở nhiều nơi. Bạn có thể mua online tại hshop hoặc bất kỳ đâu.Nó
có 14 chân dữ liệu số, có thế cấu hình làm chân lấy tín hiệu vào hoặc xuất tín hiệu ra là
tùy bạn. 6 chân tương tự đầu vào 5V, độ phân giải 1024 mức. Tốc độ 16MHz, điện áp
vào từ 7~12V, chân số có thể cấp điện áp ra 5V và 1A, nếu bạn điều khiển chân số ra
tiêu tốn quá 1A thì Board sẽ bị hỏng. Kích thước Board khoảng 5,5x7cm.
-


Arduino Micro
10


Board này có thiết kế nhỏ, dành cho các không gian lắp đặt nhỏ, nhẹ. kích thước
khoảng 5x2cm. Board này giống với Arduino Uno. Có 20 chân số, trong đó có 7 chân
có thể phát xung PWM. 12 chân tương tự.
-

Arduino Pro/Pro Micro

Nhìn chung thiết kế giúp Arduino Uno. Có 2 loại, 3.3V và 5V. Nó không được
thiết kế chân sẵn nên khi sử dụng bạn có thể hàn trực tiếp nhằm tiết kiệm không gian.
-

Arduino Nano

Board này có kích thước nhỏ nhất. gồm 14 chân số (6 chân PWM) và 8 chân
tương tự. Kích thước khoảng 2x4cm. Nhỏ gọn, dễ lắp đặt ở bất kỳ đâu.
-

Arduino Mega

Có thiết kế hoạt động tương tự Arduino UNO, tuy nhiên có số lượng chân vào ra
lớn với 54 chân Số (14 chân PWM), 16 chân tương tự và 4 cổng truyền nối tiếp
(RS232) dễ dàng giao tiếp với các board, thiết bị khác. Kích thước 5x10cm.
-

Arduino Leonardo


Đây là board có thiết kế giống Arduino Micro, sự khác biệt lớn nhất giữa nó và
các board khác là nó không có cổng USB dành cho việc lập trình. Mọi thứ được đặt
trong 1 chip điều khiển, cho phép giao tiếp thông qua cổng COM ảo và cho phép nó
giao tiếp với chuột và phím máy tính dễ dàng. Không giống như các Board khác, khi
cổng nối tiếp mở thì nó sẽ không bị reset, để gỡ rối cho chương trình thì bạn cần giao
tiếp qua lệnh Serial.prints() trong hàm Setup().
-

Arduino Due

Đây là Board có thiết kế lớn và xấu nhất trong tất cả các Board, nó hoạt động ở
điện áp 3.3V. Các chân số có mức logic ở 3,3V nên khi giao tiếp bạn cần phải nâng áp
để có thể giao tiếp bình thường. Gồm 54 chân số (12 chân tương tự). 4 cổng nối tiếp
tương tự Arduino Mega. Nó chạy bộ xử lý 32bit, 84MHz. nó xử lý nhanh hơn gấp 5
lần so với các Board arduino khác. Xử lý chương trình nhanh hơn 10 lần. Vì vậy nó
đọc các chân đầu vào và đáp ứng nhanh hơn.
-

Arduino Ethernet

11


Như tên của nó, nó là 1 Arduino giống chức năng với UNO tuy nhiên nó được
tích hợp Module Ethernet trong nó. có tích hợp thẻ SD.
1.2.10 Khả năng ghép nối của Arduino
-

Ghép nối với các cảm biến.

Tất cả những cảm biến ghép nối được với vi điều khiển thì cũng ghép nối được
với Arduino. Các cảm biến phổ biến gồm:
Cảm biến nước, cảm biến nhiệt đô/ độ ẩm, cảm biến hồng ngoại/ ánh sáng, cảm
biến màu, cảm biến rung, cảm biến âm thanh, cảm biến siêu âm, cảm biến khí, cảm
biến áp suất, cảm biến chuyển động, cảm biến khoảng cách, cảm biến dòng điện, cảm
biến góc/ gia tốc, cảm biến Hall, cảm biến từ trường, cảm biến quang điện...

-

Ghép nối với các module chức năng
Nếu có kiến thức và kỹ năng về thiết kế mạch điện tử người sử dụng có thể tự
thiết kế các module chức năng ghép nối với Arduino. Tuy nhiên việc này đòi hỏi tốn
thời gian chưa tính đến việc thiết kế bị lỗi phải thực chỉnh sửa và làm mới lại gây lãng
phí.
Cộng đồng phát triển Arduino thiết kế và sản xuất hàng loạt các module chuẩn để
kết nối với các Board mạch Arduino. Điều này giúp cho người thiết kế phần cứng
"nhàn rỗi" hơn trong việc thiết kế và làm mạch in cho các ứng dụng và người sử dụng
không phải bận tâm về các sai sót trong thiết kế phần cứng. Hiện nay có các module
phổ biến sau:
- Module LED, LCD
- Module đo thông số điện.
- Module nguồn.
- Module RF.
- Module Bluetooth.
- Module wifi.
- Module Xbee.
12


- Module GSM/ GPRS/ 3G/ GPS.

- Module Finger Printer.
- Module Driver.
- Module Keypad.
- Module Relay.
- Module Thời gian....
1.2.11 Ứng dụng của Arduino

Được chọn làm bộ não để xử lý các thiết bị từ đơn giản đến phức tạp, arduino có
khả năng còn chứng tỏ được sự hiệu quả của mình trong nhiều các nhiệm vụ phúc tạp
hơn. Ứng dụng của arduino trong cuộc sống như:
Robot: với khả năng xử lý vi diệu của mình, kèm theo đó là kích thước nhỏ con,
arduino được sử dụng để làm bộ vi xử lý của nhiều loại robot, đặc biệt là các loại robot
có độ khó linh hoạt cao như di động.
Điều khiển ánh sáng: việc đóng ngắt đèn LED, điều khiển ánh sáng theo cung
bậc của nhạc hay tương tác với laser là những gì nằm trong tầm kiểm soát của
Arduino.
Game tương tác: có rất nhiều các game tương tác cần đến “bộ não” nhỏ gọn và
thông minh này và việc tương tác với PC là một trong các nhiệm vụ quan trọng.
Bạn đã bao giờ nghe đến máy in 3D chưa? Đây là một cuộc cách mạng âm thầm
dựa vào sự có mặt của Arduino. Nhờ mở nguồn reprap nên các máy in 3D có thể tạo ra
các vật thể trực tiếp từ các file CAD 3D để tạo được hình ảnh trực quan sinh động
nhất.
Ngoài ra còn có rất nhiều các ứng dụng của arduino vào trong các thiết bị máy
móc trong cuộc sống khác. Đây chính là một bộ vi xử lý trung tâm của các máy móc
thiết bị.
1.3 Giới thiệu khối hiển thị dạng sóng

Nokia 5110 là một màn hình LCD đồ họa cơ bản cho nhiều ứng dụng.
13



Màn hình LCD Nokia 5110 sử dụng IC điều khiển Philips PCD8544, giống như
trong màn hình Nokia 3310 LCD. PCD8544 là bộ điều khiển CMOS LCD công suất
thấp, được thiết kế để điều khiển hiển thị đồ họa 48 hàng và 84 cột. Tất cả các chức
năng cần thiết cho màn hình được cung cấp trong một chip duy nhất, dẫn đến tối thiểu
các thành phần bên ngoài và mức tiêu hao năng lượng thấp. Các giao diện PCD8544
để vi điều khiển thông qua một giao diện nối tiếp bus.
Các tính năng chính của màn hình nokia 5110 như sau:
- Điện áp làm việc 3V – 5V.
- Độ phân giải: 84x84 pixels.
- Điều khiển độ sáng màn hình bằng xung PWM.
Màn hình Nokia 5110 rất thích hợp sử dụng cho các dự án Arduino vì kích thước
nhỏ, khả năng hiển thị ký tự nhiều, dễ giao tiếp với vi điều khiển.

Hình 1.6 Màn hình Nokia 5110
- Thứ tự và chức năng các chân LCD Nokia 5110:
RST: Chân reset LCD
CE: Chân cho phép hoặc không cho phép LCD hoạt động.
DC: Chân chọn dữ liệu gửi đến LCD là lệnh hay là dữ liệu để hiển thị ra màn hình.
DIN: Chân truyền dữ liệu theo chuẩn SPI.
CLK: Chân truyền xung nhịp theo chuẩn SPI.
VCC: Chân cấp nguồn cho LCD.
BL: Chân cấp nguồn cho led nền màn hình LCD.
GND: Chân mass.
Ngoài chuẩn SPI với 3 đường tín hiệu chuẩn (CS (CE), SCK (CLK), MOSI (DI)) thì
Nokia LCD này cần thêm 2 đường nữa đó là D/C (Data/Command) và RST (Reset).
- Kết nối SPI rút gọn (4 dây)

14



Hình 1.7 Sơ đồ kết nối rút gọn LCD nokia 5110 với arduino

-

Kết nối SPI đầy đủ:

15


Hình 1.8 Sơ đồ kết nối đầy đủ LCD nokia 5110 với arduino
1.4 Máy hiện sóng (Oscilloscope)
1.4.1 Giới thiệu chung
Máy hiện sóng (Oscilloscope) là một thiết bị hiện thị dạng sóng, nó vẽ ra dạng
sóng của một tín hiệu điện. Trong hầu hết các ứng dụng, dạng sóng chỉ ra tín hiệu thay
đổi thế nào theo thời gian: trục dọc (Y) biểu diễn điện áp và trục ngang (X) biểu diễn
thời gian. Cường độ hay độ sáng của sự hiển thị đôi khi được gọi là trục Z. Đây là
dạng sóng đơn giản có thể chỉ ra cho ta nhiều điều về một tín hiệu.
Máy oscilloscope trông rất giống một cái tivi nhỏ, nó có một mạng lưới được vẽ
trên màn hình và có nhiều núm điều khiển hơn tivi. Mặt trước của một oscilloscope
thường có các phần điều khiển được chia thành các phần dọc, ngang và Trigger. Có
các điều khiển thiển thị các đầu nối đầu vào.
1.4.2 Chức năng của Oscilloscope
Sau đây là một số chức năng cơ bản:
- Nhận dạng, hiển thị dạng sóng của tín hiệu ( Xung vuông, răng cưa, hình sin,
tín hiệu hình, tín hiệu tiếng…)
- Xác định rõ các giá trị thời gian và mức điện áp và đường đi của một tín hiệu.
- Cho phép tính toán được tần số của một tín hiệu dao động.
- Nhận thấy “ các phần động “ của một mạch điện được biểu diễn bởi tín hiệu.
- Chỉ ra nếu một thành phần lỗi làm méo tín hiệu.

- Chỉ ra tín hiệu là dòng một chiều hay dòng xoay chiều.
16


Chỉ ra tín hiệu như thế nào là nhiễu và nếu có thì nhiễu thay đổi như thế nào
theo thời gian…
Sự hữu ích của một máy oscilloscope không bị giới hạn chỉ trong thế giới của các
thiết bị điện tử. Với một bộ chuyển đổi thích hợp, một máy oscilloscope có thể đo đạc
được tất cả các kiểu hiện tượng. Một bộ chuyển đổi là một thiết bị mà tạo ra tín hiệu
điện đáp ứng lại các kích thích vật lý, ví dụ như âm thanh, áp lực cơ khí, ánh sáng
hoặc nhiệt độ. Ví dụ như một microphone là một bộ chuyển đổi…Một kỹ sư ô tô có
thể dùng máy oscilloscope để đo đạc sự rung của động cơ. Một nghiên cứu sinh y khoa
có thể dùng máy oscilloscope để đo đạc các sóng não. Các khả năng là vô tận.
1.4.3 Nguyên lý hoạt động của máy Oscilloscope
-

1.4.3.1 Phân loại máy Oscilloscope
Thiết bị điện tử có thể được chia làm 2 loại: tương tự và số. Thiết bị tương tự
làm việc với các điện áp biến đổi liên tục, trong khi thiết bị số làm việc với các số nhị
phân rời rạc mà có thể biểu diễn các mẫu điện áp. Lấy ví dụ, máy quay đĩa thông
thường là thiết bị tương tự, còn máy chơi đĩa compact là một thiết bị số.
Các máy Oscilloscope cũng có các loại tương tự và loại số. Máy oscilloscope
tương tự làm việc trực tiếp với điện áp đặt vào được đo để di chuyển dòng electron
ngang qua màn hình oscolloscope.
Trái lại, máy oscilloscope số lấy mẫu dạng sóng và dùng một bộ chuyển đổi
tương tự/số (A/D) để chuyển đổi điện áp được đo thành thông tin số. Sau đó, nó dùng
thông tin số này để tái cấu trúc lại dạng sóng trên màn hình.
Đối với nhiều ứng dụng, hoặc là máy oscilloscope số hoặc là máy oscilloscope
tương tự sẽ được dùng. Tuy nhiên, mỗi loại máy có một số đặc tính riêng làm cho nó
thích hợp hơn hoặc kém thích hợp hơn trong các tác vụ riêng.

Người ta thường thích các máy oscilloscope tương tự hơn vì nó quan trọng để
hiển thị nhanh chóng các tín hiệu thay đổi trong thời gian thực (hay như là chúng
đang diễn ra).
Các máy oscilloscope số cho phép bạn ghi lại và xem các sự kiện mà chúng có
thể chỉ diễn ra duy nhất 1 lần. Chúng có thể xử lý dữ liệu dạng sóng số và gửi các dữ
liệu đó tới máy tính để xử lý. Như vậy, chúng có thể lưu trữ dữ liệu dạng sóng số để
xem và in ra sau đó.
1.4.3.2 Oscilloscope tương tự
Khi các bạn nối đầu dò của máy oscilloscope và mạch điện, tín hiệu điện áp đi
qua đầu dò tới hệ thống đọc của máy oscilloscope.
Tùy thuộc vào cách đặt chia thang đo dọc (điều khiển volts/div) như thế nào thì
bộ suy hao làm giảm điện áp tín hiệu hoặc là bộ khuếch đại làm tăng điện áp tín hiệu.
Điện áp đặt vào các bản lái tia làm cho một điểm sáng di chuyển. (một dòng
electron đập vào lớp phosphor bên trong CRT tạo ra điểm sáng). Điện áp dương làm
cho điện áp đi lên trong khi điện áp âm làm cho điểm sáng đi xuống.
17


Tín hiệu cũng đồng thời đi tới hệ thống trigger để khởi động hay kích một “quét
ngang”. Quét ngang là một thuật ngữ chỉ việc hệ thống ngang làm cho điểm sáng di
chuyển ngang trên màn hình. Việc kích hệ thống ngang gây ra thời gian cơ bản để di
chuyển điểm sang ngang trên màn hình từ trái sang phải trong một khoảng thời gian
xác định. Nhiều lần quét thành các dãy nhanh làm cho chuyển động của điểm sáng
được hợp thành một đường liền nét. Ở các tốc độ cao hơn, điểm sáng có thể quét
ngang màn hình lên tới 500.000 lần mỗi giây.
Cùng với nhau, việc quét ngang và việc lái dọc vạch ra một đồ thị tín hiệu trên
màn hình. Bộ kích khởi là cần thiết để ổn định hóa tín hiệu tuần hoàn. Nó đảm bảo
rằng lần quét bắt đầu ở cùng một điểm với tín hiệu tuần hoàn, dẫn tới một hình ảnh rõ
ràng.
1.4.3.3 Oscilloscope số

Một vài hệ thống mà được cấu thành từ các máy oscilloscope số thì cũng tương
tự như bằng các máy oscilloscope tương tự; tuy nhiên, các máy oscilloscope số bao
gồm thêm hệ thống xử lý số liệu.
Với hệ thống thêm vào, máy oscilloscope số thu thập số liệu cho toàn bộ dạng
sóng và sau đó hiển thị chúng. Khi các bạn nối dầu dò của máy oscilloscope số vào
mạch điện hệ thống dọc sẽ điều chỉnh biên độ của tín hiệu như trong máy
oscilloscope tương tự.
Tiếp tới, bộ chuyển đổi tương tự /số trong hệ thống thu thập lấy mẫu tín hiệu ở
các thời điểm rời rạc và chuyển đổi điện áp tín hiệu ở các điểm này thành giá trị số,
gọi là các điểm lấy mẫu. Xung lấy mẫu của hệ thống ngang quy định bộ ADC lấy
mẫu bao nhiêu lần. Tốc độ mà ở đó xung “ticks” được gọi là tôcs độ lấy mẫu và được
đo bằng số mẫu trên giây.
Các điểm mẫu từ ADC được lưu trữ trong bộ nhớ như là các điểm dạng sóng.
Có nhiều hơn một điểm mẫu có thể cấu thành nên một điểm dạng sóng.
Cùng với nhau, các điểm dạng sóng cấu thành nên một bản ghi dạng sóng. Số
điểm sóng được dùng để tạo nên một bản ghi dạng sóng được gọi là độ dài bản ghi.
Hệ thông kích khởi quy định điểm bắt đầu và điểm kết thúc bản ghi. Màn hình nhận
các điểm bản ghi này sau khi chúng được lưu trữ trong bộ nhớ.
Tùy thuộc vào khả năng của máy oscilloscope của các bạn, việc xử lý thêm các
điểm mẫu có thể được tiến hành để làm nâng cao chất lượng hiển thị. Bộ tiền kích
khởi có thể hữu ích cho phép các bạn xem các sự kiện trước điểm kích.
Về cơ bản, với một máy oscilloscope số cũng như với máy oscilloscope tương
tự, cần điều chỉnh các thiết lập dọc, ngang và kích khởi để có thể đo đạc được.

18


CHƯƠNG II. NGÔN NGỮ LẬP TRÌNH
2.1 Ngôn ngữ lập trình C/C++
2.1.1 Tổng quan

Ngôn ngữ lập trình (NNLT) C/C++ là một trong những ngôn ngữ lập trình
hướng đối tượng mạnh và phổ biến hiện nay do tính mềm dẻo và đa năng của nó.
Không chỉ các ứng dụng được viết trên C/C++ mà cả những chương trình hệ thống lớn
đều được viết hầu hết trên C/C++. C++ là ngôn ngữ lập trình hướng đối tượng được
phát triển trên nền tảng của C, không những khắc phục một số nhược điểm của ngôn
ngữ C mà quan trọng hơn, C++ cung cấp cho người sử dụng (NSD) một phương tiện
lập trình theo kỹ thuật mới: lập trình hướng đối tượng. Đây là kỹ thuật lập trình được
sử dụng hầu hết trong các ngôn ngữ mạnh hiện nay, đặc biệt là các ngôn ngữ hoạt động
trong môi truờng Windows như Microsoft Access, Visual Basic, Visual Foxpro …
2.1.2 Lịch sử phát triển
Ngôn ngữ lập trình C do Dennis Ritchie nghĩ ra khi ông làm việc tại AT&T Bell
Laboratories vào năm 1972.
C là một ngôn ngữ mạnh và có tính linh hoạt, nó đã nhanh chóng được sử dụng
một cách rộng rãi, vượt ra khỏi phạm vi của Bell Labs. Các lập trình viên ở khắp mọi
nơi bắt đầu sử dụng nó để viết tất cả các loại chương trình.
C++ được biết đến như là ngôn ngữ mới bao trùm lên C và do Bjarne Stroustrup
sáng tác năm 1980 cũng tại phòng thí nghiệm Bell tại bang New Jersey, Mỹ. Ban đầu
được ông đặt tên cho nó là “C with classes” (C với các lớp). Tuy nhiên đến năm 1983
thì ông đổi tên thành C++, trong đó ++ là toán tử tăng thêm 1 của C.
C++ được biết đến như là ngôn ngữ lập trình hướng sự vật hay hướng đối tượng
- OOP (Object Oriented Programming).
Bjarne Stroustrup của Bell Labs đã phát triển C++ (mà tên nguyên thủy là "C
với các lớp" trong suốt thập niên 1980như là một bản nâng cao của ngôn ngữ C.
Những bổ sung nâng cao bắt đầu với sự thêm vào của khái niệm lớp, tiếp theo đó là
các khái niệm hàm ảo, chồng toán tử, đa kế thừa, tiêu bản, và xử lý ngoại lệ. Tiêu
chuẩn của ngôn ngữ C++ đã được thông qua trong năm 1998 như là ISO/IEC
14882:1998. Phiên bản hiện đang lưu hành là phiên bản C++14, ISO/IEC
14882:2014[1]. Hiện tại tiêu chuẩn mới nhất của ngôn ngữ C++ là C++14, phát hành
ngày 15/12/2014 (ghi theo định dạng ISO 8601 là 2014-12-15). Và C++ còn là ngôn
ngữ được cải tiến từ C

2.1.3 Đặc điểm của ngôn ngữ lập trình C/C++
C là một ngôn ngữ mạnh và linh hoạt. C được sử dụng trong nhiều dự án khác
nhau, như viết hệ điều hành, chương trình xử lý văn bản, đồ hoạ, bảng tính, và thậm
chí cả chương trình dịch cho các ngôn ngữ khác.
19


C có sẵn rất nhiều các trình biên dịch (compiler) và các thư viện được viết sẵn khác.
C là một ngôn ngữ khả chuyển (portable language). Nghĩa là một chương trình
viết bằng C cho một hệ máy tính (ví dụ như IBM PC) có thể được dịch và chạy trên hệ
máy tính khác (chẳng hạn như DEC VAX) chỉ với rất ít các sử đổi. Tính khả chuyển đã
được bởi chuẩn ANSI cho C.
C chỉ gồm một số ít từ khoá (keywords) làm nền tảng để xây dựng các các chức
năng của ngôn ngữ.
C là ngôn ngữ lập trình theo modul. Mã chương trình C có thể (và nên) được
viết thành các thủ tục gọi là function. Những function này có thể được sử dụng lại
trong các ứng dụng (application) và chương trình khác nhau. Tuy nhiên C không cho
phép khai báo hàm trong hàm.
C++ bao trùm lên C nên mọi đặc điểm của C đều có trong C++. Ngoài ra, C++ còn có
một số đặc điểm khác như:
C++ là ngôn ngữ hướng đối tượng.
C++ là ngôn ngữ định kiểu rất mạnh.
C++ cung cấp cách truyền tham số bằng tham chiếu cho hàm.
C++ cung cấp cơ cấu thư viện để người lập trình có thể tự tạo thêm hàm thông dụng
vào thư viện và có thể tái sử dụng sau này.
C++ cung cấp một cơ chế đa dạng hóa tên hàm và toán tử.
C++ cung cấp các class là loại cấu trúc mới đóng gói chung cho cả dữ liệu lẫn các hàm
trong một chủ thể được bảo vệ một cách chặt chẽ.
2.1.4 Cấu trúc của một chương trình C++
(1): Khai báo thư viện

(2): [Khai báo các nguyên mẫu hàm của người dùng].
(3): [Các định nghĩa kiểu].
(4): [Các định nghĩa Macro].
(5): [Các định nghĩa biến, hằng].
(6): <kiểu hàm> main ([khai báo tham số]).
(7): {
(8): Thân hàm main
(9): }
(10): Các định nghĩa hàm của người dùng.
Giải thích cú pháp:
(1): Cú pháp để khai báo thư viện: #include<tên_thư_viên.h>
Ví dụ: #include<iostream.h>; #include<conio.h>;…
(2): Cung cấp tên hàm, kiểu hàm, số đối số và kiểu của từng đối số của hàm.
Cú pháp khai báo nguyên mẫu hàm: <kiểu hàm> <tên hàm> ([Khai báo các đối số]);
20


Ví dụ: int chanle (int x); Trong đó, kiểu hàm là int, tên hàm là chanle, đối số là x và
kiểu của đối số là int.
(3): Định nghĩa kiểu mới
Ngoài những kiểu chuẩn đã được cung cấp sẵn của ngôn ngữ, người lập trình có thể
định nghĩa ra các kiểu mới từ những kiểu đã có bằng cách sử dụng từ khóa typedef.
(4): Định nghĩa Macro
(5): Các định nghĩa biến, hằng: Các biến và hằng được định nghĩa tại đây sẽ trở thành
biến và hằng toàn cục.
(6) – (9): Hàm main(): Đây là thành phần bắt buộc trong một chương trình C++, thân
của hàm main bắt đầu từ sau dấu mở móc { (dòng 7) cho tới dấu đóng móc } (dòng 9).
(10): Các định nghĩa hàm của người dùng: Một định nghĩa hàm bao gồm tiêu đề của
hàm, thân hàm với cú pháp như sau:
<Kiểu hàm> <Tên hàm> ([Khai báo các đối])

{
<Thân hàm>
}
2.2 Phần mềm viết code cho bo mạch Arduino
Arduino là môi trường phát triển tích hợp mã nguồn mở, cho phép người dùng
dễ dàng viết code và tải nó lên bo mạch. Môi trường phát triển được viết bằng Java
dựa trên ngôn ngữ lập trình xử lý và phần mềm mã nguồn mở khác. Phần mềm này có
thể được sử dụng với bất kỳ bo mạch Arduino nào.
Kể từ tháng 3 năm 2015, Arduino IDE (Integrated Development Editor - môi
trường phát triển tích hợp) đã được tải xuống hơn 8 triệu lần. Hiện tại, nó không chỉ
được sử dụng cho các bo mạch Arduino và Genuido mà còn được hàng trăm công ty
trên thế giới sử dụng để lập trình thiết bị của họ, bao gồm những thiết bị tương đương,
bản sao và thậm chí cả hàng giả.

21


Hình 2.1 Giao diện của phần mềm viết code cho bo mạch Arduino
Arduino là một môi trường phát triển tích hợp đa nền tảng, làm việc cùng với
một bộ điều khiển Arduino để viết, biên dịch và tải code lên bo mạch. Phần mềm này
cung cấp sự hỗ trợ cho một loạt các bo mạch Arduino như Arduino Uno, Nano, Mega,
Esplora, Ethernet, Fio, Pro hay Pro Mini cũng như LilyPad Arduino.
Ngôn ngữ phổ quát cho Arduino C và C++, do đó phần mềm phù hợp cho
những lập trình viên đã quen thuộc với cả 2 ngôn ngữ này. Các tính năng như làm nổi
bật cú pháp, thụt đầu dòng tự động,... làm cho nó trở thành một sự thay thế hiện đại
cho các IDE khác.
Bọc bên trong giao diện đồ họa được sắp xếp hợp lý, Arduino sở hữu những
chức năng để thu hút các nhà phát triển Arduino, mở đường đến một đầu ra thành công
thông qua các mô-đun gỡ lỗi. Tất cả các tính năng của nó được lưu trữ bên trong vài
nút bấm, menu, giúp dễ dàng hiểu và điều hướng, đặc biệt là với các lập trình viên

22


chuyên nghiệp. Ngoài ra, việc tích hợp các bộ sưu tập ví dụ mẫu sẽ giúp cho những
người lần đầu tiếp xúc với Arduino có thể làm quen và nắm bắt ứng dụng nhanh hơn.
Trong điều kiện đã kết nối bo mạch Arduino với máy tính và cài đặt các driver
cần thiết, sẽ được lựa chọn mô hình để làm việc nhờ sử dụng menu Tools của ứng
dụng. Sau đó, có thể bắt đầu viết chương trình bằng cách sử dụng môi trường làm việc
thoải mái mà Arduino cung cấp. Chương trình bao gồm một mảng thư viện phong phú
như EEPROM, Firmata, GSM, Servo, TFT, WiFi,... Tất nhiên, cũng có thể thêm vào
thư viện của riêng mình.

Hình 2.2 Thư viện được tích hợp trong phần mềm lập trình Arduino

23


CHƯƠNG 3: THIẾT KẾ MÔ HÌNH HIỆN SÓNG OSCILLOCOPE
3.1 Ý tưởng thiết kế:
Trên thực tế những chiếc máy Oscillocope có giá thành khá cao tùy vào điều
kiện của người sử dụng, chúng em muốn vừa học tập và nâng cao kiến thức bước đầu
thiết kế một chiếc máy oscillocope đơn giản để từng bước học tập tạo ra những chiếc
máy có nhiều ứng dụng tốt hơn.
Trong đồ án này chúng em thiết kế một máy oscillocope hiện sóng đơn giản,
qua tìm hiểu chúng em sử dụng một màn hình LCD kết nối với bộ vi mạch lập trình
Arduino. Màn hình LCD Graphic Nokia 5110 là loại LCD Graphic đơn sắc với số
điểm ảnh 84x48 Pixel được sử dụng trong vô số các ứng dụng hiển thị hình ảnh,
text,..., với ưu điểm giá thành rẻ, nhỏ gọn, tích hợp đèn nền, sử dụng giao tiếp SPI dễ
dàng lập trình và kết nối với vô số code mẫu và bộ thư viện khác nhau (đặc biệt trên
Arduino) và khả năng tiết kiệm năng lượng cao, LCD Graphic Nokia 5110 là sự lựa

chọn hợp lý để hiện thị dạng sóng đo được khi lấy dữ liệu xử lý thông qua vi mạch lập
trình Arduino.
3.2 Kết quả nghiên cứu:
Sau khi thực hiện đề tài “Thiết kế, chế tạo oscilloscope hiện sóng đo điện áp
0 – 5 V bằng Arduino và sử dụng màn hình LCD Nokia 5110” đề tài đã hoàn thành
các nội dung chính như sau:
Về Arduino UNO R3:
- Nắm được về cấu trúc Arduino UNO R3.
- Tìm hiểu và phân tích các đặc tính kỹ thuật của Arduino UNO R3.
- Trình bày các giao tiếp Arduino UNO R3 với các thiết bị ngoại vi.
- Trình bày tổng quát ngôn ngữ lập trình C/C++, phần mềm viết code Arduino
IDE.
3.2 Kết nối phần cứng

24


3.2.1 Mô phỏng và chạy thử trên proteus

Hình 3.1 Sơ đồ mô phỏng

Hình 3.2 Sơ đồ mô phỏng trên phần mềm proteus
3.2.2 Thực hiện trên thực tế

25


×