Mundarija:

RuuviTag va PiZero W va Blinkt! Bluetooth chiroqqa asoslangan termometr: 3 qadam (rasmlar bilan)
RuuviTag va PiZero W va Blinkt! Bluetooth chiroqqa asoslangan termometr: 3 qadam (rasmlar bilan)

Video: RuuviTag va PiZero W va Blinkt! Bluetooth chiroqqa asoslangan termometr: 3 qadam (rasmlar bilan)

Video: RuuviTag va PiZero W va Blinkt! Bluetooth chiroqqa asoslangan termometr: 3 qadam (rasmlar bilan)
Video: Raspberry Pi Zero W erste Schritte - eflose #843 2024, Noyabr
Anonim
RuuviTag va PiZero W va Blinkt! Bluetooth chiroqqa asoslangan termometr
RuuviTag va PiZero W va Blinkt! Bluetooth chiroqqa asoslangan termometr
RuuviTag va PiZero W va Blinkt! Bluetooth chiroqqa asoslangan termometr
RuuviTag va PiZero W va Blinkt! Bluetooth chiroqqa asoslangan termometr
RuuviTag va PiZero W va Blinkt! Bluetooth chiroqqa asoslangan termometr
RuuviTag va PiZero W va Blinkt! Bluetooth chiroqqa asoslangan termometr

Bu ko'rsatma RuuviTag -dan Raspi Pi Zero W bilan Bluetooth yordamida harorat va namlik ma'lumotlarini o'qish va qiymatlarni ikkilik raqamlarda Pimoroni milt -miltida ko'rsatish usulini tavsiflaydi! PHAT. Yoxud qisqacha aytganda: qanday qilib zamonaviy texnika va qandaydir termometrni qurish.

RuuviTag - bu bluetooth -ning ochiq manbali sensori, u harorat/namlik/bosim va akselatsiya sensori bilan birga keladi, lekin Eddystone ™/iBeacon standartiga yaqinlik mayoqchasi sifatida ham xizmat qilishi mumkin. Bu juda muvaffaqiyatli Kickstarter loyihasi edi va men bir necha hafta oldin o'z loyihamni oldim. RuuviTagni malina yordamida o'qish uchun python dasturiga ega Github bor va men ularning misollaridan birini qo'shimchalar bilan ishlatganman.

Raspberry Pi Zero W - bu RPi oilasining so'nggi a'zosi, asosan Bluetooth va WLAN qo'shilgan Pi Zero.

Ko'z ochish! Pimoroni pHAT - bu Raspberry Pi uchun HAT sifatida tuzilgan sakkizta RBG LED tasmasi. Foydalanish juda oson va python kutubxonasi bilan birga keladi. Gap shundaki, RuuviTag -dagi ma'lumotlarni o'qib, ularni milt -milt yordamida ko'rsatish! HAT. Qiymatlar 7 ta LED yordamida ikkilik raqamlar sifatida ko'rsatiladi, sakkiztasi namlik yoki harorat (+/-/0) ko'rsatilishini ko'rsatish uchun ishlatiladi.

1 -qadam: tizimni sozlash

Tizimni sozlash juda oson:- RuuviTag-ni yoqing (RuuviTag harorat sensori versiyasi).

- Raspi Zero W, RPi3 yoki bluetooth quvvati qo'shilgan boshqa RPi -ni www.raspberrypi.org saytidagi ko'rsatmalarga muvofiq o'rnating.

- Yorug'likni qo'ying! RPi -da HAT (o'chirilgan paytda).

- Yoritgichni o'rnating! va tegishli GitHub sahifalarida ko'rsatilgandek RuuviTag dasturi.

- Endi siz RuuviTag -ning MAC manzilini aniqlashingiz kerak

- biriktirilgan Python dasturini nusxalash, Python 3 uchun IDLE bilan ochish

- RuuviTag -ning MAC manzilini o'zingiznikiga o'zgartiring, so'ngra dasturni saqlang va ishga tushiring.

- dasturni o'zgartirish va optimallashtirishda o'zingizni erkin his eting. Dastur avvalgidek, o'z xavf -xataringiz bilan ishlatilishi uchun, hech qanday zarar uchun javobgarlikni o'z zimmasiga olmaydi.

2 -qadam: Qurilma va dastur

Qurilma va dastur
Qurilma va dastur
Qurilma va dastur
Qurilma va dastur
Qurilma va dastur
Qurilma va dastur
Qurilma va dastur
Qurilma va dastur

Yuqorida aytib o'tganimizdek, g'oya mayoqdagi ma'lumotlarni o'qish va miltiqda raqamli qiymatlarni ko'rsatish uchun oddiy va arzon tizim yaratish edi! HAT yoki shunga o'xshash LED tasmasi.

Haroratni RPi tizimida o'lchash uchun qiymatlar diapazoni ko'p hollarda - 50 ° C dan +80 ° C gacha, namlik uchun 0 dan 100%gacha bo'ladi. Shunday qilib, -100 dan +100 gacha qiymatlarni beradigan displey ko'pchilik ilovalar uchun etarli bo'ladi. O'nli raqamlar 128 dan kichik, 7 bitli (yoki LEDli) ikkilik raqamlar sifatida ko'rsatilishi mumkin. Shunday qilib, dastur RuuviTag -dan harorat va namlik qiymatlarini "suzuvchi" raqamlar sifatida oladi va ularni ikkilik raqamlarga aylantiradi, so'ngra ular milt -miltda ko'rsatiladi!

Birinchi qadam sifatida raqam yaxlitlanadi, musbat, manfiy yoki nol bo'lsa tahlil qilinadi va keyin "abs" yordamida musbat songa aylanadi. Keyin kasr raqami 7 xonali ikkilik raqamga, asosan 0 va 1 sonli qatorga aylantiriladi, ular tahlil qilinadi va blinktning oxirgi 7 pikselida ko'rsatiladi!

Harorat qiymatlari uchun birinchi piksel qiymat ijobiy (qizil), nol (qizil) yoki salbiy (ko'k) ekanligini ko'rsatadi. Namlik ko'rsatkichlari yashil rangga o'rnatiladi. Harorat va namlik o'rtasidagi farqni soddalashtirish uchun ikkilik piksellar harorat uchun oq, namlik uchun sariq rangga o'rnatiladi. Ikkilik raqamlarning aniqligini oshirish uchun "0" piksel to'liq o'chirilmagan, aksincha "1" holatiga qaraganda ancha zaifroq. Yorug'lik kabi! piksellar juda yorqin, siz "yorqin" parametrini o'zgartirib, umumiy yorqinlikni o'rnatishingiz mumkin.

Dastur jarayonning qiymatlari va qismlarini ekranda ham ko'rsatadi. Bundan tashqari, siz bir nechta ovozsiz (#) chop etish bo'yicha ko'rsatmalarni topasiz. Men ularni qo'yib yubordim, chunki siz ovozi o'chirilgan bo'lsa, bu jarayonni tushunishga yordam beradi.

Qiymatlar, shuningdek, jurnal faylida saqlanishi mumkin.

3 -qadam: Dastur kodi

Kod biroz tuzatilgan va optimallashtirilgan. Endi siz 3 -versiyani (20_03_2017) topishingiz mumkin.

"Bu dastur harorat, namlik va bosim qiymatlarini RuuviTag -da o'qishga mo'ljallangan" va harorat va namlik qiymatlarini Pimorini milt -miltida ikkilik raqamlar sifatida ko'rsatishga mo'ljallangan! HAT. '' 'Bu github -dagi ruuvitag kutubxonasidan print_to_screen.py misoliga asoslangan. "Pi Zero W, Pi 3 yoki bluetooth bilan jihozlangan boshqa RPi va barcha kerakli kutubxonalar o'rnatilgan bo'lishi kerak."

import vaqti

datetime dan osni import qilish datetime

ruuvitag_sensor.ruuvi dan import RuuviTagSensor

blinkt import dan set_clear_on_exit, set_pixel, aniq, ko'rsatish

def temp_blinkt (bt):

# bu tartib harorat qiymatini oladi va uni blinktda ikkilik raqam sifatida ko'rsatadi!

aniq ()

# rang va "1" piksellar zichligi: oq

r1 = 64 g1 = 64 b1 = 64

#rang va "0" piksellar zichligi: oq

r0 = 5 g0 = 5 b0 = 5

# Dumaloq va butun songa aylantiring

r = dumaloq (bt)

# vz indikator pikselining algebraik belgisini ifodalaydi

if (r> 0): vz = 1 # musbat elif (r <0): vz = 2 # salbiy boshqa: vz = 0 # nol # print (vz) i = abs (r) #print (i)

# mutlaq, 7 xonali ikkilik raqamga aylantirish

i1 = i + 128 # i uchun 1 raqamli bosmadan boshlanadigan 8 xonali ikkilik raqamga olib keladi (i1)

b = "{0: b}". format (i1) # ikkilikka aylantirish

# chop etish (b)

b0 = str (b) # qatorga aylantirish

b1 = b0 [1: 8] #birinchi bitni kesib tashlang

chop etish ("ikkilik raqam:", b1)

# Blinkt -da piksellarni o'rnating!

# ikkilik raqamni o'rnating

h uchun (0, 7) diapazonda: f = (h+1) if (b1 [h] == "1"): set_pixel (f, r1, g1, b1) # print ("bit", h, " 1, piksel ", f) boshqa: set_pixel (f, r0, g0, b0) # chop etish (" nil ")

# Ko'rsatkich pikselini o'rnating

if (vz == 1): set_pixel (0, 64, 0, 0) # qizil ijobiy qiymatlar uchun elif (vz == 2): set_pixel (0, 0, 0, 64) # boshqa salbiy qiymatlar uchun ko'k: set_pixel (0, 64, 0, 64) # magenta nol bo'lsa

ko'rsatish ()

# temp_blinkt oxiri ()

def hum_blinkt (bh):

# bu namlik qiymatini oladi va uni blinktda ikkilik raqam sifatida ko'rsatadi!

aniq ()

# "1" pikselli rang va intensivlik: sariq

r1 = 64 g1 = 64 b1 = 0

#rang va intensivlik "0" piksel:

r0 = 5 g0 = 5 b0 = 0

# Dumaloq va butun songa aylantiring

r = dumaloq (bh)

# mutlaq, 7 xonali ikkilik raqamga aylantirish i = abs (r) #print (i)

i1 = i + 128 # uchun i 1dan boshlanadigan 8 xonali ikkilik raqamni beradi

# chop etish (i1)

b = "{0: b}". format (i1)

# chop etish (b)

b0 = str (b)

b1 = b0 [1: 8] #birinchi bitni kesib tashlang

chop etish ("ikkilik raqam:", b1)

# Blinkt -da piksellarni o'rnating!

# ikkilik raqamni pikselga qo'ying

h uchun (0, 7) diapazonda: f = (h+1) if (b1 [h] == "1"): set_pixel (f, r1, g1, b1) boshqa: # bo'sh LEDlarning ovozini o'chirish set_pixel (f, r0, g0, b0) # bo'sh LEDlarning ovozini o'chirish

# Ko'rsatkich pikselini o'rnating

set_pixel (0, 0, 64, 0) # namlik uchun yashil

ko'rsatish ()

# hum_blinkt oxiri ()

set_clear_on_exit ()

# RuuviTag ma'lumotlarini o'qish

mac = 'EC: 6D: 59: 6D: 01: 1C' # O'z qurilmangizning mak-manzilini o'zgartiring

chop etish ("Boshlanmoqda")

Sensor = RuuviTagSensor (mac)

rost bo'lsa:

ma'lumotlar = sensor.update ()

line_sen = str.format ('Sensor - {0}', mac)

line_tem = str.format ('Harorat: {0} C', ma'lumotlar ['harorat']) line_hum = str.format ('Namlik: {0} %', ma'lumotlar ['namlik']) line_pre = str.format ('Bosim: {0}', ma'lumotlar ['bosim'])

chop etish ()

# displey harorati yonib -o'chib turadi! ba = str.format ('{0}', ma'lumotlar ['harorat']) bt = float (ba) chop etish (bt, "Â ° C") temp_blinkt (bt) print ()

time.sleep (10) # ko'rsatish harorati 10 soniya

# namlikni blinktda ko'rsatish!

bg = str.format ('{0}', ma'lumotlar ['namlik']) bh = suzuvchi (bg) chop etish (bh, " %") hum_blinkt (bh) chop etish ()

# Ekranni tozalash va sensor ma'lumotlarini ekranga chiqarish

os.system ('aniq') chop etish ('Chiqish uchun Ctrl+C tugmalarini bosing. / n / n') chop etish (str (datetime.now ())) chop etish (line_sen) chop etish (line_tem) chop etish (line_hum) chop etish (line_pre)) chop etish ('\ n / n / r …….')

# Bir necha soniya kutib turing va qaytadan boshlang

harakat qilib ko'ring: time.sleep (8) tashqari KeyboardInterrupt: # Ctrl+C tugmachalari bosilganda vaqt tsikli to'xtatiladi ("Chiqish") clear () show () tanaffus

Tavsiya: