Мазмұны:

RuuviTag және PiZero W және Blinkt! Bluetooth маякқа негізделген термометр: 3 қадам (суреттермен)
RuuviTag және PiZero W және Blinkt! Bluetooth маякқа негізделген термометр: 3 қадам (суреттермен)

Бейне: RuuviTag және PiZero W және Blinkt! Bluetooth маякқа негізделген термометр: 3 қадам (суреттермен)

Бейне: RuuviTag және PiZero W және Blinkt! Bluetooth маякқа негізделген термометр: 3 қадам (суреттермен)
Бейне: HUNGRY SHARK WORLD EATS YOU ALIVE 2024, Шілде
Anonim
RuuviTag және PiZero W және Blinkt! Bluetooth маякқа негізделген термометр
RuuviTag және PiZero W және Blinkt! Bluetooth маякқа негізделген термометр
RuuviTag және PiZero W және Blinkt! Bluetooth маякқа негізделген термометр
RuuviTag және PiZero W және Blinkt! Bluetooth маякқа негізделген термометр
RuuviTag және PiZero W және Blinkt! Bluetooth маякқа негізделген термометр
RuuviTag және PiZero W және Blinkt! Bluetooth маякқа негізделген термометр

Бұл нұсқаулықта 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 () үзілісі

Ұсынылған: