When I load the example BLE UART code linked below it does not show up on the Adafruit Bluefruit app as a UART service. I tried it on the Boron, Argon, and Xenon with the same results.
The BLE UART LOG Handle example application does have the devices show up as UART services on the Bluefruit App. Both app examples use the same service UUID so I’m not sure what’s going on.
Yup. That's the problem. In 1.3.x, when in listening mode the system takes over BLE advertisements because it needs to advertise for device setup over BLE.
Have you ran a clean before you built?
After switching platform I usually check the first firmware via particle binary inspect to ensure that I actually get a compatible binary.
Yea, I quickly learned that the clean process is required when switching devices to compile for. I turned that warning off but then turned it right back on after stuff seeing the new code not uploading.
I just moved onto using a Xenon that was already setup on a network.
Now that I think about it, the setup done flag isn’t necessary on the Xenon. And I cleared the credentials and I had no problem using manual mode. A few things:
If you updated Device OS to 1.3.0-rc.1 to use BLE, make sure you also upgrade the bootloader in --serial mode, otherwise the device will try to go into safe mode to upgrade it, which will cause it to go into listening mode with no mesh network set up. To verify if this is the case, connected by USB and in listening mode (blinking dark blue), do:
particle serial inspect
Make sure the device does not have any failed dependencies.
Also your user firmware must use
SYSTEM_MODE(MANUAL);
The examples in the tutorial have this line commented out so you can flash code OTA without going into safe mode, but to use a Xenon without a mesh network for BLE you can only flash by USB and must use MANUAL mode.
Ah yes, that was exactly the information I needed, @rickkas7. That make my life so much easier. I have 2 trays of Xenons that I want to use without BLE and Mesh in the interim. I was having a lot of trouble just getting my firmware to run due to the tedious Mesh setup process.
Here are the exact steps I’ve taken with a fresh Xenon (on Windows 10):
Put the Xenon in DFU mode.
Upgrade the System firmware from CLI using USB (Serial mode doesn’t work until system firmware is upgraded).
6. Flash your own code, and verify that SYSTEM_MODE(MANUAL) is being used.
7. Xenon should reboot and run your code. If in Listening mode, something is wrong.
I plan on having a Particle cellular + mesh module (either BSOM or Boron) on my product that’s installed next to a solar panel on a large solar array. Then, on the ground sits another accompanying device. The two devices exchange data/variables and I want them to communicate with each other via BLE.
In the interim, I have an E-Series E0 communicating with the Xenon over a physical wire (Modbus). I don’t have enough trust (or experience) in BLE yet - it’s not production-ready. Once it’s more stable I am going to implement the BLE devices and get rid of the physical wire. I’ll actually save money once that’s complete. You wouldn’t believe how much IP-rated wires and connectors cost!
Yea that makes sense. The BLE may be more stable than the Mesh due to its maturity as a standard. With the external antennas the BLE range is really good for the little power it consumes.
Ricks new BLE Serial Library makes it really easy to send and receive BLE data basically the same as you can over regular serial UART so it should be easy to do what ever your wanting to do.
Did you ever move forward with the LTO batteries and circuits?
Yes, for sure! BLE Serial is definitely close to what I want, and it should be really easily portable from my existing Serial design.
Yep, I’m using just a single 1500mAh LTO cell to power the E-Series E0 and main PCB. I used a TI high efficiency step-up converter going into the Li+ pin and it’s working like a dream. Glad to finally ditch those LiPo cells