Съдържание:
- Консумативи
- Стъпка 1: Свързване на акселерометъра с Raspberry Pi
- Стъпка 2: Свързване на бутон с Raspberry Pi
- Стъпка 3: Разработване на скрипт на Python за серийно управление на мишката
- Стъпка 4: Разработване на скрипт на Python за управление на показалеца на мишката чрез Bluetooth
- Стъпка 5: Вграждане на акселерометър и бутон върху ръкавицата
Видео: [Носеща мишка] Контролер за носеща мишка, базиран на Bluetooth, за Windows 10 и Linux: 5 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
Направих контролер за мишка, базиран на Bluetooth, който може да се използва за управление на показалеца на мишката и извършване на операции, свързани с компютърна мишка, в движение, без да докосвате никакви повърхности. Електронната схема, която е вградена в ръкавица, може да се използва за проследяване на жестове с ръце чрез акселерометър и това може да се преведе в движението на показалеца на мишката. Това устройство също е свързано с бутон, който възпроизвежда щракването с левия бутон. Устройството може да бъде свързано последователно към компютъра (чрез USB) или безжично чрез Bluetooth връзка. Bluetooth осигурява здрава и универсална безжична комуникация между хост устройството и тази носима мишка. Тъй като Bluetooth е широко достъпен и е вграден с почти всички лични лаптопи, случаят на използване на такова носимо устройство е широк. Използването на Raspberry Pi, която е често използвана платформа за разработка за различни проекти, взаимодействието на различни сензори и разработването на такова устройство е лесно и мащабируемо. Ръкавицата може да бъде заменена с всяка друга носима, за да стане по -широко нейното приложение.
Като предпазна мярка срещу COVID-19, препоръчително е да избягвате докосване на повърхности, които могат да се споделят между различни хора, а лаптоп със сензорен екран или мишка може да бъде сред тези общи повърхности. Използването на такова носимо устройство помага за поддържане на хигиена и поддържане на често използваните повърхности дезинфекцирани:)
Консумативи
- Raspberry Pi 3 Модел B V1.2
- Акселерометър с тройна ос SparkFun - MMA8452Q
- Мъжка към женска джъмперна жица
- Ръкавица
- Тиксо
- Ножици
- Micro-USB кабел
- HDMI кабел (за отстраняване на грешки чрез Raspberry Pi)
Стъпка 1: Свързване на акселерометъра с Raspberry Pi
Използвах триосен акселерометър MMA8542Q от Sparkfun, който използва комуникационния протокол I2C, за да разговаря с пиновете на Raspberry Pi GPIO и да изпраща данните за осите. Този сензор осигурява различни режими на работа с конфигурируемата скорост на предаване на данни, режими на заспиване, обхват на ускорение, режим на филтър и др. Намерих кода от Pibits за много полезен при първоначалната ми конфигурация на сензора и тестването му с жестове с ръце. По -добре е първо да поставите сензора върху равна повърхност и да направите детерминирани наклони, като същевременно наблюдавате стойностите на суровия сензор. Това е особено полезно за разбиране как този сензор реагира с различни жестове на ръцете и как можем да зададем прагове за нашето приложение. След като акселерометърът е успешно свързан, можете да видите необработените данни за осите, идващи на екрана на терминала на Pi.
Стъпка 2: Свързване на бутон с Raspberry Pi
В това носимо устройство свързах бутон, който може да работи като ляв бутон на мишката, така че да мога да кликвам върху икони на екрана. След това двата края на бутона са свързани към 2 GPIO пина на Pi. Единият извод извежда логически максимум, а другият изчислява тази стойност. Когато бутонът е натиснат, веригата се затваря и входният щифт може да прочете логически висока стойност, която след това се обработва от скрипта, който написах, за да подражава на щракване с левия бутон на мишката. Поради липсата на поялник използвах тиксо за свързване на джъмперите с бутона.
Стъпка 3: Разработване на скрипт на Python за серийно управление на мишката
Използвах библиотеката Pyautogui Python, за да контролирам показалеца на мишката. Причината да използвате тази библиотека е, че тя работи както на Linux, така и на платформата Windows. За да контролирам показалеца на мишката на моя Raspberry Pi, първо свързах Pi към дисплей. След това използвах следните API, предоставени от библиотеката, за да контролирам показалеца на мишката си:
- pyautogui.move (0, 200, 2) # премества мишката надолу с 200 пиксела за 2 секунди
- pyautogui.click () # щракнете с мишката
За да филтрирам данните за грешките, идващи от Accelerometer, използвах усредняване и други методи за филтриране, които могат лесно да бъдат разбрани чрез приложения код. API pyautogui.move (0, y) беше използван по такъв начин, че показалецът на мишката може да се движи нагоре-надолу или наляво-надясно наведнъж. Това е така, защото акселерометърът отчита оси в посока X, Y и Z, но API приема само 2 аргумента, оси X и Y. Следователно този подход беше много подходящ за моя акселерометър и за картографиране на жестовете на екрана.
Стъпка 4: Разработване на скрипт на Python за управление на показалеца на мишката чрез Bluetooth
Тази част е усъвършенствано приложение, при което всеки лаптоп с Bluetooth възможности може да комуникира с Raspberry Pi в комуникационен модел сървър-клиент и да предава безжично координати на мишката. За да настроим 64-битов лаптоп с Windows 10, който да позволява Bluetooth комуникация, трябва да следваме стъпките по-долу:
Windows 10:
- Създайте входящ Bluetooth COM порт.
- Сдвоете Bluetooth на Pi с Bluetooth на лаптопа, като направите Pi откриваем.
- Инсталирайте Python на Windows.
- Инсталирайте pip в Windows. Pip се използва за инсталиране на библиотеки на Linux или Windows машина.
- Инсталирайте pyautogui на Windows, като използвате: pip install pyautogui
- След като pyautogui е инсталиран на устройството, инсталирайте Pybluez на Windows, като използвате следната команда на терминала на Windows, като използвате: pip install PyBluez-win10. PyBluez позволява Bluetooth комуникация както на Windows, така и на Linux компютри.
-
За да разработим приложение на лаптоп с Windows 10, трябва да инсталираме Microsoft Visual Studio (изисква се 15-20 GB пространство) и неговите инструменти за изграждане. Следователно, заедно с PyBluez, трябва да следваме инструкциите по -долу,
- Изтеглете и стартирайте „Visual Studio Installer“:
-
Инсталирайте „Visual Studio Build Tools 2017“, поставете отметка в „Visual C ++ build tools“и „Universal Windows Platform build tools“
- git clone
- cd pybluez
python setup.py install
- Ако горните инструкции са спазени правилно, стартирането на Python на терминала на Windows и импортирането на pyautogui и Bluetooth модул трябва да работи без грешки, както е показано на изображението по -горе.
- В библиотеката pybluez, инсталирана на машината с Windows, отидете на: pybluez-master / examples / simple / rfcomm-server.py и изпълнете с помощта на python rfcomm-server.py. Ако терминалът преминава в състояние на изчакване без грешки, отидете в раздела по -долу за настройка на Bluetooth на Pi. Ако има грешки при инсталирането на pybluez, вижте GitHub Проблеми за отстраняване на грешки.
Raspbian на Raspberry Pi:
- Инсталирайте PyBluez на Pi
- Стартирайте примера на сървъра в Windows. След това в Pi отидете на pybluez-master / examples / simple / rfcomm-client.py и изпълнете. Ако двете устройства са започнали да комуникират, Bluetooth вече е настроен и на двете устройства. За да разберете повече за това как комуникацията на сокета работи с Python, вижте тази връзка от MIT.
Ще бъдат необходими някои допълнителни анализи на данни, за да се изпращат данни по осите от Pi към компютър, тъй като данните се изпращат в байтове. Обърнете се към прикачения код за повече информация относно комуникацията на данни на клиента и сървъра.
Стъпка 5: Вграждане на акселерометър и бутон върху ръкавицата
След като акселерометърът е добре свързан, скелетната система изглежда нещо първото изображение на тази стъпка.
Тъй като повърхността на ръкавицата не е плоска, използвах фиктивна кредитна карта, която идва в пощенската ми кутия от време на време. Съгласно второто изображение на тази стъпка, прикрепих фиктивната кредитна карта към горната повърхност на ръкавицата си с тиксо. Поставих акселерометъра върху картата. Тази настройка беше достатъчно здрава, за да поддържа моя акселерометър стабилен и да може да проследява точно жестовете ми.
Препоръчано:
Arduino базиран DIY контролер за игри - Arduino PS2 контролер за игри - Възпроизвеждане на Tekken с DIY Arduino геймпад: 7 стъпки
Arduino базиран DIY контролер за игри | Arduino PS2 контролер за игри | Игра на Tekken с DIY Arduino геймпад: Здравейте момчета, играта на игри винаги е забавна, но играта със собствения си DIY персонализиран контролер на играта е по -забавна. Така че ще направим контролер за игра, използвайки arduino pro micro в тази инструкция
Музикален генератор, базиран на времето (ESP8266 базиран midi генератор): 4 стъпки (със снимки)
Метеорологичен генератор, базиран на времето (ESP8266 базиран Midi генератор): Здравейте, днес ще ви обясня как да направите свой собствен малък музикален генератор, базиран на времето. Той е базиран на ESP8266, който е нещо като Arduino и реагира на температура, дъжд и интензивността на светлината. Не очаквайте това да прави цели песни или акорди
Контролер за ниво на водата, базиран на IOT, използващ NodeMCU ESP8266: 6 стъпки
Контролер за нивото на водата, базиран на IOT, използващ NodeMCU ESP8266: Това е инструкция как да създадете регулатор на нивото на водата, базиран на IOT. Характеристики на този проект са:- Актуализации на нивото на водата в реално време в приложението за Android. Автоматично включете водната помпа, когато водата достигне под минималното ниво. Ау
Капацитивно докосване с Evive (базиран на Arduino контролер): 6 стъпки (със снимки)
Капацитивно докосване с Evive (базиран на Arduino контролер): Знаете ли как работи сензорният екран на вашия смартфон? Смартфонът има множество сензори за докосване под стъкления екран. В днешно време тя се основава на капацитивна технология за докосване на докосване и дори леко докосване се открива лесно. Усеща се капацитивно докосване
Arduino базиран сериен серво контролер: 6 стъпки
Arduino базиран сериен серво контролер: Това е прост сериен контролер за множество серво базирани на Arduino. (моят първи инструктаж също :)) Повечето от работата в това дойде от това да накарам софтуера да разговаря с arduino и да направи протокол за прехвърляне на данните. Като е