Оглавление:
Видео: RuuviTag и PiZero W и Blinkt! Термометр на основе маяка Bluetooth: 3 шага (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
В этом руководстве описывается подход к считыванию данных о температуре и влажности из 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 и отобразить их с помощью мигания! ШАПКА. Значения отображаются в виде двоичных чисел с помощью 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: устройство и программа
Как упоминалось выше, идея заключалась в создании простой и недорогой системы для чтения данных с маяка и отображения числовых значений на мигающем индикаторе! ШАПКА, или аналогичная светодиодная лента.
Диапазон значений температуры, измеряемой системой на основе RPi, в большинстве случаев будет где-то между -50 ° C и + 80 ° C для влажности от 0 до 100%. Таким образом, для большинства приложений будет достаточно дисплея, который может отображать значения от -100 до +100. Десятичные числа меньше 128 могут отображаться как двоичные числа с 7 битами (или светодиодами). Таким образом, программа берет значения температуры и влажности из RuuviTag как «плавающие» числа и преобразует их в двоичные числа, которые затем отображаются на мигающем значке !.
На первом этапе число округляется, анализируется, является ли оно положительным, отрицательным или нулевым, а затем преобразуется в положительное число с помощью «абс». Затем десятичное число преобразуется в 7-значное двоичное число, в основном строку из нулей и единиц, которая анализируется и отображается на последних 7 пикселях мигающего символа !.
Для значений температуры первый пиксель указывает, является ли значение положительным (красный), нулевым (пурпурный) или отрицательным (синий). При отображении значений влажности он становится зеленым. Чтобы упростить различение значений температуры и влажности, двоичные пиксели имеют белый цвет для температуры и желтый для влажности. Чтобы улучшить читаемость двоичных чисел, пиксели «0» не выключаются полностью, а вместо этого устанавливаются намного слабее, чем в состоянии «1». Как моргнуть! пиксели очень яркие, вы можете установить общую яркость, изменив параметр «яркий»
Программа также отображает значения и части процесса на экране. Кроме того, вы найдете несколько приглушенных (#) инструкций по печати. Я оставил их, так как они могут быть полезны для понимания процесса, если они включены.
Значения также могут храниться в файле журнала.
Шаг 3: Программный код
Код был немного отлажен и оптимизирован. Теперь вы можете найти версию 3 (20_03_2017).
«Эта программа предназначена для считывания значений температуры, влажности и давления из RuuviTag» и для отображения значений температуры и влажности в виде двоичных чисел на мигающем значке Pimorini! ШАПКА. '' '' Он основан на примере print_to_screen.py из библиотеки ruuvitag на github. «Требуется Pi Zero W, Pi 3 или любой другой RPi, оснащенный bluetooth и всеми необходимыми установленными библиотеками».
время импорта
импортировать ОС из даты и времени импортировать дату и время
из ruuvitag_sensor.ruuvi импорт RuuviTagSensor
from blinkt import set_clear_on_exit, set_pixel, clear, show
def temp_blinkt (bt):
# эта процедура берет значение температуры и отображает его в виде двоичного числа на мигающем значке!
Чисто ()
# цвет и интенсивность «1» пикселя: белый
г1 = 64 г1 = 64 б1 = 64
# цвет и интенсивность "0" пикселей: белый
г0 = 5 г0 = 5 б0 = 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 # for i приводит к 8-значному двоичному числу, начинающемуся с 1 # print (i1)
b = "{0: b}". format (i1) # преобразовать в двоичный
# print (b)
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 (" nil ")
# Установить индикатор пикселя
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):
# принимает значение влажности и отображает его в виде двоичного числа на мигающем значке!
Чисто()
# цвет и интенсивность «1» пикселя: желтый
г1 = 64 г1 = 64 б1 = 0
# цвет и интенсивность "0" пикселей:
г0 = 5 г0 = 5 б0 = 0
# Округлить и преобразовать в целое число
r = круглый (bh)
# преобразовать в абсолютное 7-значное двоичное число i = abs (r) #print (i)
i1 = i + 128 # for i дает 8-значное двоичное число, начинающееся с 1
# print (i1)
b = "{0: b}". формат (i1)
# print (b)
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)
в то время как True:
data = sensor.update ()
line_sen = str.format ('Датчик - {0}', mac)
line_tem = str.format ('Температура: {0} C', data ['temperature']) line_hum = str.format ('Влажность: {0}%', data ['влажность']) line_pre = str.format ("Давление: {0}", данные ["давление"])
Распечатать()
# отображать температуру на мигающем! 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 = float (bg) print (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) except KeyboardInterrupt: # При нажатии Ctrl + C выполнение цикла while останавливается print ('Exit') clear () show () break
Рекомендуемые:
Биометрическая машина для голосования на основе отпечатков пальцев с использованием Arduino: 4 шага (с изображениями)
Биометрическая машина для голосования на основе отпечатков пальцев с использованием Arduino: все мы знаем о существующей электронной машине для голосования, где пользователь должен нажать кнопку, чтобы отдать голос. Но эти машины с самого начала подвергались критике за закалку. Итак, правительство планирует ввести отпечаток пальца
Взломайте код игры, головоломка на основе Arduino: 4 шага (с изображениями)
Взломайте кодовую игру, головоломку на основе Arduino: в этой инструкции я покажу вам, как создать свою собственную игру с взломом кода, в которой вы используете поворотный переключатель кодировщика, чтобы угадать случайно сгенерированный код для сейфа. На передней панели сейфа есть 8 светодиодов, показывающих, сколько из них
Бесконтактный инфракрасный термометр на базе Arduino - ИК-термометр с использованием Arduino: 4 шага
Бесконтактный инфракрасный термометр на базе Arduino | ИК-термометр с использованием Arduino: Привет, ребята, в этой инструкции мы сделаем бесконтактный термометр с использованием Arduino, поскольку иногда температура жидкости / твердого вещества слишком высока или слишком низка, и тогда трудно установить контакт с ним и прочитать его температура тогда в этом сценарии
Генератор музыки на основе погоды (генератор MIDI на основе ESP8266): 4 шага (с изображениями)
Музыкальный генератор на основе погоды (Midi-генератор на основе ESP8266): Привет, сегодня я объясню, как сделать свой собственный небольшой музыкальный генератор на основе погоды. Он основан на ESP8266, который похож на Arduino, и он реагирует на температуру, дождь. и яркость света. Не ожидайте, что он сделает целые песни или аккордовые программы
Цифровой термометр на основе Picaxe с максимальным и минимальным значениями: 13 шагов
Цифровой термометр на основе Picaxe с максимальным и минимальным значениями: (Пожалуйста, оставьте сообщение, но не будьте слишком критичны, это моя первая инструкция !!) Это термометр, который я сделал для нашего автофургона, чтобы показывать внешнюю температуру. Он основан на чипе Picaxe, поскольку он дешев и прост в использовании. Если это для