Chương 1: Tổng quan về tình hình nghiên cứu hiện nay, mục tiêu, đối tượng và phạm vi nghiên cứu,. Chương 2: Giới thiệu kit sử dụng, phần mềm lập trình và các module liên quan. Chương 3: Thiết kế hệ thống. Chương 4: Thi công hệ thống.
Chương 5: Kết quả và nhận xét. Chương 6: Kết luận và hướng phát triển. 3 do an CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 2.1 Kit Arduino Uno R3 2.1 Giới thiệu Nhắc tới dòng Arduino dùng để lập trình, cái đầu tiên 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).
Bạn sẽ bắt đầu với Arduino qua thứ này. Bạn có thể dùng Arduino Nano nhưng thông dụng nhất vẫn là Arduino UNO, Arduino UNO được ứng dụng rộng rãi trong sinh viên tại nhiều trường đại học khác nhau, thích hợp để nghiên cứu, học tập với mạch nhỏ gọn và giá cả vô cùng hợp lý. Hình 2- 1 Arduino Uno R3 Arduino UNO có thể sử dụng 3 vi điều khiển họ 8bit AVR là 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 4 do an nhiệt độ - độ ẩm và hiển thị lên màn hình LCD,… Hình 2- 2 Chip vi xử lý arduino Thông số kỹ thuật cơ bản của Arduino STT TÊN MÔ TẢ 1 Vi điều khiển Atmega328 họ 8bit 2 Điện áp hoạt động 5V DC ( chỉ được cấp qua cổng USB) 3 Tần số hoạt động 16 MHz 4 Dòng tiêu thụ Khoảng 30mA 5 Điện áp vào khuyên dùng 7 – 12V DC 6 Điện áp vào giới hạn 6 – 20V DC 7 Số chân Digital I/O 14 (6 chân hardware PWM) 8 Số chân Analog 6 (độ phân giải 10bit) 9 Dòng tối đa trên mỗi chân I/O 30 mA 10 Dòng ra tối đa (5V) 500 mA 11 Dỏng ra tối đa (3.3V) 50 mA 12 Bộ nhớ flash 32 KB (Atmega328) với 0.5KB dùng bởi bootloader 13 SRAM 2 KB (ATmega328) 14 EEPROM 1 KB (ATmega328) Bảng 2- 1 Bảng thông số kỹ thuật Kit Arduino 2.2 Ưu điểm Arduino I/O hiệu năng cao o Các thiết kế với độ chính xác cao 5 do an o Kết nối sensor dễ dàng với bộ điều hòa tín hiệu được tích hợp sẵn o I/O cho tất cả các loại cảm biến, tất cả các chuẩn truyền thông Nâng cao năng suất qua phần mềm o Phần mềm Arduino - Một giao tiếp, nhiều ngôn ngữ lập trình - Một giao diện, hàng trăm các thiết bị thu thập dữ liệu khác nhau 2.2 Giới thiệu phần mềm Arduino 2.1 Arduino là gì 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++. Một số người gọi nó là Wiring, một số khác thì gọi là C hay C/C++. Riêng mình thì gọi nó là “ngôn ngữ Arduino”, và đội ngũ phát triển Arduino cũng gọi như vậy.
Ngôn ngữ Arduino bắt nguồn từ C/C++ phổ biến hiện nay do đó rất dễ học, dễ hiểu. Nếu học tốt chương trình Tin học 11 thì việc lập trình Arduino sẽ rất dễ thở đối với bạ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 đã 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 (Intergrated Development Environment). Hình 2- 3 Biển tượng của phần mềm arduino Hướng dẫn sử dụng phần mềm Arduino: + BIÊN SOẠN CHƯƠNG TRÌNH CƠ BẢN 6 do an Bước 1: Tạo 1 thư mục để lưu và quản lý các chương trình lập trình cho vi điều khiển.
Bước 2: Khởi tạo chương trình Arduino, giao diện sẽ xuất hiện như hình dưới đây, nó sẽ lưu chương trình mình đã lập trình trước đó. Hình 2- 4 Giao diện khi được khởi tạo Bước 3: Tiến hành chọn File -> New để tạo 1 thư mục lập trình mới. Hình 2- 5 Tạo file mới 7 do an Sau khi đã chọn để tạo thư mục mới rồi ta sẽ có được giao diện như hình dưới đây: Hình 2- 6 Giao diện sau khi đã tạo file mới Bước 4: Tạo chương trình cho vi điều khiển bằng cách viết những dòng lệnh vào trong các hàm trong chương trình, sau khi viết chương trình xong, bấm tổ hợp phím “Ctrl + S” để tiến hành lưu file. Ngôn ngữ này là ngôn ngữ lập trình C, nhưng có 1 chút khác là có những dòng lệnh có phân biệt chữ viết hoa và viết thường.
Ta biến hành biên dịch bằng cách nhấn vào biểu tượng và nạp chương trình vào Arduino bằng cách nhấn biểu tượng Lưu ý: Ta phải chọn Board Arduino và tên cổng giao tiếp Port với máy tính cho phù hợp như hình dưới đây để tránh trường hợp báo lỗi khi nạp chương trình. 8 do an Hình 2- 7 Chọn Board Arduino và port giao tiếp phù hợp Nếu sai cú pháp chương trình sẽ báo lỗi và không thể biên dịch được thành công, còn nếu đã đúng cú pháp thì chương trình sẽ hiện như hình dưới đây: Hình 2- 8 Sau khi đã biên dịch thành công và không có lỗi Nếu chương trình không có thư viện bạn có thể tìm kiếm thư viện trên internet để copy vào mục library của Arduino hoặc có thể search trực tiếp trên phần mềm và download ngay trên phần mềm, Arduino có hỗ trở Add file Zip ( file nén) bằng cách vào mục “Sketch” chọn “Include Library” chọn “Add .” để add file thư viện vào. Nếu bạn muốn tìm thư viện ngay trên phần mềm thì ta chọn “Sketch” chọn “Include Library” chọn “Manager Library” sau đó tìm kiếm thư viện và download bình thường là phần mềm tự động Add thư viện vào cho bạn. 9 do an Hình 2- 9 Chọn nơi thêm thư viện 2.2 Phần mềm Visual Studio Microsoft Visual Studio là một môi trường phát triển tích hợp (IDE) từ Microsoft.
Nó được sử dụng để phát triển chương trình máy tính cho Microsoft Windows, cũng như các trang web, các ứng dụng web và các dịch vụ web. Visual Studio sử dụng nền tảng phát triển phần mềm của Microsoft như Windows API, Windows Forms, Windows Presentation Foundation, Windows Store và Microsoft Silverlight. Nó có thể sản xuất cả hai ngôn ngữ máy và mã số quản lý. Visual Studio bao gồm một trình soạn thảo mã hỗ trợ IntelliSense cũng như cải tiến mã nguồn.
Trình gỡ lỗi tích hợp hoạt động cả về trình gỡ lỗi mức độ mã nguồn và gỡ lỗi mức độ máy. Công cụ tích hợp khác bao gồm một mẫu thiết kế các hình thức xây dựng giao diện ứng dụng, thiết kế web, thiết kế lớp và thiết kế giản đồ cơ sở dữ liệu. Nó chấp nhận các plug-in nâng cao các chức năng ở hầu 10 do an hết các cấp bao gồm thêm hỗ trợ cho các hệ thống quản lý phiên bản (như Subversion) và bổ sung thêm bộ công cụ mới như biên tập và thiết kế trực quan cho các miền ngôn ngữ cụ thể hoặc bộ công cụ dành cho các khía cạnh khác trong quy trình phát triển phần mềm. Visual Studio hỗ trợ nhiều ngôn ngữ lập trình khác nhau và cho phép trình biên tập mã và gỡ lỗi để hỗ trợ (mức độ khác nhau) hầu như mọi ngôn ngữ lập trình.
Các ngôn ngữ tích hợp gồm có C,[4] C++ và C++/CLI (thông qua Visual C++), VB.NET (thông qua Visual Basic. Hỗ trợ cho các ngôn ngữ khác như J++/J#, Python và Ruby thông qua dịch vụ cài đặt riêng rẽ. Nó cũng hỗ trợ XML/XSLT, HTML/XHTML, JavaScript và CSS. Hình 2- 10 Biểu tượng phần mềm Visual Studio 2.3 Sơ lược về giao tiếp I2C Hình 2- 11 Sơ đồ giao tiếp I2C Một giao tiếp I2C gồm có 2 dây: Serial Data (SDA) và Serial Clock (SCL).
SDA là đường truyền dữ liệu 2 hướng, còn SCL là đường truyền xung đồng hồ để đồng bộ và chỉ theo một hướng. Như ta thấy trên hình vẽ trên, khi một thiết bị ngoại vi kết nối vào đường bus I2C thì chân SDA của nó sẽ nối với dây SDA của bus, chân SCL sẽ nối với dây SCL. 11 do an Mỗi dây SDA hãy SCL đều được nối với điện áp dương của nguồn cấp thông qua một điện trở kéo lên (pullup resistor). Sự cần thiết của các điện trở kéo này là vì chân giao tiếp I2C của các thiết bị ngoại vi thường là dạng cực máng hở (opendrain hay opencollector).
Giá trị của các điện trở này khác nhau tùy vào từng thiết bị và chuẩn giao tiếp, thường dao động trong khoảng 1K đến 4.7k Trình tự truyền bit trên đường truyền: Hình 2- 12 Trình tự truyền bit trên đường truyền. Thiết bị chủ tạo một điều kiện start. Điều kiện này thông báo cho tất cả các thiết bị tớ lắng nghe dữ liệu trên đường truyền Thiết bị chủ gởi địa chỉ của thiết bị tớ mà thiết bị chủ muốn giao tiếp và cờ đọc/ghi dữ liệụ (nếu cờ thiết lập lên 1 byte tiếp theo được truyền từ thiết bị tớ đến thiết bị chủ, nếu cờ thiết lập xuống 0 thì byte tiếp theo truyền từ thiết bị chủ đến thiết bị tớ). Khi thiết bị tớ trên bus I2C có địa chỉ đúng với địa chỉ mà thiết bị chủ gửi sẻ phản hồi lại bằng một xung ACK.
Giao tiếp giữa thiết bị chủ và tớ trên bus dữ liệu bắt đầu. Cả chủ và tớ đều có thể nhận hoặc truyền dữ liệu tùy thuộc vào việc truyền thông là đọc hay viết. Bộ truyền gửi 8 bit dữ liệu tới bộ nhận, Bộ nhận trả lời với một bit ACK. Để kết thúc quá trình giao tiếp, thiết bị chủ tạo ra một điều kiện stop.4 Tổng quan về giải thuật PID PID (Proportional-Integral-Derivative) là cách viết tắc của các từ Propotional (tỉ lệ), Integral (tích phân), Derivative (đạo hàm) và là giải thuật điều khiển được dùng nhiều nhất trong các ứng dụng điều khiển tự động với yêu cầu chính xác (accurate), nhanh (fast response), ổn định (small overshot).
Hình 2- 13 Thuật Toán PID Trong đó Kp là một hằng số dương nào đó mà chúng ta gọi là hệ số P (Propotional gain), e là sai số cần điều khiển. Mục tiêu điều khiển là đưa e (sai số) tiến về 0 càng nhanh càng tốt. Rõ ràng nếu Kp lớn thì tác động nhanh của điều khiển cũng càng lớn. Tuy nhiên, do quán tính mà việc điều khiển càng nhanh càng gây ra tính mất ổn định (do lực quán tính và lực điều khiển tạo ra cặp đối lực xuất hiện ở hai khoảng thời gian liên tiếp nhau => chúng tạo ra dao động không kiểm soát được).
Như vậy, ta sẽ sử dụng đạo hàm của sai số e để làm tăng giá trị nhưng ngược chiều của lực F (vì e đang giảm nhanh dần).