Chương 1: Tổng quan. 2 do an Trong chương này trình bày về định nghĩa, khái niệm và lịch sử phát triển của các thiết bị liên quan. Bên cạnh đó, trình bày về công nghệ RFID và công nghệ mạng LoRa. Chương 2: Cơ sở lý thuyết.
Trong chương trình, sinh viên thực hiện đề tài giới thiệu sơ lược về kit Arduino Mega và Arduino UNO, mạng LoRa, các chuẩn giao tiếp, truyền thông Web Server,… Chương 3: Thiết kế và thi công. Trong chương này trình bày về việc phân tích ý tưởng, thiết kế hệ thống và thi công hệ thống. Chương 4: Kết quả thực hiện. Trong chương này, sinh viên thực hiện trình bày kết quả đạt được, video, số liệu, hình ảnh hệ thống sau thi công.
Chương 5: Kết luận và hướng phát triển. Trong chương này, sinh viên thực hiện đưa ra kết luận, những hạn chế và hướng phát triển dự án. 3 do an CHƯƠNG 2: CƠ SỞ LÝ THUYẾT LIÊN QUAN 2. Giới thiệu chung Hình 2.1: Logo Arduino Arduino là một board mạch vi xử lý được sinh tại thị trấn Ivrea ở Ý, nhằm xây dựng các ứng dụng tương tác với nhau hoặc môi trường được thuận lợi hơn.
Phần cứng được thiết kế trên nền tảng vi xử lý AVR Atmel 8-bit hoặc ARM Atmel 32-bit. Nhưng model hiện tại được trang bị gồm 1 cổng giao tiếp USB, 6 chân vào đọc tín hiệu tương tự, 14 chân vào/ra đọc tín hiệu số tương thích với nhiều board mở rộng khác nhau. Nhà thiết kế 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 hoặc giới chuyên nghiệp để tạo ra những thiết bị có khả năng tương tác thông qua cảm biến và các cơ cấu chấp hành. Đ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à sử dụng ngôn ngữ C hoặc C++ cho lập trình Arduino.
Lịch sử phát triển Arduino được khởi động vào năm 2005 như là một dự án dành cho sinh viên trại Interaction Design Institute Ivrea (Viện thiết kế tương tác Ivrea). Cái tên “Arduino” đến từ một quán bar tại Ivrea, nơi một vài nhà sáng lập của dự án này thường xuyên gặp mặt. Phần cứng 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 nó dễ dàng lập trình và có thể mở rộng với các mạch khác. Đồng thời, cho phép người dung kết nối với CPU của board với các module thêm vào có thể chuyển đổi dễ dàng, được gọi là shield.
Arduino chính thức sử dụng các dòng chip megaAVR, đặc biết là Atmega8, Atmega168, Atmega328, Atmega1280 và Atmega2560. Hầu hết các dòng vi xử lý này gồm một bộ điều chỉnh tuyến tính 5V và một thạch anh dao động 16MHz. Một vi điều khiển Arduino cũng có thể được lập trình sẵn với một bootloader cho phép đơn giản nạp chương trình vào bộ nhớ flash trên vi điều khiển. 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 hiện lại tùy thuộc và đời phần cứng.
Các 4 do an 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 quá chip chuyển đổi USB sang Serial. Board Arduino đúa hầu hết cac chân I/O của vi điều khiển để sử dụng những mạch ngoài. Các model board Diecimila, Duemilanove và 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 vào đọc tín hiệu tương tự (có thể sử dụng như 6 chân đọc tín hiệu số) 2.
Môi trường phát triển tích hợp (IDE) IDE của Arduino là một ứng dụng đa nền tảng (cross-platform) được viết bằng Java và từ IDE nãy sẽ được sử dụng cho ngôn ngữ lập trình xử lý (Processing Programming Language). Bao gồm một chương trình soạn thảo chương trình với các chức năng như đánh dấu cú pháp, tự động brace matching (được hiểu tự động thêm dấu ngoặc) và tự động canh lề, hỗ trợ biên dịch (complie) và nạp chương trình vào board. Một chương trình viết cho Arduino được gọi là một sketch. 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, giúp tạo các thao tác vào/ra được dễ dàng hon. Người dùng chỉ cần định nghĩa 2 hầm để tạo ra một chương trình vong thực thi (cyclic executive) có thể chạy được: - Setup(): hàm này được thực hiện mỗi khởi động một chương trình, dùng để thiết lập cadi đặt. - Loop(): cho phép lặp lại cho đến khi tắt nguồn board mạch. #define LED_PIN 13 void setup () { pinMode (LED_PIN, OUTPUT); // Đặt chân 13 làm đầu ra digital } void loop () { digitalWrite (LED_PIN, HIGH); // Bật LED on delay (1000); // chờ trong 1 giây digitalWrite (LED_PIN, LOW); // Tắt LED off delay (1000); // chờ trong 1s } Hầu hết các board Arduino có tích hợp một đèn LED và điện trở nối giữa chân 13 với đất, thuận lợi cho nhiều ứng dụng đơn giản.
Đoạn code ở trên không thể đọc được bởi một trình biên dịch C++ chuẩn như là một chương trình đúng, vì vậy khi ta click vào nút “Upload to I/O board” trong IDE này, một bản sao của chương trình sẽ đượcg ghi vào một file tạm với một extra include header ở phía trên cùng và một hàm main() đơn giản nằm ở phía đáy, để tạo thành một chương trình C++ khả dụng. Các board mạch Arduino 2. Arduino UNO R3 Hình 2.2: Board mạch Arduino UNO R3 Arduino UNO có thể sử dụng 3 vi điều khiển họ 8-bit AVR là Atmega8, Atmega168, Atmega168 và 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 từ xa, đọc giá trị cảm biến,… Thiết kế tiêu chuẩn của Arduino UNO sử dụng vi điều khiển Arduino Atmega328 với giá khoảng 90.
Tuy nhiên, người dùng có thể sử dụng các loại vi điều khiển khác có chức năng tương tự nhưng rẻ hơn Atmega8 (bộ nhớ flash 8KB) hoặc Atmega168 (bộ nhớ flash 16KB). Thông số kỹ thuật: Vi điều khiển ATmega328 họ 8bit Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB) Điện áp vào (đề nghị) 7V-15V Điện áp vào (giới hạn) 6V-20V Tần số hoạt động 16 MHz Dòng tiêu thụ khoảng 30mA Điện áp vào khuyên dùng 7-12V DC Điện áp vào giới hạn 6-20V DC Số chân Digital I/O 14 (6 chân hardware 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 32 KB (ATmega328) với 0.5KB dùng Bộ nhớ flash bởi bootloader SRAM 2 KB (ATmega328) EEPROM 1 KB (ATmega328) Xung nhịp 16MHz Bảng 2.1: Thông số kỹ thuật board Arduino UNO R3 Năng lượng: Arduino UNO sử dụng nguồn điện 5VDC thông qua cổng USB hoặc cấp nguồn 7-12VDC qua cổng Adapter (giới hạn điện áp: 6-20VDC). Nhà sản xuất khuyến nghị 6 do an nguồn cấp đạt 9VDC là lý tưởng. Nếu người dùng cáp nguồn vượt quá ngưỡng cho phép sẽ làm hỏng Arduino UNO.
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ì GND phải được nối chung với nhau. 5VDC: Điện áp đầu ra 5VDC. Dòng điện tối đa cho phép 500mA.3VDC: Điện áp đầu ra 5VDC.
Dòng điện tối đa cho phép 50mA. 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. Luôn đạt mức điện áp 5VDC. Lưu ý: Không được lấy nguôn 5VDC từ chân này để sử dụng bởi chức năng không phải là chân cấp nguồn.
Reset: Tích cực mức thấp (điện trở 10KΩ). Lưu ý: Arduino UNO không có bảo vệ cắm ngược nguồn vào. Do đó cần cẩn thận khi sử dụng. Việc làm chập mạch nguồn vào của Arduino UNO sẽ làm hỏng mạch.3VDC và 5VDC trên Arduino là các chân dùng để cấp nguồn ra cho các thiết bị khác, không phải là các chân cấp nguồn vào.
Việc cấp nguồn sai vị trị có thể làm hỏng board. Điều này không được nhà sản xuất khuyến khích. Cấp nguồn ngoài không qua cổng USB cho Arduino UNO với điện áp dưới 6VDC có thể làm hỏng board. Cấp điện áp trên 13V vào chân Reset trên board có thể làm hỏng vi điều khiên Atmega328.
Cường độ dòng điện vào/ra ở các chân Digital và Analog nếu vượt quá 200mA sẽ làm hỏng vi điều khiển. Bộ nhớ: 32KB bộ nhớ Flash: những đoạn lệnh dùng để lập trình sẽ được lưu trữ trong bộ nhớ Flash của vi điều khiển. 2KB cho SRAM: Giá trị của các biến khai báo khi lập trình sẽ được lưu tại đây. Khi khai báo nhiều biến thì càng cần nhiều bộ nhớ RAM.
Khi mất điện, dữ liệu trên SRAM sẽ bị mất. 1KB cho EEPROM: Dùng để lưu trữ chương trình. Các cổng vào/ra: Arduino UNO có 14 chân tín hiệu số (digital) dùng để đọc hoặc xuất tín hiệu. Có 2 mức điện áp 0V và 5V với dòng vào/ra tối đa 40mA.
Một số chân tín hiệu số có chức năng riêng biệt như sau: 7 do an - 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 các thiết bị khác thông qua 2 chân này. - Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO) và 13 (SCK). Ngoài 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.
- LED13: Tích hợp 1 đèn LED màu cam (kí hiệu chữ L). Khi bấm nút Reset sẽ thấy đèn này nhấp nháy để báo hiệu. LED được nối với chân số 13 của board. - Arduino UNO có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10- bit (0 → 2 10 – 1) để đọc giá trị điện áp trong khoảng 0V → 5V.
Với chân AREF trên board, người dùng có thể đưa điện áp tham chiếu khi sử dụng các chân analog. Tức là cung cấp mức điện áp 2.5V vào chân này thì người dùng 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 8-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. Arduino Mega Hình 2.3: Board mạch Arduino Mega Arduino Mega 2560 R3 là phiên bản năng cấp của Arduino UNO R3 với có chân giao tiếp, ngoại vi và bộ nhớ nhiều hơn.
Phổ biến trên thị trường là phiên bản Mega 2560 là Revision 3 (R3). Thông số kỹ thuật: Bảng 2.