Mục lục:

Trạm thời tiết Inky_pHAT: 5 bước
Trạm thời tiết Inky_pHAT: 5 bước

Video: Trạm thời tiết Inky_pHAT: 5 bước

Video: Trạm thời tiết Inky_pHAT: 5 bước
Video: Tech Note 100 - ESP32 7.5” e-Paper Weather Display - 'Goes Large!' 2024, Tháng bảy
Anonim
Trạm thời tiết Inky_pHAT
Trạm thời tiết Inky_pHAT
Trạm thời tiết Inky_pHAT
Trạm thời tiết Inky_pHAT
Trạm thời tiết Inky_pHAT
Trạm thời tiết Inky_pHAT
Trạm thời tiết Inky_pHAT
Trạm thời tiết Inky_pHAT

Ở đây tôi muốn mô tả một trạm thời tiết dựa trên Raspberry Pi Zero rất đơn giản và nhỏ gọn, hiển thị các giá trị được đo bằng cảm biến nhiệt độ / áp suất / độ ẩm BME280 trên màn hình giấy điện tử / mực in Pimoroni Inky pHAT. Để cho phép kết nối các cảm biến và pHAT với GPIO của Pi, tôi đã đặt một hacker Pimorini Pico HAT với hai tiêu đề nữ được gắn giữa GPIO và màn hình. Thiết bị đã được sử dụng để gắn một số cảm biến, vì vậy phiên bản BME280 được mô tả ở đây chỉ là một ví dụ.

Không giống như màn hình LCD, màn hình e-ink giữ hình ảnh ngay cả khi đã tắt nguồn. Do đó, chúng là một giải pháp rất tốt nếu bạn muốn hiển thị thông tin được cập nhật thường xuyên, đặc biệt là để xây dựng các thiết bị năng lượng thấp. Lợi ích chính của phiên bản đơn sắc / đen của Inky pHAT là việc cập nhật màn hình chỉ mất khoảng một giây, thay vì mười đến mười lăm giây theo yêu cầu của các phiên bản ba màu. Xem phim.

Thư viện Blinka của Adafruit cho phép chạy mã Circuit Python trên Raspberry Pi và các mẫu Circuit Python cho nhiều loại cảm biến có sẵn từ Adafruit. Bạn có thể tìm thấy mô tả chi tiết cách cài đặt Blinka và mã Circuit Python tại trang web Adafruit. Các thư viện mà tôi đã kiểm tra cho đến nay (BMP280, BME280, TSL2591, TCS34785, VEML7065,…) đang hoạt động rất tốt, trong khi có một số vấn đề nhỏ trong một số mã ví dụ.

BME280 là cảm biến đo nhiệt độ, độ ẩm và áp suất khí quyển. BMP280 đột phá có sẵn từ nhiều nhà cung cấp, bao gồm cả Adafruit, nhưng tôi ở đây đang sử dụng phiên bản giá rẻ của Trung Quốc. Xin lưu ý rằng những địa chỉ này đang sử dụng các địa chỉ i2c khác nhau (Adafruit: 0x77, những người khác: 0x76).

Điểm đột phá được kết nối với Pi bằng i2c và việc đọc cảm biến rất đơn giản bằng cách sử dụng thư viện và mã ví dụ.

Bước 1: Vật liệu được sử dụng

Vật liệu được sử dụng
Vật liệu được sử dụng
Vật liệu được sử dụng
Vật liệu được sử dụng
Vật liệu được sử dụng
Vật liệu được sử dụng
Vật liệu được sử dụng
Vật liệu được sử dụng

Raspberry Pi Zero, có gắn một đầu đực. Nhưng bất kỳ phiên bản Raspberry Pi nào cũng vậy.

Pimoroni Inky pHAT, phiên bản đen / đơn sắc, 25 € | 22 £ | 20US $, tại Pimoroni.

Một tin tặc Pimoroni Pico HAT, 2,50 € | 2 £, có gắn hai tiêu đề nữ, một trong số đó là tiêu đề tăng cường với các chân dài hơn. Tôi đã xây dựng hai phiên bản khác nhau, xem mô tả bên dưới.

Một đột phá về BME280, Giao hàng AZ qua Amazon.de @ 7,50 €, có đính kèm tiêu đề.

Cáp nhảy kéo dài

Không bắt buộc:

Bộ nguồn USB, dành cho các ứng dụng di động

Vỏ cho Pi hoặc thiết bị (không hiển thị ở đây)

Bước 2: Lắp ráp

cuộc họp
cuộc họp
cuộc họp
cuộc họp
cuộc họp
cuộc họp
  • Hàn các tiêu đề nữ với tin tặc Pico HAT. Trước khi hàn, hãy kiểm tra hướng chính xác. Tôi đã xây dựng hai phiên bản này, cho các mục đích khác nhau. Một phiên bản có tiêu đề tăng cường hướng xuống được đặt ở hàng trước và tiêu đề bình thường, hướng lên / hướng lên ở hàng sau và một phiên bản có tiêu đề tăng cường hướng xuống ở hàng sau và tiêu đề nữ góc phải ở hàng trước. Xem hình ảnh. Phiên bản đầu tiên cho phép gắn và trao đổi cảm biến và cáp rất dễ dàng, trong khi phiên bản có đầu cắm hướng vào trong cho phép gắn Pi, cảm biến và Inky pHAT vào một vỏ. Ngoài ra, bạn có thể hàn cáp kết nối GPIO và cảm biến trực tiếp với hacker Pico HAT và / hoặc hàn trực tiếp hacker Pico HAT vào các chân GPIO. Trong mọi trường hợp, hãy sử dụng lượng chất hàn tối thiểu cần thiết.
  • Hàn đầu cắm vào cảm biến, nếu cần.
  • Xếp đơn vị hacker Pico HAT đã sửa đổi trên Pi, sau đó thêm Inky pHAT. Nếu được yêu cầu, hãy chèn một số hỗ trợ, ví dụ: Một khối bọt hoặc các chế phẩm khác, đối với Inky pHAT.
  • Gắn cáp và cảm biến, sử dụng các cổng 3V, GND, SDA và SCL. Không phải tất cả các cảm biến sẽ tồn tại 5V, vì vậy hãy kiểm tra trước khi bạn kết nối chúng với cổng 5V.
  • Cài đặt thư viện Blinka, sau đó cài đặt thư viện Circuit Python BME280 từ Adafruit.
  • Cài đặt thư viện Inky pHAT từ Pimoroni.
  • Cài đặt mã Python ví dụ được mô tả ở bước sau và đính kèm với hướng dẫn này.
  • Chạy mã.

Bước 3: Sử dụng thiết bị

Sử dụng thiết bị
Sử dụng thiết bị

Có hai tùy chọn để sử dụng thiết bị.

Mã như được hiển thị ở đây sẽ được bắt đầu bằng cách sử dụng một màn hình được đính kèm, nhưng sau đó có thể chạy mà không cần.

Với những sửa đổi nhỏ đối với mã, bạn có thể sử dụng crontab để thực hiện các phép đo tại các thời điểm xác định. Điều này sẽ cho phép giảm tiêu thụ điện năng hơn nữa. Bạn có thể tìm thấy các mô tả tuyệt vời về cách sử dụng crontab ở những nơi khác.

Kết hợp với bộ nguồn, bạn có thể xây dựng một thiết bị di động và sử dụng nó để đo các điều kiện bên trong hoặc bên ngoài, trong tủ lạnh, trong phòng xông hơi khô, máy tạo độ ẩm, hầm rượu, trong máy bay,….

Sử dụng Zero W, bạn không chỉ có thể hiển thị các giá trị trên màn hình mà còn có thể gửi chúng đến máy chủ hoặc trang web của bạn qua WLAN, như được mô tả ở phần khác.

Bước 4: Tập lệnh BME280

Tập lệnh BME280
Tập lệnh BME280

Như đã đề cập trước đây, bạn cần cài đặt thư viện Adafruit Blinka và Circuit Python BME280 cũng như thư viện Pimoroni Inky pHAT.

Đầu tiên, mã khởi tạo cảm biến và Inky pHAT, sau đó đọc các giá trị nhiệt độ, áp suất và độ ẩm từ cảm biến và hiển thị chúng trên màn hình và màn hình e-ink. Sử dụng lệnh time.sleep (), các phép đo được thực hiện mỗi phút. Điều chỉnh theo yêu cầu. Bằng cách đặt tham số ngôn ngữ, bạn có thể thay đổi ngôn ngữ được sử dụng để hiển thị kết quả.

Sử dụng màn hình inky pHAT e-ink, trước tiên bạn xây dựng hình ảnh để hiển thị trong bộ nhớ trước khi cuối cùng nó được chuyển sang màn hình bằng lệnh inkyphat.show (). Thư viện Inky pHAT đang đơn giản hóa quy trình, cung cấp các lệnh để vẽ và định dạng văn bản, đường thẳng, hình chữ nhật, hình tròn hoặc sử dụng hình nền.

Ngoài các giá trị đo, thời gian đo cũng được hiển thị.

Xin lưu ý rằng tập lệnh cũng như các thư viện được viết bằng Python 3, vì vậy hãy mở và chạy bằng Py3 IDLE hoặc tương đương.

