Оглавление:

Трекер "Кошелек или жизнь" с тыквенным пи: 5 шагов
Трекер "Кошелек или жизнь" с тыквенным пи: 5 шагов

Видео: Трекер "Кошелек или жизнь" с тыквенным пи: 5 шагов

Видео: Трекер
Видео: ПОШАГОВО: Создаю пассивный доход с помощью ChatGPT 2024, Ноябрь
Anonim
Трекер "Кошелек или жизнь" с тыквенным пи
Трекер "Кошелек или жизнь" с тыквенным пи

Подписаться Другие автора:

Как создать монитор температуры Raspberry Pi
Как создать монитор температуры Raspberry Pi
Как построить монитор температуры Raspberry Pi
Как построить монитор температуры Raspberry Pi
Потоковая передача данных из Google Таблиц на панель инструментов
Потоковая передача данных из Google Таблиц на панель инструментов
Потоковая передача данных из Google Таблиц на панель инструментов
Потоковая передача данных из Google Таблиц на панель инструментов
Сеть датчиков температуры
Сеть датчиков температуры
Сеть датчиков температуры
Сеть датчиков температуры

Ищете быстрый проект на Хэллоуин, который может быть полезен по-разному? Хотите найти этому Pi Zero WH хорошее применение? Хотите использовать данные, чтобы определить, сколько конфет вам понадобится в следующем году?

Приготовьтесь создать трекер "Кошелек или жизнь" с тыквенным пи! Этот Pi-in-a-Pumpkin служит украшением и средством отслеживания людей, он меняет цвет и перетекает при обнаружении движения. Начиная с чистого листа, на создание этого проекта у вас не уйдет больше дня - как раз к Хэллоуину!

Запасы

  • Pi Zero WH с SD-картой
  • Датчик движения PIR
  • RGB светодиод
  • Резисторы 220 Ом
  • (3) Завязки (F / F, M / F, M / M)
  • Портативный аккумулятор
  • Поддельная тыква

Шаг 1: Сборка оборудования

Сборка оборудования
Сборка оборудования
Сборка оборудования
Сборка оборудования
Сборка оборудования
Сборка оборудования

После того, как у вас есть Pi, нам нужно подключить датчик движения и светодиоды. Убедитесь, что Pi на данный момент не подключен к источнику питания.

Наш датчик движения требует, чтобы мы подключили его к источнику питания 3,3 В, заземлению и контакту данных. Я подключил контакт датчика 3,3 В к контакту 1 Pi, контакт датчика заземления - к контакту 6 Pi, а контакт датчика данных - к контакту 16 Pi. На первом рисунке показано полное соединение Pi и датчика движения.

Светодиоды немного сложнее, чем датчик движения, потому что для их правильной работы требуется резистор, не повреждая ни их, ни Pi. Я использовал три резистора 220 Ом, но резисторы 220 и 330 Ом обычно используются со светодиодами.

Чтобы подключить все, вы можете:

  • Припаяйте ножки светодиода к резисторам, а затем вставьте провода в Pi.
  • Используйте макетную плату и стяжки, чтобы соединить все
  • Используйте стяжки и изоленту, чтобы соединить все (как я).

Мы будем подключать наш светодиод к контактам 11, 13 и 15. Это немного сложнее, чем датчик движения, потому что ножки светодиода соответствуют определенному цвету! Длинная нога - GND; и, по крайней мере, на моем светодиоде, ноги стали красными, GND, синими, зелеными. Я подключил синий к контакту 11 Pi, зеленый к контакту 13 Pi и красный к контакту 15 Pi. На втором рисунке показаны окончательные подключения схемы.

Шаг 2: исходное состояние

Начальное состояние
Начальное состояние
Начальное состояние
Начальное состояние

Конечно, мы можем видеть, когда движение обнаруживается с помощью светодиода, но как мы собираемся отследить, сколько трюков и трюков заглянули, чтобы украсть нашу конфету?

Мы собираемся передавать поток на панель управления каждый раз, когда движение начинается и перестает обнаруживаться. Поскольку эта панель управления доступна из любого места, где есть подключение к Интернету, мы можем удаленно отслеживать, приближается ли кто-нибудь к входной двери / конфетнице.

Шаг 1: Зарегистрируйтесь для получения учетной записи с исходным состоянием Перейдите на https://iot.app.initialstate.com и создайте новую учетную запись.

Шаг 2: Установите ISStreamer

Установите модуль Python начального состояния на свой Raspberry Pi. В командной строке (не забудьте сначала подключиться к Pi по SSH) выполните следующую команду:

$ cd / home / pi /

$ / curl -sSL https://get.initialstate.com/python -o - | sudo bash

Шаг 3: сделайте немного автомагии

После шага 2 вы увидите что-то похожее на следующий вывод на экран:

pi @ raspberrypi ~ $ / curl -sSL https://get.initialstate.com/python -o - | sudo bash

Пароль: Начало простой установки ISStreamer Python! Установка может занять пару минут, выпейте кофе:) Но не забудьте вернуться, у меня будут вопросы позже! Найдено easy_install: setuptools 1.1.6 Найдено pip: pip 1.5.6 из /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) pip major version: 1 pip minor version: 5 ISStreamer обнаружен, обновление… Требование уже актуально: ISStreamer в /Library/Python/2.7/site-packages Очистка… Хотите автоматически получить пример сценария? [да / нет] Где вы хотите сохранить пример? [по умолчанию:./is_example.py] Выберите, какое приложение начального состояния вы используете: 1. app.initialstate.com 2. [НОВИНКА!] iot.app.initialstate.com Введите вариант 1 или 2: введите iot.app Имя пользователя.initialstate.com: Введите пароль iot.app.initialstate.com:

Когда будет предложено автоматически получить пример сценария, введите y. Это создаст тестовый сценарий, который мы можем запустить, чтобы убедиться, что мы можем передавать данные в исходное состояние. Следующее приглашение спросит, где вы хотите сохранить файл примера. Вы можете ввести собственный локальный путь или нажать Enter, чтобы принять расположение по умолчанию. Наконец, вас спросят, какое приложение начального состояния вы используете. Если вы недавно создали учетную запись, выберите вариант 2, введите свое имя пользователя и пароль. После этого установка будет завершена.

Шаг 4: ключи доступа

Давайте посмотрим на созданный пример скрипта. $ nano is_example.py В строке 15 вы увидите строку, которая начинается с streamer = Streamer (bucket_…. Эти строки создают новую корзину данных с именем «Python Stream Example» и связываются с вашей учетной записью. Эта связь происходит из-за access_key =”…” в той же строке. Эта длинная последовательность букв и цифр является ключом доступа к вашей учетной записи в исходном состоянии. Если вы перейдете в свою учетную запись в исходном состоянии в веб-браузере, щелкните свое имя пользователя в правом верхнем углу, затем перейдите в «Мои настройки» вы найдете тот же ключ доступа внизу страницы в разделе «Ключи доступа к потоковой передаче».

Каждый раз, когда вы создаете поток данных, этот ключ доступа будет направлять этот поток данных в вашу учетную запись (поэтому никому не сообщайте свой ключ).

Шаг 5: запустите пример

Запустите тестовый сценарий, чтобы убедиться, что мы можем создать поток данных для вашей учетной записи в исходном состоянии. Выполните следующее:

$ python is_example.py

Шаг 6: прибыль

Вернитесь к своей учетной записи в исходном состоянии в веб-браузере. Слева на полке журнала должна появиться новая корзина данных под названием «Пример потока Python» (возможно, вам придется обновить страницу). Щелкните это ведро, а затем щелкните значок Waves, чтобы просмотреть данные теста.

Шаг 3: скрипт Python

Создайте сценарий и откройте текстовый редактор с помощью следующей команды:

нано vistors.py

Скопируйте и вставьте код отсюда в текстовый редактор.

Прежде чем мы попытаемся что-либо запустить, нам нужно внести несколько изменений и просмотреть, что происходит в нашем скрипте.

импортировать RPi. GPIO как GPIO

from time import sleep from ISStreamer. Streamer import Streamer # Сообщите Pi, что мы собираемся использовать его систему нумерации GPIO.setmode (GPIO. BCM) # Контакты, к которым подключены D1 и светодиод PIN = 23 СИНИЙ = 17 ЗЕЛЕНЫЙ = 27 КРАСНЫЙ = 22 # Укажите вывод нашего датчика движения как вход GPIO.setup (PIN, GPIO. IN) # Укажите выводы наших светодиодов как выход GPIO.setup (RED, GPIO. OUT) GPIO.output (RED, 0) GPIO.setup (GREEN), GPIO. OUT) GPIO.output (ЗЕЛЕНЫЙ, 0) GPIO.setup (СИНИЙ, GPIO. OUT) GPIO.output (СИНИЙ, 0)

Строки 1-21 предназначены для инициализации. Сначала мы импортируем интерфейс GPIO Pi и способ засыпать наш скрипт. Затем мы импортируем стример с исходным состоянием, который мы установили на предыдущей странице.

GPIO.setmode указывает, какую систему нумерации мы используем для контактов. Вместо физического местоположения мы используем систему нумерации Pi. Как и на нашей диаграмме ранее, мы выбрали выводы 23, 17, 27 и 22. Затем мы настраиваем вывод движения как вход, а выводы светодиода как выход.

# Имя сегмента исходного состояния (отображается)

BUCKET_NAME = ": jack_o_lantern: Trick or Treat Tracker" # Ключ ведра начального состояния (скрытый) BUCKET_KEY = "trickortreat" # Ключ доступа к начальному состоянию ACCESS_KEY = "Your_Access_Key" # Переменные, которые гарантируют, что мы не будем транслировать, что было или не было движение дважды подряд # Это экономит отправленные события и вычислительную мощность уже RecordMotion = False alreadyRecordedNoMotion = False counter = 0 # Инициализирует исходное состояние Streamer streamer = Streamer (bucket_name = BUCKET_NAME, bucket_key = BUCKET_KEY, access_key = ACCESS_KEY) # Включите и установите светодиод на желтый GPIO.output (КРАСНЫЙ, 1) GPIO.output (ЗЕЛЕНЫЙ, 1)

Строки 23-41 важны, потому что мы инициализируем стример исходного состояния и устанавливаем желтый светодиод. Поместите ключ доступа к исходному состоянию в строке 28.

# Цикл бесконечно

while True: # Если датчик движения показывает высокий уровень (обнаруживает движение): if GPIO.input (PIN) == 1: вывести «Обнаружено движение» # Если потоковая передача еще не выполнена: если еще не выполненоRecordedMotion: counter = counter + 1 # Установите красный светодиодный индикатор GPIO.output (RED, 1) GPIO.output (GREEN, 0) # Поток в исходное состояние streamer.log (": ghost: или: chocolate_bar:?", ": chocolate_bar: Time For Treats!") streamer.log (": candy: Hungry Humans?: candy:", counter) streamer.flush () alreadyRecordedMotion = True ужеRecordedNoMotion = False else: # Приостановить скрипт на 1 секунду sleep (1) else: print "Движение не обнаружено" # Если мы еще не транслировали: если еще не записано: # Установите светодиод на желтый GPIO.output (КРАСНЫЙ, 1) GPIO.output (ЗЕЛЕНЫЙ, 1) # Поток в исходное состояние streamer.log (": ghost: или: chocolate_bar:? ",": no_pedestrians: No One Around ") streamer.flush () alreadyRecordedNoMotion = True ужеRecordedMotion = False else: # Приостановить скрипт на 1 секунду сна (1)

Строки 43-77 - это основа кода. Если движение обнаружено, скрипт проверит, нет ли «Пора угощений!». уже транслировался. Если это не так, он переходит в исходное состояние, и светодиод загорается красным; если да, сценарий ждет 1 секунду, а затем снова считывает данные с датчика движения. То же самое происходит, если движение не обнаружено.

Пришло время проверить код! Убедитесь, что вы сохранили отредактированный файл с ключом доступа, добавленным в строке 28, а затем введите в терминал:

Python Посетители.py

Вы должны увидеть, как загорится светодиод, и в командной строке начнется вывод сообщения «Движение не обнаружено». Попробуйте помахать рукой над датчиком движения - теперь вы должны увидеть красный свет и начать печать "Обнаружено движение"!

Теперь, чтобы убедиться, что наши показания передаются в исходное состояние.

Шаг 4. Панель инструментов "Кошелек или жизнь"

Панель инструментов "Кошелек или жизнь"
Панель инструментов "Кошелек или жизнь"

Перейдите в исходное состояние и проверьте свою панель управления! Вы должны увидеть корзину с названием «Трекер уловок или угощений». Помашите рукой возле датчика движения и смотрите, как он обновляется!

Моя панель инструментов состоит из 2 сводных плиток, отображающих последнее значение и гистограмму количества событий, поэтому я могу видеть, когда срабатывал датчик.

Вот несколько вещей, которые следует учитывать:

  • Вероятно, вы захотите разделить количество «голодных людей» на 2, чтобы учесть тот факт, что один и тот же человек пройдет перед датчиком движения дважды - на пути к вашей двери и на обратном пути. Вы можете сделать это с помощью выражений в реальном времени, используя уравнение «= math.round (([Hungry Humans?] / 2), 0)».
  • Вы можете проверить, насколько чувствительным кажется ваш датчик движения, и соответственно разместить его на тротуаре. Я предлагаю держать его достаточно далеко от двери, чтобы он не срабатывал, когда кто-то стоит у двери.
  • Вы также можете настроить текстовые оповещения, чтобы сообщить вам, что кто-то приближается.
  • Выберите фоновое изображение, чтобы придать вашей приборной панели немного жуткий характер!

Рекомендуемые: