- Vật liệu thiết yếu
- Lá chắn Arduino LoRa
- Chế tạo PCB cho LoRa Shield
- Lắp ráp PCB
- Kết nối mô-đun GPS với Máy phát LoRa
- Lập trình Arduino LoRa làm máy phát GPS
- Lập trình Arduino LoRa làm bộ thu GPS
- Arduino LoRa GPS Tracker Hoạt động
Biết được nơi ở của một đối tượng / người cụ thể luôn là điều an ủi. Ngày nay, GPS đang được sử dụng rộng rãi trong các ứng dụng quản lý tài sản như Theo dõi phương tiện, Theo dõi đội xe, Giám sát tài sản, Theo dõi người, Theo dõi vật nuôi, v.v. Đối với bất kỳ thiết bị theo dõi nào, việc cân nhắc thiết kế chính sẽ là về tuổi thọ pin và phạm vi giám sát của nó. Xét cả hai, LoRa có vẻ là sự lựa chọn hoàn hảo vì nó có mức tiêu thụ điện năng rất thấp và có thể hoạt động trên quãng đường dài. Vì vậy, trong hướng dẫn này, chúng tôi sẽ xây dựng hệ thống theo dõi GPS bằng LoRa, hệ thống sẽ bao gồm một Bộ phát sẽ đọc thông tin vị trí từ mô-đun GPS NEO-6Mvà truyền nó không dây qua Lora. Bộ phận thu sẽ nhận thông tin và hiển thị trên màn hình LCD 16x2. Nếu bạn chưa quen với LoRa, hãy tìm hiểu về Công nghệ LoRa và LoRaWAN và cách nó có thể được giao tiếp với Arduino trước khi tiếp tục.
Để giữ mọi thứ đơn giản và tiết kiệm chi phí cho dự án này, chúng tôi sẽ không sử dụng cổng LoRa. Thay vào đó sẽ thực hiện giao tiếp ngang hàng giữa máy phát và máy thu. Tuy nhiên, nếu bạn muốn có phạm vi toàn cầu, bạn có thể thay thế bộ thu bằng Cổng LoRa. Ngoài ra, vì tôi đến từ Ấn Độ, chúng tôi sẽ sử dụng mô-đun 433MHz LoRa là băng tần ISM hợp pháp ở đây, do đó bạn có thể phải chọn mô-đun dựa trên quốc gia của mình. Điều đó đang được nói, chúng ta hãy bắt đầu…
Vật liệu thiết yếu
- Arduino Lora Shield - 2Nos (thiết kế PCB có sẵn để tải xuống)
- Arduino Uno - 2Nos
- Mô-đun LoRa SX1278 433MHz - 2
- 433MHz Lora Antenna
- Mô-đun GPS NEO-6M
- Mô-đun màn hình LCD
- Kết nối dây
Lá chắn Arduino LoRa
Để giúp việc xây dựng mọi thứ với LoRa dễ dàng hơn, chúng tôi đã thiết kế một Lá chắn Arduino LoRa cho Dự án này. Tấm chắn này bao gồm SX1278 433MHz với bộ điều chỉnh 3.3V được thiết kế sử dụng bộ điều chỉnh Biến trở LM317. Shield sẽ trực tiếp nằm trên Arduino cung cấp khả năng LoRa cho nó. Lá chắn LoRa này sẽ hữu ích khi bạn phải triển khai các nút cảm biến LoRa hoặc để tạo mạng lưới LoRa. Sơ đồ mạch đầy đủ cho LoRa Arduino Shield được đưa ra bên dưới
Shield bao gồm một giắc cắm 12V khi được cấp nguồn sẽ được sử dụng để điều chỉnh 3.3V cho mô-đun LoRa sử dụng bộ điều chỉnh LM317. Nó cũng sẽ được sử dụng để cấp nguồn cho Arduino UNO thông qua chân Vin và nguồn 5V được điều chỉnh từ Arduino được sử dụng để cấp nguồn cho màn hình LCD trên tấm chắn. Điện áp đầu ra của LM317 được cố định là 3,3V bằng cách sử dụng điện trở R1 và R2 tương ứng, giá trị của các điện trở này có thể được tính bằng Máy tính LM317.
Vì mô-đun LoRa tiêu thụ điện năng rất thấp, nó cũng có thể được cấp nguồn trực tiếp từ chân 3,3V của Arduino, nhưng chúng tôi đã sử dụng thiết kế bộ điều chỉnh bên ngoài vì LM317 đáng tin cậy hơn bộ điều chỉnh điện áp trên bo mạch. Tấm chắn cũng có một chiết áp có thể được sử dụng để điều chỉnh độ sáng của màn hình LCD. Kết nối của mô-đun LoRa với Arduino tương tự như những gì chúng tôi đã làm trong hướng dẫn Giao diện Arduino với Lora trước đây.
Chế tạo PCB cho LoRa Shield
Bây giờ mạch của chúng ta đã sẵn sàng, chúng ta có thể tiến hành thiết kế PCB của mình. Tôi mở bằng phần mềm thiết kế PCB và bắt đầu hình thành các bản nhạc của mình. Sau khi thiết kế PCB hoàn thành, bảng của tôi trông giống như hình bên dưới
Bạn cũng có thể tải xuống các tệp thiết kế ở định dạng GERBER và chế tạo nó để có được bảng của bạn. Liên kết tệp Gerber được cung cấp bên dưới
Tải xuống tệp Gerber cho Arduino LoRa Shield
Bây giờ, Thiết kế của chúng tôi đã sẵn sàng, đã đến lúc chế tạo chúng. Để hoàn thành PCB khá dễ dàng, bạn chỉ cần làm theo các bước dưới đây
Bước 1: Truy cập www.pcbgogo.com, đăng ký nếu đây là lần đầu tiên của bạn. Sau đó, trong tab PCB Prototype, nhập kích thước của PCB của bạn, số lớp và số lượng PCB bạn yêu cầu. Giả sử PCB là 80cm × 80cm, bạn có thể đặt kích thước như hình dưới đây.
Bước 2: Tiến hành bằng cách nhấp vào nút Trích dẫn ngay . Bạn sẽ được đưa đến một trang nơi đặt một vài thông số bổ sung nếu cần thiết như vật liệu được sử dụng khoảng cách theo dõi, v.v. Nhưng hầu hết các giá trị mặc định sẽ hoạt động tốt. Điều duy nhất mà chúng ta phải xem xét ở đây là giá cả và thời gian. Như bạn có thể thấy Thời gian xây dựng chỉ là 2-3 ngày và nó chỉ tốn $ 5 cho PSB của chúng tôi. Sau đó, bạn có thể chọn một phương thức vận chuyển ưa thích dựa trên yêu cầu của bạn.
Bước 3: Bước cuối cùng bạn tải file Gerber lên và tiến hành thanh toán. Để đảm bảo quá trình diễn ra suôn sẻ, PCBGOGO xác minh xem tệp Gerber của bạn có hợp lệ hay không trước khi tiến hành thanh toán. Bằng cách này, bạn có thể chắc chắn rằng PCB của bạn được chế tạo thân thiện và sẽ đến tay bạn theo cam kết.
Lắp ráp PCB
Sau khi bảng được đặt hàng, nó đã đến tay tôi sau một vài ngày mặc dù chuyển phát nhanh trong một hộp đóng gói tốt được dán nhãn gọn gàng và giống như mọi khi chất lượng của PCB thật tuyệt vời.
Tôi bật que hàn của mình và bắt đầu lắp ráp Bo mạch. Vì Dấu chân, miếng đệm, vias và tấm lụa hoàn toàn có hình dạng và kích thước phù hợp nên tôi không gặp vấn đề gì khi lắp ráp bảng. Sau khi quá trình hàn hoàn tất, bảng trông giống như bên dưới, như bạn có thể thấy nó vừa khít với Bảng Arduino Uno của tôi.
Vì dự án của chúng tôi có một bộ phát Arduino LoRa và một bộ thu Arduino LoRa, chúng tôi sẽ cần hai tấm chắn một cho bộ thu và một cho bộ phát. Vì vậy, tôi đã tiến hành hàn một PCB khác, cả PCB với mô-đun LoRa và màn hình LCD được hiển thị bên dưới.
Như bạn có thể thấy chỉ có bộ thu LoRa shied (bên trái) có màn hình LCD kết nối với nó, phía bộ phát chỉ bao gồm mô-đun LoRa. Chúng tôi sẽ kết nối thêm một mô-đun GPS với phía máy phát như được thảo luận bên dưới.
Kết nối mô-đun GPS với Máy phát LoRa
Mô-đun GPS được sử dụng ở đây là mô-đun GPS NEO-6M, mô-đun có thể hoạt động với công suất rất thấp với hệ số hình thức nhỏ nên phù hợp cho các ứng dụng theo dõi. Tuy nhiên, có nhiều mô-đun GPS khác có sẵn mà chúng tôi đã sử dụng trước đây trong các loại ứng dụng theo dõi phương tiện và phát hiện vị trí.
Mô-đun hoạt động ở 5V và giao tiếp bằng cách sử dụng giao tiếp Nối tiếp với tốc độ 9600 baud. Do đó, chúng tôi cấp nguồn cho mô-đun vào chân + 5V của Arduino và kết nối chân Rx và Tx với chân kỹ thuật số D4 và D3 tương ứng như hình dưới đây
Các chân D4 và D3 sẽ được cấu hình như các chân nối tiếp phần mềm. Sau khi được cấp nguồn, mô-đun GPS NEO-6M sẽ tìm kiếm kết nối vệ tinh và sẽ tự động xuất tất cả thông tin theo thứ tự. Dữ liệu đầu ra này sẽ ở định dạng câu NMEA, viết tắt của Hiệp hội Điện tử Hàng hải Quốc gia và là định dạng tiêu chuẩn cho tất cả các thiết bị GPS. Để tìm hiểu thêm về cách sử dụng GPS với Arduino, hãy nhấp vào liên kết. Dữ liệu này sẽ lớn và hầu hết thời gian chúng ta phải phân tích nó theo cách thủ công để có được kết quả mong muốn. Thật may mắn cho chúng tôi là có một thư viện tên là TinyGPS ++ thực hiện tất cả các công việc nặng nhọc cho chúng tôi. Bạn cũng phải thêm thư viện LoRa nếu bạn chưa thực hiện. Vì vậy, chúng ta hãy tải xuống cả thư viện từ liên kết bên dưới
Tải xuống Thư viện Arduino TinyGPS ++
Tải xuống Thư viện Arduino LoRa
Liên kết sẽ tải xuống tệp ZIP sau đó có thể được thêm vào Arduino IDE bằng cách làm theo lệnh Sketch -> Bao gồm Thư viện -> Thư viện Add.ZIP . Khi bạn đã sẵn sàng với phần cứng và thư viện, chúng tôi có thể tiến hành Lập trình bảng Arduino của mình.
Lập trình Arduino LoRa làm máy phát GPS
Như chúng ta đã biết LoRa là một thiết bị thu phát, có nghĩa là nó có thể vừa gửi và vừa nhận thông tin. Tuy nhiên, trong dự án theo dõi GPS này, chúng tôi sẽ sử dụng một mô-đun làm bộ phát để đọc thông tin phối hợp từ GPS và gửi nó, trong khi mô-đun kia làm bộ thu sẽ nhận các giá trị tọa độ GPS và in nó trên màn hình LCD. Các chương trình cho cả Transmitter và module Receiver có thể được tìm thấy ở dưới cùng của trang này. Đảm bảo rằng bạn đã cài đặt các thư viện cho mô-đun GPS và mô-đun LoRa trước khi tiếp tục với mã. Trong phần này chúng ta sẽ xem xét mã máy phát.
Giống như mọi khi, chúng tôi bắt đầu chương trình bằng cách thêm các thư viện và chân cần thiết. Ở đây, thư viện SPI và LoRa được sử dụng cho giao tiếp LoRa và thư viện TinyGPS ++ và SoftwareSerial được sử dụng cho giao tiếp GPS. Mô-đun GPS trong phần cứng của tôi được kết nối với chân 3 và 4 và do đó chúng tôi cũng xác định điều đó như sau
#include
Bên trong chức năng thiết lập, chúng tôi bắt đầu màn hình nối tiếp và cũng khởi tạo chuỗi phần mềm dưới dạng “gpsSerial ” để giao tiếp với mô-đun GPS NEO-6M của chúng tôi. Cũng lưu ý rằng tôi đã sử dụng 433E6 (433 MHz) làm tần số hoạt động LoRa của mình, bạn có thể phải thay đổi nó dựa trên loại mô-đun bạn đang sử dụng.
void setup () { Serial.begin (9600); gpsSerial.begin (9600); while (! nối tiếp); Serial.println ("LoRa Sender"); if (! LoRa.begin (433E6)) { Serial.println ("Khởi động LoRa không thành công!"); trong khi (1); } LoRa.setTxPower (20); }
Bên trong chức năng vòng lặp, chúng tôi kiểm tra xem mô-đun GPS có đưa ra một số dữ liệu hay không, nếu có thì chúng tôi đọc tất cả dữ liệu và diễn đạt bằng hàm gps.encode. Sau đó, chúng tôi kiểm tra xem chúng tôi đã nhận được dữ liệu vị trí hợp lệ hay chưa bằng cách sử dụng hàm gps.location.isValid () .
while (gpsSerial.available ()> 0) if (gps.encode (gpsSerial.read ())) if (gps.location.isValid ()) {
Nếu chúng tôi đã nhận được một vị trí hợp lệ thì chúng tôi có thể bắt đầu truyền các giá trị kinh độ và vĩ độ. Hàm gps.location.lat () cho tọa độ vĩ độ và hàm gps.location.lng () cho tọa độ kinh độ. Vì chúng tôi sẽ in chúng trên màn hình LCD 16 * 2, chúng tôi phải đề cập đến thời điểm chuyển sang dòng thứ hai, do đó chúng tôi sử dụng từ khóa “c” để đặt máy thu để in thông tin sau trên dòng 2.
LoRa.beginPacket (); LoRa.print ("Lat:"); LoRa.print (gps.location.lat (), 6); LoRa.print ("c"); LoRa.print ("Dài:"); LoRa.print (gps.location.lng (), 6); Serial.println ("Đã gửi qua LoRa"); LoRa.endPacket ();
Lập trình Arduino LoRa làm bộ thu GPS
Mã máy phát đã gửi giá trị tọa độ vĩ độ và kinh độ, bây giờ máy thu phải đọc các giá trị này và in trên màn hình LCD. Tương tự ở đây, chúng tôi thêm thư viện cho mô-đun LoRa và màn hình LCD và xác định các chân mà màn hình LCD được kết nối và cũng khởi tạo mô-đun LoRa như trước.
#include
Bên trong hàm vòng lặp, chúng ta lắng nghe các gói dữ liệu tạo thành mô-đun LoRa bộ truyền và kích thước của nó bằng cách sử dụng hàm LoRa.parsePacket () và lưu trữ nó trong biến “ packetSize ”. Nếu các gói được nhận thì chúng tôi tiến hành đọc chúng dưới dạng ký tự và in chúng trên màn hình LCD. Chương trình cũng kiểm tra xem mô-đun LoRa có gửi từ khóa “c” hay không, nếu có thì in thông tin còn lại trên dòng thứ hai.
if (packetSize) {// Nếu gói nhận được Serial.print ("Gói đã nhận '"); lcd.clear (); while (LoRa.available ()) { char incoming = (char) LoRa.read (); if (incoming == 'c') { lcd.setCursor (0, 1); } else { lcd.print (đến); } }
Arduino LoRa GPS Tracker Hoạt động
Khi phần cứng và chương trình đã sẵn sàng, chúng tôi có thể tải lên cả hai mã trong các mô-đun Arduino tương ứng và cấp nguồn cho chúng bằng bộ chuyển đổi 12V hoặc cáp USB. Khi Máy phát được cấp nguồn, bạn có thể nhận thấy đèn LED màu xanh lam trên mô-đun GPS nhấp nháy, điều này cho thấy rằng mô-đun đang tìm kiếm kết nối vệ tinh để có được sự phối hợp. Trong khi đó, mô-đun Bộ thu sẽ bật nguồn và hiển thị thông báo chào mừng trên màn hình LCD. Sau khi máy phát gửi thông tin, mô-đun máy thu sẽ hiển thị thông tin trên màn hình LCD của nó như hình dưới đây
Bây giờ bạn có thể di chuyển xung quanh với mô-đun GPS của bộ phát và bạn sẽ nhận thấy bộ thu đang cập nhật vị trí của nó. Để biết chính xác mô-đun máy phát đang ở đâu, bạn có thể đọc các giá trị kinh độ và vĩ độ hiển thị trên màn hình LCD và nhập nó vào bản đồ Google để có được vị trí trên bản đồ như hình dưới đây.
Hoạt động hoàn chỉnh cũng có thể được tìm thấy trong video ở cuối trang này. Hy vọng bạn đã hiểu hướng dẫn và thích xây dựng một cái gì đó hữu ích với nó. Nếu bạn có bất kỳ nghi ngờ nào, bạn có thể để lại chúng trong phần bình luận bên dưới hoặc sử dụng diễn đàn của chúng tôi cho các truy vấn kỹ thuật khác.