# Một tập lệnh cho cảm biến nhiệt độ / áp suất / độ ẩm bme280 (phiên bản không phải Adafruit) # và pHAT - phiên bản màu đen # # phiên bản tháng 12 năm 2018, Dr H # # Yêu cầu thư viện Adafruit Blinka và Circuit Python BME280 # và Pimoroni Inky Thư viện pHAT nhập thời gian nhập bảng datetime nhập busio từ adafruit_bme280 import Adafruit_BME280 từ adafruit_bme280 import Adafruit_BME280_I2C import inkyphat import sys from PIL import ImageFont inkyphat.set_colour ('black') # for b / w inky phat inkyphat.set_ turn display (180 turn display) 180 ° font1 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 27) # Chọn phông chữ chuẩn font2 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 19) # Chọn dữ liệu phông chữ chuẩn # lang = "DE" # đặt tham số ngôn ngữ, default ("") -> english lang = "EN" i2c = busio. I2C (board. SCL, board. SDA) bmp = Adafruit_BME280_I2C (i2c, address = 0x76) # default i2c address (for Adafruit BMP280) 0x77 (default), 0x76 cho đột phá Trung Quốc) # đặt áp suất tham chiếu # cần thiết cho al tính toán chuẩn độ, vui lòng điều chỉnh. Giá trị tiêu chuẩn 1013,25 hPa # nhập bằng tay: #reference_hPa = input ("Nhập áp suất tham chiếu trong hPa:") # hoặc # đặt áp suất tại thời điểm bắt đầu làm tham chiếu, ví dụ: cho các phép đo chiều cao tương đối thời gian. 1 time.sleep (1) reference_hPa = (pres_norm_sum / j) # đặt phép đo sinh dục làm điểm tham chiếu để bật phép đo chiều cao bmp.sea_level_pressure = float (reference_hPa) print () trong khi True: #runs forever, sửa đổi cho crontab-version # đã đo giá trị t = bmp.tempether p = bmp.pressure h = bmp.humidity a = bmp.altitude # được thư viện adafruit tính toán từ áp suất #timestamp ts = datetime.datetime.now () # timestamp ts0_EN = '{:% Y-% m-% d} '. format (ts) # timestamp - date, định dạng EN ts0_DE =' {:% d.% m.% Y} '. format (ts) # timestamp - date, định dạng tiếng Đức ts1 =' {: % H:% M:% S} '. Format (ts) # timestamp - time tmp = "{0: 0.1f}". Format (t) pre = "{0: 0.1f}". Format (p) hyg = "{0: 0.1f}". Format (h) alt="{0: 0.1f}". Format (a) tText = "Temp.:" pText_EN = "Áp suất:" pText_DE = "Luftdruck:" h Text_EN = "Độ ẩm:" hText_DE = "rel. LF: "aText_EN =" Altitude: "aText_DE =" Höhe üNN: "# exakt: ü. NHN, über Normal Höhen Null if (lang ==" DE "): ts0 = ts0_DE aText = aText_DE pText = pText = else_DE hText: # default english ts0 = ts0_EN aText = aText_EN pText = pText_EN hText = hText_EN # print giá trị để hiển thị print (ts) print (tText, tmp, "° C") print (pText, pre, "hPa") print (hText, hyg, "%") print (aText, alt, "m") print () # in các giá trị vào Inky pHAT t1 = 5 # tab 1, cột frist, đơn giản hóa việc tối ưu hóa bố cục t2 = 110 # tab 2, cột thứ hai inkyphat. clear () inkyphat.text ((t1, 0), ts0, inkyphat. BLACK, font2) # ghi ngày dấu thời gian inkyphat.text ((t2, 0), ts1, inkyphat. BLACK, font2) # ghi thời gian dấu thời gian inkyphat.line ((t1, 25, 207, 25), 1, 3) # vẽ một dòng inkyphat.text ((t1, 30), tText, inkyphat. BLACK, font2) inkyphat.text ((t2, 30), (tmp + "° C"), inkyphat. BLACK, font2) inkyphat.text ((t1, 55), pText, inkyphat. BLACK, font2) inkyphat.text ((t2, 55), (pre + "hPa"), inkyphat. BLACK, font2) inkyphat.text ((t1, 80), hText, inkyphat. BLACK, font2) inkyphat.text ((t2, 80), (hyg + "%"), inkyphat. BLACK, font2) # hoặc hiển thị chiều cao tính toán # inkyphat.text ((t1, 80), aText, inkyphat. BLACK, font2) # inkyphat.text ((t2, 80), (alt + "m"), inkyphat. BLACK, font2) inkyphat.show () time.sleep (51) # đợi vài giây trước khi thực hiện các phép đo tiếp theo, +19 giây mỗi chu kỳ inkyphat.clear () # trống Quy trình hiển thị Inky pHAT, inkyphat.show () # im lặng cho phiên bản crontab

Bước 5: Tập lệnh BMP280

BMP280 rất giống với cảm biến BME280, nhưng chỉ đo nhiệt độ và áp suất. Các tập lệnh rất giống nhau, nhưng bạn cần các thư viện Circuit Python khác nhau. Ở đây, thay vì độ ẩm, một độ cao tính toán, dựa trên áp suất tham chiếu, được hiển thị.

Đính kèm bạn tìm thấy script.

Đề xuất: