Мазмуну:
Video: RuuviTag жана PiZero W жана Blinkt! Bluetooth маякка негизделген термометр: 3 кадам (сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
Бул көрсөтмө RuuviTagтан Raspi Pi Zero W менен Bluetooth аркылуу температураны жана нымдуулук маалыматын окуу жана Pimoroni blinkt боюнча экилик сандардагы маанилерди көрсөтүү ыкмасын сүрөттөйт! PHAT. Or же кыскача айтканда: кантип заманбап абалды жана бир аз термометрди куруу керек.
RuuviTag - булагы ачык булактан турган Bluetooth маягы, ал температура/нымдуулук/басым жана ылдамдык сенсорлору менен келет, бирок Eddystone ™/iBeacon стандарттык жакындык маягы катары иштей алат. Бул абдан ийгиликтүү Kickstarter долбоору болчу жана меники бир нече жума мурун болгон. RuuviTag -ды малина менен окуу үчүн python программасы бар Github бар, мен алардын мисалдарынын бирин, кээ бир толуктоолор менен колдондум.
Raspberry Pi Zero W - бул RPi үй -бүлөсүнүн акыркы мүчөсү, негизинен Bluetooth менен WLAN кошулган Pi Zero.
Blinkt! Pimoroni'ден pHAT негизинен Raspberry Pi үчүн HAT катары конфигурацияланган сегиз RBG LEDдин тилкеси. Бул колдонууга абдан оңой жана python китепканасы менен коштолот. Идея RuuviTagдагы маалыматтарды окуп, аны blinkt аркылуу көрсөтүү болчу! HAT. Маанилер экилик сандар катары 7 светодиод менен көрсөтүлөт, ал эми сегиздик нымдуулукту же температураны (+/-/0) көрсөтүү үчүн колдонулат.
1 -кадам: Системаны орнотуу
Системаны орнотуу оңой:- RuuviTagны күйгүзүү (RuuviTag температура сенсорунун версиясы).
- Raspi Zero W, RPi3 же bluetooth кубаттуулугу кошулган башка RPiди www.raspberrypi.org сайтындагы көрсөтмөлөргө ылайык орнотуңуз.
- Көз ирмемди кой! RPi боюнча HAT (өчүрүү учурунда).
- Жаркыроону орнотуңуз! жана RuuviTag программасы, тиешелүү GitHub беттеринде көрсөтүлгөн.
- Эми сиз RuuviTagтын MAC дарегин аныкташыңыз керек
- тиркелген Python программасын көчүрүп, Python 3 үчүн IDLE менен ачыңыз
- RuuviTagтын MAC дарегин өзүңүзгө өзгөртүп, анан программаны сактап, иштетиңиз.
- программаны өзгөртүү жана оптималдаштыруу үчүн эркин. Программа кандай болсо, ошондой болот, өз тобокелчилигиңиз үчүн колдонулат, эч кандай зыян үчүн эч кандай милдеттенме алынбайт.
2 -кадам: Түзмөк жана Программа
Жогоруда айтылгандай, идея маяктын маалыматын окуу үчүн жөнөкөй жана арзан системаны куруу жана санариптик маанилерди блинтке көрсөтүү болчу! HAT, же ушуга окшош LED тилкеси.
Температуранын RPi системасы менен өлчөнүүчү маанилер диапазону көпчүлүк учурда - 50 ° C менен +80 ° C ортосунда, нымдуулук үчүн 0 менен 100%ортосунда болот. Ошентип, -100дөн +100гө чейинки баалуулуктарды бере турган дисплей көпчүлүк тиркемелер үчүн жетиштүү болот. 128ден кичирээк ондук сандар 7 бит (же LED) менен экилик сандар катары көрсөтүлүшү мүмкүн. Ошентип, программа RuuviTagдан температура менен нымдуулуктун маанилерин "калкып жүрүүчү" сандар катары кабыл алып, экилик сандарга айландырат, андан кийин алар блинктте көрсөтүлөт!.
Биринчи кадам катары сан тегеректелет, оң, терс же нөл болсо анализделет, андан кийин "abs" менен оң санга айландырылат. Андан кийин ондук сан 7 орундуу экилик санга айландырылат, негизинен 0s жана 1s сабы, ал анализделет жана blinktтин акыркы 7 пикселинде көрсөтүлөт!.
Температуранын мааниси үчүн биринчи пиксель оң (кызыл), нөл (кызгылт) же терс (көк) экенин көрсөтөт. Нымдуулуктун маанилерин көрсөтүү жашылга коюлган. Температура менен нымдуулуктун ортосундагы айырмачылыкты жөнөкөйлөтүү үчүн экилик пикселдер температура үчүн ак, нымдуулук үчүн сары түстө коюлат. Бинардык сандардын окумдуулугун жогорулатуу үчүн "0" пиксели толугу менен өчүрүлгөн эмес, тескерисинче "1" абалына караганда алда канча алсызыраак коюлган. As blinkt! пикселдер абдан ачык, сиз "жаркыраган" параметрин өзгөртүп жалпы жарыкты орното аласыз
Программа процесстин баалуулуктарын жана бөлүктөрүн экранда да көрсөтөт. Мындан тышкары, бир нече үнсүз (#) басып чыгаруу боюнча көрсөтмөлөрдү таба аласыз. Мен аларды үйдө калтырдым, анткени сиз үнү өчүрүлсө, процессти түшүнүүгө жардам берет.
Маанилер да журнал файлында сакталышы мүмкүн.
3 -кадам: Программанын коду
Код бир аз оңдолду жана оптималдаштырылды. Сиз азыр 3 -версиясын (20_03_2017) таба аласыз.
'Бул программа температураны, нымдуулукту жана басымдын маанилерин окуу үчүн арналган' 'жана Pimorini blinktтеги экилик сандар катары температура менен нымдуулуктун маанилерин көрсөтүү үчүн! HAT. '' '' Бул githubдагы ruuvitag китепканасынан print_to_screen.py мисалына негизделген. '' Pi Zero W, Pi 3 же bluetooth менен жабдылган башка RPi жана бардык керектүү китепканалар орнотулган болушу керек. '
импорттоо убактысы
datetimeдан os импорттоо datetime
ruuvitag_sensor.ruuvi дан импорт RuuviTagSensor
blinkt импорттон set_clear_on_exit, set_pixel, тазалоо, көрсөтүү
def temp_blinkt (bt):
# бул күнүмдүк температуранын маанисин алат жана аны экилик сан катары көрсөтөт!
ачык ()
# түсү жана "1" пикселинин интенсивдүүлүгү: ак
r1 = 64 g1 = 64 b1 = 64
#түс жана "0" пикселинин интенсивдүүлүгү: ак
r0 = 5 g0 = 5 b0 = 5
# Тегерек жана бүтүн санга айландыруу
r = тегерек (bt)
# vz индикатор пикселинин алгебралык белгисин билдирет
if (r> 0): vz = 1 # оң элиф (r <0): vz = 2 # терс башка: vz = 0 # zero # print (vz) i = abs (r) #print (i)
# абсолюттук, 7 орундуу бинардык санга айлануу
i1 = i + 128 # үчүн i 1 басуудан башталган 8 орундуу экилик санга алып келет (i1)
b = "{0: b}". формат (i1) # экиликке айландыруу
# басып чыгаруу (б)
b0 = str (b) # сапка айландыруу
b1 = b0 [1: 8] #биринчи битти кыскартуу
басып чыгаруу ("экилик номер:", b1)
# Пикселдерди blinktке коюңуз!
# экилик санды коюңуз
h үчүн диапазондо (0, 7): f = (h+1) if (b1 [h] == "1"): set_pixel (f, r1, g1, b1) # print ("bit", h, " 1, пиксел ", f) башка: set_pixel (f, r0, g0, b0) # print (" нөл ")
# Индикатор пикселин коюңуз
if (vz == 1): set_pixel (0, 64, 0, 0) # red оң маанилер үчүн elif (vz == 2): set_pixel (0, 0, 0, 64) # blue терс маанилер үчүн: set_pixel (0, 64, 0, 64) # кызгылт болсо нөл
көрсөтүү ()
# temp_blinkt аягы ()
def hum_blinkt (bh):
# бул нымдуулуктун маанисин алат жана аны экинчилик номер катары көрсөтөт!
ачык ()
# түсү жана "1" пикселинин интенсивдүүлүгү: сары
r1 = 64 g1 = 64 b1 = 0
#түс жана "0" пикселдин интенсивдүүлүгү:
r0 = 5 g0 = 5 b0 = 0
# Тегерек жана бүтүн санга айландыруу
r = тегерек (bh)
# абсолюттук, 7 орундуу бинардык санга айлануу i = abs (r) #print (i)
i1 = i + 128 # үчүн i 1ден башталган 8 орундуу экилик санды берет
# басып чыгаруу (i1)
b = "{0: b}". формат (i1)
# басып чыгаруу (б)
b0 = str (b)
b1 = b0 [1: 8] #биринчи битти кыскартуу
басып чыгаруу ("экилик номер:", b1)
# Пикселдерди blinktке коюңуз!
# экилик санды пикселге коюңуз
h үчүн диапазондо (0, 7): f = (h+1) if (b1 [h] == "1"): set_pixel (f, r1, g1, b1) башка: # бош LED диапазонуна # үнсүз set_pixel (f, r0, g0, b0) # бош LEDларга үнсүз
# Индикатор пикселин коюңуз
set_pixel (0, 0, 64, 0) # нымдуулук үчүн жашыл
көрсөтүү ()
# hum_blinkt аягы ()
set_clear_on_exit ()
# RuuviTagдан маалыматтарды окуу
mac = 'EC: 6D: 59: 6D: 01: 1C' # Өз түзмөгүңүздүн мак-дарегине өзгөртүү
басып чыгаруу ('Баштоо')
сенсор = RuuviTagSensor (mac)
чын болсо:
маалыматтар = sensor.update ()
line_sen = str.format ('Сенсор - {0}', mac)
line_tem = str.format ('Температура: {0} C', маалыматтар ['температура']) line_hum = str.format ('Нымдуулук: {0} %', маалымат ['нымдуулук']) line_pre = str.format ('Кысым: {0}', маалыматтар ['басым'])
басып чыгаруу ()
# дисплей температурасы blinkt! ba = str.format ('{0}', маалыматтар ['температура']) bt = калкып чыгуу (ba) басып чыгаруу (bt, "Â ° C") temp_blinkt (bt) print ()
time.sleep (10) # дисплей температурасы 10 секунд
# нымдуулук дисплейде!
bg = str.format ('{0}', маалыматтар ['нымдуулук']) bh = калкып чыгуу (bg) басып чыгаруу (bh, " %") hum_blinkt (bh) print ()
# Экранды тазалоо жана сенсордун маалыматтарын экранга чыгаруу
os.system ('clear') басып чыгаруу ('Ctrl+C басуу) басып чыгаруу ('\ n / n / r …….')
# Бир нече секунд күтүп, кайра башынан баштаңыз
try: time.sleep (8) KeyboardInterruptден башка: # Ctrl+C басылганда, циклдын аткарылышы токтотулат ('Чыгуу') clear () show () break
Сунушталууда:
Байланышсыз термометр / портативдүү термометр катары смартфонду колдонуңуз: 8 кадам (сүрөттөр менен)
Смартфонду контактсыз термометр / портативдүү термометр катары колдонуңуз: термо тапанча сыяктуу контактсыз / контактсыз дене температурасын өлчөө. Мен бул долбоорду түздүм, анткени Thermo Gun азыр абдан кымбат, ошондуктан DIY жасоого альтернатива алышым керек. Ал эми максаты аз бюджеттик версиясы менен жасалат.SuppliesMLX90614Ardu
SMS билдирүүсү жана Thingspeak маалыматын жүктөө менен GPS Car Tracker, Arduino негизделген, үйдү автоматташтыруу: 5 кадам (сүрөттөр менен)
SMS билдирүүсү жана Thingspeak маалыматын жүктөө, Arduino негизделген, үйдү автоматташтыруу менен GPS Car Tracker: Мен бул GPS трекерди өткөн жылы жасадым жана ал жакшы иштегендиктен мен аны азыр Instructableде жарыялайм. Бул менин магистралдагы аксессуарлардын сайгычына туташкан. GPS трекери мобилдик маалымат аркылуу машинанын абалын, ылдамдыгын, багытын жана өлчөнгөн температурасын жүктөйт
Ардуиного негизделген байланышсыз инфракызыл термометр - IR негизделген термометр Arduino колдонуу: 4 кадам
Ардуиного негизделген байланышсыз инфракызыл термометр | IR негизделген термометр Arduino колдонуу: Салам балдар бул көрсөтмөлөрдө биз ардуинону колдонобуз. ошол сахнада температура
Аба ырайына негизделген музыка генератору (ESP8266 негизделген Midi генератору): 4 кадам (сүрөттөр менен)
Аба ырайына негизделген музыка генератору (ESP8266 негизделген Midi генератору): Саламатсызбы, мен бүгүн өзүңүздүн кичинекей аба ырайына негизделген музыкалык генераторду кантип жасоону түшүндүрүп берем. жана жарыктын интенсивдүүлүгү. Бул бүтүндөй ырларды же аккорд программасын түзөт деп күтпөңүз
Picaxe негизделген сандык термометр Макс жана Мин менен: 13 кадам
Picaxe негизделген санарип термометр Макс жана Мин менен: (Сураныч, билдирүү калтырыңыз, бирок өтө эле сынчыл болбоңуз, бул менин эң биринчи көрсөтмөм !!) Бул менин температурабызды көрсөтүү үчүн биздин кемпир-фургон үчүн жасаган термометр. Бул Picaxe чипине негизделген, анткени алар арзан жана колдонууга оңой. Эгерде бул үчүн