-
Notifications
You must be signed in to change notification settings - Fork 471
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Friend V2] Action button firmware characteristic ($500) #566
Labels
Comments
josancamon19
changed the title
[Friend V2] Action button firmware characteristic
[Friend V2] Action button firmware characteristic ($500)
Aug 10, 2024
josancamon19
changed the title
[Friend V2] Action button firmware characteristic ($500)
[Friend V2] Action button firmware characteristic ($300)
Aug 10, 2024
Hello @josancamon19, I assume this is a paid task. I will love to take on this and make a PR soon😊 |
josancamon19
changed the title
[Friend V2] Action button firmware characteristic ($300)
[Friend V2] Action button firmware characteristic ($500)
Aug 10, 2024
@kevvz please comment here so I can assign this to you. |
hello |
josancamon19
added a commit
that referenced
this issue
Aug 28, 2024
#566 Added button and button characteristic How to test: Download the uf2 file for this repository and flash it onto your device. It should be in Friend/firmware/firmware_v1.0/button_build. If you can’t find it then you can generate it using the nrf SDK. I used version 2.5.0 for both Download the updated app on your phone. Make sure to enable debug mode. Go to the debug console. Wait until your device connects to the app (blue light.) There are two modes: press for a little bit, then press for about 2 seconds. You should get the notifications Button Pressed and Button long Press, indicating a button tap and Long press respectively. If for some reason you can’t use the friend debugger, then you can simply open the BLE app and press the button described in 3. You should be getting the count. Quick rundown on how it works An interrupt service routine is attached to pin D5 according to the Xiao sense diagram. The interrupt triggers when it detects a button press, both pressed up and down. Pin D4 is configured as supply power. When the interrupt triggers, a function is called that checks if the button press is actually a button press (for this implementation, it rejects inputs that appear jittery, or swing in voltage too often. That way only “stable” inputs are considered pressed). Then the input is recorded. A work order occasionally checks the input value. Then we grab the current state of the button, whether it be idle, single pressed, double press, or in a grace period. Depending on the state and if the current GPIO pin reads 1 or 0, it will perform different actions such as notify taps, double taps, presses, etc. I may write a guide later but TLDR it is a finite state machine, that computes an action given its state and event. Some notes on the button: I noticed that “fat fingering” the button, which means clicking the button with your skin tends to make the button act unpredictably. The most likely reason may be the contacts on the right side of the button, in which your fingers could accidentally connect the metal and trigger the button. Try to use your fingernails or cover the button with insulation. I imagine that in future versions that you would press the button with some insulation to protect against this (much like Avi’s Friend pendant.) I’ve probably pressed the button about 1000 times, and the solder connecting the button is starting to break. The boards appear to be separating. What can you build? Some ideas that were thrown around was attaching APIs according to button events. Also mentioned earlier was a “record” button that could simulate other necklaces on the market. Ideas for implementation are plenty!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Is your feature request related to a problem? Please describe.
Friend App should have a firmware characteristic that notifies when the button is pressed.
Describe the solution you'd like
There should be a firmware characteristic in the firmware that listens for the button click.
The app should read the characteristic and trigger whatever you want for now (based on that)
The text was updated successfully, but these errors were encountered: