Съдържание:
Видео: RuuviTag и PiZero W и Blinkt! термометър, базиран на Bluetooth маяк: 3 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
Тази инструкция описва подход за четене на данни за температурата и влажността от RuuviTag с помощта на Bluetooth с Raspberry Pi Zero W и за показване на стойностите в двоични числа на мигач на Pimoroni! pHAT. Или да го кажа накратко: как да изградим най -съвременното и малко нервен термометър.
RuuviTag е Bluetooth маяк със сензор с отворен код, който се доставя със сензори за температура/влажност/налягане и ускорение, но може да действа и като стандартен маяк за близост Eddystone ™/iBeacon. Това беше много успешен проект на Kickstarter и го получих преди няколко седмици. Има Github със софтуер на python за четене на RuuviTag с помощта на малина и аз използвах един от техните примери, с някои допълнения.
Raspberry Pi Zero W е най -новият член на семейството RPi, основно Pi Zero с добавени Bluetooth и WLAN.
Мигането! pHAT от Pimoroni е основно лента от осем RBG светодиода, конфигурирани като HAT за Raspberry Pi. Той е много лесен за използване и се предлага с библиотека на python. Идеята беше да се прочетат данните от RuuviTag и да се покажат с помощта на blinkt! ШАПКА. Стойностите се показват като двоични числа, като се използват 7 от светодиодите, докато осемте се използват за индикация дали се показват стойности на влажност или температура (+/-/0).
Стъпка 1: Настройка на системата
Настройката на системата е лесна:- Включете RuuviTag (версия на сензора за температурата на RuuviTag).
- Настройте своя RPi Zero W, RPi3 или всеки друг RPi с добавен капацитет на Bluetooth, като следвате инструкциите на www.raspberrypi.org.
- Поставете мига! ШАПКА на RPi (докато е изключен).
- Инсталирайте мигането! и софтуера RuuviTag, както е посочено на съответните страници на GitHub.
- Сега трябва да идентифицирате MAC адреса на вашия RuuviTag
- копирайте приложената програма Python, отворете я с IDLE за Python 3
- променете MAC адреса на RuuviTag на вашия, след което запишете и стартирайте програмата.
- не се колебайте да променяте и оптимизирате програмата. Програмата идва такава, каквато е, за да се използва на ваш собствен риск, не се поемат отговорности за щети.
Стъпка 2: Устройството и програмата
Както бе споменато по -горе, идеята беше да се изгради проста и евтина система за четене на данни от маяка и показване на числови стойности на мигането! ШАПКА или подобна LED лента.
Диапазонът от стойности за температура, който трябва да се измерва със система, базирана на RPi, в повечето случаи ще бъде някъде между - 50 ° C и +80 ° C, за влажност между 0 и 100%. Така че дисплей, който може да даде стойности от -100 до +100, ще бъде достатъчен за повечето приложения. Десетичните числа, по -малки от 128, могат да се показват като двоични числа със 7 бита (или светодиоди). Така че програмата приема стойностите на температурата и влажността от RuuviTag като "плаващи" числа и ги трансформира в двоични числа, които след това се показват на мигането !.
Като първа стъпка, числото се закръглява, анализира дали е положително, отрицателно или нула и след това се трансформира в положително число, като се използва "abs". След това десетичното число се преобразува в 7-цифрено двоично число, основно низ от 0s и 1s, който се анализира и показва на последните 7 пиксела от мигането !.
За температурните стойности първият пиксел показва дали стойността е положителна (червена), нула (магента) или отрицателна (синя). Показване на стойностите на влажност е зададено на зелено. За да се опрости различаването между стойностите на температурата и влажността, двоичните пиксели се задават бяло за температура и жълто за влажност. За да се подобри четливостта на двоичните числа, пикселът "0" не се изключва напълно, а вместо това се настройва много по -слабо, отколкото в състояние "1". Като мига! пикселите са много ярки, можете да зададете общата яркост, като промените параметъра "ярко"
Програмата показва стойностите и частите от процеса също на екрана. Освен това ще намерите няколко приглушени (#) инструкции за печат. Оставих ги, тъй като може да ви бъдат полезни, за да разберете процеса, ако не са включени.
Стойностите също могат да се съхраняват в лог файл.
Стъпка 3: Програмен код
Кодът беше малко отстранен и оптимизиран. Вече може да намерите версия 3 (20_03_2017).
„Тази програма е предназначена да чете стойностите на температурата, влажността и налягането от RuuviTag“и да показва стойностите на температурата и влажността като двоични числа в мигач на Pimorini! ШАПКА. '' '' Той се основава на примера print_to_screen.py от библиотеката ruuvitag в github. '' Изисква Pi Zero W, Pi 3 или всяка друга RPi, оборудвана с bluetooth и всички необходими библиотеки.
време за импортиране
импортиране на os от datetime импортиране datetime
от ruuvitag_sensor.ruuvi внос RuuviTagSensor
от blinkt импортиране set_clear_on_exit, set_pixel, clear, show
def temp_blinkt (bt):
# тази рутина взема стойността на температурата и я показва като двоично число на blinkt!
ясно ()
# цвят и интензитет на "1" пиксела: бял
r1 = 64 g1 = 64 b1 = 64
#цвят и интензивност на "0" пиксела: бяло
r0 = 5 g0 = 5 b0 = 5
# Закръглете и конвертирайте в цяло число
r = кръгъл (bt)
# vz представлява алгебричен знак за пиксела на индикатора
if (r> 0): vz = 1 # положителен elif (r <0): vz = 2 # отрицателен else: vz = 0 # нула # print (vz) i = abs (r) #print (i)
# преобразуване в абсолютно, 7-цифрено двоично число
i1 = i + 128 # за i води до 8-цифрено двоично число, започващо с 1 # print (i1)
b = "{0: b}". формат (i1) # преобразуване в двоичен
# печат (б)
b0 = str (b) # преобразуване в низ
b1 = b0 [1: 8] #скъсяване на първия бит
print ("двоично число:", b1)
# Задайте пиксели на blinkt!
# зададен двоичен номер
за h в обхват (0, 7): f = (h+1) if (b1 [h] == "1"): set_pixel (f, r1, g1, b1) # print ("bit", h, " е 1, пиксел ", f) else: set_pixel (f, r0, g0, b0) # print (" нула ")
# Задайте пиксел на индикатора
if (vz == 1): set_pixel (0, 64, 0, 0) # червено за положителни стойности elif (vz == 2): set_pixel (0, 0, 0, 64) # синьо за отрицателни стойности else: set_pixel (0, 64, 0, 64) # пурпурно, ако е нула
покажи ()
# край на temp_blinkt ()
def hum_blinkt (bh):
# това взема стойността на влажността и я показва като двоично число на blinkt!
ясно ()
# цвят и интензитет на "1" пиксела: жълто
r1 = 64 g1 = 64 b1 = 0
#цвят и интензивност на "0" пиксела:
r0 = 5 g0 = 5 b0 = 0
# Закръглете и преобразувайте в цяло число
r = кръгъл (bh)
# преобразуване в абсолютно, 7-цифрено двоично число i = abs (r) # печат (i)
i1 = i + 128 # за i дава 8-цифрено двоично число, започващо с 1
# печат (i1)
b = "{0: b}". формат (i1)
# печат (б)
b0 = str (b)
b1 = b0 [1: 8] #скъсяване на първия бит
print ("двоично число:", b1)
# Задайте пиксели на blinkt!
# задайте двоично число на пиксели
за h в обхват (0, 7): f = (h+1) if (b1 [h] == "1"): set_pixel (f, r1, g1, b1) else: # заглушаване на празни светодиоди set_pixel (f, r0, g0, b0) # заглушаване на празни светодиоди
# Задайте пиксел на индикатора
set_pixel (0, 0, 64, 0) # зелено за влажност
покажи ()
# край на hum_blinkt ()
set_clear_on_exit ()
# Четене на данни от RuuviTag
mac = 'EC: 6D: 59: 6D: 01: 1C' # Промяна на mac-адреса на вашето собствено устройство
print ('Стартиране')
сензор = RuuviTagSensor (mac)
докато е вярно:
data = sensor.update ()
line_sen = str.format ('Сензор - {0}', mac)
line_tem = str.format ('Температура: {0} C', данни ['температура']) line_hum = str.format ('Влажност: {0} %', данни ['влажност']) line_pre = str.format („Налягане: {0}“, данни [„налягане“])
print ()
# температура на дисплея при мигане! ba = str.format ('{0}', data ['temperature']) bt = float (ba) print (bt, "Â ° C") temp_blinkt (bt) print ()
time.sleep (10) # температура на дисплея за 10 секунди
# показване на влажност на дисплея при мигане!
bg = str.format ('{0}', data ['влажност']) bh = плаващ (bg) печат (bh, " %") hum_blinkt (bh) print ()
# Изчистете екрана и отпечатайте сензорни данни на екрана
os.system ('clear') print ('Натиснете Ctrl+C, за да излезете. / n / n') print (str (datetime.now ())) print (line_sen) print (line_tem) print (line_hum) print (line_pre) print ('\ n / n / r …….')
# Изчакайте няколко секунди и започнете отначало
try: time.sleep (8) с изключение на KeyboardInterrupt: # Когато Ctrl+C е натиснат, изпълнението на цикъла while е спряно print ('Exit') clear () show () break
Препоръчано:
Използвайте смартфон като безконтактен термометър / преносим термометър: 8 стъпки (със снимки)
Използвайте смартфон като безконтактен термометър / преносим термометър: Измерване на телесната температура с безконтактно / безконтактно като термо пистолет. Създадох този проект, защото Thermo Gun сега е много скъп, така че трябва да намеря алтернатива, за да направя DIY. И целта е да се направи с нискобюджетна версия
Инфрачервен термометър на базата на Arduino - Инфрачервен термометър, използващ Arduino: 4 стъпки
Инфрачервен термометър на базата на Arduino | Инфрачервен термометър, използващ Arduino: Здравейте, момчета, в тази инструкция ще направим безконтактен термометър, използващ arduino. Тъй като понякога температурата на течността/твърдото вещество е твърде висока или твърде ниска, а след това е трудно да се установи контакт с нея и да се прочете температура тогава в този пейзаж
Музикален генератор, базиран на времето (ESP8266 базиран midi генератор): 4 стъпки (със снимки)
Метеорологичен генератор, базиран на времето (ESP8266 базиран Midi генератор): Здравейте, днес ще ви обясня как да направите свой собствен малък музикален генератор, базиран на времето. Той е базиран на ESP8266, който е нещо като Arduino и реагира на температура, дъжд и интензивността на светлината. Не очаквайте това да прави цели песни или акорди
Как да управлявате ESP8266 базиран Sonoff Basic Smart Switch със смартфон: 4 стъпки (със снимки)
Как да управляваме базиран на ESP8266 Sonoff Basic Smart Switch със смартфон: Sonoff е линия устройства за Smart Home, разработена от ITEAD. Едно от най -гъвкавите и евтини устройства от тази линия са Sonoff Basic. Това е превключвател с Wi-Fi връзка, базиран на страхотен чип ESP8266. Тази статия описва как да настроите Cl
Цифров термометър, базиран на Picaxe с максимални и минимални стойности: 13 стъпки
Цифров термометър, базиран на Picaxe с Макс и Мин: (Моля, оставете съобщение, но не бъдете твърде критични, това е първият ми инструктаж !!) Това е термометър, който направих за нашия кемпер-ван, за да покаже външната температура. Той се основава на чип Picaxe, тъй като те са евтини и лесни за използване. Ако това е за