Mục lục:

Phao thông minh [GPS, Radio (NRF24) và một mô-đun thẻ SD]: 5 bước (có hình ảnh)
Phao thông minh [GPS, Radio (NRF24) và một mô-đun thẻ SD]: 5 bước (có hình ảnh)

Video: Phao thông minh [GPS, Radio (NRF24) và một mô-đun thẻ SD]: 5 bước (có hình ảnh)

Video: Phao thông minh [GPS, Radio (NRF24) và một mô-đun thẻ SD]: 5 bước (có hình ảnh)
Video: DA58: ĐỌC VÀ TRUYỀN DỮ LIỆU CẢM BIẾN THÔNG QUA MODULE NRF24L01 VÀ ARDUINO 2024, Tháng bảy
Anonim
Image
Image

Loạt Phao Thông minh này biểu thị nỗ lực (đầy tham vọng) của chúng tôi trong việc chế tạo một chiếc phao khoa học có thể thực hiện các phép đo có ý nghĩa về biển bằng các sản phẩm bán sẵn. Đây là hướng dẫn hai trong bốn hướng dẫn - hãy đảm bảo bạn đã cập nhật và nếu bạn cần giới thiệu nhanh về dự án, hãy xem bản tóm tắt của chúng tôi.

Phần 1: Thực hiện các phép đo sóng và nhiệt độ

Trong hướng dẫn này, chúng tôi chỉ cho bạn cách lấy dữ liệu GPS, lưu trữ trên thẻ SD và gửi đi đâu đó bằng radio.

Chúng tôi đã làm điều này để có thể theo dõi vị trí của Phao trên biển của chúng tôi. Đài có nghĩa là chúng ta có thể xem nó từ xa và thẻ SD có nghĩa là nếu chẳng may có thứ gì đó bị hỏng và nó đi lang thang, chúng ta có thể tải xuống dữ liệu mà nó thu thập được trong chuyến du ngoạn ngoài kế hoạch - nếu chúng ta có thể lấy nó!

Quân nhu

Mô-đun GPS - Amazon

Mô-đun thẻ SD - Amazon

Thẻ SD - Amazon

2 mô-đun Radio X (NRF24L01 +) - Amazon

2 X Arduino - Amazon

Bước 1: Lấy dữ liệu GPS

Gửi dữ liệu GPS qua Radio
Gửi dữ liệu GPS qua Radio

Phao thông minh thực hiện các phép đo cảm biến khi nó nằm dưới biển, bao gồm cả vị trí GPS và ngày giờ. Hãy xem sơ đồ cho thấy cách chúng tôi thiết lập mạch. Mô-đun GPS giao tiếp thông qua kết nối nối tiếp, vì vậy chúng tôi đang sử dụng thư viện nối tiếp phần mềm Arduino cũng như thư viện GPS nhỏ để giao tiếp với nó. Những thư viện này làm cho mọi thứ trở nên siêu đơn giản. Hãy để bạn xem qua mã…

#bao gồm

#include // Đối tượng TinyGPS ++ TinyGPSPlus gps; // Kết nối nối tiếp với thiết bị GPS SoftwareSerial ss (4, 3); struct dataStruct {vĩ độ kép; kinh độ kép; ngày dài không dấu; lâu không dấu; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); } void loop () {while (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); printResults (); }}} void getInfo () {if (gps.location.isValid ()) {gpsData.latitude = gps.location.lat (); gpsData.longitude = gps.location.lng (); } else {Serial.println ("Vị trí không hợp lệ"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Ngày không hợp lệ"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Thời gian không hợp lệ"); }} void printResults () {Serial.print ("Vị trí:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Ngày:"); Serial.print (gpsData.date); Serial.print ("Thời gian:"); Serial.print (gpsData.time); Serial.println (); }

