Bluetooth mesh simulator - bluetooth

I am working on a project that involves Bluetooth Mesh Network (based on BLE) that was standardized with Bluetooth version 5.0. I am searching for a suitable simulator for at least some of the following solutions.
Mesh message delivery (Flooding)
Ability to simulate an environment (Path loss, multipath fading)
Can someone help me find a simulator as the one explained above?

Probably the best easy and cheap option is the nRF Mesh app for Android/iOS devices. It might not be advanced to do full simulation but you'll find most of what you need to get started and then you can tweak things or expand from there manually.
More information is available here:-
nRF Mesh app features
The ultimate Bluetooth mesh tutorial (Part 5)
A developer's guide for proving mesh interoperability

Related

Custom Messages in Bluetooth Mesh

I am using Bluetooth Mesh technology for a project. The Bluetooth mesh works on flooding, and the message types are defined in the profile. However, I could not find whether I can include a custom payload in the messages to be delivered across the network. Is it possible to do this in Bluetooth Mesh? If yes, please suggest any resources that explain the functionality.
First of all you should visit the Bluetooth SIG. They own and publish all Bluetooth standards. They also maintain a comprehensive list of all specifications including those dealing with 'mesh':
https://www.bluetooth.com/specifications/specs/
And Nordic also provides extensive documentation with examples for its nRF5 SDK for Mesh:
https://infocenter.nordicsemi.com/index.jsp?topic=%2Fstruct_sdk%2Fstruct%2Fsdk_mesh_latest.html
Bluetooth Mesh is based on Model interaction. If your application does not fit into available (defined by SIG) models, you can create your own (Vendor) models. In that case you can define opcodes (which should not interfere with opcodes of other messages) and customize transferred data.
More information on how to create you own model, in case you are using Nordic SDKs you can find here: for nRF Connect SDK or for nRF Mesh SDK.

Cross platform bluetooth development solutions

I made a little heart rate monitor app with Unity, but trying to ship it to Windows, the bluetooth part isn't cross platform.
Are there existing cross platform (mac/windows, linux too would be nice but not a dealbreaker) bluetooth solutions?
Unfortunately there isn't a "pure" cross-platform solution where you can write one application that works across multiple platforms. This is because the underlying stack for different OSes/platforms is different because the hardware is different for them. The closest thing to a cross-platform solution might be Xamarin as theoretically you can write an application that works for Android/iOS/Windows. Have a look at the links below:-
Developing Cross-platform BLE Apps
ble.net: cross platform BLE library
BLE on Xamarin Cross-platform
The smart BLE Guide: Add BLE to your app with Qt and Flego

What considerations to make for selecting Bluetooth Chipsets for control of LED via PWM?

I am involved working on new hardware LED products where we are selecting a Bluetooth chipset to use in multiple products controlled by iOS and Android apps, for at minimum the next 3-4 years. Also I am not the developer, a third party will be contracted for this project.
As part of background research, I wanted to ask for feedback from Stack Overflow communities' experience with programming for Bluetooth, more specifically with custom firmware and GPIO PWM for LED?
What kind of challenges did you come across?
Are there any granular details or features to look out for with the hardware?
**Edit: based on first answer-
Requirements:
BLE 5
I do need OTA update capability
Chip size not big constraint, plastic enclosure can accommodate up to 1 inch/25mm or bit more easily.
Not high temp application
Single-chip solution, that will be programmed with our firmware, controlling 4x PWM Channels is ideal for our LED strips, avoiding separate MCU
Cost per unit (lowest average cost/unit)- important factor at volume, TBD
**Qualities I can not gauge well myself, being a designer and not an experienced programmer:
Ease of integration/support (lowest cost of development)
Quality of the chip manufacturer's software tools
Quality of the chips documentation
I have found some questions related with Raspberry Pi that seem generally helpful, but those questions don't help me with features or the support and documentation as related to BT SOCs.
**Edit: Yes I we are only considering BLE, and the NORDIC Semiconductor link I have included below are BLE and BT 5.
NORDIC chips are on my short list, they seem well supported and capable of 3x or 4x PWM channels for example nRF52832 Nordic nRF52832 Spec info. or the newer model RF5340. Does anyone have experience with them?
I really appreciate any answers regarding development considerations with Bluetooth.
I will edit & clarify if needed.
If you wish to support iOS Apps, a BLE device is necessary, BT classic requires a special apple license (for your product) to be able to connect with iOS Apps.
But other than that, your specifications dont really help to rule out ANY chip.
The first question that comes to mind is what other features do you
have already on your specification list that could be satisfied with
a common solution. I.e. if you also need WiFi, don't choose two
separate BLE/WiFi Chips, buy a chip that can do both (it's both
2.4GHz RF). If you need OTA updates for your firmware, choose a chip manufacturer with extensive and well documented tooling.
Consider special requirements:
Do you need a very small chip?
Does it need to be run at high temperatures (i.e. inside a light bulb)?
Do you need to run at ultra-low-power?
Does it need a high performance RF transceiver?
Decide whether you need a single-chip solution, that will be programmed with your firmware, or if your firmware will run on a dedicated microcontroller which is connected to the BLE chip.
Unless you have absolutely no special requirements to narrow down the selection, I'd base my decision along these criteria (not ordered):
Ease of integration (lowest cost of development)
Cost per unit (lowest average cost/unit)
Quality of the chip manufacturer's software tools
Quality of the chips documentation
GPIO-PWM Output should be possible with almost any programmable BLE chip.

Bluetooth mesh for Raspberry Pi

Problem
I am currently working on a Bluetooth communication library for Raspberry Pi. It only has to support simple messaging. The main requirement is that is it decentralized
I therefore thought that Bluetooth mesh would be the best solution. I followed this guide for installing the Linux meshctl tool, but I could not find the functionality for sending messages between multiple Raspberry Pi. It seems that the meshctl tool is only for provisioning and configuring Bluetooth mesh networks.
Is this correct? Please correct me if I am wrong, I would love to be wrong.
Solution?
Is Zephyr a viable alternative? It seems that it is currently ahead of Linux when it comes to Bluetooth mesh.
TLDR: Is the meshctl tool for Linux only for provisioning and configuration? Should i use Zephyr instead?
TLDR: Yes, Meshctl is for provisioning only. Better to use Zephyr for regular mesh nodes instead.
Bluetooth Mesh nodes are usually embedded devices and Zephyr is really good alternative for regular node. It is backed by Linux foundation and feature rich implementation. It is also under active development. There are also couple of other open source mesh implementations: Mynewt-nimble and ESP32 but both of them are actually based on Zephyr's mesh stack.
As provisioner you could use meshctl by Bluez or provisioner app on phone (nRF Mesh or Bluetooth Mesh by Silicon Labs).
Zephyr is an excellent choice. The Bluetooth SIG have an educational resource for developers wishing to learn about Bluetooth mesh (includes hands-on project work) and it uses Zephyr. See https://www.bluetooth.com/bluetooth-resources/bluetooth-mesh-developer-study-guide/
You can use the ST BLE Mesh app from STMicroelectronics : https://play.google.com/store/apps/details?id=com.st.bluenrgmesh&hl=en_IN
They have also Mesh fw and Apps SDK which includes (Android library for Mesh and iOS SDK for Mesh).
It not only acts as a provisioner but you can also share the mesh network configuration via email or cloud to another Smartphone.Apart from this they have command set for Many mesh models - GenericOnOff,GenericLevel,Sensor Model, Lighting Model , HSL model and CTL model.
You can drop support questions at : https://community.st.com/s/topic/0TO0X000000BSrIWAW/ble-mesh

What is Kinect + Linux being used for?

An article on Hackaday piqued my curiosity, and I see Kinect + Linux questions being asked here (mostly about configuration), so I'll venture this question:
It is clear to me that Kinect can be used together with Linux on a "regular pc" -- but I can't help wondering why, that is, what might you actually use this for?
I don't suppose people really like the human/computer interface presented in movies such as "Minority Report" -- surely, nobody is actually doing text editing, coding, or business data processing by "hand-waving". So besides just games & exercises, what are examples of actual, real-world, useful (ie. 'professional') applications of such a setup?
For instance, can it be used for 3D scanning of real-world objects to obtain digital models? What sort of accuracy would such a scan yield?
The Kinect can be used for a wide variety of useful applications. I'm not sure if you are asking specifically about Linux or if Windows ("regular PC") is acceptable, but I'll provide you with some examples that come to mind.
For Linux specifically, it is likely that applications on Linux are using the sensor's raw sensor data only, rather the skeletal tracking feature. Many Kinect applications are on Windows because Microsoft's Kinect SDK is available only on Windows, and it provides the best skeletal tracking accuracy to-date.
You are right that the Kinect is rarely used where a keyboard & mouse would be faster and more accurate, but note that it is potentially relevant for accessibility.
And yes, it can be used for 3D scanning of real-world objects. I'm not sure about the exact accuracy, but I think it is acceptable for many applications. The main benefits are its low cost and speed.
For examples of 3D scanning, check out:
KinectFusion, a Microsoft Research project
Occipital Structure sensor for 3D scanning. (This is not the Kinect sensor, but provides an example application for 3D scanning. The company has a Kinect-related history as well.)
Styku - 3D body scanning for clothes fitting
Aside from 3D scanning, here are some other examples of applications:
Atlas5D - at-home patient monitoring
GestSure - 'Minority Report' interface for surgical rooms
Jintronix - games, exercises, assessments for physical therapy
There are many depth sensors like the Kinect3D on the market. The latest notable application would be iPhone X's depth sensor and FaceID. Many companies in the space are working actively in FaceID now, which would also be useful on Linux. Check out Microsoft's Window Hello biometric facial ID system - see Microsoft's official website:
Manufacturing of the Kinect sensor and adapter has been discontinued,
but the Kinect technology continues to live on in products like the
HoloLens, Cortana voice assistant, the Windows Hello biometric facial
ID system, and a context-aware user interface.
Kinect has applications in the robotics community as well, though I don't know the specifics. I assume many in robotics community use Linux when working with the Kinect. The depth and color cameras can be used to provide vision and the microphone array for audio input.
Generally, the Kinect had a big impact when it was released not just because of its technology but also because of its low price point, even if it's not the most accurate for every application. As this technology improves, I hope many other applications will emerge and become mainstream.
EDIT: also, check out this Hacker News discussion: "Microsoft Has Stopped Manufacturing The Kinect"

Resources