sparkfunX / Artemis_Global_Tracker

A global satellite tracker utilising the SparkFun Artemis module, Iridium 9603N satellite transceiver and u-blox ZOE-M8Q GNSS
Other
14 stars 10 forks source link

AGT BLE Support - using v2.1 of the Apollo3 core #34

Open PaulZC opened 3 years ago

PaulZC commented 3 years ago

I would like to use this issue to define how I should implement BLE on the AGT. As current or future users of the AGT, this is your chance to define how you want to be able to interact with the AGT over BLE.

Any new examples I write for the AGT, using v2.1 of the core, will use the ArduinoBLE library to provide BLE functionality.

The biggest question is: how do you want the features of the AGT to be mapped onto the services and characteristics of BLE?

Or, more simply, what you you want to be able to do using BLE on the AGT?

Will you be carrying the AGT with you, paired with your phone or laptop, and want to be able to use it as an Iridium modem for sending and receiving messages? Perhaps with a simple way of copying in or attaching the data from the GNSS and pressure/temperature sensor, but the main focus being free text which you type manually?

Or, do you want to be able to use an App or a Java-enabled web browser page to be able to configure the AGT before you deploy it? Think Example16 but where the configuration is done over BLE instead of - or as well as - using the configuration tool?

Or, the simplest option for me, is just to get the existing examples working with v2.1 of the core and not add any new BLE examples - leaving that up to you?

Without guidance, my plan will be to concentrate on:

and not concentrate on any examples showing how the AGT could used as a phone/laptop accessory.

Over to you!

Best wishes, Paul

jerabaul29 commented 3 years ago

My personal 2 cents: I am mostly interested in:

Another possible application would be, if possible (but that would require the possibility to have a "super, super low power mode"), to use the bluetooth as "on / off" switch between a super low power mode (where only bluetooth is available, maybe looking once a minute for a wake up signal or something like this and sleeping otherwise), and the "normal, working mode". Currently I use a reed switch for that (advantage: guarantee that 0 power consumption when turned off; disadvantage: yet a component to source, put in place, and something to test before deployment).

PaulZC commented 3 years ago

Thanks JR, A lot of what you are requesting depends on additional hardware and sensors - and is very application-specific. I'd like to concentrate on what you need from the AGT as-is - without extra bells and whistles attached. But I can certainly look at implementing a software switch of some kind to disable BLE functionality just before you deploy. Please keep the ideas coming. All the best, Paul

jerabaul29 commented 3 years ago

I agree with you. Sorry, this may be a bit too specific, and the idea was never that you would implement all of this of course :) (should have been clearer :) ). What would be amazing from my side is if you could provide some building blocks / examples that make it easy for me to implement these points on my specific application.

I guess this would mean:

razvandragomirescu commented 3 years ago

For our particular use case, we simply need to send and receive binary messages, nothing else. We are not (currently) using the GPS or any sensors on board the AGT. We have these fixed (kiosk-like) terminals that are based on Android (so have BLE on board) and normally communicate back to base using GSM or 3G, but some locations are without terrestrial coverage while others have intermittent coverage (moving boats for instance) or could lose connectivity in case of natural disasters.

We can code our own application on the Arduino side because it may retry sending by itself multiple times or receive and store incoming messages even when the Android terminal is disconnected.