Mục lục:
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-23 15:14
Thời tiết xấu luôn trông tồi tệ hơn qua cửa sổ
Chúng tôi luôn quan tâm đến việc theo dõi thời tiết địa phương của chúng tôi và những gì chúng tôi nhìn thấy ngoài cửa sổ. Chúng tôi cũng muốn kiểm soát tốt hơn hệ thống sưởi và A / C của mình. Xây dựng Trạm Thời tiết Cá nhân là một trải nghiệm học tập tuyệt vời. Khi hoàn thành việc xây dựng dự án này, bạn sẽ hiểu rõ hơn về cách thức hoạt động của truyền thông không dây, cách các cảm biến hoạt động và nền tảng Raspberry Pi có thể mạnh mẽ như thế nào. Với dự án này làm cơ sở và kinh nghiệm thu được, bạn sẽ có thể dễ dàng xây dựng các dự án phức tạp hơn trong tương lai.
Bước 1: Hóa đơn thiết bị cần thiết
1. Một Raspberry Pi
Bước đầu tiên là đặt tay trên bảng Raspberry Pi. Raspberry Pi là một máy tính bảng đơn chạy hệ điều hành Linux. Mục tiêu của nó là nâng cao kỹ năng lập trình và hiểu biết về phần cứng. Nó nhanh chóng được những người có sở thích và đam mê điện tử áp dụng cho các dự án sáng tạo.
2. I²C Shield cho Raspberry Pi
INPI2 (bộ điều hợp I2C) cung cấp cho Raspberry Pi 2/3 cổng I²C để sử dụng với nhiều thiết bị I²C. Nó có sẵn trên Dcube Store
3. Cảm biến độ ẩm, áp suất và nhiệt độ kỹ thuật số, BME280
BME280 là cảm biến độ ẩm, áp suất và nhiệt độ có thời gian phản hồi nhanh và độ chính xác tổng thể cao. Chúng tôi đã mua cảm biến này từ Dcube Store
4. Cáp kết nối I²C
Chúng tôi đã có sẵn cáp kết nối I²C tại Dcube Store
5. Cáp micro USB
Cáp micro USB Bộ nguồn là lựa chọn lý tưởng để cấp nguồn cho Raspberry Pi.
6. Diễn giải Truy cập Internet qua Bộ điều hợp EthernetCable / WiFi
Một trong những điều đầu tiên bạn cần làm là kết nối Raspberry Pi với Internet. Chúng tôi có thể kết nối bằng cáp Ethernet. Một khả năng khác là bạn có thể kết nối với mạng không dây bằng Bộ điều hợp không dây USB.
7. Cáp HDMI (Cáp hiển thị & kết nối)
Mọi màn hình HDMI / DVI và mọi TV sẽ hoạt động như một màn hình cho Pi. Nhưng nó là tùy chọn. Cũng không thể loại trừ khả năng truy cập từ xa (như-SSH). Bạn cũng có thể truy cập bằng phần mềm PUTTY.
Bước 2: Kết nối phần cứng để thiết lập
Làm cho mạch theo sơ đồ được hiển thị.
Trong khi học, chúng tôi đã nắm được rất kỹ những kiến thức cơ bản về điện tử liên quan đến kiến thức phần cứng và phần mềm. Chúng tôi muốn vẽ một sơ đồ điện tử đơn giản cho dự án này. Sơ đồ điện tử giống như một bản thiết kế cho điện tử. Lên một bản thiết kế và làm theo thiết kế một cách cẩn thận. Chúng tôi đã áp dụng một số điều cơ bản về điện tử ở đây. Logic đưa bạn từ A đến B, Trí tưởng tượng sẽ đưa bạn đến mọi nơi!
Kết nối giữa Raspberry Pi và I²C Shield
Trước hết, hãy lấy Raspberry Pi và đặt Tấm chắn I²C (có Cổng I²C hướng vào trong) trên đó. Nhấn nhẹ Shield qua các chân GPIO của Pi và chúng ta đã hoàn thành bước này dễ dàng như chiếc bánh (xem hình).
Kết nối của Cảm biến và Raspberry Pi
Lấy cảm biến và kết nối cáp I²C với nó. Đảm bảo rằng Đầu ra I²C LUÔN LUÔN kết nối với Đầu vào I²C. Điều tương tự cũng phải tuân theo đối với Raspberry Pi với tấm chắn I²C được gắn trên các chân GPIO. tùy chọn cắm và chạy. Không có thêm chân và vấn đề dây điện và do đó, sự nhầm lẫn không còn nữa. Chỉ cần tưởng tượng bạn đang ở trong mạng lưới dây và tham gia vào điều đó. Một sự nhẹ nhõm từ điều đó. Điều này làm cho mọi thứ không phức tạp.
Lưu ý: Dây màu nâu phải luôn đi theo kết nối Nối đất (GND) giữa đầu ra của một thiết bị và đầu vào của thiết bị khác
Kết nối Internet là một nhu cầu
Bạn có một sự lựa chọn ở đây thực sự. Bạn có thể kết nối Raspberry Pi bằng cáp LAN hoặc Bộ điều hợp USB Nano không dây cho Kết nối WIFI. Dù bằng cách nào, bản kê khai là kết nối với Internet.
Cấp nguồn cho mạch
Cắm cáp Micro USB vào giắc cắm nguồn của Raspberry Pi. Đấm lên và thì đấy! Mọi thứ vẫn tốt và chúng ta sẽ bắt đầu ngay lập tức.
Kết nối với màn hình
Chúng tôi có thể kết nối cáp HDMI với màn hình hoặc TV. Chúng ta có thể truy cập Raspberry Pi mà không cần kết nối nó với màn hình bằng -SSH (Truy cập dòng lệnh của Pi từ một máy tính khác). Bạn cũng có thể sử dụng phần mềm PUTTY cho việc đó. Tùy chọn này dành cho người dùng nâng cao nên chúng tôi sẽ không trình bày chi tiết ở đây.
Tôi nghe nói sắp có suy thoái kinh tế, tôi đã quyết định không tham gia
Bước 3: Lập trình Raspberry Pi trong Java
Mã Java cho cảm biến Raspberry Pi và BME280. Nó có sẵn trong kho lưu trữGithub của chúng tôi.
Trước khi tiếp tục mã, hãy đảm bảo bạn đã đọc các hướng dẫn được cung cấp trong tệp Readme và thiết lập Raspberry Pi của bạn theo nó. Sẽ chỉ mất một chút thời gian để làm như vậy. Trạm thời tiết cá nhân là một bộ thiết bị đo thời tiết được điều hành bởi một cá nhân, câu lạc bộ, hiệp hội hoặc thậm chí doanh nghiệp tư nhân. Các trạm thời tiết cá nhân có thể được vận hành chỉ vì sự vui thích và giáo dục của chủ sở hữu, nhưng nhiều nhà điều hành trạm thời tiết cá nhân cũng chia sẻ dữ liệu của họ với những người khác, bằng cách biên dịch dữ liệu và phân phối theo cách thủ công, hoặc thông qua việc sử dụng internet hoặc đài nghiệp dư.
Mã ở dạng đơn giản nhất mà bạn có thể tưởng tượng và bạn sẽ không gặp vấn đề gì với nó nhưng hãy hỏi nếu bạn có. Dù bạn biết cả ngàn điều, hãy hỏi người biết.
Bạn cũng có thể sao chép mã java đang hoạt động cho cảm biến này từ đây.
// Được phân phối với giấy phép tự do.// Sử dụng nó theo bất kỳ cách nào bạn muốn, lợi nhuận hoặc miễn phí, miễn là nó phù hợp với giấy phép của các tác phẩm liên quan. // BME280 // Mã này được thiết kế để hoạt động với Mô-đun Mini BME280_I2CS I2C có sẵn trên ControlEverything.com. //
nhập com.pi4j.io.i2c. I2CBus;
nhập com.pi4j.io.i2c. I2CDevice; nhập com.pi4j.io.i2c. I2CFactory; nhập java.io. IOException;
lớp công cộng BME280
{public static void main (String args ) throws Exception {// Tạo I2C bus I2CBus bus = I2CFactory.getInstance (I2CBus. BUS_1); // Lấy thiết bị I2C, địa chỉ I2C BME280 là 0x76 (108) I2CDevice device = bus.getDevice (0x76); // Đọc 24 byte dữ liệu từ địa chỉ 0x88 (136) byte b1 = new byte [24]; device.read (0x88, b1, 0, 24); // Chuyển đổi dữ liệu // hệ số tạm thời int dig_T1 = (b1 [0] & 0xFF) + ((b1 [1] & 0xFF) * 256); int dig_T2 = (b1 [2] & 0xFF) + ((b1 [3] & 0xFF) * 256); if (dig_T2> 32767) {dig_T2 - = 65536; } int dig_T3 = (b1 [4] & 0xFF) + ((b1 [5] & 0xFF) * 256); if (dig_T3> 32767) {dig_T3 - = 65536; } // hệ số áp suất int dig_P1 = (b1 [6] & 0xFF) + ((b1 [7] & 0xFF) * 256); int dig_P2 = (b1 [8] & 0xFF) + ((b1 [9] & 0xFF) * 256); if (dig_P2> 32767) {dig_P2 - = 65536; } int dig_P3 = (b1 [10] & 0xFF) + ((b1 [11] & 0xFF) * 256); if (dig_P3> 32767) {dig_P3 - = 65536; } int dig_P4 = (b1 [12] & 0xFF) + ((b1 [13] & 0xFF) * 256); if (dig_P4> 32767) {dig_P4 - = 65536; } int dig_P5 = (b1 [14] & 0xFF) + ((b1 [15] & 0xFF) * 256); if (dig_P5> 32767) {dig_P5 - = 65536; } int dig_P6 = (b1 [16] & 0xFF) + ((b1 [17] & 0xFF) * 256); if (dig_P6> 32767) {dig_P6 - = 65536; } int dig_P7 = (b1 [18] & 0xFF) + ((b1 [19] & 0xFF) * 256); if (dig_P7> 32767) {dig_P7 - = 65536; } int dig_P8 = (b1 [20] & 0xFF) + ((b1 [21] & 0xFF) * 256); if (dig_P8> 32767) {dig_P8 - = 65536; } int dig_P9 = (b1 [22] & 0xFF) + ((b1 [23] & 0xFF) * 256); if (dig_P9> 32767) {dig_P9 - = 65536; } // Đọc 1 byte dữ liệu từ địa chỉ 0xA1 (161) int dig_H1 = ((byte) device.read (0xA1) & 0xFF); // Đọc 7 byte dữ liệu từ địa chỉ 0xE1 (225) device.read (0xE1, b1, 0, 7); // Chuyển đổi dữ liệu // hệ số độ ẩm int dig_H2 = (b1 [0] & 0xFF) + (b1 [1] * 256); if (dig_H2> 32767) {dig_H2 - = 65536; } int dig_H3 = b1 [2] & 0xFF; int dig_H4 = ((b1 [3] & 0xFF) * 16) + (b1 [4] & 0xF); if (dig_H4> 32767) {dig_H4 - = 65536; } int dig_H5 = ((b1 [4] & 0xFF) / 16) + ((b1 [5] & 0xFF) * 16); if (dig_H5> 32767) {dig_H5 - = 65536; } int dig_H6 = b1 [6] & 0xFF; if (dig_H6> 127) {dig_H6 - = 256; } // Chọn thanh ghi độ ẩm điều khiển // Độ ẩm trên tỷ lệ lấy mẫu = 1 device.write (0xF2, (byte) 0x01); // Chọn thanh ghi đo kiểm soát // Chế độ bình thường, nhiệt độ và áp suất trên tốc độ lấy mẫu = 1 device.write (0xF4, (byte) 0x27); // Chọn thanh ghi cấu hình // Thời gian chờ = 1000 ms device.write (0xF5, (byte) 0xA0); // Đọc 8 byte dữ liệu từ địa chỉ 0xF7 (247) // áp suất msb1, áp suất msb, áp suất lsb, nhiệt độ msb1, nhiệt độ msb, nhiệt độ lsb, độ ẩm lsb, độ ẩm msb byte data = byte mới [8]; device.read (0xF7, data, 0, 8); // Chuyển đổi dữ liệu áp suất và nhiệt độ thành độ dài 19 bit adc_p = (((dài) (dữ liệu [0] & 0xFF) * 65536) + ((dài) (dữ liệu [1] & 0xFF) * 256) + (dài) (dữ liệu [2] & 0xF0)) / 16; long adc_t = (((long) (data [3] & 0xFF) * 65536) + ((long) (data [4] & 0xFF) * 256) + (long) (data [5] & 0xF0)) / 16; // Chuyển đổi dữ liệu độ ẩm long adc_h = ((long) (data [6] & 0xFF) * 256 + (long) (data [7] & 0xFF)); // Tính toán bù nhiệt độ double var1 = (((double) adc_t) / 16384.0 - ((double) dig_T1) / 1024.0) * ((double) dig_T2); double var2 = ((((double) adc_t) / 131072.0 - ((double) dig_T1) / 8192.0) * (((double) adc_t) /131072.0 - ((double) dig_T1) /8192.0)) * ((double) dig_T3); double t_fine = (long) (var1 + var2); double cTemp = (var1 + var2) / 5120.0; double fTemp = cTemp * 1.8 + 32; // Tính toán bù áp var1 = ((double) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((double) dig_P6) / 32768.0; var2 = var2 + var1 * ((double) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((kép) dig_P4) * 65536.0); var1 = (((double) dig_P3) * var1 * var1 / 524288.0 + ((double) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((kép) dig_P1); double p = 1048576.0 - (double) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((double) dig_P9) * p * p / 2147483648.0; var2 = p * ((double) dig_P8) / 32768.0; áp suất kép = (p + (var1 + var2 + ((double) dig_P7)) / 16.0) / 100; // Tính toán bù ẩm double var_H = (((double) t_fine) - 76800.0); var_H = (adc_h - (dig_H4 * 64.0 + dig_H5 / 16384.0 * var_H)) * (dig_H2 / 65536.0 * (1.0 + dig_H6 / 67108864.0 * var_H * (1.0 + dig_H3 / 67108864.0 * var_H))); độ ẩm kép = var_H * (1.0 - dig_H1 * var_H / 524288.0); if (độ ẩm> 100,0) {độ ẩm = 100,0; } else if (độ ẩm <0,0) {độ ẩm = 0,0; } // Xuất dữ liệu ra màn hình System.out.printf ("Nhiệt độ tính theo độ C:%.2f C% n", cTemp); System.out.printf ("Nhiệt độ tính bằng F:%.2f F% n", fTemp); System.out.printf ("Áp suất:%.2f hPa% n", áp suất); System.out.printf ("Độ ẩm Tương đối:%.2f %% RH% n", độ ẩm); }}
Bước 4: Quy tắc thực hành
Bây giờ, hãy tải xuống (hoặc git pull) mã và mở nó trong Raspberry Pi.
Chạy các lệnh để Biên dịch và Tải lên mã trên thiết bị đầu cuối và xem kết quả đầu ra trên Màn hình. Sau một vài giây, nó sẽ hiển thị tất cả các thông số. Đảm bảo rằng bạn có quá trình chuyển đổi mã suôn sẻ và kết quả bình tĩnh (ish), bạn nghĩ ra nhiều ý tưởng hơn để sửa đổi thêm (Mỗi dự án đều bắt đầu bằng một Câu chuyện).
Bước 5: Sử dụng trong Thế giới Kiến tạo
BME280 đạt được hiệu suất cao trong tất cả các ứng dụng yêu cầu đo độ ẩm và áp suất. Các ứng dụng mới nổi này là Nhận thức về ngữ cảnh, ví dụ: Phát hiện da, Phát hiện thay đổi phòng, Giám sát thể chất / Sức khỏe, Cảnh báo về độ khô hoặc nhiệt độ cao, Đo thể tích và lưu lượng không khí, Điều khiển tự động hóa gia đình, Điều khiển hệ thống sưởi, Thông gió, Điều hòa không khí (HVAC), Internet of Things (IoT), Cải tiến GPS (ví dụ: Cải thiện thời gian đến lần đầu tiên sửa chữa, Ngã rẽ, Phát hiện dốc), Điều hướng trong nhà (Phát hiện thay đổi tầng, Phát hiện thang máy), Điều hướng ngoài trời, Ứng dụng giải trí & thể thao, Dự báo thời tiết và Chỉ báo vận tốc dọc (Tăng / Chìm Tốc độ, vận tốc).
Bước 6: Kết luận
Như bạn có thể thấy, dự án này là một minh chứng tuyệt vời về khả năng của phần cứng và phần mềm. Trong một khoảng thời gian ngắn, người ta có thể xây dựng một công trình ấn tượng như vậy! Tất nhiên, đây chỉ là sự khởi đầu. Việc tạo một Trạm thời tiết cá nhân phức tạp hơn như Trạm thời tiết cá nhân ở sân bay tự động có thể liên quan đến một số cảm biến khác như Máy đo gió (tốc độ gió), Máy đo truyền (khả năng hiển thị), Pyranometer (bức xạ mặt trời), v.v. Chúng tôi có một video hướng dẫn trên Youtube về chức năng cơ bản của Cảm biến I²C với Rasp Pi. Thực sự đáng kinh ngạc khi thấy kết quả và hoạt động của giao tiếp I²C. Kiểm tra nó là tốt. Hãy vui vẻ xây dựng và học tập! Vui lòng cho chúng tôi biết bạn nghĩ gì về hướng dẫn này. Chúng tôi muốn thực hiện một số cải tiến nếu cần thiết.
Đề xuất:
Trạm thời tiết NaTaLia: Trạm thời tiết sử dụng năng lượng mặt trời Arduino Đã thực hiện đúng cách: 8 bước (có hình ảnh)
Trạm thời tiết NaTaLia: Trạm thời tiết sử dụng năng lượng mặt trời Arduino Đã hoàn thành đúng cách: Sau 1 năm hoạt động thành công trên 2 địa điểm khác nhau, tôi đang chia sẻ kế hoạch dự án trạm thời tiết sử dụng năng lượng mặt trời của mình và giải thích cách nó phát triển thành một hệ thống thực sự có thể tồn tại trong thời gian dài thời kỳ từ năng lượng mặt trời. Nếu bạn theo dõi
Trạm thời tiết trong phòng sử dụng Arduino & BME280: 4 bước
Trạm thời tiết trong phòng sử dụng Arduino & BME280: Trước đây tôi đã chia sẻ một trạm thời tiết đơn giản hiển thị Nhiệt độ và Độ ẩm của khu vực địa phương. Vấn đề với nó là nó sẽ mất thời gian để cập nhật và dữ liệu không chính xác. Trong hướng dẫn này, chúng tôi sẽ tạo một thiết bị theo dõi thời tiết trong nhà
Trạm thời tiết sử dụng Raspberry Pi với BME280 bằng Python: 6 bước
Trạm Thời tiết Sử dụng Raspberry Pi Với BME280 bằng Python: is maith an scéalaí an aimir (The Weather is a Good Storyteller) Với sự nóng lên toàn cầu và các vấn đề biến đổi khí hậu, mô hình thời tiết toàn cầu đang trở nên thất thường trên thế giới của chúng ta dẫn đến một số vấn đề liên quan đến thời tiết thiên tai (hạn hán, khắc nghiệt
Trạm thời tiết Với Arduino, BME280 & Màn hình hiển thị để xem xu hướng trong vòng 1-2 ngày qua: 3 bước (có hình ảnh)
Trạm thời tiết Với Arduino, BME280 & Hiển thị để xem xu hướng trong vòng 1-2 ngày qua: Xin chào! Đây là các trạm thời tiết có thể hướng dẫn đã được giới thiệu. Chúng hiển thị áp suất không khí, nhiệt độ và độ ẩm hiện tại. Những gì họ thiếu cho đến nay là một bài thuyết trình về khóa học trong vòng 1-2 ngày qua. Quá trình này sẽ có một
Acurite 5 trong 1 Trạm thời tiết sử dụng Raspberry Pi và Weewx (các trạm thời tiết khác tương thích): 5 bước (có Hình ảnh)
Trạm thời tiết Acurite 5 trong 1 Sử dụng Raspberry Pi và Weewx (các Trạm thời tiết khác Tương thích): Khi tôi mua trạm thời tiết Acurite 5 trong 1, tôi muốn có thể kiểm tra thời tiết tại nhà của mình khi tôi đi vắng. Khi tôi về nhà và thiết lập nó, tôi nhận ra rằng tôi phải có màn hình kết nối với máy tính hoặc mua trung tâm thông minh của họ,