Làm thế nào để lấy tín hiệu tương tự và tín hiệu số từ cảm biến. Làm thế nào để sử dụng module Rơle. Cách sử dụng mạch cầu H (L298) trong thực tế. Hiển thị kết quả lên màn hình LCD. Lấy thời gian thực trên Internet. Cách sử dụng module L293 để điều khiển 2 động cơ step hoặc 1 step và 1 servo Qui trình thực hiện các thiết kế hệ thống và cách kết nối mạch điện như thế nào để đạt yêu cầu trên. Với hàng loạt câu hỏi và các kiến thức đã học, bắt buộc chúng em phải nghiên cứu để có kết quả và ứng dụng vào cuộc sống.
KỸ THUẬT LẬP TRÌNH PHẦN MỀM ỨNG DỤNG ARDUINO IDE ĐỀ CƯƠNG NGHIÊN CỨU (Kèm theo Tờ khai dành cho học sinh (1A) -A LÝ DO CHỌN ĐỀ TÀI: Tự động hóa, robot hóa xu hướng nhân loại ngày Từ ngàn xưa, người ln ước ao có cỗ máy để làm việc thay Trong thời đại nay, với phát triển mạnh mẽ khoa học kỹ thuật, người dần tạo máy móc thơng minh giúp người từ công việc thường ngày đến cơng việc khó khăn nguy hiểm Các máy tự động, robot thông minh, tự hành người tạo nên không tồn trái đất mà cịn có mặt mặt trăng, hỏa, không gian Đi với nhịp điệu phát triển khoa học kỹ thuật giới, người Việt Nam nỗ lực nghiên cứu khoa học kỹ thuật, đặc biệt lĩnh vực tự động hóa, robot hóa, phục vụ cho đời sống hàng ngày Sự nỗ lực giúp cho người Việt dần nắm bắt, làm chủ công nghệ tiến tiến giới Học sinh với cần cù sáng tạo tình yêu quê hương đất nước mạnh mẽ, vị trí địa lý chiến lược quốc gia định thực thành công nghiệp cơng nghiệp hóa, đại hóa định tương lai gần bắt kịp nước phát triển khu vực khoa học kỹ thuật Sự đời mạch Arduino thúc đẩy chúng em u thích, tìm tịi nghiên cứu, ứng dụng tự động hóa , robot hóa vào đời sống công nghiệp Với ưu điểm riêng mình, Arduino nhanh chóng tiếng tồn giới Muốn cần có đội ngũ lập trình viên giỏi, tìm ý hay, ý để phục vụ người Cho nên chúng em bước đầu tự học, tự nghiên cứu viết số chương trình (CODE) để dự thi sáng tạo KHKT cấp Thị xã dành cho học sinh THCS năm 2020-2021 Đó nội dung dự án em làm B CÂU HỎI NGHIÊN CỨU, VẤN ĐỀ NGHIÊN CỨU, GIẢ THUYẾT KHOA HỌC: 1/ Câu hỏi nghiên cứu: - Làm để lấy tín hiệu tương tự tín hiệu số từ cảm biến - Làm để sử dụng module Rơle - Cách sử dụng mạch cầu H (L298) thực tế - Hiển thị kết lên hình LCD Lấy thời gian thực Internet - Cách sử dụng module L293 để điều khiển động step step servo - Qui trình thực thiết kế hệ thống cách kết nối mạch điện để đạt yêu cầu Với hàng loạt câu hỏi kiến thức học, bắt buộc chúng em phải nghiên cứu để có kết ứng dụng vào sống 2/ Vấn đề nghiên cứu: + Về lý thuyết: Phần 1: Giới thiệu Arduino Phần 2: Phần cứng Arduino Uno R3 Phần 3: Download cài đặt chương trình IDE cho Arduino Phần 4: Giao diện phần mềm IDE Phần 5: Cấu trúc chương trình phần mềm IDE Phần 6: Kỹ thuật lập trình phần mềm ứng dụng Arduino Bài 1: Viết chương trình chạy đèn LED giao thông Bài 2: Sử dụng module Rơle Bài 3: Sử dụng mạch cầu H Trang KỸ THUẬT LẬP TRÌNH PHẦN MỀM ỨNG DỤNG ARDUINO IDE Bài 4: Hiển thị thời gian thực Bài 5: sử dụng module L293 để điều khiển động step step servo Bài 6: Cách sử dụng mạch cầu H (L298) để chạy động + Về thực tế: Thực tế nhận thấy tương lai cần có kỹ thuật lập trình để giúp người lĩnh vực tự động hóa, nâng cao hiệu lao động - Tận dụng sản phẩm sẳn có địa phương để tạo sản phẩm có lợi ích thiết thực 3/ Giả thuyết khoa học: Trên sở nghiên cứu mạch arduino, chúng em nhận thấy sáng kiến hay, có tính sáng tạo Từ mạch arduino với kỹ thuật lập trình khác nhau, có ứng dụng khác Sự thành cơng đề tài có ý nghĩa to lớn việc “tự động hóa” , giúp việc chế tạo máy móc phục vụ nơng thơn nhanh chóng, gọn nhẹ, giúp người quê hương em sử dụng dễ dàng (tiết kiệm thời gian công sức, không gây lãng phí nguyên liệu), tạo sản phẩm thiết thực, cải thiện đời sống người dân nông thôn C THIẾT KẾ VÀ PHƯƠNG PHÁP NGHIÊN CỨU: 1/ Thiết kế: Hình vẽ Cảm biến hồng ngoại Arduino M M Đèn LED vòng M Mạch điều khiển từ xa cổng M M Moto Step Moto servo Arduino C h u ô n g Chuông điện - cảm biến hồng ngoại gắn chặt - Arduino gắn dưới, - Động Step gắn bên phải arduino thứ tư - Servo gắn (phía dưới) - arduino điều khiển chuông điện cảm biến khoảng cách - Mạch điều khiển từ xa điều khiển thiết bị (Đèn, quạt, bơm nước, LED) 2/ Phương pháp nghiên cứu: a/ Phương pháp lý luận: - Lấy tín hiệu tương tự tín hiệu số từ cảm biến - Sử dụng module Rơle để đóng, ngắt mạch điện chế độ HIGH LOW - Cách sử dụng mạch cầu H (L298) thực tế - Hiển thị kết lên hình LCD - Cách sử dụng module L293 để điều khiển động step step servo - Qui trình thực thiết kế hệ thống cách kết nối mạch điện để đạt b/ Phương pháp nghiên cứu thực tiễn: Trang KỸ THUẬT LẬP TRÌNH PHẦN MỀM ỨNG DỤNG ARDUINO IDE - Khảo sát máy móc thơng dụng địa phương để tìm ưu khuyết điểm - Tiến hành chế tạo, lắp đặt thiết bị vận hành - Lập thiết kế khung gỗ xếp chi tiết - Tiến hành lắp ráp phận: Vận hành thử, kết sau: Lần 1: Sản phẩm lúc đầu không chạy Bị lỗi phần mềm chưa tải thư viện ứng dụng Lần 2: Tải cài đặt thư viện cho phần mềm Chạy lại chưa ý muốn Lần 3: Sửa lại số chi tiết nhỏ Lúc sản phẩm chạy ổn định, chạy theo ý muốn Xác định rủi ro tiềm cảnh báo an tồn cần thiết: Khơng có tượng rủi ro xảy sử dụng D TIẾN HÀNH NGHIÊN CỨU: 1/ CƠ SỞ LÝ THUYẾT: 1.a GIỚI THIỆU VỀ ARDUINO UNO Arduino bo mạch vi điều khiển Nó thực nhiều nhiệm vụ từ lấy tín hiệu từ cảm biến đến điều khiển đèn, động cơ, nhiều đối tượng khác Ngoài mạch cịn có khả liên kết với nhiều module khác module đọc thẻ từ, ethernet shield, sim900A, ….để tăng khả ứng dụng mạch Phần cứng bao gồm board mạch nguồn mở thiết kế tảng vi xử lý AVR Atmel 8bit, ARM, Atmel 32-bit,… Hiện phần cứng Arduino có tất phiên bản, Tuy nhiên phiên thường sử dụng nhiều Arduino Uno Arduino Mega Arduino Uno sử dụng rộng rãi giới.Vì người học Arduino, việc chọn Arduino Uno giúp bạn tự học dễ dàng Phần mềm để lập trình cho mạch Arduino phần mềm IDE Đây phần mềm mã nguồn mở, download từ trang web Arduino: arduino.cc 1.b PHẦN CỨNG CỦA ARDUINO UNO R3 Hình Các chân vào Arduino Uno Bảng Một số thông số Arduino Uno R3 Vi điều khiển ATmega328 (họ 8bit) Điện áp hoạt động 5V – DC (chỉ cấp qua cổng USB) Trang KỸ THUẬT LẬP TRÌNH PHẦN MỀM ỨNG DỤNG ARDUINO IDE Tần số hoạt động 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 chân I/O Dòng tối đa (5V) Dòng tối đa (3.3V) Bộ nhớ flash 16 MHz 30mA 7-12V – DC 6-20V – DC 14 (6 chân PWM) (độ phân giải 10bit) 30 mA 500 mA 50 mA 32 KB (ATmega328) với 0.5KB dùng bootloader SRAM KB (ATmega328) EEPROM KB (ATmega328) Hình Tham khảo thêm số chức chân Arduino 2:DOWNLOAD VÀ CÀI ĐẶT CHƯƠNG TRÌNH IDE CHO ARDUINO 2.1 Vào trang chủ Arduino: arduino.cc 2.2 Nhấn vào mục download 2.3 Chọn hệ điều hành 2.4 Download chương trình để cài đặt 2.5 Cài đặt Sau download người dùng file exe hình bên Để cài đặt, người dùng nhấp đúp vào file đó, phần mềm bắt đầu cài đặt 3: GIAO DIỆN CỦA PHẦN MỀM IDE Trang KỸ THUẬT LẬP TRÌNH PHẦN MỀM ỨNG DỤNG ARDUINO IDE Giao diện phần mềm IDE có nhiều phần, nhiên ý đến phần quan trọng nêu hình Chức phần sau: 3.1 Nút kiểm tra chương trình Dùng để kiểm tra xem chương trình viết có lỗi khơng Nếu chương trình bị lỗi phần mềm hiển thị thơng tin lỗi vùng số 3.2Nút nạp chương trình xuống bo Arduino Dùng để nạp chương trình viết xuống mạch Arduino Trong trình nạp, chương trình kiểm tra lỗi trước sau thực nạp xuống mạch Arduino 3.3 Hiển thị hình giao tiếp với máy tính Khi nhấp vào biểu tượng kính lúp phần giao tiếp với máy tính mở Phần hiển thị thông số mà người dùng muốn đưa lên hình muốn đưa lên hình phải có lệnh Serial.print() đưa thơng số cần hiển thị lên hình 3.4 Vùng lập trình Vùng để người lập trình thực việc lập trình cho chương trình 3.5 Vùng thơng báo thơng tin: Có chức thơng báo thơng tin lỗi chương trình vấn đề liên quan đến chương trình lập Một menu thường sử dụng khác menu Tools Khi kết nối bo Arduino với máy tính ta click vào Tools->board để chọn loại board sử dụng Phần mềm chọn sẵn kiểu bo bo Arduino Uno, người dùng dùng kiểu bo khác chọn kiểu bo dùng Bên cạnh việc chọn bo phần quan trọng chọn cổng COM Hình bên minh họa cho việc chọn cổng COM Khi lần đầu gắn mạch Arduino vào máy tính, người sử dụng cần nhấn chọn cổng COM cách vào Tools -> Serial Port (một số phiên dùng từ Port) sau nhấn chọn cổng COM, ví dụ COM1 Hình 18 Cách chọn cổng COM hình IDE Sau thực bước xong, người dùng bắt tay vào việc lập trình Phần trình bày cấu trúc chương trình phần mềm IDE 4: CẤU TRÚC CỦA MỘT CHƯƠNG TRÌNH TRONG PHẦN MỀM IDE Xét ví dụ đơn giản, ví dụ làm cho led nhấp nháy: #define led = 13 // khai báo chân led chân 13 void setup() { Trang KỸ THUẬT LẬP TRÌNH PHẦN MỀM ỨNG DỤNG ARDUINO IDE pinMode(led, OUTPUT); //Thiết lập chân led (chân 13) chân (OUTPUT) } void loop() { digitalWrite(led, HIGH); // Ra lệnh mở led delay(1000); // Mở 1s (1000ms) digitalWrite(led, LOW); // lệnh tắt led delay(1000); // Tắt 1s (1000ms), thay đổi giá trị } Sau tìm hiểu cấu trúc chương trình Arduino qua ví dụ Phần 1: Khai báo biến Đây phần khai báo kiểu biến, tên biến, định nghĩa chân board số kiểu khai báo biến thông dụng: * #define Nghĩa từ define định nghĩa, hàm #define có tác dụng định nghĩa, hay cịn gọi gán, tức gán chân, ngõ với tên Ví dụ #define led 13 Chú ý: sau #define khơng có dấu “,” (dấy phẩy) *Khai báo kiểu biến khác như: int (kiểu số nguyên), float,… Phần 2: Thiết lập (void setup()) Phần dùng để thiết lập cho chương trình, cần nhớ rõ cấu trúc void setup() { … } Cấu trúc có dấu ngoặc nhọn đầu cuối, thiếu phần kiểm tra chương trình chương trình báo lỗi Phần dùng để thiết lập tốc độ truyền liệu, kiểu chân chân hay chân vào Trong đó: Dùng để truyền liệu từ board Serial.begin(9600); Arduino lên máy tính pinMode(biến, kiểu vào ra); Dùng để xác định kiểu chân vào hay Ví dụ:pinMode(ChanDO, INPUT); Phần 3: Vòng lặp Dùng để viết lệnh chương trình để mạch Arduino thực nhiệm vụ mà mong muốn, thường bắt đầu bằng: void loop() { ……………… } Ứng dụng chế tạo: 2.1 Mô tả chung: * Cấu tạo: Trang KỸ THUẬT LẬP TRÌNH PHẦN MỀM ỨNG DỤNG ARDUINO IDE - Bàn đặt linh kiện - Hệ thống arduino sếp theo thứ tự - Vị trí đặt cảm biến, moto, servo, động bước - Bộ biến đổi dòng điện từ 220V xuống 12V (DC) - Mạch điện thiết kế theo linh kiện 2.2 Hoạt động: a/ Đối với đèn giao thông: Mạch Arduino Uno R3 Đèn LED Cổng nguồn 9V(DC) Cổng nạp liệu + cấp nguồn Khi gắn điện 9V(DC) vào Arduino, Arduino tự động sáng, tắt theo thời gian lập trình phần mềm Phần lập trình sau: int DO = 13; int VANG = 12; int XANH = 11; void setup() { pinMode(DO, OUTPUT); pinMode(XANH, OUTPUT); pinMode(VANG, OUTPUT); } Trang KỸ THUẬT LẬP TRÌNH PHẦN MỀM ỨNG DỤNG ARDUINO IDE void loop(){ digitalWrite(DO, 1); delay(1000); // thòi gian sáng đèn đỏ digitalWrite(DO, 0); digitalWrite(VANG, 1); delay(1000); // thòi gian sáng đèn vàng digitalWrite(VANG, 0); digitalWrite(XANH, 1); delay(1000); // thòi gian sáng đèn xanh digitalWrite(XANH, 0); } b/ Đối với servo lần chạm: Cảm biến hồng ngoại Động servo Mạch arduino Uno R3 Khi có vật cản trước cảm biến (chạm lần 1), cảm biến nhận tín hiệu, tín hiệu xuất chân OUT qua arduino, Arduino điều khiển động servo quay góc 180 độ (theo phần lập trình) Khi đưa vật cản trước cảm biến lần (chạm lần 2), cảm biến nhận tín hiệu, tín hiệu xuất chân OUT qua arduino, Arduino điều khiển động servo quay góc 180 độ theo chiều ngược lại Phần lập trình: #include Servo servo1; const int servo1Pin = 5; //khai báo chân servo int cambien = 7; //khai báo chân cảm biến int dem = 0; // biến đếm, dùng đếm số lần nhấn nút void setup() { Serial.begin(9600); // giao tiếp Serial với baudrate 9600 pinMode(cambien, INPUT); servo1.attach(servo1Pin); } void loop() { //đọc giá trị từ cảm biến, có tín hiệu dem + while (true) { if (digitalRead(cambien) == 0) { dem++; break; //thốt khỏi vịng lặp Trang KỸ THUẬT LẬP TRÌNH PHẦN MỀM ỨNG DỤNG ARDUINO IDE } } // dem chẵn(chia hết cho 2) servo quay góc 0° if (dem % == 0) servo1.write(0); // ngược lại (dem lẻ) quay góc 90° else { servo1.write(180); } Serial.println(dem); //xuất hình giá trị biến dem delay(2000); } c/ Đối với servo lần chạm: Khi có vật cản trước cảm biến (chạm lần), cảm biến nhận tín hiệu, tín hiệu xuất chân OUT qua arduino, Arduino điều khiển động servo quay góc 180 độ (theo phần lập trình) Sau thời gian (đã lập trình), động servo tự quay vị trí ban đầu Phần lập trình: #include Servo servo1; const int servo1Pin = 5; //khai bao chan servo int cambien = 7; //khai bao chan cam bien void setup() { Serial.begin(9600); // giao tiếp Serial với baudrate 9600 pinMode(cambien, INPUT); // dat cam bien la tin hieu vao servo1.attach(servo1Pin); } void loop() { servo1.write(0); // servo quay ve goc 0° if (digitalRead(cambien) == 0) // đọc tín hiệu từ cảm biến, có tín hiệu servo quay 90° { servo1.write(360); //servo quay goc 90° delay(2000); //dừng 2s Trang KỸ THUẬT LẬP TRÌNH PHẦN MỀM ỨNG DỤNG ARDUINO IDE } } d/ Đối với L293: Modulo L293 Động step Động co8 servo Cảm biến nhận tín hiệu, xuất chân OUT vào arduino, Arduino chuyển tín điều khiển mạch L293 hoạt động điều khiển động step quay vòng, động ngừng hoạt động giây, sau động quay ngược lại vòng để trạng thái ban đầu (quay theo ý muốn người lập trình) Phần lập trình: #include #include int a = 5; // so vong quay phai int b = 5; // so vong quay trai AF_Stepper motor(48, 2); int cambien = A0; Servo servo1; void setup() { pinMode(cambien, INPUT); motor.setSpeed(500); // toc step servo1.attach(9); } void loop() { servo1.write(0); if (digitalRead(cambien) == 0) { motor.step(a*200, FORWARD, MICROSTEP); delay(1000) ; servo1.write(90); delay(3000); motor.step(b*200, BACKWARD, MICROSTEP); delay(1000); servo1.write(0); delay(1000); Trang 10 KỸ THUẬT LẬP TRÌNH PHẦN MỀM ỨNG DỤNG ARDUINO IDE } } e/ Đối với L298: Modulo L298 Arduino Uno R3 Động 12V(DC) Cảm biến nhận tín hiệu, xuất chân OUT vào arduino, Arduino chuyển tín điều khiển mạch L298 hoạt động điều khiển động quay thuận, quay nghịch, tăng, giảm vận tốc (quay theo ý muốn người lập trình) Phần lập trình: int Switch = 4; // công tắc đảo chiều động int ENA = 5; int IN1 = 6; int IN2 = 7; int bientro = A0; int val; // lưu giá trị biến trở int speed; // lưu giá trị tốc độ void setup() { // Serial.begin(115200); pinMode(IN1,OUTPUT); pinMode(IN1,OUTPUT); pinMode(bientro,INPUT); } void loop() { val = analogRead(bientro); // đọc giá trị chân A0 lưu vào biến val speed = map(val,0,1023,0,255); // hàm map có chức đổi giá trị biến trở giá trị tốc độ if(digitalRead(Switch)==1) { digitalWrite(IN1, 0); digitalWrite(IN2, 1); //động chạy chiều thuận } if(digitalRead(Switch)==0) { Trang 11 KỸ THUẬT LẬP TRÌNH PHẦN MỀM ỨNG DỤNG ARDUINO IDE digitalWrite(IN1, 1); digitalWrite(IN2, 0); //động chạy chiều nghịch } analogWrite(ENA,speed); //động chạy với tốc độ "speed" // Serial.println(speed); } g/ Điều khiển hoạt động theo thời gian (đồng hồ thời gian thực): Báo chuông vào lớp học, có tích hợp chng chống trộm Cảm biến chuyển động Chuông điện 220V(AC) Khi cấp nguồn điện 9V(DC) vào arduino, arduino hoạt động điều khiển modulo DS1307, module hoạt động báo thời gian thực (giống đồng hồ) Khi đến arduino kích hoạt relay đóng mạch làm chng reo Ứng dụng để làm chng báo trường học có tích hợp chống trộm cảm biến chuyển động Phần lập trình #include #include #include "RTClib.h" int relay = 7; RTC_DS1307 rtc; char daysOfTheWeek[7][12] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; void setup () { Serial.begin(9600); if (! rtc.begin()) { Serial.print("Couldn't find RTC"); while (1); } if (! rtc.isrunning()) { Serial.print("RTC is NOT running!"); Serial.println(); } rtc.adjust(DateTime(2020, 1, 4, 6, 59, 00)); // đặt thời gian rtc.adjust(DateTime(năm, tháng,ngày, giờ, phút, giây)) Trang 12 KỸ THUẬT LẬP TRÌNH PHẦN MỀM ỨNG DỤNG ARDUINO IDE pinMode(relay, OUTPUT); } void loop () { DateTime now = rtc.now(); digitalWrite(relay, HIGH); //hiển thị thời gian lên hình if(now.hour()