Đặc biệt, sau khi kết thúc tiêu luận môn học này nhóm chúng em có thêm được nhiều kinh nghiệm trong lĩnh vực cảm biến và xử lí tín hiệu đo, biết cách sử dụng phần mềm vi điều khiến và hi
Trang 1BO GIAO DUC VA DAO TAO TRUONG DAI HOC CONG NGHE TP HO CHi MINH
BAO CAO MÔN HỌC: Cảm biến và xử lý tín hiệu đo
CAM BIEN GPS
Giang vién huéng din: NGO AN THUYEN
Sinh viên thực hiện: Trần Quốc Kiên — 2280501867
Tp.HCM, ngay 16 thang 08 nam 2024
Trang 2Sau một thời gian tim hiểu và thực hiện dé tài "Cảm biến GPS ", cuối
cùng thì nhóm chúng em cũng đã hoàn thành, và đạt được những kết quả như mong đợi
Đặc biệt, sau khi kết thúc tiêu luận môn học này nhóm chúng em có thêm được nhiều kinh nghiệm trong lĩnh vực cảm biến và xử lí tín hiệu
đo, biết cách sử dụng phần mềm vi điều khiến và hiểu hơn về adruino,
viết code chương trình, cũng như nắm được quy trình làm ra một cảm biến GPS hoàn chỉnh
Và đề nhóm chúng em có thê đạt được những thành quả trên, không thê thiếu sự hướng dẫn, giúp đỡ tận tình của Thầy NGÔ AN THUYÊN Nhóm chúng em xin chân thành cảm ơn thây vì thời gian qua đã hỗ trợ tụi em hoàn thành môn đỏ án này
Trong quá trình làm đồ án, do lượng kiến thức và thời gian có hạn nên cũng còn nhiều thiếu sót, mong Thây cho nhóm em những đóng góp
chân thành nhất dé cải thiện và rút kinh nghiệm Chúng em xin chân thành
cảm ơn!
Sinh viên thực hiện Trần Quốc Kiên
Phạm Viết Thành Nguyễn Đình Bảo
Trang 3MUC LUC
Trang 4CHUONG 1: GIOI THIEU DE TAI
1.1 Dat van dé
Đề tài về cảm biến GPS là một lĩnh vực nghiên cứu và ứng dụng thuộc ngành công nghệ điện tử và đo lường, tập trung vào việc phát triển, cải tiễn và ứng dụng các loại GPS trong đời sống Cảm biến GPS (Global Positionine System) là một thiết bị điện tử dùng để xác định vị trí địa lý của một đối tượng trên bề mặt trái đất Cảm biến GPS hoạt động dựa trên tín hiệu từ các vệ tính GPS orbiting quanh trái đất Khi cảm biến nhận được tín hiệu từ ít nhất ba đến bốn vệ tính, nó có thê tính toán tọa độ chính xác của vị trí hiện tại
Mục tiêu đề tài
Mục tiêu của đề tài cảm biến GPS là nâng cao độ chính xác của cảm biến GPS trong việc xác định vị trí
Nghiên cứu và phát triển công nghệ cảm biến đo lường:
« _ Phát triển các loại cảm biến đo lường (như GPS-NEO6M) với độ chính xác cao,
tốc độ xử lý tín hiệu tốt
« _ Cải thiện hiệu suất và độ tin cậy của các hệ thông GPS
Ứng dụng công nghệ tiên tiến trong đo lường:
« _ Tích hợp các công nghệ số hóa và xử lý tín hiệu đề cải thiện độ chính xác của
việc đo lường
» _ Nghiên cứu việc áp dụng trí tuệ nhân tao (AI) va Internet of Things (loT) vao cảm biến GPS đề đễ quản lý và hoạt động I cách trơn tru hơn
« _ Phát triển các ứng dụng cụ thể của cảm biến GPS có thể được áp dụng trong các lĩnh vực cụ thể như giao thông vận tải, nông nghiệp, an ninh, hoặc du lịch
« ˆ Áp dụng cảm biến GPS đề giải quyết các vấn đề cụ thể hoặc cải thiện hiệu quả Đảm bảo chất lượng và tuân thủ các tiêu chuẩn kỹ thuật:
« Nghiên cứu và phát triển cảm biến GPS đề bảo vệ thông tin vị trí cá nhân và
đảm bảo rằng dữ liệu GPS được sử đụng | cach an toàn và hợp pháp
Trang 5« Dam bao tinh déng nhất và ôn định của cảm biến GPS trong các điều kiện khác nhau
Giảm chỉ phí sản xuất và bảo trì:
cường hiệu suất và độ bên của thiết bị
Mở rộng ứng dụng của cân điện tử trong cuộc sống hàng ngày:
trong các lĩnh vực công nghệ mới như Internet of Things (IoT), tri tué nhan tao (AI), hoặc thực tế tăng cường (AR)
1.2 Nội dung đề tài
Thiết kế và chế tạo cảm biến GPS đơn giản, để sử dụng Sử dụng adruino và GPS- NEO6M đề lay đúng được kinh đệ và vĩ độ tại vị trí của chúng ta đang đứng
1.3 Phương pháp nghiên cứu
Sử dụng phương pháp thu thập thông tin trên Internet , google, youtube
Sử dụng phần mềm adruino chạy code để có cân hoạt động hiệu quả nhất 1.4 Kết cấu của tiểu luận môn học
Gồm 5 chương :
Chương | GIỚI THIỆU ĐÊ TÀI TIỂU LUẬN
Chương 2 CƠ SỞ LÝ THUYẾT
Chương 3 NỘI DUNG THỰC HIỆN
Chương 4 KẾT QUÁ THỰC HIỆN
Chương 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỀN
Trang 6CHUONG 2: CO SO LY THUYET 2.1 Danh sách các linh kiện và số lượng
02 Module GPS NEO - 6MV2 1
2.2 Tim hiéu vé Arduino Uno
Arduino Uno là một trong những bảng vi diéu khién phé bién nhat trong dong san pham Arduino, duoc sử dụng rộng rãi trong các dự án điện tử, tự động hóa, và học tập
về lập trình phần cứng
Arduino Uno là một bảng mạch vi điều khiến mã nguồn mở (open-source) dựa trên
vi điều khiến ATmega328P của hãng Microchip Nó được thiết kế dé đơn giản hóa việc lập trình và phát triển các ứng dụng phần cứng, phù hợp cho người mới bắt đầu
Vi điều khiến ATmega328P: Là trái tim của Arduino Uno, nó chịu trách nhiệm thực thi các lệnh lập trình vả điều khiển các chân I/O
Công USB: Được sử dụng để kết nối với máy tính đề tải chương trình lên Arduino và cấp nguồn cho bảng
Bộ ôn định điện áp (Voltage Regulator): Đảm bảo cung cấp điện áp ôn định cho bang Arduino từ nguồn bên ngoài
Chan I/O ky thuat so (Digital I/O Pins): 14 chan co thê được lập trình đề làm đầu vào hoặc dau ra cho các thiết bị số như LED, cảm biến, nút bấm, v.v
Chân Analog (Analog Input Pins): 6 chân dùng dé doc tin hiệu analog (từ 0V đến
5 V) từ các cảm biến như cảm biến nhiệt độ, ánh sáng, v.v
Nguồn cung cấp (Power Pins): Bao gồm các chân 5V, 3.3V và GND đề cấp điện cho các thiết bị ngoại vi kết nỗi với Arduino
Trang 7
Hinh 2.1: Hinh anh Arduino A000073 Board Uno Rev3 SMD Core ATMega328
*Thong sé ki thuat:
Vi dieu khién: ATmega328P
Dién ap hoat dong: 5V
Dién ap dau vao (khuyén nghi): 7-12V
Điện áp đầu vào (giới hạn): 6-20V
Số chân Digital I/O: 14 chan (trong d6 6 chan c6 thé ding lam PWM output)
Số chân Analog Input: 6 chân
Dòng điện tối đa trên mỗi chân I/O: 40mA
Bộ nhớ Flash: 32 KB (trong đó 0.5 KB dùng cho bootloader)
SRAM: 2 KB
EEPROM: | KB
Tốc độ xung nhịp: L6 MHz
Giao tiếp: UART, SPI, 2C
Kết nối USB: Micro USB dé lập trình và cấp nguồn
* Các thành phần chính :
Vi điều khiến ATmega328P: La trai tim cua Arduino Uno, nó chịu trách nhiệm thực thi các lệnh lập trình vả điều khiển các chân I/O
Công USB: Được sử dụng đề kết nối với máy tính đề tải chương trình lên Arduino và cap nguồn cho bảng
Bộ ôn định điện áp (Voltage Regulator): Đảm bảo cung cấp điện áp ôn định cho
bảng Arduino từ nguồn bên ngoài
Trang 8Chân I/O ky thuat s6 (Digital I/O Pins): 14 chân có thê được lập trình dé lam đầu
vào hoặc đầu ra cho các thiết bị số như LED, cam bién, nut bam, v.v
Chan Analog (Analog Input Pins): 6 chan ding dé doc tin hiệu analog (từ 0V đến 5V) tir cac cam biến như cảm biến nhiệt độ, ánh Sáng, V.V
Nguồn cung cấp (Power Pins): Bao gồm các chân 5V, 3.3V và GND đề cấp điện cho các thiết bị ngoại vị kết nội với Arduino
2.2.1 Nguyên lý hoạt động
Viết chương trình: Ban str dung phan mém Arduino IDE dé viết các chương trình (sketch) bang ngôn ngữ lập trình dựa trên C/C++ Chương trình này sẽ mô tả các tác
vu ma ban muon Arduino thực hiện
Bién dich: Khi ban nhan nut "Upload" trén Arduino IDE, chuong trình sẽ được biên dịch thành mã máy, một dạng mã mả vi điều khiên có thể hiểu được
Tải chương trình lên Arduino: Mã máy được tải lên bộ nhớ flash của vi điều khiến ATmega328P thông qua cổng USB
Thực thi chương trình: Sau khi chương trình được tải lên, ví điều khiển sẽ bắt đầu thực thi các lệnh theo thứ tự được viết trong chương trình
Tương tác với các thành phần ngoại vi: Arduino sé doc dữ liệu từ các cảm biến thông qua các chân analog, sau đó xử lý dit liu va điều khiên các thiết bị xuất như động cơ, đèn LED thông qua các chan digital
2.3 Module GPS-NEO6M
Trang 9
Hinh 2.2 Module GPS-NEO6M
*Chân kết nối:
VCC: Chân cung cấp điện áp nguồn Thường yêu cầu điện áp từ 3.3V đến 5V
GND: Chân nối đất (Ground), kết nối với hệ thông đất của thiết bị
TXD: Chân truyền đữ liệu (Transmit Data) từ mô-đun GPS Đây là chân gửi đữ liệu GPS ra ngoài
RXD: Chân nhận dữ liệu (Recerve Data) đề nhận lệnh hoặc dữ liệu từ vi điều khiển hoặc thiết bị điều khiến
ANT: Kết nối anten GPS
PPS: Xung xung mỗi giây
#Thông số kĩ thuật
Chip GPS: U-blox NEO-6M
Điện áp cung cấp VCC: 3.3V hoặc 5V
Dòng tiêu thụ: Từ 35mA — 45Ma
Trang 10Tần số hoạt động GPS: 1575,42Mhz
Độ chính xác vị trí: Khoảng 2,5 mét
Thời gian khởi tạo: Từ 1s — 35s
Do phan giai toa độ: 0,0001 độ
Kích thước modul: Khoảng 25 x 25mm
*Các đặc tính nỗi bật:
Hỗ trợ nhiều vệ tỉnh: Hỗ trợ hệ thống GPS của Mỹ với khả năng nhận tín hiệu từ
nhiều vệ tính khác nhau
Khả năng cấu hình: Có thể cấu hình thông qua giao diện serial với các lệnh AT dé diéu chính cài dat và các thông SỐ, hoạt động
Hiệu suất cao: Cung cấp hiệu suất tốt trong việc định vị và đo lường, phù hợp cho nhiều ứng dụng yêu cầu độ chính xác cao
Nguyên lý hoạt động
Nhận tín hiệu từ vệ tính:
Vệ tỉnh GPS: Hệ thống GPS bao gồm một mạng lưới các vệ tinh orbiting quanh trái đất, thường khoảng 24 vệ tinh Các vệ tỉnh này phát đi tín hiệu liên tục bao gồm thông tin về thời gian và vị trí của chúng
Anten: Mô-đun GPS GY-NEO-6M V2 có một chân kết nối với anten GPS (ANT) để
nhận tín hiệu tử các vệ tĩnh GPS
Tính toán khoảng cách:
Định vị bằng 3 hoặc 4 vệ tỉnh: Đề xác định vị trí chính xác trên mặt đất, mô- -dun GPS
su dung ít nhất ba vệ tỉnh đề tính toán vi trí hai chiều (kinh độ và vĩ độ) và ít nhất bốn
vệ tinh đề tính toán ba chiều (thêm chiều cao) Sự giao nhau của các vòng tròn bán kính tương ứng với khoảng cách đến các vệ tỉnh xác định vị trí của mô-đun GPS trên
bề mặt trái đất
Dữ liệu vị trí: Mô-đun GPS giải mã tín hiệu và tính toán vị trí chính xác, sau đó cung cấp thông tin này dưới dạng dữ liệu NMEA (National Marine Electronies
Association), ma vi điều khiên hoặc hệ thống có thê đọc được
Cung cấp dữ liệu:
Đầu ra dữ liệu: Dữ liệu vị trí, tốc độ, và thời gian được gửi ra qua chân TXD (Transmit Data) của mô-đun GPS dưới dạng các câu lệnh NMEA Các câu lệnh NMEA chứa thông tin về vĩ độ, kinh độ, độ cao, tốc độ, và thời gian hiện tại
Cấu hình và điều khiến:
Giao tiếp Serial: Các lệnh cầu hỉnh có the được gửi đến mô-đun GPS qua chân RXD
dé thay đổi các cài đặt như tốc độ baud, tần suất cập nhật, và chế độ hoạt động Day noi
Dây nối jumper là loại dây thường được sử dụng trong các mạch điện tử, đặc biệt là trong các dự án với bảng mạch thử nghiệm (breadboard) và vi diéu khién nhu Arduino, Raspberry Pi
Tac dung chính của dây nối j jumper :
Kết nối các thành phần điện tử: Dây nối Jumper g1úp kết nối các thành phần điện tử lại với nhau mà không cần hàn, giúp việc thiết kế và thử nghiệm mach tro nén dé dang
và tiện lợi hơn
Trang 11Thử nghiệm mạch điện: Trên breadboard, bạn có thê dễ dàng thay đôi kết nối của mạch điện để thử nghiệm các cầu hình khác nhau mà không cân phải hàn dây cô định
Dễ dàng thay đổi và sửa chữa: Dây noi jumper giup việc sửa chữa hoặc thay đôi mach dé dang hon, vi ban chỉ cần rút dây ra và cắm lại theo cách khác mà không cần hàn lại mạch
Phân tích tín hiệu: Khi kết nối với các thiết bị như oscilloscope, day jumper co thé được sử dụng dé dua tin hiệu từ mạch điện tử đến thiết bị đo lường
Tiết kiệm thời gian: Sử dụng dây nối jumper giúp tiết kiệm thời gian khi lắp ráp mạch, đặc biệt là trong các dự án thử nghiệm va giáo dục
Hình 2.3 : Dây nói jumber
Trang 12CHUONG 3: NOI DUNG THỰC HIEN
3.1 Sơ đồ khối
Z+» R»ã&
3.2 Nguyên lý hoạt động:
m6-dun yéu cau)
Data) của Arduino
Data) của Arduino
> Nhận tín hiệu vệ tĩnh: Mô-đun GPS GY-NEO-6MI V2 nhận tín hiệu từ các vệ tinh GPS Để mô-đun hoạt động chính xác, anten ŒPS cần được kết nỗi và đặt ở một vị trí có tín hiệu vệ tính tốt
o_ Mô-đun GPS nhận các tín hiệu từ ít nhất ba hoặc bốn vé tinh dé tính toán
vị trí địa lý (vĩ độ, kinh độ, và độ cao)
Trang 13o Tin hiéu GPS bao gồm thông tin về thời gian và vi tri của các vệ tính, từ
đó mô-đun GPS tính toán khoảng cách đến các vệ tính và xác định vị trí của nó trén mat dat
> Đầu ra dữ liệu:
chan TXD
và được gửi đên chân RXD của Arduino
> Nhận dữ liệu:
đọc từ công serial mà Ardurno đã câu hình
> Xử lý và hiển thị:
lý trên Arduino Arduino có thê dùng thư viện như TinyGPS hoặc
Adafruit GPS đề phân tích đữ liệu NMEA và trích xuất thông tin hữu
ích như vĩ độ, kinh độ, tốc độ, và thời gian
thiết bị khác hoặc hệ thống để xử ly thêm
3.3 Code của cân điện tử
#include "HX711.h"
#include <LiquidCrystal.h>
LiquidCrystal Ied(11, 12, 5, 4, 3, 2);
#define DOUT AO
#define CLK Al
#define TARE BUTTON 10
HX711 scale;
float calibration factor = -2100.00;//trong sé
float oldCal_ factor;
Trang 14float oldWeight;
void setup() {
pinMode(TARE BUTTON, INPUT PULLUP);
Serial begin(9600);
scale.set_scale();
scale.begin (DOUT, CLK);
scale.tare(); //dat lai gia tri vé 0
//doc gia tri ban dau
long zero factor = scale.read_average();
Icd begin(16, 2);
Ied.print(" CAN DIEN TU");
lcd.setCursor(0, 1);
delay(3000);
Icd.clear();
}
void loop() {
// Kiém tra néu mit tare duoc nhan
if (digitalRead(TARE BUTTON) = LOW) {
scale.tare();
delay(500);
}
//điều chỉnh theo trọng số ban đầu
// lay giá trị trung bình của 10 lần đọc
float weight = scale.get_units(10);
// Lay gia tri trung gian dé lam tron theo quy tac
int netWeight = 0 ;
if (weight >= 5.0) {
netWeight = (weight * 10.0);
}
else if (weight > -0.01 && weight <= 0.01) {