Chip điều khiển chính Atmega328P Chip nạp và giao tiếp UART Atmega16U2
Điện áp hoạt động 5V-DC (chỉ đƣợc cấp qua USB)
Tần số hoạt động 16 MHz
Dòng tiêu thụ 30 mA
Số chân Digital I/O 14 (6 chân PWM) Số chân Analog 6 (độ 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 (5V) 500 mA Dòng ra tối đa (3.3V) 50 mA
Bộ nhớ flash 32 KB (ATmega328) với 0.5KB dùng bởi boarotloade
SRAM 2 KB (ATmega328
EEPROM 1 KB (ATmega328)
Phần cứng của board Arduino UNO R3
1. Cáp USB
Đây là dây cáp thƣờng đƣợc bán kèm theo board, dây cáp dùng để cắm vào máy tính để nạp chƣơng trình cho board và dây đồng thời cũng lấy nguồn từ nguồn usb của máy tính để cho board hoạt động. Ngồi ra cáp USB cịn đƣợc dùng để truyền dữ liệu từ board Arduino lên máy tính. Dây cáp có 2 đầu, đầu 1a đƣợc dùng để cắm vào cổng USB trên board Arduino, đầu 1b dùng để cắm vào cổng USB trên máy tính.
2. IC Atmega 16U2
IC này đƣợc lập trình nhƣ một bộ chuyển đổi USB –to-Serial dùng để giao tiếp với máy tính thơng qua giao thức Serial (dùng cổng COM).
3. Cổng nguồn ngoài
Cổng nguồn ngoài nhằm sử dụng nguồn điện bên ngồi nhƣ pin, bình acquy hay các adapter cho board Arduino hoạt động. Nguồn điện cấp vào cổng này là nguồn DC có hiệu điện thế từ 6V đến 20V, tuy nhiên hiệu điện thế tốt nhất mà nhà sản xuất khuyên dùng là từ 7 đến 12V.
4. Cổng USB
Cổng USB trên board Arduino dùng để kết nối với cáp USB.
5. Nút reset
Nút reset đƣợc sử dụng để reset lại chƣơng trình đang chạy. Đơi khi chƣơng trình chạy gặp lỗi, ngƣời dùng có thể reset lại chƣơng trình.
6. ICSP của ATmega 16U2
ICSP là chữ viết tắt của In-Circuit Serial Programming. Đây là các chân giao tiếp SPI của chip Atmega 16U2. Các chân này thƣờng ít đƣợc sử trong các dự án về Arduino.
7. Chân xuất tín hiệu ra
Có tất cả 14 chân xuất tín hiệu ra trong Arduino Uno, những chân có dấu ~ là những chân có thể băm xung (PWM), tức có thể điều khiển tốc độ động cơ hoặc độ sáng của đèn.
8. IC ATmega 328
IC Atmega 328 là linh hồn của board mạch Arduino Uno, IC này đƣợc sử dụng trong việc thu thập dữ liệu từ cảm biến, xử lý dữ liệu, xuất tín hiệu ra, …
9. Chân ICSP của ATmega 328
Các chân ICSP của ATmega 328 đƣợc sử dụng cho các giao tiếp SPI (Serial Peripheral Interface), một số ứng dụng của Arduino có sử dụng chân này, ví dụ nhƣ sử dụng module RFID RC522 với Arduino hay Ethernet Shield với Arduino.
10. Chân lấy tín hiệu Analog
Các chân này lấy tín hiệu Analog (tín hiệu tƣơng tự) từ cảm biến để IC Atmega 328 xử lý. Có tất cả 6 chân lấy tín hiệu Analog, từ A0 đến A5.
11. Chân cấp nguồn cho cảm biến
Các chân này dùng để cấp nguồn cho các thiết bị bên ngoài nhƣ role, cảm biến, RC servo,…trên khu vực này có sẵn các chân GND (chân nối đất, chân âm), chân 5V, chân 3.3V nhƣ đƣợc thể hiện ở hình 1.10. Nhờ những chân này mà ngƣời sử dụng không cần thiết bị biến đổi điện khi cấp nguồn cho cảm biến, relay, rc servo,…Ngồi ra trên khu vực này cịn có chân Vin và chân reset, chân IOREF. Tuy nhiên các chân này thƣờng ít đƣợc sử dụng.
12. Các linh kiện khác trên board Arduino Uno
Ngoài các linh kiện đã liệt kê bên trên, Arduino Uno còn 1 số linh kiện đáng chú ý khác. Trên board có tất cả 4 đèn led, bao gồm 1 led nguồn (led ON nhằm cho biết board đã đƣợc cấp nguồn), 2 led Tx và Rx, 1 led L. Các led Tx và Rx sẽ nhấp nháy khi có dữ liệu truyền từ board lên máy tính hoặc ngƣợc lại thông qua cổng USB. Led L đƣợc kết nối với chân số 13. Led này đƣợc gọi là led on board (tức led trên board), led này giúp ngƣời dùng có thể thực hành các bài đơn giản mà khơng cần dùng thêm led ngoài.
Trong 14 chân ra của board cịn có 2 chân 0 và 1 có thể truyền nhận dữ liệu nối tiếp TTL. Có một số ứng dụng cần dùng đến tính năng này, ví dụ nhƣ ứng dụng điều khiển mạch Arduino Uno qua điện thoại sử dụng bluetooth HC05.
Hình 1.12. Tham khảo thêm chức năng các chân của Arduino UNO R3.
Phần mềm lập trình Arduino IDE (Integrated Development Environment)
Arduino IDE 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.
Arduino IDE 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, Pro hay Pro Mini, .... Ngôn ngữ tổng 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. 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.
Hình 1.13. Phần mềm lập trình Arduino IDE.
Các chƣơng trình Arduino đƣợc viết bằng C hoặc C++. 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ề giao diện.
Giao diện làm việc của Arduino IDE gồm 3 vùng chính: - Vùng lệnh.
- Vùng viết chƣơng trình. - Vùng thông báo.
Vùng lệnh.
Bao gồm các nút lệnh (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 1.15. Vùng lệnh của phần mềm.
Vùng viết chƣơng trình.
Ta sẽ viết đoạn mã của mình ở đây. Tên chƣơng trình sẽ đƣợc hiển thị ngay dƣới dãy của các icon.
Vùng thông báo (debug):
Những thông báo từ IDE sẽ đƣợc hiển thị tại đây. Để ý rằng 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. Luôn phải chú ý đến đến mục này bởi nếu chọn sai loại Arduino hoặc cổng COM ta sẽ không thể upload đƣợc code của mình.
1.4.1.2. Chuẩn truyền dữ liệu nối tiếp UART (Universal Asynchronous Reciver Transmitter).
UART – là viết tắt của Universal Asynchronous Receiver – Transmitter có nghĩa là truyền nhận dữ liệu nối tiếp bất đồng bộ.
Đặc điểm: Truyền dữ liệu nối tiếp bất đồng bộ có 1 đƣờng phát dữ liệu (Tx) và 1
đƣờng nhận dữ liệu (Rx), do khơng có tín hiệu xung clock nên gọi là bất đồng bộ. Để truyền đƣợc dữ liệu thì cả bên phát và bên nhận phải tự tạo xung clock có cùng tần số và thƣờng đƣợc gọi là tốc độ baud, ví dụ nhƣ 2400 baud, 4800 baud, 9600 baud...
- Ƣu điểm: Đơn giản, hiệu quả tƣơng đối cao.
- Khuyết điểm: Do tồn tại các bit start và bit stop, khoảng trống dẫn đến thời
Quá trình truyền dữ liệu UART
Để bắt đầu cho việc truyền dữ liệu bằng UART, một START bit đƣợc gửi đi, sau đó là các bit dữ liệu và kết thúc quá trình truyền là STOP bit.
Khi ở trạng thái chờ (idle) mức điện thế ở mức 1 (high). Khi bắt đầu truyền START bit sẽ chuyển từ 1 xuống 0 để báo hiệu cho bộ nhận là quá trình truyền dữ liệu sắp xảy ra. Sau START bit là đến các bit dữ liệu D0 - D7 (các bit này có thể ở mức High hoặc Low tùy theo dữ liệu, theo hình ví dụ nhƣ trên byte dữ liệu là LSB – 11010010 – MSB). Sau khi truyền hết dữ liệu thì đến bit kiểm tra Parity. Cuối cùng là STOP bit là 1 báo cho thiết bị rằng các bit đã đƣợc gửi xong.
Thiết bị nhận sẽ tiến hành kiểm tra khung truyền nhằm đảm báo tính đúng đắn của dữ liệu.
Hình 1.16. Cấu trúc cơ bản của 1 frame dữ liệu.
1.4.2. Các linh kiện đƣợc sử dụng trong mạch
1.4.2.1. Module SIM800L
Module SIM800L có khả năng nhắn tin SMS, nghe, gọi, GPRS, ... nhƣ một điện thoại nhƣng có kích thƣớc nhỏ nhất trong các loại module SIM (25 mm x 22 mm). Điều khiển module sử dụng bộ tập lệnh AT dễ dàng, chân kết nối dùng rào đực thông dụng (male hearder) chuẩn 100 mil.
Thông số kỹ thuật
- Nguồn cấp: 3.7V đến 4.2V, có thể sử dụng với nguồn dịng thấp từ 500 mAh trở lên (nhƣ cổng USB, nguồn từ board Arduino).
- Khe cắm sim: MICROSIM. - Dòng khi ở chế độ chờ: 10 mA.
- Dòng khi hoạt động: 100 mA đến 1 A.
- Hỗ trợ 4 băng tần: GSM850MHz, EGSM900MHz, DSC1800MHz, PCS1900MHz.
Chức năng các chân của module SIM800L
- Chân NET: lắp anten, có thể dùng anten đi kèm hoặc anten mở rộng. - Chân VCC: chân nguồn dƣơng 4.2V.
- Chân GND: chân nguồn âm 0V.
- Chân RST: chân reset sử dụng khi khởi động lại module sim. - Chân TXD: chân truyền UART TX.
- Chân RXD: chân nhận UART RX. - Chân DTR: chân UART DTR. - Chân RING: báo có cuộc gọi đến
- Chân SPKP, SPKN: ngõ ra âm thanh, kết nối với loa để phát âm thanh. - Chân MICP, MICN: ngõ vào âm thanh, gắn thêm mirco để thu âm thanh. Tập lệnh AT điều khiển cuộc gọi