(Xem video để biết mã này tại

Bước 2: Gửi dữ liệu GPS qua Radio

Gửi dữ liệu GPS qua Radio
Gửi dữ liệu GPS qua Radio

Giả sử phao đang ở trên biển để đo đạc, nhưng chúng ta muốn xem dữ liệu mà không bị ướt chân hoặc mang phao vào bờ. Để nhận các phép đo từ xa, chúng tôi đang sử dụng mô-đun vô tuyến được kết nối với Arduino trên cả hai mặt của giao tiếp. Trong tương lai, chúng tôi sẽ thay thế Arduino phía đầu thu bằng một pi mâm xôi. Radio hoạt động tương tự với cả hai giao diện này nên việc hoán đổi chúng qua lại khá đơn giản.

Mô-đun vô tuyến giao tiếp bằng SPI, yêu cầu nhiều kết nối hơn I2C nhưng vẫn thực sự dễ sử dụng do có thư viện NRF24. Sử dụng mô-đun GPS cho các phép đo cảm biến, chúng tôi truyền dữ liệu của nó từ Arduino này sang Arduino khác. Chúng tôi sẽ kết nối GPS và mô-đun vô tuyến với Arduino và ở phía bên kia là Arduino với mô-đun vô tuyến - hãy xem sơ đồ.

Hệ thống điều khiển

#bao gồm

#include #include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); Đài RF24 (8, 7); // CE, CSN struct dataStruct {vĩ độ kép; kinh độ kép; ngày dài không dấu; lâu không dấu; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); Serial.println ("Thiết lập đài"); // Thiết lập bộ phát radio radio.begin (); radio.openWritingPipe (0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.stopListening (); radio.enableDynamicPayloads (); radio.powerUp (); Serial.println ("Đang bắt đầu gửi"); } void loop () {while (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); radio.write (& gpsData, sizeof (gpsData)); }}} void getInfo () {if (gps.location.isValid ()) {gpsData.longitude = gps.location.lng (); gpsData.latitude = gps.location.lat (); } else {gpsData.longitude = 0.0; gpsData.latitude = 0.0; } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {gpsData.date = 0; } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {gpsData.time = 0; }}

NGƯỜI NHẬN

#bao gồm

#include #include RF24 radio (8, 7); // CE, CSN struct dataStruct {vĩ độ kép; kinh độ kép; ngày dài không dấu; lâu không dấu; } gpsData; void setup () {Serial.begin (115200); // Thiết lập bộ thu radio radio.begin (); radio.openReadingPipe (1, 0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.startListening (); radio.enableDynamicPayloads (); radio.powerUp (); } void loop () {if (radio.available ()) {radio.read (& gpsData, sizeof (gpsData)); Serial.print ("Vị trí:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Ngày:"); Serial.print (gpsData.date); Serial.print ("Thời gian:"); Serial.print (gpsData.time); Serial.println ();}}

(Xem video để biết mã này tại

Bước 3: Lưu trữ dữ liệu bằng mô-đun thẻ SD

Lưu trữ dữ liệu bằng mô-đun thẻ SD
Lưu trữ dữ liệu bằng mô-đun thẻ SD

Mô-đun bộ đàm khá đáng tin cậy, nhưng đôi khi bạn cần có phương án dự phòng trong trường hợp bị cắt điện ở phía đầu thu hoặc nếu bộ đàm di chuyển ra khỏi phạm vi phủ sóng. Kế hoạch dự phòng của chúng tôi là mô-đun thẻ SD cho phép chúng tôi lưu trữ dữ liệu mà chúng tôi thu thập. Số lượng dữ liệu được thu thập không lớn nên ngay cả một thẻ SD nhỏ cũng có thể dễ dàng lưu trữ lượng dữ liệu trong ngày.

#bao gồm

#include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); struct dataStruct {vĩ độ kép; kinh độ kép; ngày dài không dấu; lâu không dấu; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); if (! SD.begin (5)) {Serial.println ("Thẻ bị lỗi hoặc không có"); trở lại; } Serial.println ("thẻ được khởi tạo."); File dataFile = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.println ("Vĩ độ, Kinh độ, Ngày, Giờ"); dataFile.close (); } else {Serial.println ("nope khong mở duoc file"); }} void loop () {while (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); printResults (); saveInfo (); }}} void getInfo () {if (gps.location.isValid ()) {gpsData.latitude = gps.location.lat (); gpsData.longitude = gps.location.lng (); } else {Serial.println ("Vị trí không hợp lệ"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Ngày không hợp lệ"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Thời gian không hợp lệ"); }} void printResults () {Serial.print ("Vị trí:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Ngày:"); Serial.print (gpsData.date); Serial.print ("Thời gian:"); Serial.print (gpsData.time); Serial.println (); } void saveInfo () {File dataFile = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.print (gpsData.latitude); dataFile.print (","); dataFile.print (gpsData.longitude); dataFile.print (","); dataFile.print (gpsData.date); dataFile.print (","); dataFile.println (gpsData.time); dataFile.close (); } else {Serial.println ("nope no datafile"); }}

(Chúng ta nói qua mã này trong video

Bước 4: Gửi và lưu trữ dữ liệu GPS

Gửi và lưu trữ dữ liệu GPS
Gửi và lưu trữ dữ liệu GPS
Gửi và lưu trữ dữ liệu GPS
Gửi và lưu trữ dữ liệu GPS

Bước 5: Cảm ơn

Cảm ơn!
Cảm ơn!

Đăng ký vào danh sách gửi thư của chúng tôi!

Phần 1: Tạo sóng và đo nhiệt độ

Phần 2: Đài phát thanh GPS NRF24 và thẻ SD

Phần 3: Lập lịch cấp nguồn cho Phao

Phần 4: Triển khai Phao

Đề xuất: