İçindekiler:
Video: RuuviTag ve PiZero W ve Blinkt! Bluetooth Beacon Tabanlı Termometre: 3 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Bu talimat, bir Raspberry Pi Zero W ile Bluetooth kullanarak bir RuuviTag'den sıcaklık ve nem verilerini okumak ve değerleri bir Pimoroni yanıp söndüğünde ikili sayılarda görüntülemek için bir yaklaşımı açıklar! pHAT. Ya da kısaca söylemek gerekirse: son teknoloji ürünü ve biraz inek termometresi nasıl oluşturulur.
RuuviTag, sıcaklık/nem/basınç ve hızlanma sensörleriyle birlikte gelen, ancak aynı zamanda standart bir Eddystone™ / iBeacon yakınlık işareti olarak da işlev görebilen açık kaynaklı bir sensör bluetooth işaretçisidir. Çok başarılı bir Kickstarter projesiydi ve benimkini birkaç hafta önce aldım. Bir ahududu kullanarak RuuviTag'i okumak için python yazılımına sahip bir Github var ve bazı eklemelerle örneklerinden birini kullandım.
Raspberry Pi Zero W, RPi ailesinin en son üyesidir, temelde Bluetooth ve WLAN eklenmiş bir Pi Zero.
Göz kırptı! Pimoroni'den pHAT, temel olarak Raspberry Pi için bir HAT olarak yapılandırılmış sekiz RBG LED'den oluşan bir şerittir. Kullanımı çok kolaydır ve bir python kütüphanesi ile birlikte gelir. Fikir, RuuviTag'den gelen verileri okumak ve yanıp sönerek görüntülemekti! ŞAPKA. Değerler, LED'lerin 7'si kullanılarak ikili sayılar olarak görüntülenirken, sekizi, nem veya sıcaklık (+/-/0) değerlerinin görüntülenip görüntülenmediğini belirtmek için kullanılır.
Adım 1: Sistemin Kurulması
Sistemin kurulumu kolaydır:- RuuviTag'i (RuuviTag sıcaklık sensörü versiyonu) açın.
- www.raspberrypi.org adresindeki talimatları izleyerek RPi Zero W, RPi3 veya bluetooth kapasitesi eklenmiş diğer herhangi bir RPi'nizi kurun.
- Bıçağı yerleştirin! RPi'de HAT (kapalıyken).
- Yanıp sönen yükleyin! ve ilgili GitHub sayfalarında belirtildiği gibi RuuviTag yazılımı.
- Artık RuuviTag'inizin MAC adresini tanımlamanız gerekiyor.
- ekli Python programını kopyalayın, IDLE for Python 3 ile açın
- RuuviTag'in MAC adresini kendinize göre değiştirin, ardından programı kaydedin ve çalıştırın.
- programı değiştirmek ve optimize etmekten çekinmeyin. Program olduğu gibi gelir, kendi sorumluluğunuzdadır, herhangi bir hasar için sorumluluk alınmaz.
Adım 2: Cihaz ve Program
Yukarıda bahsedildiği gibi, fikir, beacon'dan veri okumak ve yanıp sönmede sayısal değerleri görüntülemek için basit ve ucuz bir sistem kurmaktı! HAT veya benzeri bir LED şerit.
RPi tabanlı bir sistemle ölçülecek sıcaklık değerleri aralığı çoğu durumda -50°C ile +80°C arasında, nem için %0 ile %100 arasında olacaktır. Bu yüzden -100 ile +100 arasında değerler verebilen bir ekran çoğu uygulama için yeterli olacaktır. 128'den küçük ondalık sayılar, 7 bitlik (veya LED'li) ikili sayılar olarak görüntülenebilir. Böylece program RuuviTag'den sıcaklık ve nem değerlerini "kayan" sayılar olarak alır ve bunları ikili sayılara dönüştürür, bunlar daha sonra yanıp söndüğünde görüntülenir!.
İlk adım olarak, sayı yuvarlanır, pozitif, negatif veya sıfır olup olmadığı analiz edilir ve ardından "abs" kullanılarak pozitif bir sayıya dönüştürülür. Ardından, ondalık sayı 7 basamaklı bir ikili sayıya dönüştürülür, temelde 0'lar ve 1'lerden oluşan bir dizidir ve bu, yanıp sönmenin son 7 pikselinde analiz edilir ve görüntülenir.
Sıcaklık değerleri için ilk piksel, değerin pozitif (kırmızı), sıfır (macenta) veya negatif (mavi) olduğunu gösterir. Nem değerleri görüntülendiğinde yeşile ayarlanır. Sıcaklık ve nem değerleri arasındaki ayrımı basitleştirmek için ikili pikseller sıcaklık için beyaz ve nem için sarı olarak ayarlanır. İkili sayıların okunabilirliğini artırmak için "0" pikseli tamamen kapatılmaz, bunun yerine "1" durumundan çok daha zayıf ayarlanır. Göz kırptı olarak! pikseller çok parlak, "parlak" parametresini değiştirerek genel parlaklığı ayarlayabilirsiniz
Program, işlemin değerlerini ve kısımlarını ekranda da gösterir. Ek olarak, birkaç sessiz (#) yazdırma talimatı bulacaksınız. Sesi açılmamışsa süreci anlamada yardımcı olabileceğiniz için onları içeride bıraktım.
Değerler ayrıca bir günlük dosyasında saklanabilir.
Adım 3: Program Kodu
Kod biraz hata ayıklandı ve optimize edildi. Artık sürüm 3'ü (20_03_2017) bulabilirsiniz.
' Bu program bir RuuviTag'den sıcaklık, nem ve basınç değerlerini okumak ve sıcaklık ve nem değerlerini bir Pimorini yanıp sönmesi üzerinde ikili sayılar olarak görüntülemek için tasarlanmıştır! ŞAPKA. '' '' ' github'daki ruuvitag kitaplığındaki print_to_screen.py örneğine dayanmaktadır. ' ' Bir Pi Zero W, Pi 3 veya bluetooth ile donatılmış başka bir RPI ve tüm gerekli kitaplıkların kurulu olmasını gerektirir.'
ithalat zamanı
işletim sistemini tarih saatinden içe aktar tarih saatini içe aktar
ruuvitag_sensor.ruuvi'den RuuviTagSensor'ü içe aktarın
yanıp sönen import set_clear_on_exit, set_pixel, clear, show
def temp_blinkt(bt):
# bu rutin sıcaklık değerini alır ve yanıp söndüğünde ikili sayı olarak görüntüler!
açık ()
# "1" pikselin rengi ve yoğunluğu: beyaz
r1 = 64 g1 = 64 b1 = 64
"0" pikselin #renk ve yoğunluğu: beyaz
r0 = 5 g0 = 5 b0 = 5
# Yuvarla ve tam sayıya dönüştür
r = yuvarlak (bt)
# vz, gösterge pikseli için cebirsel işareti temsil eder
if (r>0): vz = 1 # pozitif elif (r<0): vz= 2 # negatif başka: vz= 0 # sıfır # print (vz) i = abs(r) #print (i)
# mutlak, 7 basamaklı ikili sayıya dönüştür
i1 = i + 128 # i için 1 # print (i1) ile başlayan 8 basamaklı bir ikili sayı ile sonuçlanır
b = "{0:b}".format(i1) # ikiliye dönüştür
# yazdır (b)
b0 = str (b) # dizgeye dönüştür
b1 = b0[1:8] #ilk biti kes
yazdır ("ikili sayı: ", b1)
# Yanıp sönen pikselleri ayarlayın!
# ikili sayı ayarla
(0, 7) aralığında h için: f = (h+1) if (b1[h] == "1"): set_pixel (f, r1, g1, b1) # print ("bit ", h, " is 1, pixel ", f) else: set_pixel (f, r0, g0, b0) # print("nil")
# Gösterge pikselini ayarla
if (vz==1): set_pixel (0, 64, 0, 0) # pozitif değerler için kırmızı elif (vz==2): set_pixel (0, 0, 0, 64) # negatif değerler için mavi başka: set_pixel (0, 64, 0, 64) # sıfır ise macenta
göstermek()
# temp_blinkt() sonu
tanım hum_blinkt(bh):
# bu nem değerini alır ve yanıp sönerken ikili sayı olarak görüntüler!
açık()
# "1" pikselin rengi ve yoğunluğu: sarı
r1 = 64 g1 = 64 b1 = 0
#"0" pikselin rengi ve yoğunluğu:
r0 = 5 g0 = 5 b0 = 0
# Yuvarla ve tam sayıya dönüştür
r = yuvarlak (bh)
# mutlak, 7 basamaklı ikili sayıya dönüştür i = abs(r) #print (i)
i1 = i + 128 # i için 1 ile başlayan 8 basamaklı bir ikili sayı verir
# yazdır (i1)
b = "{0:b}".format(i1)
# yazdır (b)
b0 = str (b)
b1 = b0[1:8] #ilk biti kes
yazdır ("ikili sayı: ", b1)
# Yanıp sönen pikselleri ayarlayın!
# ikili sayıyı piksel olarak ayarla
(0, 7) aralığında h için: f = (h+1) if (b1[h] == "1"): set_pixel (f, r1, g1, b1) else: # boş LED'leri sessize al set_pixel (f), r0, g0, b0) # boş LED'leri sessize al
# Gösterge pikselini ayarla
set_pixel (0, 0, 64, 0) # nem için yeşil
göstermek()
# hum_blinkt()'in sonu
set_clear_on_exit()
# RuuviTag'den veri okuma
mac = 'EC:6D:59:6D:01:1C' # Kendi cihazınızın mac adresini değiştirin
print('Başlangıç')
sensör = RuuviTagSensor(mac)
Doğru iken:
veri = sensör.güncelleme()
line_sen = str.format('Sensör - {0}', mac)
line_tem = str.format('Sıcaklık: {0} C', veri['sıcaklık']) line_hum = str.format('Nem: {0} %', veri['nem']) line_pre = str.format('Basınç: {0}', veri['basınç'])
Yazdır()
# yanıp söndüğünde sıcaklığı göster! ba = str.format('{0}', data['sıcaklık']) bt = kayan nokta (ba) print (bt, " °C") temp_blinkt (bt) print()
time.sleep (10) # sıcaklığı 10 saniye gösterir
# yanıp sönerken nemi göster!
bg = str.format('{0}', veri['nem']) bh = kayan nokta (bg) yazdır (bh, " %") hum_blinkt (bh) yazdır ()
# Ekranı temizle ve sensör verilerini ekrana yazdır
os.system('clear') print('Çıkmak için Ctrl+C'ye basın.\n\n') print(str(datetime.now())) print(line_sen) print(line_tem) print(line_hum) print(line_pre) print('\n\n\r…….')
# Birkaç saniye bekleyin ve yeniden başlayın
try: time.sleep(8) KeyboardInterrupt hariç: # Ctrl+C'ye basıldığında while döngüsünün yürütülmesi durdurulur print('Exit') clear() show () break
Önerilen:
Temassız IR Termometre: 8 Adım (Resimlerle)
Temassız IR Termometre: Yerel Sağlık Departmanım benimle iletişime geçti çünkü 2020 Covid-19 krizi sırasında çalışanlarının vücut ısısını günlük olarak takip etmenin bir yoluna ihtiyaçları vardı. Normal, kullanıma hazır IR termometreler kıt olmaya başlamıştı
Akıllı Telefonu Temassız Termometre / Taşınabilir Termometre Olarak Kullanın: 8 Adım (Resimlerle)
Akıllı Telefonu Temassız Termometre / Taşınabilir Termometre Olarak Kullanın: Vücut ısısını termo tabanca gibi temassız / temassız olarak ölçme. Bu projeyi oluşturdum çünkü Thermo Gun artık çok pahalı, bu yüzden DIY yapmak için alternatif bulmalıyım. Ve amaç düşük bütçeli versiyon ile yapmaktır.SuppliesMLX90614Ardu
Arduino Tabanlı Dijital Termometre: 3 Adım
Arduino Tabanlı Dijital Termometre: Bu projede, oda sıcaklığını analiz etmek için kullanılabilecek Arduino tabanlı bir dijital termometre tasarlanmıştır. Termometre genellikle sıcaklık ölçüm cihazı olarak kullanılmaktadır. Ölçmek için kullanılabilecek çeşitli ilkeler vardır
Arduino Tabanlı Temassız Kızılötesi Termometre - Arduino Kullanan IR Tabanlı Termometre: 4 Adım
Arduino Tabanlı Temassız Kızılötesi Termometre | Arduino Kullanan IR Tabanlı Termometre: Merhaba arkadaşlar, bu talimatta arduino kullanarak temassız bir Termometre yapacağız. Bazen sıvının/katının sıcaklığı çok yüksek veya çok düşük olduğundan, onunla temas kurmak ve okumak zordur. o sahnede sıcaklık
Piksa Tabanlı Max ve Min: 13 Adımlı Dijital Termometre
Max ve Min ile Piaxe Tabanlı Dijital Termometre: (Lütfen bir mesaj bırakın, ama çok kritik olmayın, bu benim ilk dersim!!) Bu, dış sıcaklığı göstermek için karavanımız için yaptığım bir termometre. Ucuz ve kullanımı kolay olduğu için bir Picaxe çipine dayanmaktadır. Bunun için ise