Posts with «mkr wifi 1010» label

BLE central support added to ArduinoBLE

This post is from Sandeep Mistry, Senior Software Engineer at Arduino. 

Today, we are pleased to announce BLE (Bluetooth Low Energy) central support in v1.1.0 of the ArduinoBLE library. This major feature addition allows your Arduino board to scan for and connect to BLE peripheral devices. With one simple library, you can now use BLE to directly connect your Arduino board to:

  • A smartphone, tablet, laptop or PC 
  • BLE peripherals (e.g. TI SensorTag) – NEW!
  • Another Arduino board – NEW!

The ArduinoBLE library and new BLE central feature are supported on the following Arduino boards:

Prior to this release, Arduino only officially supported BLE peripheral functionality on these boards. A BLE peripheral is typically used to expose some sensor data or actuators to another device BLE central capable device such as a smartphone or PC. With the new BLE central functionality, you’ll be able to wirelessly connect two boards together for communication or connect to a third party BLE peripheral, such as a TI SensorTag.

We think that the ArduinoBLE library is much easier to use than anything else out there and are excited to see what you build with this new capability!

The development journey

Back in 2015, the Arduino 101 was released, based on the Curie module developed by Intel. It was the first official Arduino board with on-board BLE support. The CurieBLE library initially only supported BLE peripheral mode.

After launch, the Arduino and Intel teams worked together to design an Arduino friendly BLE API that supported both BLE Peripheral and Central functionality. This was released later in 2016 in the v2.0 of the Arduino core for Arduino 101.

The BLE features of the 101 were also incorporated into the CTC 101 kit in many classrooms around the world. Students used smartphones or tablets for exercises in the kit to interact with project based lessons running on the board. Unfortunately, Intel decided to stop producing the Curie module in 2017, bringing the Arduino 101 board to end of life.

Last year, at Maker Faire Bay Area 2018, Arduino launched two new boards: the MKR WiFi 1010 and Uno WiFi Rev.2. Both boards use the u-blox NINA-W102 as a 2.4 GHz wireless module. Initially both boards only supported WiFi using the WiFiNINA library. However, the ESP32 chip inside the u-blox NINA-W102 supports Bluetooth classic and BLE as well.

Later in 2018, the Arduino core team was tasked with adding BLE support to the MKR WiFi 1010 board so that it could be used with the upcoming Arduino Science Kit Physics Lab product. The Science Kit Physics Lab product is another educational kit, targeted for students in the classroom. We had several choices to move forward, including:

  • Bridging the ESP-IDF’s BLE API’s via RPC to the main MCU that sketches run on
  • Basing things on the industry standard Bluetooth HCI protocol and investing in a Bluetooth HCI host stack as an Arduino library

The first option above was expected to take an equal amount of time to the second, but also would make the BLE library exposed to users highly dependent on the underlying firmware running on the ESP32. It was also not as portable to other chip sets in the future. Thus, ArduinoBLE was created. The NINA firmware only needed small change to bridge its virtual Bluetooth HCI controller to the UART pins of the module.

Earlier this year, we released the Arduino Nano 33 IoT and Arduino Nano 33 BLE boards. Since the Arduino Nano 33 IoT uses the same chipset as the MKR WiFi 1010, things worked out of the box. For the Nano 33 BLE, which is based on the Nordic nRF52840 chip, a new Arduino core was developed for this board based on mbed OS (see this blog post for more info). mbed OS includes a radio stack called Cordio, which provides both a Bluetooth HCI link controller and HCI host. Creating a single C++ class that interfaced with Cordio’s Bluetooth HCI link layer allowed us to re-use 95%+ of ArduinoBLE on this board.

After the Nano 33 BLE started shipping, there was even more demand for BLE central support. So, development for feature was scheduled and is now available. It combines the API designed for the Arduino 101 in CurieBLE ported on top of ArduinoBLE’s Bluetooth HCI host stack.

Many thanks to Tom Igoe, one of the co-founders of Arduino, for providing feedback on the official Arduino BLE libraries throughout the years.

Visualizing magnetic fields in three dimensions with an Arduino magnetometer

As humans, we can’t detect magnetic fields, but we take advantage of this phenomenon every day in the form of motors and various sensors. Even electrical wire produces a field when current flows through it. You can sense magnetism with a compass, but if you want to visualize it in three dimensions, maker ‘amamitof7’ has a solution in the form of this Arduino magnetometer.

The device uses a trio of analog Hall effect sensors to measure the strength of the magnetic field. This data is fed to a MKR WiFi 1010 (or Uno), which generates an isometric representation of the field on a small TFT display. 

One could see this used in a variety of diagnostic applications, or perhaps as an excellent physics teaching tool.

Upcycle an old coffee pot into an IoT ramen maker

Ramen noodles can be a quick snack or meal, but per this IoT ramen maker by Clem Mayer, you don’t even have to run to the microwave to prepare them. 

His project used a vintage electric filter coffee machine to heat and dribble water into the waiting brick-o-food, then a stepper-driven pusher adds flavor powder. More seasoning can be dispensed via a servo-actuated syringe, and another stepper is used to stir everything.

The setup is controlled by a MKR WiFi 1010 board, giving Mayer the ability to start meals/mix in hot sauce from the convenience of his phone via a simple web app. Results are… edible-ish, but if you want to build your own, files and more info can be found here.

FPV RC racing with the MKR WiFi 1010

Off-the-shelf remote-controlled cars can be a lot of fun, but Clem decided to take things up several levels with his heavily modified rig. 

In the hack shown below, he outfitted an RC vehicle from the ’80s with an FPV camera, along with a MKR WiFi 1010. The WiFi-enabled MKR board was linked with a second ‘1010, controlled by a (formerly) broken PS1 racing wheel.

While old technology, this racing wheel is perfect for Arduino use, with steering, brake, and gas handled by potentiometers that are fed into analog inputs. The 2.4 GHz WiFi link between the MKR boards appears to work quite well when driving with an FPV headset, though “somehow” a wheel on the original car did manage to fall off during testing!

Clem scored a broken steering wheel for the PlayStation 1 (yes the first one) at a flea market. Thankfully it is broken so he decided to turn it into an RC transmitter for his old Remote controlled Car! Learn how to use the Arduino MKR WiFi 1010 to make your own transmitter and receiver from scratch! It even supports FPV head tracking! What features would you like to add into the system?