Mundarija:
Video: RuuviTag va PiZero W va Blinkt! Bluetooth chiroqqa asoslangan termometr: 3 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
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
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:
Smartfondan kontaktsiz termometr / portativ termometr sifatida foydalaning: 8 qadam (rasmlar bilan)
Smartfonni kontaktsiz termometr / portativ termometr sifatida ishlating: tana haroratini kontaktsiz / kontaktsiz termometr kabi o'lchash. Men bu loyihani yaratdim, chunki Thermo Gun hozir juda qimmat, shuning uchun men DIY qilish uchun alternativa olishim kerak. Maqsad - byudjetning past versiyasi. Ta'minotlarMLX90614Ardu
Chiroqqa USB port qo'shing: 5 qadam (rasmlar bilan)
Chiroqqa USB portini qo'shing: Men g'ishtdan yasalgan "Electrix" dumaloq stol chiroqini uchratganimda, men u holda yashay olmasligimni bilardim, shuning uchun uni sotib oldim. Keyin, agar uning tagida USB port bo'lsa, juda yaxshi bo'lardi deb o'yladim. Ma'lum bo'lishicha, bu juda
Chiroqqa kamera chirog'i: 8 qadam (rasmlar bilan)
Chiroqqa kamera chirog'i: Men dam olish kunlari zerikdim, shuning uchun ilhom olish uchun bo'lak qutilarimni aylanib o'tishga qaror qildim va shu "kitob" ni o'ylab topdim. Men ishlatgan chirog'ni men bir necha oy oldin bir -ikki dollarga oldim va qolgan qismlar men uchun qolgan
Jek-chiroqqa chiroqlar va qo'rqinchli musiqa qo'shing-lehim yoki dasturlash yo'q (agar xohlamasangiz): 9 qadam (rasmlar bilan)
Jek-chiroqqa chiroqlar va qo'rqinchli musiqa qo'shing-lehimsiz va dasturlashsiz (xohlamaguningizcha): Yorug' chiroqlar va qo'rqinchli musiqalarni qo'shib, ko'changizdagi eng dahshatli Jek-O-chiroqni oling! Bu, shuningdek, Arduino va dasturlashtiriladigan elektronikani sinab ko'rishning ajoyib usuli, chunki butun loyihani kod yozmasdan yoki lehimsiz bajarish mumkin
Pikaxaga asoslangan raqamli termometr Maks va Min: 13 qadam
Maks va Min bilan Pikaxaga asoslangan raqamli termometr: (Iltimos, xabar qoldiring, lekin o'ta tanqidiy bo'lmang, bu mening birinchi ko'rsatmam !!) Bu men termopravnikimiz uchun tashqi haroratni ko'rsatish uchun. U Picaxe chipiga asoslangan, chunki ular arzon va ulardan foydalanish oson. Agar bu … uchun bo'lsa