GithubHelp home page GithubHelp logo

mattrussmill / qplumbob Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 118 KB

Qt/QML Android application and Arduino Nano IoT sketch to control a multi-functional RGB light-up object via Bluetooth Low Energy (BLE).

License: GNU General Public License v3.0

QML 23.52% QMake 2.66% C++ 73.82%
android arduino ble bluetooth pwm-controller qml qt

qplumbob's Introduction

QPlumbob Android Application and Arduino LED Controller

ABOUT:

The QPlumbob application and Arduino protype exists as proof of concept for learning the ins and outs of Bluetooth Low Energy (BLE) communication and QML mobile development. This project uses a Qt/QML Android application to scan for and authenticate with an Arduino based RGB LED controller via the BLE communication protocol.

BUILD ENVIRONMENT:

Qt Environment

The development envoronment consists of Qt Creator 4.13.0 using the Qt 5.15 framework. The application was built using the Android Clang (NDK 21.1) compiler packaged with Qt for Android 10.

Arduino Environment

The prototype environment uses version 1.8.13 of the Arduino IDE for the Arduino NANO IoT 33 device.

Notes

After importing the project or upgrading Qt if there are problems building or running the application on Android, try deleting and recreating the Android Manifest file.

CONTRIBUTIONS:

Currently Matthew R. Miller has been the only one to contribute to this project.

LICENSE:

QPlumbub is released under the GNU General Public License as published by the Free Software Foundation (version 3 of the License). The appropriate licensing files for this and supporting software can be found in the LICENSE.txt file.

qplumbob's People

Contributors

mattrussmill avatar

Watchers

 avatar

qplumbob's Issues

Service Disconnected

If the service becomes invalid (garment disconnects), the app does not free the memory allocated for BLE services and segfault occurs

Redesign LED UI

Use a circular design easily controlled by a thumb instead of the current pages and sliders which are a remnant of a previous use case

image

add bluetooth support to windows for easier debugging

"Qt 5.14 adds a native Win32 port supporting Classic Bluetooth on Windows 7 or newer, and Bluetooth LE on Windows 8 or newer. It must be enabled at build time by configuration option -native-win32-bluetooth. The UWP backend is used by default if this option is not set and the Win32 target platform supports the required UWP APIs (minimal requirement is Windows 10 version 1507, with slightly improved service discovery since Windows 10 version 1607)."

Bluetooth scan after enabled

When bluetooth is disabled and app launched, then rescanned the app does not recognize that the adapter was enabled

Service and Version Number for Garment

Need a way to detect hardware and firmware versions for the app.

Options:
*Use the UUID and have a header file with translating directives
*Use manufacturer data in bluetooth
*other

Add authentication pin to garment and app

To keep others from connecting to a device, add a pin that if entered incorrectly at time of connection will disconnect. Altering settings in the device should also be disabled if pin not correct. Pin should be stored on the device, and shorting two pins (button with duration) should reset the device to default pin.

DeviceListMenu tries to forget device on Settings Access

  • Select saved device
  • Open settings menu
  • exit settings menu
  • select unsaved device
  • error will appear:

"​Attempting to forget device of index:​ 2"​
"​Cannot remove device from list,​ does not exist:​ ISENGARD"​

Should not be trying to forget device. Race condition on enable/disable of checkbox and setting the checked status based on the device selected.

Add Report Bug

allow bug reporting in user menu that queries device information and describes the bug

Add Save Device Option

If device address is recognizable and a Maco product, connect to the device as soon as its available. Make this a configurable menu option and connected history configurable. To support this functionality the ability to save devices must come first

Add qWarning to bluetooth base class

errors should be separated out into warnings and criticals. When both occur, an error dialog should be shown. When critical error occurs, disconnect device. Will have to reassess all messages to determine what should be changed to a warning and what should be an error - title of popup should also change dynamically

Device Address vs UUID (Android vs iOS)

Will there have to be compiler specific directives for device / service discovery on ios vs android?

QBluetoothUuid QBluetoothDeviceInfo::deviceUuid() const
Returns a unique identifier for a Bluetooth device without an address.

In general, this uuid is invalid on every platform but macOS and iOS. It is used as a workaround for those two platforms as they do not provide Bluetooth addresses for found Bluetooth Low Energy devices. Every other platform uses address() instead.

This function was introduced in Qt 5.5.

Add Generic Error Dialog

Add an error dialog that can be triggered from anywhere and is passed a string from the back end

Bluetooth Scan List Under Buttons

when the bluetooth scan list fills up, the last items in the list are below the buttons in the footer toolbar. They should be offset so the ListView is anchored to the top of the footer.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.