Mục lục:
Video: RuuviTag và PiZero W và Blinkt! nhiệt kế dựa trên đèn hiệu Bluetooth: 3 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:33
Tài liệu hướng dẫn này mô tả cách tiếp cận để đọc dữ liệu nhiệt độ và độ ẩm từ RuuviTag bằng Bluetooth với Raspberry Pi Zero W và hiển thị các giá trị ở dạng số nhị phân trên nháy mắt Pimoroni! pHAT Hay nói một cách ngắn gọn là: cách xây dựng một nhiệt kế hiện đại và một chút sành điệu.
RuuviTag là một đèn hiệu bluetooth cảm biến mã nguồn mở đi kèm với các cảm biến nhiệt độ / độ ẩm / áp suất và nhiệt độ, nhưng cũng có thể hoạt động như một đèn hiệu tiệm cận Eddystone ™ / iBeacon tiêu chuẩn. Đó là một dự án Kickstarter rất thành công và tôi đã nhận được tài khoản của mình cách đây vài tuần. Có một Github với phần mềm python để đọc RuuviTag bằng quả mâm xôi và tôi đã sử dụng một trong các ví dụ của chúng, với một số bổ sung.
Raspberry Pi Zero W là thành viên mới nhất của gia đình RPi, về cơ bản là Pi Zero có thêm Bluetooth và WLAN.
Cái chớp mắt! pHAT từ Pimoroni về cơ bản là một dải tám đèn LED RBG được định cấu hình làm HAT cho Raspberry Pi. Nó rất dễ sử dụng và đi kèm với một thư viện python. Ý tưởng là đọc dữ liệu từ RuuviTag và hiển thị nó bằng nháy mắt! HAT. Các giá trị được hiển thị dưới dạng số nhị phân bằng cách sử dụng 7 trong số các đèn LED, trong khi tám giá trị được sử dụng để cho biết các giá trị độ ẩm hoặc nhiệt độ (+ / - / 0) có được hiển thị hay không.
Bước 1: Thiết lập hệ thống
Cài đặt hệ thống dễ dàng: - Bật RuuviTag (Phiên bản cảm biến nhiệt độ RuuviTag).
- Thiết lập RPi Zero W, RPi3 hoặc bất kỳ RPi nào khác có thêm công suất bluetooth, làm theo hướng dẫn trên www.raspberrypi.org.
- Đặt chớp mắt! HAT trên RPi (trong khi tắt).
- Cài đặt nháy mắt! và phần mềm RuuviTag, như được chỉ ra trên các trang GitHub tương ứng.
- Bây giờ bạn phải xác định địa chỉ MAC của RuuviTag của bạn
- sao chép chương trình Python đính kèm, mở nó bằng IDLE cho Python 3
- Thay đổi địa chỉ MAC của RuuviTag thành địa chỉ của bạn, sau đó lưu và chạy chương trình.
- thoải mái sửa đổi và tối ưu hóa chương trình. Chương trình đến như vậy, được sử dụng theo rủi ro của riêng bạn, không có trách nhiệm pháp lý đối với bất kỳ thiệt hại nào.
Bước 2: Thiết bị và Chương trình
Như đã đề cập ở trên, ý tưởng là xây dựng một hệ thống đơn giản và rẻ tiền để đọc dữ liệu từ beacon và hiển thị các giá trị số trên nháy mắt! HAT hoặc dải đèn LED tương tự.
Phạm vi giá trị cho nhiệt độ được đo bằng hệ thống dựa trên RPi trong hầu hết các trường hợp sẽ nằm trong khoảng từ - 50 ° C đến + 80 ° C, đối với độ ẩm từ 0 đến 100%. Vì vậy, một màn hình có thể cung cấp các giá trị từ -100 đến +100 sẽ là đủ cho hầu hết các ứng dụng. Các số thập phân nhỏ hơn 128 có thể được hiển thị dưới dạng số nhị phân với 7 bit (hoặc đèn LED). Vì vậy, chương trình lấy các giá trị nhiệt độ và độ ẩm từ RuuviTag dưới dạng các số "float" và chuyển chúng thành các số nhị phân, sau đó được hiển thị trên nháy mắt !.
Bước đầu tiên, số được làm tròn, phân tích nếu dương, âm hoặc 0, sau đó chuyển thành số dương bằng cách sử dụng "abs". Sau đó, số thập phân được chuyển đổi thành số nhị phân gồm 7 chữ số, về cơ bản là một chuỗi các số 0 và 1, được phân tích và hiển thị trên 7 pixel cuối cùng của chớp mắt !.
Đối với các giá trị nhiệt độ, pixel đầu tiên cho biết giá trị là dương (đỏ), 0 (đỏ tươi) hay âm (xanh lam). Hiển thị các giá trị độ ẩm nó được đặt thành màu xanh lục. Để đơn giản hóa sự phân biệt giữa các giá trị nhiệt độ và độ ẩm, các pixel nhị phân được đặt màu trắng cho nhiệt độ và màu vàng cho độ ẩm. Để nâng cao tính dễ đọc của các số nhị phân, pixel "0" không bị tắt hoàn toàn mà thay vào đó được đặt yếu hơn nhiều so với ở trạng thái "1". Như chớp mắt! pixel rất sáng, bạn có thể đặt độ sáng chung thay đổi thông số "sáng"
Chương trình cũng hiển thị các giá trị và các phần của quá trình trên màn hình. Ngoài ra, bạn sẽ tìm thấy một số hướng dẫn in (#) bị tắt tiếng. Tôi đã để chúng ở lại, vì bạn có thể thấy chúng hữu ích để hiểu quá trình nếu bị tắt tiếng.
Các giá trị cũng có thể được lưu trữ trong một tệp nhật ký.
Bước 3: Mã chương trình
Mã đã được gỡ lỗi và tối ưu hóa một chút. Bây giờ bạn có thể tìm thấy phiên bản 3 (20_03_2017).
'Chương trình này nhằm đọc các giá trị nhiệt độ, độ ẩm và áp suất tạo thành một RuuviTag' 'và để hiển thị các giá trị nhiệt độ và độ ẩm dưới dạng số nhị phân trên nháy mắt Pimorini! HAT. '' '' Nó dựa trên ví dụ print_to_screen.py từ thư viện ruuvitag tại github. '' Yêu cầu Pi Zero W, Pi 3 hoặc bất kỳ RPi nào khác được trang bị bluetooth và cài đặt tất cả các thư viện cần thiết. '
thời gian nhập khẩu
nhập hệ điều hành từ datetime nhập datetime
từ ruuvitag_sensor.ruuvi nhập RuuviTagSensor
từ flash nhập set_clear_on_exit, set_pixel, clear, show
def temp_blinkt (bt):
# quy trình này nhận giá trị nhiệt độ và hiển thị nó dưới dạng số nhị phân trên nháy mắt!
sạch ()
# màu và cường độ của pixel "1": trắng
r1 = 64 g1 = 64 b1 = 64
# màu và cường độ của pixel "0": trắng
r0 = 5 g0 = 5 b0 = 5
# Làm tròn và chuyển đổi thành số nguyên
r = vòng (bt)
# vz biểu thị dấu đại số cho pixel chỉ báo
if (r> 0): vz = 1 # positive elif (r <0): vz = 2 # negative else: vz = 0 # zero # print (vz) i = abs (r) #print (i)
# biến đổi thành số nhị phân 7 chữ số tuyệt đối
i1 = i + 128 # cho tôi kết quả là một số nhị phân gồm 8 chữ số bắt đầu bằng 1 # print (i1)
b = "{0: b}". format (i1) # chuyển đổi thành nhị phân
# print (b)
b0 = str (b) # chuyển đổi thành chuỗi
b1 = b0 [1: 8] #truncate bit đầu tiên
print ("số nhị phân:", b1)
# Đặt pixel trên nháy mắt!
# đặt số nhị phân
cho h trong phạm vi (0, 7): f = (h + 1) if (b1 [h] == "1"): set_pixel (f, r1, g1, b1) # print ("bit", h, " là 1, pixel ", f) else: set_pixel (f, r0, g0, b0) # print (" nil ")
# Đặt pixel chỉ báo
if (vz == 1): set_pixel (0, 64, 0, 0) # red cho các giá trị dương elif (vz == 2): set_pixel (0, 0, 0, 64) # blue cho các giá trị âm else: set_pixel (0, 64, 0, 64) # đỏ tươi nếu 0
chỉ()
# end of temp_blinkt ()
def hum_blinkt (bh):
# giá trị này nhận giá trị độ ẩm và hiển thị dưới dạng số nhị phân trên nháy mắt!
sạch()
# màu và cường độ của "1" pixel: màu vàng
r1 = 64 g1 = 64 b1 = 0
# màu và cường độ của pixel "0":
r0 = 5 g0 = 5 b0 = 0
# Làm tròn và biến đổi thành số nguyên
r = vòng (bh)
# biến đổi thành số nhị phân 7 chữ số tuyệt đối i = abs (r) #print (i)
i1 = i + 128 # cho tôi cho một số nhị phân gồm 8 chữ số bắt đầu bằng 1
# print (i1)
b = "{0: b}". format (i1)
# print (b)
b0 = str (b)
b1 = b0 [1: 8] #truncate bit đầu tiên
print ("số nhị phân:", b1)
# Đặt pixel trên nháy mắt!
# đặt số nhị phân thành pixel
cho h trong phạm vi (0, 7): f = (h + 1) if (b1 [h] == "1"): set_pixel (f, r1, g1, b1) else: # tắt tiếng để trống các đèn LED set_pixel (f, r0, g0, b0) # tắt tiếng để trống các đèn LED
# Đặt pixel chỉ báo
set_pixel (0, 0, 64, 0) # xanh cho độ ẩm
chỉ()
# end of hum_blinkt ()
set_clear_on_exit ()
# Đọc dữ liệu từ RuuviTag
mac = 'EC: 6D: 59: 6D: 01: 1C' # Thay đổi thành địa chỉ mac của thiết bị của bạn
print ('Đang bắt đầu')
sensor = RuuviTagSensor (mac)
trong khi Đúng:
data = sensor.update ()
line_sen = str.format ('Cảm biến - {0}', mac)
line_tem = str.format ('Nhiệt độ: {0} C', dữ liệu ['nhiệt độ']) line_hum = str.format ('Độ ẩm: {0}%', dữ liệu ['độ ẩm']) line_pre = str.format ('Áp lực: {0}', dữ liệu ['áp suất'])
in()
# hiển thị nhiệt độ trên nháy mắt! ba = str.format ('{0}', data ['Temperature']) bt = float (ba) print (bt, "Â ° C") temp_blinkt (bt) print ()
time.sleep (10) # hiển thị nhiệt độ trong 10 giây
# hiển thị độ ẩm trên nháy mắt!
bg = str.format ('{0}', dữ liệu ['độ ẩm']) bh = float (bg) print (bh, "%") hum_blinkt (bh) print ()
# Xóa màn hình và in dữ liệu cảm biến ra màn hình
os.system ('clear') print ('Nhấn Ctrl + C để thoát. / n / n') print (str (datetime.now ())) print (line_sen) print (line_tem) print (line_hum) print (line_pre) print ('\ n / n / r …….')
# Chờ vài giây và bắt đầu lại
try: time.sleep (8) ngoại trừ KeyboardInterrupt: # Khi nhấn Ctrl + C, việc thực hiện vòng lặp while bị dừng in ('Thoát') clear () show () break
Đề xuất:
Nhiệt kế hồng ngoại không tiếp xúc dựa trên Arduino - Nhiệt kế dựa trên IR sử dụng Arduino: 4 bước
Nhiệt kế hồng ngoại không tiếp xúc dựa trên Arduino | Nhiệt kế dựa trên IR sử dụng Arduino: Xin chào các bạn trong phần hướng dẫn này, chúng tôi sẽ tạo một Nhiệt kế không tiếp xúc bằng arduino. nhiệt độ sau đó trong phạm vi đó
Trình tạo nhạc dựa trên thời tiết (Trình tạo âm trung dựa trên ESP8266): 4 bước (có hình ảnh)
Trình tạo nhạc dựa trên thời tiết (Trình tạo âm trung dựa trên ESP8266): Xin chào, hôm nay tôi sẽ giải thích cách tạo trình tạo nhạc dựa trên thời tiết nhỏ của riêng bạn. Nó dựa trên ESP8266, giống như Arduino và nó phản ứng với nhiệt độ, mưa và cường độ ánh sáng. Đừng mong đợi nó có thể tạo ra toàn bộ bài hát hoặc hợp âm
Theo dõi thời tiết M5Stack M5stick C dựa trên ESP32 với DHT11 - Theo dõi nhiệt độ độ ẩm & chỉ số nhiệt trên M5stick-C với DHT11: 6 bước
Theo dõi thời tiết M5Stack M5stick C dựa trên ESP32 với DHT11 | Theo dõi nhiệt độ độ ẩm và chỉ số nhiệt trên M5stick-C Với DHT11: Xin chào các bạn, trong phần hướng dẫn này, chúng ta sẽ học cách giao tiếp cảm biến nhiệt độ DHT11 với m5stick-C (một bảng phát triển của m5stack) và hiển thị nó trên màn hình của m5stick-C. Vì vậy, trong hướng dẫn này, chúng ta sẽ đọc nhiệt độ, độ ẩm & nhiệt tôi
Nhiệt kế nấu ăn đầu dò nhiệt độ ESP32 NTP với cảnh báo nhiệt độ và hiệu chỉnh Steinhart-Hart.: 7 bước (có hình ảnh)
Nhiệt kế nấu ăn đầu dò nhiệt độ ESP32 NTP với cảnh báo nhiệt độ và hiệu chỉnh Steinhart-Hart. là một chương trình Có thể hướng dẫn cho thấy cách tôi thêm đầu dò nhiệt độ NTP, piezo b
Đèn chiếu sáng dựa trên Arduino với hiệu ứng ánh sáng và âm thanh: 14 bước (có hình ảnh)
Đèn chiếu sáng dựa trên Arduino với hiệu ứng ánh sáng và âm thanh: Xin chào jedi! Hướng dẫn này là về việc tạo ra một chiếc kiếm cắt ánh sáng, trông, âm thanh và hoạt động giống như một chiếc trong phim! Sự khác biệt duy nhất - nó không thể cắt kim loại: (Thiết bị này dựa trên nền tảng Arduino và tôi cung cấp cho nó rất nhiều tính năng và chức năng, nó