Giới thiệu đề tài
Đặt vấn đề
Hiện nay, nhu cầu sử dụng điện để đáp ứng sự phát triển của nền kinh tế và phục vụ đời sống ngày càng tăng. Để giảm thiểu các sự cố của các thiết bị điện cũng như góp phần giảm thiểu những thiệt hại lớn về kinh tế do mất điện gây ra, việc kiểm tra thường xuyên các thiết bị đường dây và trạm biến áp (TBA) nhằm phát hiện nguy cơ sớm nhất có thể để lên kế hoạch bảo trì là vô cùng quan trọng Sự an toàn và hoạt động ổn định của các thiết bị trạm biến áp là yêu cầu thiết yếu của hệ thống điện hiện đại và lưới điện thông minh.
Vì vậy yêu cầu đặt ra cần có những phương pháp giám sát hiệu quả hơn quá trình vận hành cũng như bảo vệ các thiết bị trong TBA Phần lớn các TBA hiện nay đều vận hành theo kiểu truyền thống, được điều khiển thông qua các tủ bảng, sử dụng khóa điều khiển Chức năng giám sát trạm từ các trung tâm điều độ cũng chỉ được thực hiện thông qua hệ thống thu thập thông tin xa (RTU).
Với sự phát triển của các giải pháp tích hợp và tự động hóa TBA, các TBA không người trực (KNT) hiện nay có khả năng thu thập, xử lý và lưu trữ một lượng thông tin lớn với mức độ chính xác cao Đáp ứng bài toán tối ưu hóa cho hệ thống điện, đồng thời hướng đến phát triển hệ thống lưới điện thông minh Mọi hoạt động đóng cắt, vận hành lưới, giám sát quá trình hoạt động, thu thập dữ liệu của trạm đều được giám sát qua hệ thống Camera và điều khiển từ xa thông qua hệ thống điều hành SCADA từ Trung tâm điều khiển.
Tuy nhiên, các màn hình HMI (Human Machine Interface) của các trung tâm điều khiển từ xa cũng chỉ thể hiện trạng thái logic đóng cắt của thiết bị mà không thể hiện được trạng thái vật lý hay tình trạng thực của thiết bị, mà theo quy trình quy phạm bắt buộc phải có
Ngoài ra, việc theo dõi thực tế tình trạng thiết bị cũng rất cần thiết để phục vụ công tác bảo trì, đảm bảo an toàn vận hành lâu dài của hệ thống Các TBA đã được tự động hóa nhưng vẫn phải đảm bảo số lượng công nhân trực vận hành chỉ để theo dõi thiết bị và trạng thái thiết bị theo như quy trình quy định Mặc dù đã lắp đặt Camera,nhưng các Camera này cũng chỉ giúp giám sát tình trạng chung của trạm, giám sát an ninh tránh sự đột nhập từ bên ngoài và chưa có khả năng giám sát chi tiết tình trạng từng thiết bị Để giám sát tổng thể toàn bộ TBA cũng như các thiết bị cần thiết quan sát (dao cách ly, máy biến áp, máy cắt và các thông số đo lường ngoài trời cũng như nhiệt độ của các thiết bị này) thì cần phải lắp đặt thêm nhiều Camera Việc lắp nhiềuCamera này sẽ gây khó khăn cho vị trí lắp đặt, chi phí đầu tư, bảo dưỡng cũng như đường truyền (hình ảnh) về trung tâm giám sát.
Mục tiêu nghiên cứu
Nghiên cứu chế tạo Robot có thể tự động di chuyển trong khuôn viên trạm biến áp để thay thế con người, thu thập và xử lý hình ảnh, thông tin thông qua các cảm biến về trạng thái các dao cách ly, máy cắt, đồng hồ nhiệt độ dầu MBA, đồng hồ nhiệt độ cuộn cao áp MBA, đồng hồ nhiệt độ cuộn trung áp MBA, từ các góc độ khác nhau để lưu vào thẻ nhớ và truyền về trung tâm điều khiển Có khả năng tự động di chuyển về chỗ sạc khi hết nguồn.
Lựa chọn phương án thiết kế
Phương án thiết kế là robot 4 bánh với nguồn ắc quy 12V 40Ah
Các cảm biến được lắp đặt tại các vị trí cần thiết để robot nhận biết được
Camera gắn trên robot phải điều chỉnh xoay được các hướng để lấy được các góc chụp cần thiết cho việc thu thập ảnh.
Hình 1.3.1.a.1 Mô tả tổng quan RobotThông số kích thước:
- Bộ phận xoay và nghiêng chắc chắn (PTU) được thiết kế cho các ứng dụng có độ rung cao.
- Hệ thống camera quan sát, camera hồng ngoại phát hiện các điểm nóng và dị thường nhiệt.
- Hệ thống đo tốc độ bằng encoder
- Hệ thống điều hướng bằng la bàn điện tử
- Khả năng tránh vật cản.
- Cho phép điều chỉnh bằng tay.
- Rô bôt sau khi hoàn thành giám sát hoặc pin yếu sẽ tự động quay về trạm sạc.
Các tiêu chuẩn an toàn trong việc lắp đặt thiết bị tại TBA
Căn cứ vào tiêu chuẩn về đảm bảo an toàn trong TBA có cấp điện áp 110kV đối với thiết bị lắp đặt trong trạm Hệ thống đường ray dẫn hướng phải đảm bảo các yêu cầu sau:
Vị trí lắp đặt ray dẫn hướng không được chiếm vị trí của đường giao thông nội bộ trong TBA để tuân thủ tiêu chuẩn về phòng cháy chữa cháy
Tiêu chuẩn về hành lang tuyến an toàn: Độ cao của robot không được vượt quá độ cao 2,2 mét cho phép
Robot và hệ thống dẫn hướng phải có cấu tạo gọn nhẹ, vững chắc Đã được thử nghiệm an toàn trước khi đưa vào vận hành.
Sơ đồ thuật toán
Khởi tạo kết nối mạng
Kiểm tra đủ các điều kiện
Robot di chuyển đến vị trí i
Camera chụp ảnh tại vị trí thứ i
Lưu dữ liệu vào bộ nhớ và gửi ảnh và vị trí về máy chủ
Kiểm tra vị trí thứ i
Robot di chuyển về vị trí 0
Máy chủ đợi dữ liệu ảnh và vị trí
Xử lý dữ liệu tại vị trí i Đưa ra kết quả xử lý
Lưu trữ kết quả và dữ liệu
Arduino UNO đợi dữ liệu từ máy tính Điều khiển Robot di chuyển đến vị trí I theo yêu cầu
Gửi dữ liệu về máy tính xác nhận vị trí mới của
Thiết lập ngắt ngoài int0 của vị trí điều khiển Arduino UNO
Kiểm tra chiều quay động cơ
Có sự kiện ngắt xảy ra
Arduino UNO đợi dữ liệu từ máy tính Điều khiển 3 trục
(X,Y,Zoom) của Camera đến các vị trí yêu cầu
Gửi dữ liệu về máy tính xác nhận vị trí mới của
Nghiên cứu thiết kế đường dẫn và phần cứng robot
Thiết kế phần cứng
2.2.1 Danh sách các thiết bị, linh kiện:
Tên thiết bị, linh kiện Số lượng Ghi chú
Mini PC Z83 II - Intel Z8350 2 Lợi
Camera Basler acA3800-10gm 1 Lợi
Bộ truy cập Wifi không dây 1 Lợi
Module Micro Step Driver 1 sơn
Cảm biến tiệm cận 1 Bảo
Module la bàn LSM303DLH 1 Lộc
Bánh xe 4 Ắc quy 12V 40Ah 1
Bảng 2.2.1.a.1.1 Bảng danh sách các thiết bị b) Máy vi tính Mini PC Z83 II - Intel Z8350
Nhóm thiết kế đã sử dụng 02 máy vi tính cho việc điều khiển và thu thập dữ liệu. Một máy tính đặt trong robot di chuyển và một máy tính đặt cố định trong nhà điều hành của TBA.
Với máy tính đặt trên Robot, yêu cầu kích thước phải nhỏ gọn, tốc độ xử lý nhanh, điện năng tiêu thụ thấp và có đủ các cổng giao tiếp cần thiết cho các thiết bị ngoại vi Các cổng giao tiếp với các thiết bị ngoại vi phải có như sau:
- Công suất tiêu thụ tối đa: 12V / 1.5A
Hình 2.2.1.b.1 Mini PC Z83 II - Intel Z8350 c) Camera
Yêu cầu kỹ thuật đặt ra cho Camera thu thập hình ảnh là phải có độ phân giải cao để hình ảnh thu được phải sắc nét, phải có thiết bị điều chỉnh khoảng cách chụp (thiết bị Zoom quang học) Từ cơ sở này nhóm thiết kế đã chọn Camera của hãng National Intrusment với thông số kỹ thuật như sau:
- Mã số thiết bị: Basler acA3800-10gm
- Độ phân giải: 3480 x 2748 pixel (Chuẩn hình ảnh độ phân giải 4K)
- Tốc độ : 30 khung hình / giây - Bộ điều khiển zoom quang học với khoảng cách sử dụng từ 40cm đến 300cm
- Chuẩn giao tiếp Gigabit Ethernet 1000Mbps
- Công suất tiêu thụ tối đa : 3,7 Wats - Điện áp làm việc 12 – 24 VDC
- Kích thước : 42 x 29 x 29 mm - Khối lượng: 90 gam (Chưa kể khối lượng thiết bị Zoom quang học)
Hình 2.2.1.c.1 Camera Basler acA3800-10gm d) Bộ truy cập không dây WiFi
Nhóm thiết kế đã chọn thiết bị WIRELESS N 300 ROUTER TENDA F3 với các thông số cơ bản như sau:
- Tốc độ truyền / nhận dữ liệu: 300Mbps
- Có 3 ăng ten thu / phát tín hiệu với bán kính phủ sóng khoảng 20 mét.
Hình 2.2.1.d.1 WIRELESS N 300 ROUTER TENDA F3 e) Modul ESP8266-12E: Để truyền nhận dữ liệu trong mạng không dây với giao thức TCP/IP Nhóm thiết kế đã chọn Modul ESP8266-12E làm nhiệm vụ này Đặc điểm kỹ thuật: kết nối mạng không dây ở tốc độ 54 Mbps.
Hình 2.2.1.e.1 Modul ESP8266-12E f) Module Arduino Uno
Module sử dụng dòng vi điều khiển họ 8 bit Atmega328 với các thông số kỹ thuật như sau: Module được thiết kế nhỏ gọn, có tích hợp bộ chuyển đổi chuẩn giao tiếp RS232 to COM để truyền nhận dữ liệu với máy tính.
Hình 2.2.1.f.1 Arduino Uno g) Module Micro Step Driver:
Là module điều khiển động cơ bước Thông số kỹ thuật gồm:
- Điện áp cực đại: 40 VDC
- Tích hợp chân Reset và Enable.
- Tích hợp chân điều khiển đảo chiều quay động cơ DIR
- Tích hợp chân phát xung PUL để điều khiển tốc độ và vị trí
- Tính năng bảo vệ quá áp, quá nhiệt.
Hình 2.2.1.g.1 Module Micro Step Driver h) Module CNC Shield V3
Là bo mạch được thiết kế cho các ứng dụng điều khiển các máy CNC có công suất bé Chân cắm mở rộng của bo mạch được thiết kế để kết hợp với modul vi điều khiển Arduino UNO Bo mạch CNC Shield V3 có thể gắn với 4 module điều khiển động cơ bước DRV8255 cho phép điều khiển tối đa 3 trục X, Y, Z và thêm một tùy chọn ở trục thứ 4 trên máy CNC
Hình 2.2.1.h.1 Module CNC Shield V3 i) Cảm biến tiệm cận (Proximity Sensor) Để điều khiển robot di chuyển đến các vị trí đã khảo sát, nhóm thiết kế đã dùng cảm biến tiệm cận để robot xác định vị trí đã thiết lập Khi phát hiện vật cảm biến, tín hiệu ngõ ra của cảm biến sẽ thay đổi trạng thái
- Mã số cảm biến: LJ18A3-8-Z/BX NPN
- Điện áp làm việc: 10-30 VDC
- Khoảng cách lớn nhất phát hiện vật thể kim loại: 8mm
- Tần số đáp ứng: 300 Hz
Hình 2.2.1.i.1 Cảm biến tiệm cận j) Động cơ bước ( Step Motor) Động cơ bước thực chất là một động cơ đồng bộ Có khả năng cố định roto vào những vị trí cần thiết Động cơ bước được ứng dụng trong các lĩnh vực điều khiển vị trí, ta có thể thấy nó điều khiển trong các trục của máy CNC có công suất bé, máy khắc laser, máy in 3D Để điều khiển động cơ bước, nhóm thiết kế đã chọn các modul DRV8255 Driver và Microstep Driver là các modul thiết kế chuyên cho các ứng dụng điều khiển động bước.
Lập trình vi điều khiển
2.3.1 Lập trình truyền động động cơ a) Danh sách các thiết bị:
Module L298 Động cơ giảm tốc
Arduino Nano b) Nguyên lý hoạt động:
- 2 chân cấp nguồn trực tiếp đến động cơ:12V power, 5V power Nhóm cấp nguồn 9-12V ở chân nguồn 12V Bên cạnh đó có jumper 5V, ta chỉ cần cấp nguồn 12V vô ở 12V power là có 5V ở 5V power, từ đó cấp cho Arduino
- Chân GND: GND của nguồn cấp cho Động cơ và Arduino Nano
- 4 chân INPUT: IN1, IN2, IN3, IN4 được nối lần lượt với các chân 5, 7, 10, 12 của L298 Đây là các chân nhận tín hiệu điều khiển.
- 4 chân OUTPUT: OUT1, OUT2, OUT3, OUT4 (tương ứng với các chân INPUT) được nối với các chân 2, 3, 13, 14 của L298 Các chân này sẽ được nối với động cơ.
- Hai chân ENA và ENB dung để điều khiển các mạch cầu H trong L298 Nếu ở mức logic “1” (nối với nguồn 5V) thì cho phép mạch cầu H hoạt động, nếu ở mức logic “0” thì mạch cầu H không hoạt động.
* Điều khiển chiều quay với L298:
-Khi ENA = 0: Động cơ không quay với mọi đầu vào
+ INT1 = 1; INT2 = 0: động cơ quay thuân.
+ INT1 = 0; INT2 = 1: động cơ quay nghịch.
+ INT1 = INT2: động cơ dừng ngay tức thì.
(tương tự với các chân ENB, INT3, INT4). c) Sơ đồ đấu dây thiết bị: d) Code lập trình cho Arduino:
#include const byte RX1 = A1; const byte TX1 = A2;
SoftwareSerial mySerial1 = SoftwareSerial(RX1, TX1);
String LM = ""; bool stringComplete = false; long last = 0;
// Khai bao bien luu gia tri int CT = 300; int CG = 200; int CP = 500; void setup() {
Serial.begin(9600); while(!Serial); mySerial1.begin(9600); while (!mySerial1); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(CBT, INPUT); pinMode(CBG, INPUT); pinMode(CBP, INPUT); pinMode(TRIG1, OUTPUT); pinMode(ECHO1, INPUT); analogWrite(5, 255); analogWrite(6, 255);
}*/ if (LM.indexOf("LINEMODEON") >= 0){ doline();
} void Read_UART1 (){ while (mySerial1.available()){ char inChar = (char)mySerial1.read(); inputString += inChar; if (inChar == '\n'){ stringComplete = true;
Serial.print("Data nhận Uno1: ");
LM = inputString; inputString = ""; stringComplete = false;
} void Read_UART2 (){ while (mySerial1.available()){ char inChar = (char)mySerial1.read(); inputString += inChar; if (inChar == '\n'){ stringComplete = true;
Serial.print("Data nhận Uno1: ");
LM = inputString; inputString = ""; stringComplete = false;
// Trái if (inputString.indexOf("LEFTOFF") >= 0){
} if (inputString.indexOf("LEFTON") >= 0){ turnLeft();
//Phải if (inputString.indexOf("RIGHTOFF") >= 0){
} if (inputString.indexOf("RIGHTON") >= 0 ){ turnRight();
//Thẳng if (inputString.indexOf("UPOFF") >= 0){
} if (inputString.indexOf("UPON") >= 0 ){ forward();
//Lui if (inputString.indexOf("DOWNOFF") >= 0){
} if (inputString.indexOf("DOWNON") >= 0){ backward();
//Dò line if (inputString.indexOf("LINEMODEOFF") >= 0){
// Trái if (inputString.indexOf("LEFTOFF") >= 0){
} if (inputString.indexOf("LEFTON") >= 0){ turnLeft();
//Phải if (inputString.indexOf("RIGHTOFF") >= 0){
} if (inputString.indexOf("RIGHTON") >= 0 ){ turnRight();
//Lui if (inputString.indexOf("DOWNOFF") >= 0){
} if (inputString.indexOf("DOWNON") >= 0){ backward();
//Dò line if (inputString.indexOf("LINEMODEOFF") >= 0){
} int KC1() { unsigned long tg; digitalWrite(TRIG1, 1); delayMicroseconds(5); digitalWrite(TRIG1, 0); // tao xung 5us tg = pulseIn(ECHO1, 1); int kc = tg / 29.412 / 2; if (kc != 0) {
} void doline() { if (digitalRead(CBT)==0 && digitalRead(CBG)==1 && digitalRead(CBP)==0) { forward();
// den trang trang if (digitalRead(CBT)==1 && digitalRead(CBG)==0 && digitalRead (CBP)==0){ turnLeft();
// trang trang den if (digitalRead(CBT)==0 && digitalRead(CBG)==0 && digitalRead (CBP)==1) { turnRight();
} void forward() { digitalWrite (3, 0); digitalWrite(4, 1); digitalWrite (7, 1); digitalWrite(8, 0);
} void turnRight() { digitalWrite (3, 0); digitalWrite(4, 1); digitalWrite (7, 0); digitalWrite(8, 0);
} void turnLeft() { digitalWrite (3, 0); digitalWrite(4, 0); digitalWrite (7, 1); digitalWrite(8, 0);
} void backward() { digitalWrite (3, 1); digitalWrite(4, 0); digitalWrite (7, 0); digitalWrite(8, 1);
} void Stop() { digitalWrite (3, 0); digitalWrite(4, 0); digitalWrite (7, 0); digitalWrite(8, 0);
2.3.2 Lập trình điều khiển Robot từ xa thông qua Wifi a) Danh sách các thiết bị:
Arduino Nano b) Nguyên lý hoạt động:
Vì trong đề tài cần phải điều khiển cả động cơ giảm tốc di chuyển Robot và cả cánh tay Robot nên cần phải sử dụng thư viện SoftwareSerial để khai báo các chân
RX, TX ảo nhằm tăng số lượng chân RX, TX để giao tiếp giữa Arduino và ESP8266.
Sử dụng phương thức truyền nối tiếp với 2 chân: RX – chân nhận dữ liệu; TX – chân truyền dữ liệu
Hình 2.3.2.b.1 Giao tiếp UART trên Arduino
Trước khi thiết bị UART có thể gửi dữ liệu, thiết bị truyền chuyển đổi byte dữ liệu thành bit Sau khi chuyển đổi dữ liệu thành các bit, thiết bị UART sẽ chia chúng thành các gói để truyền Mỗi gói chứa một bit bắt đầu, một khung dữ liệu, bit chẵn lẻ và các bit dừng Hình dưới là một gói dữ liệu mẫu.
Sau khi chuẩn bị gói tin, mạch UART sẽ gửi nó ra ngoài qua chân TX.
Thiết bị UART nhận sẽ kiểm tra gói nhận được (thông qua chân RX) để tìm lỗi bằng cách tính số 1 và so sánh với giá trị của bit chẵn lẻ có trong gói Nếu không có lỗi trong quá trình truyền, nó sẽ tiến hành tách bit bắt đầu, bit dừng, bit chẵn lẻ để lấy khung dữ liệu Nó có thể cần nhận một số gói trước khi có thể xây dựng lại toàn bộ byte dữ liệu từ các khung dữ liệu Sau khi xây dựng lại byte, nó được lưu trữ trong bộ đệm UART.
Thiết bị UART nhận sử dụng bit chẵn lẻ để xác định xem có bị mất dữ liệu trong quá trình truyền hay không Mất dữ liệu trong quá trình truyền xảy ra khi một bit thay đổi trạng thái của nó trong khi truyền Các bit có thể thay đổi do khoảng cách truyền, bức xạ từ và tốc độ truyền không khớp, cùng những thứ khác. c) Sơ đồ đấu dây: d) Lập trình code cho Arduino Nano:
#include const byte RX1 = D0; const byte TX1 = D1;
SoftwareSerial mySerial1 = SoftwareSerial(RX1, TX1); //động cơ vàng const byte RX2 = D2; const byte TX2 = D3;
SoftwareSerial mySerial2 = SoftwareSerial(RX2, TX2);// động cơ servo
#define BLYNK_TEMPLATE_ID "TMPLYSBSkt6v"
#define BLYNK_DEVICE_NAME "ROBOTĐK"
#define BLYNK_AUTH_TOKEN "TtwX9hGtAA8i2tQLX8iBDd4d-PFvUScb"
#include char auth[] = "TtwX9hGtAA8i2tQLX8iBDd4d-PFvUScb"; char ssid[] = "TP-LINK"; char pass[] = "AAAFAAAFAA"; int button; int goc;
String LINEMODEINPUT = ""; long last = 0; void setup(){
Serial.begin(9600); while(!Serial); mySerial1.begin(9600); while (!mySerial1); mySerial2.begin(9600); while (!mySerial2);
Blynk.begin(auth, ssid, pass); last = millis();
BLYNK_WRITE(V4){ goc = param.asInt();
//GocINPUT = GocINPUT + MaNhan; mySerial2.print(GocINPUT); mySerial2.flush();
BLYNK_WRITE(V5){ goc = param.asInt();
GocINPUT = "A" + GocINPUT + "L" + MaNhan; mySerial2.print(GocINPUT); mySerial2.flush();
BLYNK_WRITE(V6){ goc = param.asInt();
GocINPUT = "A" + GocINPUT + "R" + MaNhan; mySerial2.print(GocINPUT); mySerial2.flush();
BLYNK_WRITE(V7){ button = param.asInt(); if (button == 1){
Serial.println(LINEMODEINPUT); mySerial1.print(LINEMODEINPUT); mySerial1.flush();
Serial.println(LINEMODEINPUT); mySerial1.print(LINEMODEINPUT); mySerial1.flush();
BLYNK_WRITE(V0){ button = param.asInt(); if (button == 1){
Serial.println(RIGHTINPUT); mySerial1.print(RIGHTINPUT); mySerial1.flush();
Serial.println(RIGHTINPUT); mySerial1.print(RIGHTINPUT); mySerial1.flush();
BLYNK_WRITE(V1){ button = param.asInt(); if (button == 1){
Serial.println(LEFTINPUT); mySerial1.print(LEFTINPUT); mySerial1.flush();
Serial.println(LEFTINPUT); mySerial1.print(LEFTINPUT); mySerial1.flush();
BLYNK_WRITE(V2){ button = param.asInt(); if (button == 1){
Serial.println(UPINPUT); mySerial1.print(UPINPUT); mySerial1.flush();
Serial.println(UPINPUT); mySerial1.print(UPINPUT); mySerial1.flush();
BLYNK_WRITE(V3){ button = param.asInt(); if (button == 1){
Serial.println(DOWNINPUT); mySerial1.print(DOWNINPUT); mySerial1.flush();
Serial.println(DOWNINPUT); mySerial1.print(DOWNINPUT); mySerial1.flush();
2.3.3 Điều khiển camera giám sát Để đảm bảo có thể giám sát trạm biến áp từ xa Đề xuất phương án giám sát bằng camera qua ESP32 cam kết hợp với chương trình xử lý ảnh. a) Danh sách các thiết bị
ESP32 CAM b) Nguyên lí hoạt động
Sử dụng phương thức truyền nối tiếp với 2 chân: RX – chân nhận dữ liệu; TX – chân truyền dữ liệu theo giao thức UART.
Bên trong Camera sẽ có một mắt thu hình ảnh Bên trong mắt thu là cảm biến ảnh,cảm biến này sẽ thu lượng ánh sáng về cho mắt thu và đường ánh sáng thu được là tín hiệu tương tự khi về camera sẽ được xử lí thành tín hiệu điện Từ đó, vi điều khiển sẽ xử lí thành các bit ảnh Từ các bit ảnh này được ghép thành một hình ảnh Khi tiến hành chạy video là từ những bức ảnh được ghép bởi những bit ảnh mà ghép lại với nhau theo tốc độ khung hình thì ra được thành video. c) Lập trình code
#define CAMERA_MODEL_AI_THINKER
#include "camera_pins.h" const char* ssid = "Gol."; const char* password = "22060808"; void startCameraServer(); void setup() {
Serial.println(); camera_config_t config; config.ledc_channel = LEDC_CHANNEL_0; config.ledc_timer = LEDC_TIMER_0; config.pin_d0 = Y2_GPIO_NUM; config.pin_d1 = Y3_GPIO_NUM; config.pin_d2 = Y4_GPIO_NUM; config.pin_d3 = Y5_GPIO_NUM; config.pin_d4 = Y6_GPIO_NUM; config.pin_d5 = Y7_GPIO_NUM; config.pin_d6 = Y8_GPIO_NUM; config.pin_d7 = Y9_GPIO_NUM; config.pin_xclk = XCLK_GPIO_NUM; config.pin_pclk = PCLK_GPIO_NUM; config.pin_vsync = VSYNC_GPIO_NUM; config.pin_href = HREF_GPIO_NUM; config.pin_sscb_sda = SIOD_GPIO_NUM; config.pin_sscb_scl = SIOC_GPIO_NUM; config.pin_pwdn = PWDN_GPIO_NUM; config.pin_reset = RESET_GPIO_NUM; config.xclk_freq_hz = 20000000; config.pixel_format = PIXFORMAT_JPEG; if(psramFound()){ config.frame_size = FRAMESIZE_UXGA; config.jpeg_quality = 10; config.fb_count = 2;
} else { config.frame_size = FRAMESIZE_SVGA; config.jpeg_quality = 12; config.fb_count = 1;
#if defined(CAMERA_MODEL_ESP_EYE) pinMode(13, INPUT_PULLUP); pinMode(14, INPUT_PULLUP);
// camera init esp_err_t err = esp_camera_init(&config); if (err != ESP_OK) {
Serial.printf("Camera init failed with error 0x%x", err); return;
} sensor_t * s = esp_camera_sensor_get(); if (s->id.PID == OV3660_PID) { s->set_vflip(s, 1);//flip it back s->set_brightness(s, 1);//up the blightness just a bit s->set_saturation(s, -2);//lower the saturation
#if defined(CAMERA_MODEL_M5STACK_WIDE) s->set_vflip(s, 1); s->set_hmirror(s, 1);
WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500);
Serial.println("WiFi connected"); startCameraServer();
Serial.print("Camera Ready! Use 'http://");
2.3.4 Thiết kế giám sát, cảnh báo năng lượng khi mức pin thấp Để đảm bảo hoạt động của robot ngoài môi trường đươc đảm bảo, robot có chức năng thông báo, quay về trạm sạc khi mức năng lượng thấp Đề xuất phương án giám sát năng lượng, cần đo được điện áp của nguồn pin, đưa thông tin cho vi điều khiển trung tâm để thực hiện giám sát năng lượng.
Phương án đo mức pin: sử dụng mạch cầu phân áp, giá trị đo dưới dạng tín hiệu điện áp đưa vào chân đọc analog của vi điều khiển trung tâm. a) Tính toán
Bộ ADC của adruino mặc định xử lý 12 bit, tức là có giá trị từ 0- 1023 tương ứng với giá trị điện áp 0-3.3V
Vcc = 3.7x3 = 11.1V Điện áp ra lớn nhất tại A0 là VA0 = 3.3V Ta có công thức điện áp:
Chọn R2=1k Ω => R1=2.36k Ω Chọn trở 2k2 Ω. b) Lập trình code int volRead = A0; int giaTriDo; float volOut; float volIn; void setup() { pinMode(volRead, INPUT);
} void loop() { giaTriDo = analogRead(volRead); volOut = (giaTriDo*3.3)/1024.0; volIn = float(volOut/float(1000.0/3200.0));
THIẾT KẾ PHẦN ĐIỆN
3.1 Thiết kế phần điện Để đáp ứng được những yêu cầu đặt ra, nhóm đã đưa ra giải pháp thiết kế hệ thống phần cứng như sau :
- Hệ thống truyền động của Robot : Thiết kế Robot chuyển động trên hệ 4 bánh xe, động cơ truyền động gắn với bánh xe để điều khiển Robot.
- Phần thân Robot : Robot được làm cấu trúc 2 tầng, sử dụng khung làm bằng mica có kích thước đủ để lắp đặt toàn bộ các thiết bị, mô đun điều khiển, nguồn, … ở tầng
1 Tầng 2 được sử dụng để lắp đặt cánh tay robot gắn camera, kèm theo đó là các mô đun wifi cho mục đích điều khiển bằng tay khi có vấn đề phát sinh ở trạm biến áp.
- Bộ điều khiển : Xây dựng bộ điều khiển trên nền tảng các vi điều khiển Arduino Nano và Arduino Uno, là vi điều khiển 8 bit dòng Atmega328.
- Hệ thống cảm biến : Cảm biến siêu âm, cảm biến hồng ngoại.
- Động cơ truyền động : loại động cơ vàng giảm tốc, Uđm = 6 – 8V.
- Camera được lắp bên trên cánh tay có thể điều khiển di chuyển lên - xuống, xoay trái – phải giúp dễ dàng chụp được hình ảnh trạm biến áp.
- Nguồn điện : Sử dụng 3 pin Li-ion 3.7 V.
Hình 3.1 : Hình ảnh của Robot
NGHIÊN CỨU GIẢI PHÁP ĐỊNH VỊ DẪN ĐƯỜNG VÀ TRUYỀN THÔNG DỮ LIỆU
Phương pháp dò line
Phương pháp dò line dựa trên nguyên lý hoạt động của cảm biến dò line.
Cảm biến dò line hay được biết đến chính xác là cảm biến hồng ngoại hướng xuống bề mặt di chuyển Chúng giúp phát hiện bề mặt phản xạ hoặc hấp thụ ánh sáng ở khoảng cách gần Chúng thường có mắt hồng ngoại chuyên thu ánh sáng và mắt chuyên phát ánh sáng Trường hợp mắt phát phát tín hiệu:
Nếu bề mặt phản xạ lại ánh sáng, tín hiệu đó sẽ được mắt thu thu nhận → Từ đó ta xác định được tín hiệu và đưa ra vùng sáng xác định ( Những bề mặt, vùng phản xạ gần như phản xạ hết những ánh sáng đi qua nó)
Nếu bề mặt không phản xạ lại ánh sáng, không có tín hiệu về mắt thu → Từ đó ta không nhận được tín hiệu và xác định được vùng tối ( Những bề mặt, vùng tối hấp thụ gần như hết ánh sáng đi qua nó)
Khoảng làm việc của cảm biến: < 0.5m
Như đã nói ở trên cảm biến dò line sẽ hoạt động theo nguyên lý thu – phát ánh sáng.
Hình 4.3.2.a.1 Nguyên lý của cảm biến dò line
Các mắt phát sẽ phát ra tia hồng ngoại có bước sóng hồng ngoại Mắt thu ở bề mặt chứa vùng sáng sẽ hấp thụ ánh sáng hồng ngoại đó Ở trạng thái bình thường mắt thu có nội trở rất lớn (hàng trăm Kilo-Ohm) Khi thu nhận tia hồng ngoại vào nội trở của mắt thu giảm (vài chục Kilo-Ohm).
Dựa vào những nguyên lý trên, nhóm dự định sẽ tạo ra các đường line xung quanh trạm biến áp trùng với quỹ đạo yêu cầu và từ đó điều khiển Robot di chuyển.
Giải pháp định vị
Theo hình 4.1 ở trên, tại các ngã rẽ nhóm sẽ đánh số từ 1 đến 9, từ đó kết hợp với thêm 2 cảm biến hồng ngoại gắn ở bên khung Robot cùng chương trình trong vi điều khiển sẽ giúp Robot xác định được vị trí của mình và thông báo vị trí hiện tại về trung tâm điều hành. Ở chương trình của vi điều khiển nhóm sẽ tạo ra 1 biến đếm i, biến này hoạt động theo nguyên lý dò line của 2 cảm biến hồng ngoại gắn ở bên khung Robot Khi có 1 trong 2 hoặc cả 2 cảm biến đều gửi tín hiệu dò line về vi điều khiển thì biến đếm i sẽ tăng lên 1 đơn vị bắt đầu từ 0 Với mỗi giá trị i vi điều khiển sẽ điều khiển Robot theo các câu lệnh đã được lập trình trong vi điều khiển.
Robot rẽ trái và tiếp tục chương trình dò line
Hình 4.3.3.a.1 Lưu đồ thuật toán khi CBRT có tín hiệu
Robot rẽ trái và tiếp tục chương trình dò line
Robot dừng lại và camera chụp ảnh
Lưu dữ liệu vào thẻ nhớ và gửi ảnh và vị trí I về máy chủ
Robot tiếp tục chương trình dò line
Robot dừng lại và camera chụp ảnh
Lưu dữ liệu vào thẻ nhớ và gửi ảnh và vị trí I về máy chủ
Robot tiếp tục chương trình dò line Đúng Đúng
Robot dừng lại và camera chụp ảnh
Lưu dữ liệu vào thẻ nhớ và gửi ảnh và vị trí I về máy chủ
Robot tiếp tục chương trình dò line Đúng Sai
Hình 4.3.3.a.2 : Lưu đồ thuật toán khi cả CBRT và CBRP đều có tín hiệu