Mục lục:
- Quân nhu
- Bước 1: Lấy dữ liệu GPS
- Bước 2: Gửi dữ liệu GPS qua Radio
- Bước 3: Lưu trữ dữ liệu bằng mô-đun thẻ SD
- Bước 4: Gửi và lưu trữ dữ liệu GPS
- Bước 5: Cảm ơn
Video: Phao thông minh [GPS, Radio (NRF24) và một mô-đun thẻ SD]: 5 bước (có hình ảnh)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:30
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
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
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
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
Bước 5: 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:
Đèn LED để bàn thông minh - Chiếu sáng thông minh W / Arduino - Neopixels Workspace: 10 bước (có hình ảnh)
Đèn LED để bàn thông minh | Chiếu sáng thông minh W / Arduino | Neopixels Workspace: Ngày nay chúng ta dành nhiều thời gian ở nhà, học tập và làm việc ảo, vậy tại sao không biến không gian làm việc của chúng ta trở nên tuyệt vời hơn với hệ thống chiếu sáng tùy chỉnh và thông minh dựa trên Arduino và Ws2812b LED. Sau đây tôi chỉ cho bạn cách xây dựng Smart của bạn Đèn LED để bàn
Biến điện thoại thông minh không sử dụng thành màn hình thông minh: 6 bước (có hình ảnh)
Biến điện thoại thông minh không sử dụng thành màn hình thông minh: Hướng dẫn Deze có trong het Engels, voor de Nederlandse versie klik hier Bạn có điện thoại thông minh (cũ) chưa sử dụng? Biến nó thành một màn hình thông minh bằng Google Trang tính và một số bút và giấy, bằng cách làm theo hướng dẫn từng bước dễ dàng này. Khi bạn hoàn thành
Phao thông minh [Tóm tắt]: 8 bước (có Hình ảnh)
Phao thông minh [Tóm tắt]: Tất cả chúng ta đều yêu thích cảnh biển. Với tư cách là một tập thể, chúng tôi đổ xô đến đó cho những kỳ nghỉ, để thưởng thức các môn thể thao dưới nước hoặc để kiếm sống. Nhưng bờ biển là một khu vực năng động chịu tác động của sóng. Mực nước biển dâng cao gặm nhấm các bãi biển và các sự kiện cực đoan mạnh mẽ như bão
Đồng hồ báo thức thông minh: Đồng hồ báo thức thông minh được làm bằng Raspberry Pi: 10 bước (có hình ảnh)
Đồng hồ báo thức thông minh: Đồng hồ báo thức thông minh được làm bằng Raspberry Pi: Bạn đã bao giờ muốn có một chiếc đồng hồ thông minh chưa? Nếu vậy, đây là giải pháp cho bạn! Tôi đã làm Đồng hồ báo thức thông minh, đây là đồng hồ mà bạn có thể thay đổi thời gian báo thức theo trang web. Khi chuông báo thức kêu, sẽ có một âm thanh (còi) và 2 đèn sẽ
Tháp pháo cổng 2 - Điều khiển tháp pháo chính: 9 bước (có Hình ảnh)
Portal 2 Turret - Master Turret Control: Dự án này là một phần mở rộng hoặc kết hợp lại của Portal Turret ban đầu của tôi trên Bảng hướng dẫn (Portal-2-Turret-Gun). Nó cũng có thể được sử dụng như một bộ điều khiển rẻ tiền để điều khiển bất cứ thứ gì sử dụng chip radio nRF24L01. Màn hình LCD đặc biệt hữu ích khi