Mục lục:

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: 6 bước

Video: Trạm thời tiết sử dụng Raspberry Pi với BME280 bằng Python: 6 bước

Video: Trạm thời tiết sử dụng Raspberry Pi với BME280 bằng Python: 6 bước
Video: Raspberry Pi Pico W: Wireless Weather Station 2024, Tháng bảy
Anonim
Image
Image
Hóa đơn thiết bị bắt buộc
Hóa đơn thiết bị bắt buộc

là maith an scéalaí an aimir (Thời tiết là một người kể chuyện giỏi)

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ố thiên tai liên quan đến thời tiết (hạn hán, nhiệt độ khắc nghiệt, lũ lụt, bão và cháy rừng), một trạm thời tiết dường như là cần thiết ác tại nhà. Bạn học rất nhiều về thiết bị điện tử cơ bản từ một dự án trạm thời tiết bằng cách sử dụng một loạt các bộ phận và cảm biến rẻ tiền. Nó khá dễ dàng để thiết lập và bạn có thể không có ngay.

Bước 1: Hóa đơn thiết bị bắt buộc

Hóa đơn thiết bị bắt buộc
Hóa đơn thiết bị bắt buộc
Hóa đơn thiết bị bắt buộc
Hóa đơn thiết bị bắt buộc
Hóa đơn thiết bị bắt buộc
Hóa đơn thiết bị bắt buộc

1. Một Raspberry Pi

Đặ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. Raspberry Pi thực sự rẻ, nhỏ và linh hoạt được xây dựng như một máy tính có thể truy cập và chức năng cho người học thực hành các kiến thức cơ bản về lập trình và phát triển phần mềm.

2. I2C 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ị I2C. 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 I2C

Chúng tôi đã sử dụng cáp I²C có sẵn 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. Giải thích truy cập Internet qua EthernetCable / Bộ điều hợp WiFi

Truy cập Internet có thể được kích hoạt thông qua cáp Ethernet được kết nối với mạng cục bộ và internet. Ngoài ra, bạn có thể kết nối với mạng không dây bằng khóa không dây USB, thiết bị này sẽ yêu cầu cấu hình.

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. Ngoài ra, bạn có thể truy cập từ xa Pi thông qua SSH mà không cần đến màn hình (chỉ dành cho người dùng nâng cao).

Bước 2: Kết nối phần cứng cho mạch

Kết nối phần cứng cho mạch
Kết nối phần cứng cho mạch
Kết nối phần cứng cho mạch
Kết nối phần cứng cho mạch

Làm cho mạch điện như sơ đồ được hiển thị. Nói chung, các kết nối rất đơn giản. Giữ bình tĩnh và làm theo các hướng dẫn và hình ảnh ở trên, và bạn sẽ không gặp vấn đề gì. 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ư bản thiết kế. Lên một bản thiết kế và làm theo thiết kế một cách cẩn thận. Một vài khái niệm cơ bản về điện tử có thể hữu ích ở đây!

Kết nối giữa Raspberry Pi và I2C Shield

Đầu tiên, lấy Raspberry Pi và đặt I²C Shield lên đó. Nhấn Shield nhẹ nhàng 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.. Với cáp cắm và chạy đơn giản này, bạn có thể cài đặt, hoán đổi bo mạch hoặc thêm nhiều bo mạch vào ứng dụng một cách dễ dàng.

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à chìa khóa

Bạn có hai sự lựa chọn ở đây. Bạn có thể kết nối Raspberry Pi với mạng bằng cáp ethernet hoặc sử dụng Bộ chuyển đổi USB sang WiFi để kết nối WIFI. Dù bằng cách nào, miễn là nó được kết nối với internet mà bạn đang sử dụng.

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! Đội hình của chúng tôi là thông tin.

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. Ngoài ra, 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 cách sử dụng truy cập từ xa. SSH là một công cụ tiện dụng để truy cập từ xa an toàn. 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.

Đó là một phương pháp tiết kiệm nếu bạn không muốn chi tiêu nhiều

Bước 3: Lập trình Raspberry Pi bằng Python

Lập trình Raspberry Pi bằng Python
Lập trình Raspberry Pi bằng Python

Mã Python cho cảm biến Raspberry Pi và BME280. Nó có sẵn trong kho 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ó. Chỉ cần một chút thời gian là bạn đã sẵn sàng để thiết lập Trạm thời tiết là một cơ sở, có thể trên đất liền hoặc trên biển, với các dụng cụ và thiết bị đo điều kiện khí quyển để cung cấp thông tin cho dự báo thời tiết và nghiên cứu thời tiết và khí hậu.

Mã rõ ràng đang ở trước mặt bạn và nó ở 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ẫn hỏi nếu có (Dù bạn biết cả ngàn điều thì vẫn hỏi người biết).

Bạn cũng có thể sao chép mã Python đ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 khẩu smbus

thời gian nhập khẩu

# Nhận xe buýt I2C

bus = smbus. SMBus (1)

Địa chỉ # BME280, 0x76 (118)

# Đọc lại dữ liệu từ 0x88 (136), 24 byte b1 = bus.read_i2c_block_data (0x76, 0x88, 24)

# Chuyển đổi dữ liệu

# Hệ số tạm thời dig_T1 = b1 [1] * 256 + b1 [0] dig_T2 = b1 [3] * 256 + b1 [2] nếu dig_T2> 32767: dig_T2 - = 65536 dig_T3 = b1 [5] * 256 + b1 [4] nếu dig_T3> 32767: dig_T3 - = 65536

# Hệ số áp suất

dig_P1 = b1 [7] * 256 + b1 [6] dig_P2 = b1 [9] * 256 + b1 [8] nếu dig_P2> 32767: dig_P2 - = 65536 dig_P3 = b1 [11] * 256 + b1 [10] nếu dig_P3 > 32767: dig_P3 - = 65536 dig_P4 = b1 [13] * 256 + b1 [12] nếu dig_P4> 32767: dig_P4 - = 65536 dig_P5 = b1 [15] * 256 + b1 [14] nếu dig_P5> 32767: dig_P5 - = 65536 dig_P6 = b1 [17] * 256 + b1 [16] nếu dig_P6> 32767: dig_P6 - = 65536 dig_P7 = b1 [19] * 256 + b1 [18] nếu dig_P7> 32767: dig_P7 - = 65536 dig_P8 = b1 [21] * 256 + b1 [20] nếu dig_P8> 32767: dig_P8 - = 65536 dig_P9 = b1 [23] * 256 + b1 [22] nếu dig_P9> 32767: dig_P9 - = 65536

Địa chỉ # BME280, 0x76 (118)

# Đọc lại dữ liệu từ 0xA1 (161), 1 byte dig_H1 = bus.read_byte_data (0x76, 0xA1)

Địa chỉ # BME280, 0x76 (118)

# Đọc lại dữ liệu từ 0xE1 (225), 7 byte b1 = bus.read_i2c_block_data (0x76, 0xE1, 7)

# Chuyển đổi dữ liệu

# Hệ số độ ẩm dig_H2 = b1 [1] * 256 + b1 [0] nếu dig_H2> 32767: dig_H2 - = 65536 dig_H3 = (b1 [2] & 0xFF) dig_H4 = (b1 [3] * 16) + (b1 [4] & 0xF) nếu dig_H4> 32767: dig_H4 - = 65536 dig_H5 = (b1 [4] / 16) + (b1 [5] * 16) nếu dig_H5> 32767: dig_H5 - = 65536 dig_H6 = b1 [6] nếu dig_H6> 127: dig_H6 - = 256

Địa chỉ # BME280, 0x76 (118)

# Chọn thanh ghi độ ẩm điều khiển, 0xF2 (242) # 0x01 (01) Humidity Oversampling = 1 bus.write_byte_data (0x76, 0xF2, 0x01) # Địa chỉ BME280, 0x76 (118) # Chọn Thanh ghi đo lường điều khiển, 0xF4 (244) # 0x27 (39) Tỷ lệ lấy mẫu quá áp và nhiệt độ = 1 # Bus ở chế độ bình thường.write_byte_data (0x76, 0xF4, 0x27) # địa chỉ BME280, 0x76 (118) # Chọn thanh ghi cấu hình, 0xF5 (245) # 0xA0 (00) Thời gian chờ = 1000 ms bus.write_byte_data (0x76, 0xF5, 0xA0)

