Мазмұны:
Бейне: RuuviTag және PiZero W және Blinkt! Bluetooth маякқа негізделген термометр: 3 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:25
Бұл нұсқаулықта Raspi Pi Zero W бар Bluetooth көмегімен RuuviTag -тан температура мен ылғалдылық туралы ақпаратты оқуға және мәндерді екілік сандарда Pimoroni blinkt -те көрсетуге болатын тәсіл сипатталған! PHAT. Немесе қысқаша айтқанда: қазіргі заманғы жағдайды және сәл термометрді қалай құру керек.
RuuviTag - бұл температура/ылғалдылық/қысым мен жылдамдық датчиктерімен бірге келетін, ашық көзі бар bluetooth -маяк, бірақ сонымен қатар Eddystone ™/iBeacon стандартты жақындық маягы ретінде әрекет етуі мүмкін. Бұл өте сәтті Kickstarter жобасы болды, мен оны бірнеше апта бұрын алдым. Таңқурай арқылы RuuviTag оқу үшін python бағдарламалық жасақтамасы бар Github бар, мен олардың кейбір мысалдарын қолдандым.
Raspberry Pi Zero W - бұл RPi отбасының соңғы мүшесі, негізінен Bluetooth мен WLAN қосылған Pi Zero.
Жарқыл! Pimoroni -ден алынған pHAT - бұл Raspberry Pi үшін HAT ретінде конфигурацияланған сегіз RBG жарықдиодты жолағы. Пайдалану өте оңай және python кітапханасымен бірге келеді. Идея RuuviTag деректерін оқып, оны жарқылмен көрсету болды! HAT. Мәндер 7 светодиодты пайдаланып екілік сандар түрінде көрсетіледі, ал сегіздік ылғалдылық немесе температура (+/-/0) мәндерінің көрсетілуін көрсету үшін қолданылады.
1 -қадам: жүйені орнату
Жүйені орнату оңай:- RuuviTag (RuuviTag температура сенсорының нұсқасы) қосыңыз.
- Raspi Zero W, RPi3 немесе bluetooth сыйымдылығы қосылған кез келген басқа RPi параметрлерін www.raspberrypi.org сайтынан алыңыз.
- Жарқылды қой! RPi бойынша HAT (өшіру кезінде).
- Жарқылды орнатыңыз! және сәйкес GitHub беттерінде көрсетілген RuuviTag бағдарламалық жасақтамасы.
- Енді сіз RuuviTag MAC мекенжайын анықтауыңыз керек
- бекітілген Python бағдарламасын көшіріңіз, оны Python 3 үшін IDLE көмегімен ашыңыз
- RuuviTag MAC мекенжайын өзіңіздікіне өзгертіңіз, содан кейін бағдарламаны сақтап, іске қосыңыз.
- бағдарламаны өзгертуге және оңтайландыруға болады. Бағдарлама өз тәуекеліне байланысты, кез келген залал үшін жауапкершілікке тартылмайды.
2 -қадам: Құрылғы мен бағдарлама
Жоғарыда айтылғандай, бағдаршамдағы деректерді оқу және сандық мәндерді жыпылықтауда көрсету үшін қарапайым және арзан жүйе құру идеясы болды! HAT немесе ұқсас жарықдиодты жолақ.
RPi жүйесімен өлшенетін температура мәндерінің диапазоны көп жағдайда - 50 ° C пен +80 ° C аралығында, ылғалдылық үшін 0 мен 100%аралығында болады. -100 -ден +100 -ге дейінгі мәндерді бере алатын дисплей көптеген қосымшалар үшін жеткілікті болады. 128 -ден кіші ондық сандар екілік сандар түрінде 7 битпен (немесе жарық диодты) көрсетілуі мүмкін. Сонымен, бағдарлама RuuviTag -тан температура мен ылғалдылық мәндерін «өзгермелі» сандар ретінде қабылдайды және оларды екілік сандарға түрлендіреді, содан кейін олар жыпылықтайды.
Алғашқы қадам ретінде сан дөңгелектенеді, оң, теріс немесе нөлге тең болады, содан кейін «abs» көмегімен оң санға айналады. Содан кейін ондық сан 7 таңбалы екілік санға, негізінен 0 және 1 с жолдарына айналады, ол талданатын және блинктің соңғы 7 пиксельінде бейнеленетін !.
Температура мәндері үшін бірінші пиксель оң (қызыл), нөл (қызғылт) немесе теріс (көк) екенін көрсетеді. Ылғалдылық мәндерін көрсету үшін ол жасыл болып орнатылады. Температура мен ылғалдылық арасындағы айырмашылықты жеңілдету үшін екілік пиксельдер температураға ақ, ал ылғалдылыққа сары болып орнатылады. Екілік сандардың оқылуын жақсарту үшін «0» пикселі толық өшірілмейді, керісінше «1» күйіне қарағанда әлдеқайда әлсіз болады. Блинт сияқты! пиксельдер өте жарқын, сіз «жарқын» параметрін өзгерту арқылы жалпы жарықтықты орната аласыз.
Бағдарлама процестің мәндері мен бөліктерін экранда көрсетеді. Сонымен қатар сіз бірнеше дыбыссыз (#) басып шығару нұсқауларын таба аласыз. Мен оларды үйге қалдырдым, себебі сіз олардың дыбысы өшірілген жағдайда процесті түсінуге көмектесетін шығарсыз.
Мәндер журнал файлында сақталуы мүмкін.
3 -қадам: Бағдарлама коды
Код сәл жөнделді және оңтайландырылды. Енді сіз 3 нұсқасын таба аласыз (20_03_2017).
'Бұл бағдарлама температура, ылғалдылық және қысым мәндерін RuuviTag құралы ретінде оқуға арналған' және температура мен ылғалдылық мәндерін Pimorini blinkt -те екілік сандар түрінде көрсетуге арналған! HAT. '' '' Github -дегі ruuvitag кітапханасынан print_to_screen.py мысалына негізделген. '' Bluetooth Z -мен жабдықталған Pi Zero W, Pi 3 немесе кез келген басқа RPi қажет және барлық қажет кітапханалар орнатылған. ''
импорт уақыты
datetime -дан os импорттау datetime
ruuvitag_sensor.ruuvi -ден RuuviTagSensor импорты
blinkt импортынан set_clear_on_exit, set_pixel, clear, show
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 # оң elif (r <0): vz = 2 # теріс else: vz = 0 # zero # print (vz) i = abs (r) #print (i)
# абсолютті, 7 таңбалы екілік санға айналдыру
i1 = i + 128 # үшін 1 нәтижесінен басталатын 8 таңбалы екілік сан шығады (i1)
b = «{0: b}». формат (i1) # екілікке түрлендіру
# басып шығару (b)
b0 = str (b) # жолға түрлендіру
b1 = b0 [1: 8] #бірінші разряд
басып шығару («екілік сан:», b1)
# Пиксельдерді блинтке орнатыңыз!
# екілік санды орнатыңыз
(0, 7) диапазонындағы h үшін: f = (h+1) if (b1 [h] == «1»): set_pixel (f, r1, g1, b1) # print («bit», h, « 1, пиксель «, f) басқа: set_pixel (f, r0, g0, b0) # басып шығару (» нөл «)
# Индикатор пиксельін орнатыңыз
if (vz == 1): set_pixel (0, 64, 0, 0) # қызыл оң мәндер үшін elif (vz == 2): set_pixel (0, 0, 0, 64) # көк теріс мәндер үшін: 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) # баспа (i)
i1 = i + 128 # үшін i 1-ден басталатын 8 таңбалы екілік санды береді
# басып шығару (i1)
b = «{0: b}». формат (i1)
# басып шығару (b)
b0 = str (b)
b1 = b0 [1: 8] #бірінші разряд
басып шығару («екілік сан:», b1)
# Пиксельдерді блинтке орнатыңыз!
# екілік санды пиксельге орнатыңыз
h (0, 7) диапазонында: f = (h+1) if (b1 [h] == «1»): set_pixel (f, r1, g1, b1) басқа: set_pixel бос жарық диодты өшіру, r0, g0, b0) # жарық диодты өшіру
# Индикатор пиксельін орнатыңыз
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}', деректер ['қысым'])
басып шығару ()
# дисплей температурасы жыпылықтайды! ba = str.format ('{0}', деректер ['температура']) bt = float (ba) басып шығару (bt, «Â ° C») temp_blinkt (bt) басып шығару ()
time.sleep (10) # дисплей температурасы 10 секунд
# ылғалдылық жыпылықтайды!
bg = str.format ('{0}', деректер ['ылғалдылық']) bh = float (bg) басып шығару (bh, « %») hum_blinkt (bh) басып шығару ()
# Экранды тазарту және сенсор деректерін экранға шығару
os.system ('clear') басып шығару ('Шығу үшін Ctrl+C басыңыз. / n / n') басып шығару (str (datetime.now ())) басып шығару (line_sen) басып шығару (line_tem) басып шығару (line_hum) басып шығару (line_pre)) басып шығару ('\ n / n / r …….')
# Бірнеше секунд күтіп, қайтадан бастаңыз
try: time.sleep (8), KeyboardInterrupt қоспағанда: # Ctrl+C пернелер тіркесімін басқанда, уақыт циклінің орындалуы тоқтатылады ('Шығу') clear () show () үзілісі
Ұсынылған:
Кескінді өңдеуге негізделген өртті тану және сөндіру жүйесі: 3 қадам
Кескінді өңдеуге негізделген өртті тану және сөндіру жүйесі: Сәлем достар, бұл Arduino көмегімен суретті өңдеуге негізделген өртті анықтау және сөндіру жүйесі
Смартфонды байланыссыз термометр / портативті термометр ретінде пайдалану: 8 қадам (суреттермен)
Смартфонды контактісіз термометр / портативті термометр ретінде қолданыңыз: дене температурасын термотека сияқты жанаспайтын / байланыссыз өлшеңіз. Мен бұл жобаны жасадым, себебі Thermo Gun қазір өте қымбат, сондықтан мен DIY жасаудың балама нұсқасын алуым керек. Мақсаты төмен бюджеттік нұсқамен жасалады. SupplsliesMLX90614Ardu
NBIoT мәліметтерін беру BC95G модеміне негізделген қалқандарды қалай қолдануға болады - UDP тестісі және желі күйінің сигнализациясы: 4 қадам
NBIoT деректерді беру BC95G модем негізіндегі қалқандарды қалай қолдану керек - UDP тесті және желі күйінің сигнализациясы: Бұл жобалар туралы: Quectel BC95G модемімен жабдықталған itbrainpower.net қалқаны арқылы xyz -mIoT көмегімен NB IoT желісінің мүмкіндіктері мен шикізат UDP деректерін жіберуді тексеріңіз. 10-15 минут. Қиындық: орташа. Ремарк: дәнекерлеу дағдылары қажет
Arduino негізіндегі байланыссыз инфрақызыл термометр - IR негізіндегі термометр Arduino көмегімен: 4 қадам
Arduino негізіндегі байланыссыз инфрақызыл термометр | Ардуиноны қолданатын инфрақызыл термометр: Сәлеметсіз бе, балалар, біз индуктивті емес термометр жасаймыз, өйткені кейде сұйықтықтың/қатты заттың температурасы тым жоғары немесе төмен болады, содан кейін онымен байланыс жасау және оны оқу қиын. сол кездегі температура
Күнге негізделген электр станциясының қашықтықтан бақылау және тарату жүйесі: 10 қадам
Күнге негізделген электр станциясының электр қуатын қашықтықтан бақылау және тарату жүйесі: Бұл жобаның мақсаты - энергия жүйелеріндегі қуатты бақылау және тарату (күн энергиясы жүйелері). Бұл жүйенің дизайны рефератта былай түсіндірілген. Жүйеде шамамен 2 күн панелі бар бірнеше торлар бар