Arduino Uno R3 SMD

Một phần của tài liệu Đồ án thiết kế mô hình cân điện tử bằng arduino (Trang 45)

Arduino Uno được xây dựng với phần nhân là vi điều khiển họ 8bit AVR ATmega328P sử dụng thạch anh có chu kì dao động là 16 MHz. 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, … hay những ứng dụng, tác vụ khác.

Thông số kỹ thuật của Arduino board được tóm tắt trong bảng sau:

Bảng 2.5. Thơng số kĩ thuật board Arduino Uno

Điện áp hoạt động 5V

Tần số hoạt động 16 MHz

Dòng tiêu thụ ~30 mA

Điện áp vào khuyên

dùng 7-12V

Điện áp vào giới hạn 6-20V

Digital I/O 14 chân

PWM Digital I/O 6 chân có khả năng

băm xung

Analog Input Pins 6 chân (độ phân giải 10bit)

Dòng tối đa trên mỗi

chân I/O 30 mA Dòng ra tối đa (3.3V) 50 mA Dòng ra tối đa (5V) 500 mA Flash Memory 32 KB (ATmega328P) với 0.5 KB dùng bởi bootloader SRAM 2 KB (ATmega328P) EEPROM 1 KB (ATmega328P) Chiều dài 68.6 mm Chiều rộng 53.4 mm Trọng lượng 25 g

Arduino Uno 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 và giới hạn là 6-20V. Thường thì cấp nguồn bằng pin vng 9V là hợp lí nhất nếu khơng có sẵn nguồn từ cổng USB. Nếu cấp nguồn vượt quá ngưỡng giới hạn trên sẽ làm hỏng Arduino UNO.

Hình 2.38. Sơđồ cấu trúc board Arduino Uno đồ cấu trúc board Arduino Uno

Board Arduino Uno có các chân năng lượng là:

- GND (Ground): cực âm của nguồn điện cấp cho Arduino UNO. Khi bạn 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, bạn 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ó ln là 5V. Mặc dù vậy bạn 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ở 10KΩ.

Trên board Arduino Uno cịn có 1 ngõ kết nối với máy tính qua cổng USB và 1 ngõ cấp nguồn sử dụng jack 2.1mm lấy năng lượng trực tiếp từ AC-DC adapter hay thông qua ắc-quy nguồn.

Hình 2.39. Sơ đồ chân của Arduino Uno

Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:

Flash Memory (32KB bộ nhớ): bộ nhớ có thể ghi được, dữ liệu khơng bị mất ngay cả khi tắt điện. Về vai trị, ta có thể hình dung bộ nhớ này như ổ cứng để chứa dữ liệu trên board. Chương trình được viết cho Arduino sẽ được lưu ở đây. Kích thước của vùng nhớ này thơng thường dựa vào vi điều khiển được sử dụng, ví dụ như ATmega8 có 8KB flash memory. Loại bộ nhớ này có thể chịu được khoảng 10,000 lần ghi / xố. Thường thì sẽ có khoảng vài KB trong số này được dùng cho bootloader.

RAM - Random Access Memory (2KB bộ nhớ): giá trị các biến khai báo khi lập trình được lưu tại đây, khai báo càng nhiều thì càng cần dùng nhiều bộ nhớ RAM. Tương tự như RAM của

máy tính, sẽ bị mất dữ liệu khi ngắt điện nhưng bù lại tốc độ đọc ghi xố rất nhanh. Kích thước nhỏ hơn Flash Memory nhiều lần.

EEPROM – Electrically Eraseble Programmable Read Only Memory (1KB bộ nhớ): giống một chiếc ổ cứng mini, một dạng bộ nhớ tương tự như Flash Memory nhưng có chu kì ghi / xố cao hơn - khoảng 100,000 lần và có kích thước rất nhỏ. Để đọc / ghi dữ liệu ta có thể dùng thư viện EEPROM của Arduino.

Với vi điều khiển này, Arduino có tổng cộng 14 chân (ngõ) vào/ra được đánh số từ 0 tới 13 (trong đó có 6 chân PWM, được đánh dấu ~ trước mã số của pin). Song song đó, Arduino có thêm 6 chân nhận tín hiệu analog được đánh kí hiệu từ A0 - A5, 6 chân này cũng có thể sử dụng được như các pin ra / vào bình thường (như pin 0 - 13). Ở các chân được đề cập, chân 13 là chân đặc biệt vì nối trực tiếp với LED trạng thái trên board.

Hình 2.40. Các chân Analog và Digital trên boardMột số chân Digital có chức năng đặc biệt như sau: Một số chân Digital có chức năng đặc biệt như sau:

- UART - 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 thấy nói nơm na chính là kết nối Serial khơng dây. Nếu không cần giao tiếp Serial, bạn 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 bạn xuất ra xung PWM với độ phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite(). Nói một cách đơn giản, bạn 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). Ngồ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 chữ 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 có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit (0 → 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V, tương đương với 1024 (210) giá trị. Với chân AREF trên board, bạn 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 bạn cấp điện áp 2.5V vào chân này thì bạn 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à 10bit.

Đặ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.

2.6.2. Lập trình cho Arduino Uno.

• Arduino IDE - Intergrated Development Environment

Để 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 đã cũng 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 (Mơi trường phát triển tích hợp). Cơng cụ này được đội ngũ kĩ sư của Arduino phát triển và có thể chạy trên Windows, MAC OS X và Linux.

Các thiết bị dựa trên nền tảng Arduino được lập trình bằng ngơn riêng. Ngơn ngữ này dựa trên ngôn ngữ Wiring được viết cho phần cứng nói chung. Và Wiring lại là một biến thể của C/C++ hay có thể gọi là “ngôn ngữ Arduino”. Ngôn ngữ Arduino bắt nguồn từ C/C++ phổ biến hiện nay do đó dễ học, dễ hiểu.

Hình 2.44. Giao diện Arduino IDE

Arduino IDE đi kèm với một thư viện phần mềm được gọi là "Wiring", từ project Wiring gốc, có thể giúp các thao tác input/ output được dễ dàng hơn. Người dùng chỉ cần định nghĩa 2 hàm

để tạo ra một chương trình vịng thực thi (cyclic executive) có thể chạy được:

- setup(): hàm này chạy mỗi khi khởi động một chương trình, dùng để thiết lập các cài đặt.

- loop(): hàm này được gọi lặp lại cho đến khi tắt nguồn board mạch.

Vùng lệnh: bao gồm các nút lệnh menu (File, Edit, Sketch, Tools, Help). Phía dưới là các icon cho phép sử dụng nhanh các chức năng thường dùng của IDE được miêu tả như sau:

Hình 2.45. Một số ký hiệu và chức năng trong Arduino IDE Vùng viết chương trình: Vùng này để người lập trình thực hiện việc lập trình cho chương trình của mình.

Vùng thơng báo: Những thơng báo từ IDE sẽ được hiển thị tại đây. Góc dưới cùng bên phải hiển thị loại board Arduino và cổng COM được sử dụng, nếu chọn sai loại board hoặc cổng COM sẽ không thể upload được code.

Hình 2.46. Vùng thơng báo trong Arduino IDE

Có vài menu trong phần mềm IDE, tuy nhiên thơng dụng nhất vẫn là menu File, ngồi những tính năng như mở một file mới hay lưu một file, phần menu này có một mục đáng chú ý là Example. Phần Example (ví dụ) đưa ra các ví dụ sẵn để người lập trình có thể tham khảo, giảm bớt thời gian lập trình.

Hình 2.47. Menu File trong Arduino IDE • Cấu trúc của một chương trình Arduino IDE.

Khai báo biến: Đây là phần khai báo kiểu biến trong Arduino IDE, tên các biến, định nghĩa các chân trên board một số kiểu khai báo biến thông dụng:

#define

Nghĩa của từ define là định nghĩa, hàm #define có tác dụng định nghĩa, hay còn gọi là gán, tức là gán một chân, một ngõ ra nào đó với 1 cái tên.

Ví dụ: #define led 13

Khai báo các kiểu biến khác như: int (kiểu số nguyên), float,…

Thiết lập: Phần này dùng để thiết lập cho một chương trình Arduino IDE, cần nhớ rõ cấu trúc của nó:

void setup() {

… }

Cấu trúc của nó có dấu ngoặc nhọn ở đầu và ở cuối, nếu thiếu phần này khi kiểm tra chương trình thì chương trình sẽ báo lỗi.

Vịng lặp: Dùng để viết các lệnh trong chương trình để mạch Arduino thực hiện các nhiệm thường bắt đầu bằng:

void loop() {

… }

Bảng 2.7. Một số câu lệnh, cấu trúc thường gặpKý hiệu, câu Ký hiệu, câu

lệnh Ý nghĩa câu lệnh

// Dấu // dùng để giải thích nội dung, khi kiểmtra chương trình thì phần kiểm tra sẽ bỏ qua phần này.

/*…. ….. */

Ký hiệu này cũng dùng để giải thích, nhưng giải thích dành cho 1 đoạn, tức có thể xuống dòng được.

#define biến chân

Define nghĩa là định nghĩa, xác định. Câu lệnh này nhằm gán tên 1 biến vào 1 chân nào đó. Ví dụ #define led 13

digitalWrite(ch

đây trạng thái chân có thể là HIGH hoặc LOW. Ví dụ: digital(led,HIGH);, hoặc digital(led,LOW);. Chú ý dấu chấm phẩy đằng sau câu lệnh.

analogWrite(ch ân, giá trị);

Có ý nghĩa dùng để băm xung (PWM), thường dùng để điều khiển tốc độ động cơ, độ sáng led,…

digitalRead(ch

ân); Read nghĩa là đọc, lệnh này dùng để đọcgiá trị digital tại chân muốn đọc. analogRead(ch

ân);

Read nghĩa là đọc, lệnh này dùng để đọc giá trị analog tại chân muốn đọc.

delay(thời gian);

Delay nghĩa là chờ, duy trì. Lệnh này dùng để duy trì trạng thái đang thực hiện chờ một thời gian. Thời gian ở đây được tính bằng mili giây, 1 giây bằng 1000 mili giây. if() { … } else () { ... }

if nghĩa là nếu, sau if là dấu (), bên trong dấu ngoặc là một biểu thứ so sánh. Ví dụ: if (giatriAnalog>500) //nếu giá trị đọc được của biến giatriAnalog lớn hơn 500

{

digitalWrite(Led,HIGH); //Ra lệnh cho led sáng

delay(1000);//chờ 1s }

else nghĩa là ngược lại.

Serial.print() In ra màn hình máy tính, lệnh này in khơngxuống dòng. Serial.println() In ra màn hình máy tính, in xong xuốngdòng, giá trị tiếp theo sẽ được in ở dịng kế

tiếp.

• Lập trình cho Arduino IDE

Trước tiên hãy đảm bảo rằng máy tính đã cài đặt Arduino IDE và Arduino driver. Chuẩn bị phần cứng là một board Arduino Uno R3 và một sợi dây cáp (để kết nối Arduino với máy tính).

Hình 2.48. Kết nối Arduino Uno R3 với máy tính

Bước 2: Tìm cổng kết nối của Arduino Uno R3 với máy tính. Khi Arduino Uno R3 kết nối với máy tính, nó sẽ sử dụng một cổng COM để máy tính và bo mạch có thể truyền tải dữ liệu qua lại thơng qua cổng này. Windows có thể quản lí đến 256 cổng COM. Để tìm được cổng COM đang được sử dụng để máy tính và mạch Arduino UNO R3 giao tiếp với nhau cần phải mở chức năng Device Manager của Windows.

Mở cửa sổ Device Manager lên để tìm cổng COM kết nối với board Arduino Uno R3 là cổng số mấy.

Mở mục Ports (COM & LPT), sẽ thấy cổng COM3 mà Arduino Uno R3 đang kết nối, ở cổng USB khác thì cổng COM sẽ khác.

Hình 2.49. Arduino Uno R3 được kết nối với COM3.

Thơng thường Windows sẽ sử dụng lại cổng COM3 để kết nối nên khơng cần thực hiện thêm thao tác tìm cổng COM này nữa.

Bước 3: Chọn board Arduino Uno R3 trên IDE.

Hình 2.50. Chọn board Arduino Uno trong IDE Lưu ý nhớ chọn đúng board Ardunio mình sử dụng.

Tiếp theo vào menu Tools > Serial Port > chọn cổng Arduino đang kết nối với máy tính.

Hình 2.51. Chọn cổng COM cho Arduino IDE

Xác nhận cổng COM của Arduino IDE ở góc dưới cùng bên phải cửa sổ làm việc.

Hình 2.52. Xác nhận cổng COM

Những lần sau khi đưa chính board Arduino đó vào máy tính thì khơng cần chọn cổng COM, nếu đưa board Arduino khác vào máy thì cần phải chọn lại cổng COM và board Arduino trên IDE.

Bước 4: Thiết kế chương trình cần chạy cho Arduino Uno R3.

Hình 2.53. Cửa sổ thiết kế các dịng lệnh Bước 5: Nạp chương trình vào board Arduino.

Hình 2.54. Nạp chương trình xuống Arduino Uno R3.

2.7 Arduino Bluetooth Terminal

Cách dễ nhất để hiển thị dữ liệu cảm biến Arduino trực tiếp trên điện thoại thơng minh Android. Ứng dụng có thể hiển thị đồng thời các kết quả đọc từ tối đa 10 cảm biến.

Trong phiên bản mới nhất với chức năng đầu cuối, dữ liệu thậm chí có thể được gửi từ điện thoại thông minh Android đến Arduino. Các tin nhắn đến cũng được hiển thị trong ứng dụng.

Tất cả những gì bạn cần là một đoạn mã nhỏ trên Arduino, mô-đun Bluetooth (HC-05) và ghép nối mô-đun Bluetooth với điện thoại thơng minh trong cài đặt hệ thống.

Hình 2.6.1 Icon của app Arduino Bluetooth Terminal.

Bước 1 :Mở điện thoại kết nối Bluetooth với HC05

Hình 2.6.1 Giao diện app

Hình 2.6.2 Giao diện app

Bước 3 chọn HC05 và bấm Receiver

Bước 4 Đọc tín hiệu và kiểm tra kết nối

Hình 2.6.4 Giao diện app

Kết luận chương

Đã xây đựng được bài toán cân điện tử tìm hiểu rõ về nguyên lý loạt động, thông số kỹ thuật, cách sử dụng của các linh kiện và ứng dụng cần sử dụng trong cái khối. Chuẩn bị thiết kế, thi cơng lắp ráp hồn thiện mơ hình.

CHƯƠNG 3: THIẾT KẾ VÀ THI CƠNG 3.1 u cầu bài tốn

Thiết kế mơ hình cân điện tử sử dụng Arduino đáp ứng được các yêu cầu sau:

- Sử dụng sóng Loacell để truyền nhận tín hiệu được cho thiết bị HX711. Lựa chọn sử dụng module HX711. Thiết bị được phải đọc điện tín hiệu tương tự trả về tín hiện số gửi truyền cho Ardunio R3.

-Dùng ma trận phím 4*4 để nhập tín hiệu vào Ardunio. Để nhận được biến dưới dạng “float” hoặc “int”.

- Ardunio phải mã hóa được cái tín hiệu để tính tốn số cân ra giá tiền sản phẩm được cân .

- Hiện thị được tất cả ra màn LCD 16*2. -cân chính xác sai số khơng q ± 0.01 Kg.

3.2. Lựa chọn phương án thi công.

Mạch cân điện tử cần ba khối chức năng cơ bản là:

- Khối cảm biến lực tác động để đo khối lượng vật cần đo lường.

- Khối xử lý có nhiệm vụ tính tốn, xử lý dữ liệu để đưa đến khối hiển thị (Khối xử lí do nhà sản xuất hoặc người sử dụng thiết kế).

- Khối hiển thị có chức năng hiển thị các thơng số đo

Hình 1.8. Sơ đồ khối cơ bản của cân điện tử.

Do đó có một số phương án thi cơng dùng những linh kiện

Một phần của tài liệu Đồ án thiết kế mô hình cân điện tử bằng arduino (Trang 45)

Tải bản đầy đủ (DOCX)

(82 trang)
w