I was debating posting a topic for this, but it’s sort of the same question, so possibly worth keeping to the same thread?
I’ve been designing a smartwatch, so my usage is xiao nrf52840 or xiao nrf52840 sense connected to a linux device via bluetooth (I need to consider power draw from the accelerometer + how much more power it’ll draw to communicate step count to another device if I even want to bother with that).
I’m aiming for feature light (I’m using a 0.42” monochrome oled, so it couldn’t be feature heavy if I wanted it to be), and what I reckon is feasible is:
- piezo buzzers for notifications (calls/texts/emails - counter of unread notifications when it updates as the basic feature, some subject line/sender info/detail as a nice to have if it’s even legible on that small a screen)
- showing the daily sunset time (4 digits once a day)
- date (don’t need the month or year, so 1 or 2 digits once a day - you’d have thought I could have a rolling counter stored locally, but then if I’m away and it loses charge, I wasn’t planning on using an RTC ideally)
- step counter (optional)
- space invaders controlled by rotary encoder + pushbutton (essential)
These are all going to be selectable from scrolling menus ideally, but I can use morse style button shortcuts (e.g. 1 short press for select, 2 short press for back, 3 short presses for text menu e.t.c.). Of those, 1 - 3 are sent from a linux device to the nrf52, and 4 is from the nrf52 to the linux, 5 doesn’t really have any bearing on anything, but I thought it was fun. Software I can do happily, but I’ve never been great at networking, so I was wondering:
-
for receiving notifications, what’s the most power efficient way to get them in real time on the xiao ble/ble sense? As far as “real time” goes, I can compromise about as far as maybe checking every 3-4 seconds top whack (i.e. how long does it take for a call to stop ringing), but then I’ve read all sorts on staying paired being more efficient
-
is there a signficant difference in power draw between sending/receiving data? The pedometer is optional, more of a “nice to have”. As an extra stretch goal of sorts - if I even have room in the case, I was even considering a UART GPS module (depending on how the watch case affects the antenna - gps is for running routes, so only on when I press a button to start tracking/off again when the run ends), but this is all data that I’d have to store on the nrf52 and then send to the phone over ble. Storing I’m happy to do, and sending I’d have to do after a running route, and potentially whenever pinged for the pedometer (option 1 is: I open app to check on smart watch → device polls smartwatch for info → smartwatch sends back step count. option 2 is: every x seconds/minutes/hours, smart watch sends info to phone)
-
I was going to use this as a starting point for my code (device_root_2), but I’m not all that familiar with ble. I know I’ll need to get back to basics and learn how to send a hello world - particularly if I’m sending info with the alerts, but is that the right starting point, or have I got the wrong end of the stick?
Strong chance I’m asking entirely the wrong questions here, and I suspect part of the answer is going to be “buy a board and try it out”, but I didn’t want to waste £15 and an innocent nrf52 until I was sure it could do at least most of the must haves on a tiny tiny battery (in my head I’m budgeting 200mah for a full day’s use
. I’m hoping that’s going to be less to minimise charge cycles, and I know it’ll depend on radios in use, but if I could go lower for a full 24 hours so I’ve got room to spare, that’d be very good).
Do let me know if I’m asking the wrong questions here, and feel free to ask for more details if you need them. Iirc, not accounting for cpu usage, the screen I’m using supposedly uses something like 630 micro amps for 50% of pixels on (there’s no contrast options apparently, and I’ll be avoiding updating where I can), so assuming I can keep the screen on during light sleep, I should be able to keep the board at least in light sleep most of the time, add a mode for deep sleep on button press, and wake for bluetooth (assuming I’ve got that right about bluetooth, which is the risk here)
apologies for necroing