Coexistence of WiFi and BLE in Arduino Nano 33 IoT

Hello Folks,

I am working on a project where I am thinking to use Arduino nano 33 IoT just because I need WiFi and BLE protocols in the same chip.

My objective is to use this board as a BLE peripheral and Wifi slave at the same time. It should be like this, suppose this board is interfacing with some sensors and some actuators. I want to read the sensor data and control actuators using BLE technology from a BLE central device(eg. mobile app) or by Wifi technology from a wifi master device or could. I meant this board should have the provision for both communication technologies such that we can communicate with this board any one of them either WiFi or BLE as required.
Yes at the time one of them, not both technologies but it will be better if I am able to communicate with this board using both technologies simultaneously, it's secondary. In simple words, this board should have the availability of both technologies such that users can communicate with it using any one of them.

Please suggest some methods or refer me to any example or any document where I can take reference and build my project successfully.

Thanks for advanced.

The module on the Arduino Nano 33 IoT does not allow the usage of WiFi and BLE at the same time. But you can switch back and forth between them.

Please have a look at the example BLE_TimeCentral.ino it the following post reply #6.

The sketch connects to a WiFi network, gets the time and then writes the time to a Arduino Nano 33 BLE via Bluetooth. It could easily be modified to read characteristics from a BLE device and then send it over WiFi for instance.

I have written another example that switches on command as well. You can find that in reply #6 in the following post.

Hi Klaus_K,

Thank you very much for your suggestion. Your example is really valuable to get an idea about switching method wifi to BLE and vice versa, but my objective is a bit different. I want to set Arduino nano33 IoT as BLE peripheral and an HTTP server at the same time such that I can communicate it with any communication protocol either by BLE or by WiFi as my wish to read/write any parameters value on it. So, it should have the existence of Both technologies at the same time.

Yes, I understood that it is not possible to activate both are at the same time cause both can't share the antenna at the same time as both have a different radio frequency. Can we switch it in a certain frequency such that it will available for both technologies?

Suppose at initial the IoT board is not connected with any device but it is open to connecting with the device who has either BLE or WiFi. I hope you understand my problem.

Please suggest me your opinion. Thank you.

papuxtream:
Yes, I understood that it is not possible to activate both are at the same time cause both can't share the antenna at the same time as both have a different radio frequency.

That is actually not the issue. The radio could easily switch between the WiFi and BLE frequencies. BLE uses frequency hopping and does that all the time.
The issue is likely that the module does not have enough memory. For BLE and WiFi to be switched fast enough to stay within the protocol specification both stacks need to run at the same time plus some extra code that handles the coexistence. u-blox has modules that have this feature but these modules where not chosen for the Arduino Nano 33 IoT. Maybe they were not available when the board was designed.

papuxtream:
Can we switch it in a certain frequency such that it will available for both technologies?

You will not be able to switch the network fast enough for humans not to be annoyed. The network will need to be reconnected every time. You have a choice.

  • use a different module (see above)
  • use two Arduinos and connect them via SPI for instance
  • tell the user they have to chose a protocol and stay with it (you can make the device discover-able on both protocols by switching between them every few seconds, when someone connects you stop switching)
  • if no human is involved you can collect data on one interface switch and then send it on the other

Thank you very much Klaus_K

  • tell the user they have to chose a protocol and stay with it (you can make the device discoverable on both protocols by switching between them every vie second, when someone connects you stop switching)

I thought exactly the same thing, the drawback of this method is a bit lag during connection. I will do a POC of this concept and let you know how much is it reliable and worthy.