Съдържание:

Raspberry Pi Smart Scale: 10 стъпки (със снимки)
Raspberry Pi Smart Scale: 10 стъпки (със снимки)

Видео: Raspberry Pi Smart Scale: 10 стъпки (със снимки)

Видео: Raspberry Pi Smart Scale: 10 стъпки (със снимки)
Видео: Course Lesson 10 of 10: Controlling Raspberry Pi Pico 4WD Smart Car Kit with mobile App 2024, Юли
Anonim
Image
Image

Уморихте ли се да се взирате в тази скучна, стара, лоша новина за баня всяка сутрин? Този, който често ти казва „Мразя те“, както всеки път, когато го настъпиш. Защо никой не е направил скала, която всъщност е забавна или мотивираща за използване? Време е да създадете мащаб, който не само да е умен, но и да има малко повече индивидуалност, за да озари деня ви. Ще изградим своя собствена везна за баня, проследяваща теглото, текстови съобщения, която има вградено чувство за хумор.

Това е забавен и лесен проект, който комбинира Wii балансираща платка, Raspberry Pi и онлайн платформа за анализ на данни, за да създаде мащаб, свързан с мрежата, контролиран от скрипт на Python, който можете да хакнете.

Ниво на проекта: Начинаещ Приблизително време за завършване: 20 минути Фактор на забавление: Неизмеримо

В този урок стъпка по стъпка ще:

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

Стъпка 1: Оборудване

Везна за баланс на Wii
Везна за баланс на Wii

Ето списък на цялото оборудване, което ще използваме в този урок, с връзки, където можете да закупите всеки артикул.

  • 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

Защо 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 инсталирайте python-bluetooth

След като инсталацията приключи, ние сме готови да се свържем и да комуникираме с Wii Balance Board. Няма да сдвояваме постоянно нашия борд с нашия Pi, както правим с повечето от нашите Bluetooth устройства. Балансният съвет на Wii никога не е бил предназначен да се сдвоява с нещо различно от 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 клониране в 'smart-scale' … дистанционно: Преброяване на обекти: 14, готово. дистанционно: Компресиране на обекти: 100% (12/12), направено. дистанционно: Общо 14 (делта 1), повторно 8 (делта 0), повторно използване 0 Разопаковане на обекти: 100% (14/14), готово. Проверка на свързаността… готово.

клониране в „интелигентен мащаб“… дистанционно: Преброяване на обекти: 14, готово. дистанционно: Компресиране на обекти: 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: 44 Wiboard свързан НАЗАД към получените данни за записване

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

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

Можете да играете с този номер, като промените стойността и стартирате отново скрипта, за да видите промяната в измереното тегло и времето, необходимо за всяко измерване. Претеглете се, претеглете кучето си, претеглете каквото и да видите дали измерванията имат смисъл. За да спрете скрипта, натиснете CTRL+C.

Вече успешно сте преобразували своя Wii Balance Board в свързана с Raspberry Pi скала. Сега нека го направим готин мащаб.

Стъпка 5: Хардуерни ощипвания

Хардуерни ощипвания
Хардуерни ощипвания

Nintendo предполага, че винаги ще захранвате своя Wii Balance Board с четири батерии AA и не включва адаптер за променливотоково захранване. Наличието само на захранване от батерията би било неудобно, защото не можем постоянно да сдвояваме нашия Wii Board с нашия Pi чрез Bluetooth. Трябва да го синхронизираме, след което да го оставим да остане синхронизиран, без да изтощава батериите, за да можем просто да стъпим на везната и да претеглим. За щастие има няколко адаптера на трети страни, направени за Wii Balance Board, които можем да използваме, за да осигурим постоянно захранване от стенния контакт. Сменете батериите с батерия и включете променливотоковия адаптер в електрически контакт.

Необходимостта от сдвояване на Wii Balance Board и Raspberry Pi всеки път, когато изпълняваме нашия скрипт на Python, представлява друго неудобство поради местоположението на бутона за синхронизиране. Бутонът за синхронизиране е в долната част на Wii Board, което означава, че ще трябва да го преобръщаме всеки път, когато трябва да синхронизираме. Можем да поправим това, като направим малък лост с помощта на молив и три подложки от филц 3/8 ", както е показано по -горе. Акумулаторната батерия излага бутона за синхронизиране под долната повърхност на дъската. Залепете молив (или нещо подобно), който обхваща от бутона за синхронизиране към външната предна част на дъската. Подредете три 3/8 "филцови подложки (или нещо подобно) в центъра на молива, за да създадете неподвижен шарнир. Внимавайте да не излагате твърде много молив от дъската, тъй като не искате някой случайно да го изрита. Обърнете дъската и можете да натиснете бутона за синхронизиране, като просто натиснете лоста надолу. Малко хакване, но ефективно.

В зависимост от това как съхранявате своя Wii Board, може да искате да премахнете гумените подложки от краката на дъската (подложките са просто стикери, които можете да откъснете). 3/8 филцови подложки могат да бъдат поставени върху краката на дъската за лесно плъзгане.

Стъпка 6: Първоначално състояние

Първоначално състояние
Първоначално състояние

Искаме да предадем нашето тегло/данни в облачна услуга и тази услуга да превърне данните ни в хубаво табло за управление, до което имаме достъп от нашия лаптоп или мобилно устройство. Нашите данни се нуждаят от дестинация. Ще използваме Първоначално състояние като тази дестинация.

Стъпка 1: Регистрирайте се за първоначален държавен акаунт Отидете на https://iot.app.initialstate.com и създайте нов акаунт.

Стъпка 2: Инсталирайте ISStreamer Инсталирайте модула Python Initial State на вашето Pi: В командния ред (не забравяйте първо да SSH във вашия Pi), изпълнете следната команда:

$ 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 bashПарола: Започване на лесна инсталация на ISStreamer Python! Това може да отнеме няколко минути за инсталиране, вземете кафе:) Но не забравяйте да се върнете, ще имам въпроси по -късно!

Намерено easy_install: setuptools 1.1.6

Намерено пип: пип 1.5.6 от /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) основна версия на пип: 1 пип второстепенна версия: 5 ISStreamer намерени, актуализиране … Изискване вече актуален: ISStreamer в /Library/Python/2.7/site-packages Почистване … Искате ли автоматично да получите примерен скрипт? [да/не]

(изходът може да е различен и да отнеме повече време, ако никога преди не сте инсталирали модула за стрийминг на Python Initial State)

Когато бъдете подканени автоматично да получите примерен скрипт, въведете y. Това ще създаде тестов скрипт, който можем да стартираме, за да гарантираме, че можем да предаваме поточно данни към първоначалното състояние от нашия Pi. Ще бъдете подканени:

Къде искате да запишете примера? [по подразбиране:./is_example.py]:

Можете да въведете персонализиран локален път или да натиснете Enter, за да приемете по подразбиране. Ще бъдете подканени за вашето потребителско име и парола, които току -що сте създали, когато сте регистрирали своя акаунт за първоначално състояние. Въведете и двете и инсталацията ще завърши.

Стъпка 4: Ключове за достъп

Нека да разгледаме примерния скрипт, който е създаден.

$ nano is_example.py

На ред 15 ще видите ред, който започва с streamer = Streamer (bucket_…. Тези редове създават нова кутия с данни, наречена „Пример на Python Stream“и е свързана с вашия акаунт. Тази асоциация се случва поради access_key =”…“параметър на същия ред. Тази дълга поредица от букви и цифри е ключът ви за достъп до профила за първоначално състояние. Ако отидете в профила си за първоначално състояние в уеб браузъра си, кликнете върху потребителското си име в горния десен ъгъл, след което отидете на „Моите настройки“, ще намерите същия ключ за достъп в долната част на страницата под „Ключове за достъп до поточно предаване“.

Всеки път, когато създавате поток от данни, този ключ за достъп ще насочва този поток от данни към вашия акаунт (така че не споделяйте ключа си с никого).

Стъпка 5: Изпълнете примера

Стартирайте тестовия скрипт, за да се уверите, че можем да създадем поток от данни към вашия акаунт за първоначално състояние. Изпълнете следното:

$ python is_example.py

Стъпка 6: Печалба

Върнете се към първоначалния си акаунт в уеб браузъра си. Нова кофа с данни, наречена „Пример на Python Stream“, трябваше да се появи вляво в рафта ви за регистрация (може да се наложи да опресните страницата). Можете да видите данните в Tiles, за да видите същите тези данни под формата на табло.

Стъпка 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 интелигентен мащаб $ nano smartscale.py

В горната част на този файл има раздел Потребителски настройки.

# --------- Потребителски настройки --------- BUCKET_NAME = ": ябълка: Моята история на теглото" BUCKET_KEY = "weight11" ACCESS_KEY = "ПОСТАВЕТЕ КЛЮЧА ЗА ИЗХОДЕН ДЪРЖАВЕН ДОСТЪП ТУК" METRIC_UNITS = FalseWEIGHT_SAMPLES = 500THROWAWAY_SAMPLES = 100WEIGHT_HISTORY = 7# ---------------------------------

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

След като посочите всеки параметър в този раздел и запазите промените си, сте готови да изпълните последния скрипт. Преди да стартираме скрипта, нека разгледаме какво ще направи.

  • В началото на скрипта ще бъдете помолени да сдвоите вашия Wii Balance Board с вашия Raspberry Pi. Използвайте лоста, който сте хакнали заедно в раздел 2: Хардуерни настройки, за да натиснете бутона за синхронизиране, когато бъдете подканени.
  • След като скриптът стартира, стъпете на Wii Board, за да започнете да измервате теглото си. След 4-5 секунди теглото ви автоматично ще бъде изпратено до вашия акаунт за първоначално състояние.
  • След като настроим SMS известия (в няколко стъпки), скоро след измерването ще получите текстово съобщение.

Стартирайте скрипта, за да започнете магията.

$ sudo python smartscale.py

Стъпка 8: Табло за управление

Табло
Табло

Отидете в профила си за първоначално състояние и щракнете върху новата кофа с данни с името, съответстващо на параметъра BUCKET_NAME (т.е. Моята история на теглото). Щракнете върху Плочки, за да видите таблото за история на теглото си. Трябва да видите три плочки за първи път, когато преглеждате данните си в Плочки - Актуализация, Дата на теглото и Тегло (lb). Можете да персонализирате таблото си за управление чрез преоразмеряване и преместване на плочки, както и промяна на типовете изгледи и дори добавяне на плочки. Това табло ви дава възможност да видите историята на теглото си с един поглед. Той е удобен за мобилни устройства и дори можете да го споделите с други хора.

Можете да добавите фоново изображение към таблото си за управление, за да придадете на данните си повече индивидуалност и контекст.

Стъпка 9: SMS

СМС
СМС

Нека създадем SMS сигнал, когато везната измерва теглото. Уверете се, че кофата ви с данни за историята на теглото е заредена.

  1. Кликнете върху настройките на кофата (под нейното име) в прозореца на сегмента с данни.
  2. Щракнете върху раздела Тригери.
  3. Изберете потока от данни, който да се задейства. Можете да използвате падащия списък, за да изберете от съществуващите потоци, след като се зареди кофа с данни или можете да въведете името/ключа на потока ръчно. В горната примерна снимка на екрана е избрано „Актуализиране“.
  4. Изберете условен оператор, в този случай „съвпадение“.
  5. Изберете тригерната стойност, която ще задейства действие (въведете ръчно желаната стойност). Въведете lb, ако не използвате метрични единици, или въведете kg, ако използвате метрични единици. Всеки път, когато потокът „Актуализация“съдържа „lb“(или „kg“), ще получите известие за текстово съобщение.
  6. Щракнете върху бутона „+“, за да добавите условието за задействане.
  7. Въведете вашия имейл адрес или телефонен номер в полето „Контакти за уведомяване“.
  8. Щракнете върху бутона „+“, за да добавите информацията за контакт.
  9. Въведете всеки код за потвърждение, ако добавяте нов телефонен номер, за да завършите настройката.
  10. Щракнете върху бутона Готово в долната част, за да се върнете към главния екран. Вашият спусък сега е активен и ще се задейства, когато условието е изпълнено.

След като настройката приключи, ще получавате SMS всеки път, когато се претегляте, който съдържа теглото ви, колко се е променило теглото ви от последното измерване и случайна шега / обида / комплимент.

Стъпка 10: Заключение

Има неограничени възможности за надграждане върху това, което сте създали сега. Ето някои идеи за този проект:

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

Отсечете се и ме уведомете, ако този урок ви вдъхнови да създадете нещо невероятно.

Препоръчано: