BLE on Artemis

I went to look for documentation and/or example code on how to get going with BLE on Artemis and found nothing. From what I can tell the last response in the forums from Sparkfun on this was in July. Is there an update on progress, or at least a rough idea of what I/we can expect?

Thanks!

Hi doodah,

BLE for the Artemis Arduino core is still in beta and we do have an example with the [latest release but it is very much a work in progress and will most likely be overhauled in the near future.](Release v1.0.11 · sparkfun/Arduino_Apollo3 · GitHub)

Got it. Thanks! I know the Artemis has a bunch of very impressive functionality, but I wouldn’t be surprised if a lot of people flock to it simply for the BLE. I worked on a project with a BlueSMiRF Silver and could never get it rock solid. The cost difference of an Artemis vs a Bluetooth Modem + Arduino (not to mention that the Artemis is integrated) makes the Artemis almost a no brainer. This would be ever more the case if the Bluetooth communication is made as simple as serial communication.

Thanks again!

I have to admit that I was one of the people flocked to Artemis for BLE. I got the blackboards as soon as I could. I have it working and can communicate over BLE using the Nordic Nrf app but that’s all. I can not get any other device such as cell phones, tablets, computers, etc. to recognize it. Is that just that the current BT firmware of these devices will need to be updated? I’m super stoked about the Artemis Feather compatible board. I do a lot with the feather stuff.

It’s not the firmware on your devices it’s the fact that you need an app such as the Nrf one to know how to connect to the artemis. It is a fair bit of programming on the app side and the Artemis side.

@VA3SU so hopefully over time between the Artemis and the Blynk app for example will be updated to support it? Got it thanks!

I want to try out artemis module as a possible replacement for our current ble module ISP 130301. It is a simple BT application placed in a keyfob.

Concerns are ease of user to connect via BT to phone

Battery use, how long can it run on a cr2032

Keep time when a button is pushed and when connected to phone give a report.

Report of how the battery is doing.

All the otherr stuff is nice that it has.

I’ve noticed that the BLE LED example has disappeared from the built in examples again. Version 1.0.14 no longer has the example. I understood that it was just an early example for us to look at but can’t help but wonder when more examples will show up.

Sorry about the missing example - in the process of pushing out patches here and there I sometimes forget to base the release off the BLE branch (don’t want to merger it into the master branch because it is not permanent). I will re-release with the BLE example included again

As for additional examples we are working on full support for the ArduinoBLE library but it will come all at once – its a all or nothing kind of deal and there’s a lot of setup work.

To support BLE we are working on a port of mbed os. Doing so – and building Arduino around mbed os in the future - should provide the necessary interface to the cordio BLE IP on the Apollo3 for the ArduinoBLE library to function (nearly) out of the box. If anyone wants to contribute to the effort you should check out the ‘ambiq-apollo3’ branches of these repositories:

https://github.com/sparkfun/FlashAlgo

https://github.com/sparkfun/DAPLink

https://github.com/sparkfun/pyOCD

And also check out this issue:

https://github.com/mbedmicro/pyOCD/issues/739

Yeah, you know it would be pretty epic to have BLE OTA functionality through the Arduino IDE! I’m looking for just a simple one or two-way bluetooth terminal connection to my phone, and not having a lot of luck…

Same here. I bought two of the Artemos Nano modules for the BLE integration to save space. Now discovering that it’s not yet implemented. As I understand only a basic LED ON and OFF example works and for it have to use Nordic’s Tools. Was there already a custom UUID created that can be used in a program on an Android (phone) device? I am not that familiar with BLE setup, but using MIT App Inventor should be able to interact with the custom UUID?

Looking for ability to pull data off of the Artemis via BLE and into a connected device (phone). I’d really like to be able to program the Artemis via the Arduino IDE. Is there a date in the near future for this to be implemented?

The whole selling point for this module is very low power and BLE functionality. Speaking of low power are the current modules being sold by Sparkfun able to come out of deep sleep or in other words version B0 silicon?

Regards,

Kevin

I see this on deep sleep for the latest: viewtopic.php?f=169&t=50904

Hi!

Has there been any headway on getting BLE to the point that it can be used effectively in the Arduino IDE? I’ve been checking the forum pretty regularly, and haven’t seen much more than some discussion around the BLE_LED example (which is missing again in the latest version) and using the AmbiqSuite SDK. I’ve recently seen some ads in my browser for the Artemis, and they are advertising BLE functionality, which is pretty frustrating given that it doesn’t seem to exist yet, at least for someone of my skill set (not comfortable in the SDK, but having built a project that had an app controlling an industrial servo motor using an Arduino and a BlueSMiRF Silver)

I know you all are working hard and give you TONS of credit for taking the leap you have with this product. My ultimate goal is a commercial product, and using the Artemis for prototypes through production is a pretty sweet notion. But, I’m getting a little impatient and may have to move on to an alternate configuration. If you could provide a realistic expectation of when you think I’ll be able to use BLE in the Arduino IDE, that would be great. If it’s still a long way out, then specifically showing how to use the AmbiqSuite SDK to get BLE up and running alongside the Arduino IDE for doing other I/O and communications would be similarly helpful.

Thanks!

Hi,

How can I shut down the BLE for low power sleep (artemis thing plus) in the arduino IDE

Above post mentioned this for low-power configuration in the Arduino IDE

viewtopic.php?f=169&t=50904

Reaching extremely low power states requires careful control of active peripherals. That is sort of at odds with the generic Arduino port where any/all peripherals are expected to work at any given moment. Next post I will provide a link to the SDK solution that you can use to write careful code.

As you are all finding out an all-encompassing BLE solution is not easy. This is my #1 priority but it will likely still take some time. I am trying to leverage mbed os to handle BLE in a standardized way which will be very nice but I walk a lonely road until we get there (but please join me if you can at our forks of mbedos, FlashAlgo, DAPLink, and pyOCD at https://github.com/sparkfun).

BLE functionality is supported in the silicon of the chip as well as by the built-in peripheral components (inductors, caps, antenna etc…) on the Artemis module. So right now it is possible to write any Bluetooth 5 - spec application that you want. That speaks nothing to the challenge of doing so. However you know that our goal at SparkFun is to make prototyping easier for you. So I am doing what I can.

Until I can make BLE appear in Arduino with the now-standardized ArduinoBLE interface (ArduinoBLE.h) you can consider trying examples from the AmbiqSuite SDK. I have done (and will continue to do) my best to improve this tool by providing it (along with improvements) here: https://github.com/sparkfun/AmbiqSuiteSDK

Please follow the ‘GettingStarted’ instructions (most importantly the part that requires you to install prerequisite tools). If anything is not clear please report it as an issue or submit a pull request.

I will try to add a BLE example that can run on all the SparkFun boards - that can be a starting point to go hand in hand with the BLE examples that were written for the Ambiq Apollo3 Evaluation Board (located in $(SDKROOT)/boards/apollo3_evb/examples/ble_xxxxxxxxxxx). Beware if using those examples directly they may depend on hardware that exists on the Apollo3 EVB (for example waiting until a button is pushed or something)

Any questions/concerns?

Thanks very much for this post Liquid.soulder. While waiting for the Arduino method of ble I have had a look at the AmbiqSuiteSDK and followed along with the getting started to install the prerequisite tools however the two examples don`t follow for the Artemis. Would it be possible for someone to post an example of the standard hello world led flash using the ambiq sdk method please?

Regards,

Kevin

Hi Kevin - when was the last time you updated that repository? I recently added LED blinking examples to all the SparkFun boards. e.g. https://github.com/sparkfun/SparkFun_Ap … es/blinky/

Alright everyone, I just added an example called ‘ble_cordio_tag’ to all of the SparkFun boards. It uses the SDK to create a BLE peripheral named ‘Tag’. It also prints debug information over the UART, so you can see when advertising begins and when a connection opens/closes.

You may need to take special care to initialize the submodules of the AmbiqSuite SDK repo to ensure that you get the changes (the changes are all maintained in the [BSP Repo and moved into our copy of AmbiqSuite as a submodule)

By the way I heard some talk about bluetooth serial transceivers like the BlueSmiRF and others. Keep in mind that BLE has no ‘standardized’ serial connection profile. That makes it harder to take any two randowm peiced of HW and be sure they will talk to one another. If you are looking for a Tx/Rx implementation in BLE then I’d recommend the [Nordic UART Service specification.](http://194.19.86.155/nRF_Connect_SDK/doc/latest/nrf/include/bluetooth/services/nus.html)](GitHub - sparkfun/SparkFun_Apollo3_AmbiqSuite_BSPs: One-stop-shop for all your AmbiqSuite SDK board support package needs.)