time.sleep (0,5)

Địa chỉ # BME280, 0x76 (118)

# Đọc lại dữ liệu từ 0xF7 (247), 8 byte # Áp suất MSB, Áp suất LSB, Áp suất xLSB, Nhiệt độ MSB, Nhiệt độ LSB # Nhiệt độ xLSB, Độ ẩm MSB, Dữ liệu độ ẩm LSB = bus.read_i2c_block_data (0x76, 0xF7, 8)

# Chuyển đổi dữ liệu áp suất và nhiệt độ thành 19-bit

adc_p = ((dữ liệu [0] * 65536) + (dữ liệu [1] * 256) + (dữ liệu [2] & 0xF0)) / 16 adc_t = ((dữ liệu [3] * 65536) + (dữ liệu [4] * 256) + (dữ liệu [5] & 0xF0)) / 16

# Chuyển đổi dữ liệu độ ẩm

adc_h = data [6] * 256 + data [7]

# Tính toán bù nhiệt độ

var1 = ((adc_t) / 16384.0 - (dig_T1) / 1024.0) * (dig_T2) var2 = (((adc_t) / 131072.0 - (dig_T1) / 8192.0) * ((adc_t) /131072.0 - (dig_T1) /8192.0)) * (dig_T3) t_fine = (var1 + var2) cTemp = (var1 + var2) / 5120.0 fTemp = cTemp * 1.8 + 32

# Tính toán bù áp

var1 = (t_fine / 2.0) - 64000.0 var2 = var1 * var1 * (dig_P6) / 32768.0 var2 = var2 + var1 * (dig_P5) * 2.0 var2 = (var2 / 4.0) + ((dig_P4) * 65536.0) var1 = ((dig_P3) * var1 * var1 / 524288.0 + (dig_P2) * var1) / 524288.0 var1 = (1.0 + var1 / 32768.0) * (dig_P1) p = 1048576.0 - adc_p p = (p - (var2 / 4096.0)) * 6250.0 / var1 var1 = (dig_P9) * p * p / 2147483648.0 var2 = p * (dig_P8) / 32768.0 áp = (p + (var1 + var2 + (dig_P7)) / 16.0) / 100

# Tính toán bù ẩm

var_H = ((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 = var_H * (1,0 - dig_H1 * var_H / 524288,0) nếu độ ẩm> 100,0: độ ẩm = 100,0 độ ẩm <0,0: độ ẩm = 0,0

# Xuất dữ liệu ra màn hình

print "Nhiệt độ tính bằng độ C:%.2f C"% cTemp print "Nhiệt độ tính bằng Fahrenheit:%.2f F"% fTemp print "Áp suất:%.2f hPa"% áp suất in "Độ ẩm tương đối:%.2f %%"% độ ẩm

Bước 4: Mã đang chạy

Mã đang chạy
Mã đang chạy

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 đầu ra trên Màn hình. Sau vài giây, nó sẽ hiển thị tất cả các thông số. Sau khi đảm bảo rằng mọi thứ đều hoạt động tốt, bạn có thể phát triển một số cái thú vị hơn.

Bước 5: Sử dụng trong thế giới thực tế

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 biết 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

Hy vọng dự án này truyền cảm hứng cho những thử nghiệm sâu hơn. Việc tạo một trạm thời tiết phức tạp hơn có thể liên quan đến một số cảm biến khác như Đo mưa, Cảm biến ánh sáng, máy đo gió (tốc độ gió), v.v. Bạn có thể thêm chúng và sửa đổi mã. Chúng tôi có một video hướng dẫn trên YouTube về cách hoạt độ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ó luôn. Chúc bạn xây dựng và học tập vui vẻ! 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: