Оглавление:

Умные весы Raspberry Pi: 10 шагов (с изображениями)
Умные весы Raspberry Pi: 10 шагов (с изображениями)

Видео: Умные весы Raspberry Pi: 10 шагов (с изображениями)

Видео: Умные весы Raspberry Pi: 10 шагов (с изображениями)
Видео: Raspberry Pi - Что нужно знать? Что нужно иметь? Достаточно купить только плату? 2024, Июль
Anonim
Image
Image

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

Это веселый и простой проект, который сочетает в себе балансировочную доску Wii, Raspberry Pi и платформу онлайн-анализа данных для создания подключенного к Интернету весов, управляемого скриптом Python, который вы можете взломать.

Уровень проекта: Начальный Приблизительное время выполнения: 20 минут Фактор удовольствия: неизмеримо

В этом пошаговом руководстве вы:

  • подключите балансировочную доску Wii к Raspberry Pi через Bluetooth, запустите скрипт Python, который измеряет ваш вес, когда вы наступаете на балансировочную доску
  • используйте Raspberry Pi для потоковой передачи вашего веса в облачный сервис (начальное состояние)
  • настроить SMS-уведомление каждый раз, когда вы взвешиваетесь
  • создать приборную панель для отслеживания веса, к которой вы можете получить доступ в своем веб-браузере

Шаг 1: оборудование

Весы Wii Balance Board
Весы Wii Balance Board

Вот список всего оборудования, которое мы будем использовать в этом руководстве, со ссылками на то, где вы можете приобрести каждый предмет.

  • Raspberry Pi 3 с SD-картой и блоком питания (https://init.st/psuufmj)
  • Плата баланса Wii (https://init.st/qg4ynjl)
  • Аккумулятор Wii Fit (https://init.st/iyypz2i)
  • Войлочные подушечки 3/8 дюйма (https://init.st/8gywmjj)
  • Карандаш (я не даю вам ссылку на то, где купить карандаш … один из них должен быть у вас)

Примечание. Если у вас Raspberry Pi 1 или 2, вам понадобится адаптер Bluetooth (https://init.st/7y3bcoe).

Шаг 2: Весы Wii Balance Board

Почему Wii Balance Board? Оказывается, это действительно хорошие и надежные весы с возможностью подключения по Bluetooth. Это позволит нам подключить его к одноплатному компьютеру (Raspberry Pi), чтобы считывать ваш вес в скрипте Python и отправлять эти измерения в онлайн-службу данных, чтобы делать интересные вещи. Кроме того, есть большая вероятность, что у вас или у кого-то из ваших знакомых уже есть тот, который просто собирает пыль.

Нам нужно будет внести несколько простых изменений в нашу Wii Balance Board, чтобы сделать этот проект действительно практичным и удобным.

Шаг 3. Настройка Bluetooth

Raspberry Pi 3 имеет встроенный Bluetooth - все, что нам нужно для связи с Wii Balance Board. Если у вас есть Raspberry Pi 1 или 2, нам придется использовать один из наших USB-портов для подключения адаптера.

Включите свой Pi (я предполагаю, что вы уже установили Raspbian, и он загружается) и перейдите в окно терминала Raspberry Pi. Вы можете увидеть адрес вашего Bluetooth-ключа с помощью команды "hcitool dev":

$ hcitool devУстройства: hci0 00: 1A: 7D: DA: 71: 13

Установите модули bluetooth, которые мы будем использовать в наших скриптах Python:

$ sudo apt-get install python-bluetooth

После завершения установки мы готовы подключиться и общаться с Wii Balance Board. Мы не будем постоянно связывать нашу плату с нашим Pi, как мы это делаем с большинством наших устройств Bluetooth. Wii Balance Board никогда не предназначалась для сопряжения с чем-либо, кроме Wii, и постоянное сопряжение оказалось довольно запутанной задачей. Сопряжение будет происходить каждый раз, когда мы запускаем наш скрипт Python.

Шаг 4: чтение шкалы

Пришло время подключить нашу Wii Balance Board к Raspberry Pi. Мы сделаем это, изменив версию скрипта Gr8W8Upd8M8.py Ставроса Корокитакиса (https://github.com/skorokithakis/gr8w8upd8m8). Скрипт python, который мы будем использовать для этого шага, находится здесь. Вы можете скопировать содержимое этого файла в файл, который вы создаете на своем Raspberry Pi, или вы можете клонировать все файлы python, которые мы будем использовать для всего этого проекта. Сделаем последнее. Введите следующие команды в терминал вашего Raspberry Pi:

$ cd ~ $ git clone $ git clone https: github.com/initialstate/smart-scale.git клонирование в «умный масштаб»… удаленный: Подсчет объектов: 14, готово. remote: Сжатие объектов: 100% (12/12), готово. удаленно: Всего 14 (дельта 1), повторно использовано 8 (дельта 0), повторно использовано 0 пакетов Распаковка объектов: 100% (14/14), выполнено. Проверка подключения… готово.

клонирование в «умные весы»… удаленное: Подсчет объектов: 14, готово. remote: Сжатие объектов: 100% (12/12), готово. удаленный: Всего 14 (дельта 1), повторно использовано 8 (дельта 0), повторно использовано пакетом 0 Распаковка объектов: 100% (14/14), выполнено. Проверка подключения… готово.

Вы должны увидеть два файла python в новом каталоге smart-scale - smartscale.py и wiiboard_test.py.

$ cd smart-scale $ lsREADME.md smartscale.py wiiboard_test.py

Запустите сценарий wiiboard_test.py, чтобы проверить связь и снять показания веса с Wii Balance Board:

$ sudo python wiiboard_test.py

Вы увидите следующий ответ:

Обнаружение доски… Нажмите красную кнопку синхронизации на доске.

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

Обнаружен Wiiboard по адресу 00: 23: CC: 2E: E1: 44 Попытка подключиться… Подключен к Wiiboard по адресу 00: 23: CC: 2E: E1: 44Wiiboard подключен обратно к записи данных получено 84,9185297 фунтов 84,8826412 фунтов 84,9275927 фунтов

Скрипт wiiboard_test.py берет количество измерений веса, указанное в строке 10, и выводит среднее значение:

# --------- Пользовательские настройки --------- WEIGHT_SAMPLES = 500 # ------------------------- --------

Вы можете поиграть с этим числом, изменив значение и повторно запустив скрипт, чтобы увидеть изменение измеренного веса и времени, необходимого для каждого измерения. Взвесьте себя, взвесьте свою собаку, взвесьте что угодно и посмотрите, имеют ли смысл измерения. Чтобы остановить скрипт, нажмите CTRL + C.

Теперь вы успешно преобразовали свою Wii Balance Board в подключенные весы Raspberry Pi. А теперь сделаем крутой масштаб.

Шаг 5: настройки оборудования

Аппаратные настройки
Аппаратные настройки

Nintendo предполагала, что вы всегда будете питать свою Wii Balance Board от четырех батареек AA и не прилагала адаптера переменного тока. Было бы неудобно иметь только аккумуляторную батарею, потому что мы не можем постоянно подключать нашу плату Wii к нашему Pi через Bluetooth. Нам нужно синхронизировать его, а затем позволить ему оставаться синхронизированным, не разряжая батареи, чтобы мы могли просто встать на весы и взвесить. К счастью, есть несколько адаптеров сторонних производителей для Wii Balance Board, которые мы можем использовать для обеспечения постоянного питания от розетки. Замените батареи на батарейный блок и подключите адаптер переменного тока к розетке.

Необходимость соединять Wii Balance Board и Raspberry Pi каждый раз, когда мы запускаем наш скрипт Python, создает еще одно неудобство из-за расположения кнопки синхронизации. Кнопка синхронизации находится в нижней части Wii Board, что означает, что нам придется переворачивать ее каждый раз, когда нам нужно синхронизировать. Мы можем исправить это, сделав небольшой рычажок с помощью карандаша и трех фетровых прокладок 3/8 дюйма, как показано выше. Перезаряжаемый батарейный блок открывает кнопку синхронизации на нижней поверхности платы. Приклейте клейкой лентой (или чем-то подобным) карандашом от кнопки синхронизации к внешней передней части доски. Уложите три фетровых прокладки 3/8 дюйма (или что-то подобное) по центру карандаша, чтобы создать неподвижный стержень. Будьте осторожны, не выставляйте слишком много карандаша за пределы доски, так как вы не хотите, чтобы кто-то случайно выбросил его. Переверните доску, и вы можете нажать кнопку синхронизации, просто нажав на рычаг. Немного хакерский, но эффективный.

В зависимости от того, как вы храните свою доску Wii, вы можете снять резиновые накладки для захвата с ножек платы (накладки - это просто наклейки, которые вы можете оторвать). На ножки доски можно положить 3/8 дюймовые войлочные накладки для легкого скольжения.

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

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

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

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

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

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

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

pi @ raspberrypi ~ $ / curl -sSL https://get.initialstate.com/python -o - | sudo bashPassword: Начало простой установки 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 found, update… Требование уже обновлено: ISStreamer в /Library/Python/2.7/site-packages Очистка… Хотите автоматически получить пример сценария? [да / нет]

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

Когда будет предложено автоматически получить пример сценария, введите y. Это создаст тестовый сценарий, который мы можем запустить, чтобы убедиться, что мы можем передавать данные в начальное состояние из нашего Pi. Вам будет предложено:

Где вы хотите сохранить пример? [по умолчанию:./is_example.py]:

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

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

Давайте посмотрим на созданный пример скрипта.

$ nano is_example.py

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

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

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

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

$ python is_example.py

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

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

Шаг 7: окончательный сценарий

Предполагая, что вы выполнили команду «git clone https://github.com/InitialState/smart-scale.git» в Части 2, последний сценарий, который объединяет все вместе, называется smartscale.py в вашем каталоге ~ / smart-scale. (https://github.com/InitialState/smart-scale/blob/master/smartscale.py)

Перед запуском сценария необходимо задать несколько параметров. Откройте smartscale.py в своем любимом текстовом редакторе, например, в nano.

$ cd ~ $ cd smart-scale $ nano smartscale.py

В верхней части этого файла есть раздел Пользовательские настройки.

# --------- Пользовательские настройки --------- BUCKET_NAME = ": apple: Моя история веса" BUCKET_KEY = "weight11" ACCESS_KEY = "РАЗМЕСТИТЕ КЛЮЧ ДОСТУПА К НАЧАЛЬНОМУ СОСТОЯНИЮ ЗДЕСЬ" METRIC_UNITS = FalseWEIGHT_SAMPLES = 500THROWAWAY_SAMPLES = 100WEIGHT_HISTORY = 7 # ---------------------------------

  • BUCKET_NAME задает имя сегмента данных начального состояния, в который будет передаваться ваш вес / данные. Это можно установить здесь и изменить позже в пользовательском интерфейсе.
  • BUCKET_KEY - уникальный идентификатор сегмента, указывающий, куда будут передаваться ваши данные. Если вы хотите создать другой сегмент / панель мониторинга, используйте здесь другой идентификатор (* обратите внимание, что если вы архивируете сегмент, вы не можете повторно использовать его ключ в новом сегменте).
  • ACCESS_KEY - это ключ вашей учетной записи в исходном состоянии. Если вы не укажете ACCESS_KEY в этом поле, ваши данные не будут отображаться в вашем аккаунте.
  • METRIC_UNITS позволяет указать ваш вес в кг, если установлено значение True, или в фунтах, если установлено значение False.
  • WEIGHT_SAMPLES указывает, сколько измерений выполняется и усредняется вместе, чтобы получить ваш фактический вес. 500 измерений занимают около 4-5 секунд и дают довольно точные результаты.
  • THROWAWAY_SAMPLES указывает количество сэмплов, которые выбрасываются, когда вы впервые встаете на доску. Это предотвращает отклонение начальных шагов и сдвига от окончательного измерения. Это всегда должно быть намного меньше WEIGHT_SAMPLES.
  • WEIGHT_HISTORY устанавливает количество измерений, выполненных перед отправкой дополнительного обновления. Только измерения, сделанные с интервалом в два часа или более, засчитываются в историю.

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

  • В начале скрипта вам будет предложено подключить Wii Balance Board к Raspberry Pi. Используйте рычаг, который вы взломали вместе в разделе Часть 2: Настройка оборудования, чтобы нажать кнопку синхронизации, когда будет предложено.
  • После запуска сценария встаньте на доску Wii, чтобы начать измерение своего веса. Через 4-5 секунд ваш вес будет автоматически отправлен на ваш счет в исходном состоянии.
  • После того, как мы настроим SMS-уведомления (за пару шагов), вы получите текстовое сообщение вскоре после измерения.

Запустите сценарий, чтобы начать волшебство.

$ sudo python smartscale.py

Шаг 8: Панель управления

Щиток приборов
Щиток приборов

Перейдите в свою учетную запись в исходном состоянии и щелкните новый сегмент данных с именем, соответствующим параметру BUCKET_NAME (например, Моя история веса). Нажмите Плитки, чтобы просмотреть панель истории веса. При первом просмотре данных в плитках вы должны увидеть три плитки - «Обновление», «Дата веса» и «Вес (фунты)». Вы можете настроить свою панель мониторинга, изменяя размер и перемещая плитки, а также изменяя типы представлений и даже добавляя плитки. Эта панель управления дает вам возможность быстро просмотреть историю своего веса. Он удобен для мобильных устройств, и вы даже можете поделиться им с другими людьми.

Вы можете добавить фоновое изображение на свою панель инструментов, чтобы придать вашим данным больше индивидуальности и контекста.

Шаг 9: SMS

SMS
SMS

Давайте создадим SMS-оповещение, когда весы будут измерять вес. Убедитесь, что корзина данных истории веса загружена.

  1. Щелкните настройки корзины (под ее названием) в окне корзины данных.
  2. Щелкните вкладку «Триггеры».
  3. Выберите поток данных для запуска. Вы можете использовать раскрывающийся список для выбора из существующих потоков после загрузки сегмента данных или ввести имя / ключ потока вручную. На приведенном выше примере снимка экрана выбрано «Обновить».
  4. Выберите условный оператор, в данном случае «совпадение».
  5. Выберите значение триггера, которое будет запускать действие (вручную введите желаемое значение). Введите фунты, если вы не используете метрические единицы, или килограммы, если вы используете метрические единицы. Каждый раз, когда поток «Обновление» содержит «фунты» (или «кг»), вы получите текстовое уведомление.
  6. Нажмите кнопку «+», чтобы добавить условие триггера.
  7. Введите свой адрес электронной почты или номер телефона в поле «Контакты для уведомления».
  8. Нажмите кнопку «+», чтобы добавить контактную информацию.
  9. Введите любой проверочный код, если добавляете новый номер телефона для завершения настройки.
  10. Нажмите кнопку «Готово» внизу, чтобы вернуться на главный экран. Теперь ваш триггер активен и сработает при выполнении условия.

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

Шаг 10: Заключение

У вас есть неограниченные возможности для развития того, что вы сейчас создали. Вот несколько идей для этого проекта:

  • Вы можете передавать данные из других источников в ту же панель мониторинга истории веса (информацию), чтобы создать свою личную панель мониторинга здоровья.
  • Вы можете изменить шутки в функциях messageWeighFirst, messageWeighLess, messageWeighMore и messageWeighSame на свое собственное чувство юмора.
  • Вы можете превратить шутки в практические сообщения или удалить их и использовать код весов для отслеживания веса чего-то более важного, помимо собственного веса тела.
  • Вы можете создать свой собственный умный холодильник для пива / вина, используя тот же подход. Для этого уже есть отличный учебник.

Взломайте и дайте мне знать, вдохновит ли вас этот урок на создание чего-то удивительного.

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