Integrating BleuIO with Adafruit Feather RP2040 for Seamless BLE Applications – Part 5 (Two-Way Communication)

In the earlier parts of this series, we combined the Adafruit Feather RP2040 with the BleuIO USB dongle to build different BLE applications: setting up the RP2040 as a USB host, reading sensor data, advertising measurements and handling secure connections.

In this Part 5, we take the next step and create a simple two-way communication setup. Instead of only broadcasting data, we let a Python script running on your computer talk to the BleuIO dongle connected to the Feather RP2040 and control its LED in real time. At the same time, the Feather responds over the Serial Port Service (SPS), echoing messages back so you can see exactly what was sent on both sides.

This project is a good starting point if you want to remotely control devices, test custom BLE command protocols or build interactive demos using BleuIO and RP2040.

What This Project Does

Arduino project on Adafruit Feather RP2040

On the hardware side, the Adafruit Feather RP2040 is configured as a USB host for the BleuIO dongle, using the same TinyUSB and Pico PIO USB approach as in Part 1 of the series. When the board starts, it initializes the USB host stack, detects the BleuIO dongle and sends a short sequence of AT commands. These commands disable echo, ask the dongle for its own MAC address, set a friendly advertising name (BleuIO Arduino Example) and start BLE advertising. After that, the sketch simply listens for BLE connection events and SPS messages. Depending on what text message it receives over SPS, it either echoes the message back or sends a command to change the LED behaviour on the dongle.

Python script on the computer

On the computer, a Python script acts as the BLE central. It uses the MAC address printed by the Feather’s serial output to connect to the advertising BleuIO dongle. Once connected, it sends text commands over SPS such as ALERT, NORMAL or OFF, and reads back whatever the Feather sends in response. When the Python script sends one of these special words, the Feather generates BLEU AT commands to control the dongle’s LED; for any other text, it just echoes the message. This creates a complete round-trip: you type in Python, the message travels over BLE to the RP2040 and BleuIO, and a response comes back the same way.

Requirements

Hardware

Software

If you already followed Part 1, your RP2040 USB host environment and board configuration should be ready to use.

Source Code on GitHub

You can find the complete source code for this project — both the Arduino sketch and the Python script — in our public GitHub repository: bleuio_arduino_message_transfer_example. Visit the repository at:

https://github.com/smart-sensor-devices-ab/bleuio_arduino_message_transfer_example

Feel free to clone or download the repo to get started quickly. All necessary files — including the .ino, helper headers, and the Python script — are included, so you can replicate the example or adapt it for your own project.

Recap: Preparing the Feather RP2040 as a USB Host

To quickly recap the setup from the earlier article: you install the Raspberry Pi RP2040 board package in the Arduino IDE, select the Feather RP2040 board, and install the Adafruit TinyUSB and Pico PIO USB libraries. You then make sure the CPU speed is set to 120 MHz or 240 MHz, since Pico PIO USB requires a clock that is a multiple of 120 MHz.

Uploading the Arduino Sketch

  1. Open the bleuio_arduino_connect_example.ino and usbh_helper.h in the same Arduino sketch folder.
  2. Select Adafruit Feather RP2040 (or your RP2040 board) under Tools → Board.
  1. Choose the correct COM port for the Feather.
  2. Click Upload.

After upload:

  1. Open Serial Monitor at 9600 baud.
  2. You should see something like:
Connect test v1.0
Core1 setup to run TinyUSB host with pio-usb
SerialHost is connected to a new CDC device. Idx: 0

BleuIO response:
{"own_mac_addr":"xx:xx:xx:xx:xx:xx"}
----
  1. Every 10 seconds (based on ALIVE_TIME) you’ll see an update:
H:M:S - 0:0:10
own_mac_addr: xx:xx:xx:xx:xx:xx
Not connected!

Initially it will say Not connected! because no BLE central is connected yet.

The Python Script (BLE Central)

The Python script acts as a BLE central that connects to the advertising BleuIO dongle and uses the Serial Port Service (SPS).

A typical flow in the Python script is:

  1. Read the MAC address printed by the Arduino Serial Monitor (own_mac_addr).
  2. Use the BleuIO Python library (or BLE stack) to connect to that address.
  3. Once connected, send plain text messages over SPS:
    • "ALERT"
    • "NORMAL"
    • "OFF"
    • Or any other text.

On the Python side you’ll see:

  • Connection success message.
  • Any SPS response sent from the RP2040 (e.g. [RP2040] Alert command Received: [...] or [RP2040] Echo: ...).

On the Arduino Serial Monitor you’ll see:

Connected!
SPS Received!
BleuIO response:
{"type":"SPS","evt":{"len":5,"ascii":"ALERT"}}
----
Sending command: AT+SPSSEND=[RP2040] Alert command Received: [ALERT]

And the LED on the BleuIO dongle will react according to the command:

  • ALERT → Blink pattern (AT+LED=T=100=100).
  • NORMAL → Toggle LED (AT+LED=T).
  • OFF → Turn LED off (AT+LED=0).
  • Any other message → Just an echo, no LED change.

Where to Go Next

This example completes the journey from simple advertising to full two-way communication between a computer application and a BleuIO dongle hosted by an Adafruit Feather RP2040. With this pattern in place, you can replace the LED commands with your own device protocol, combine it with the sensor examples from Part 2 and Part 4, or feed the exchanged messages into larger systems for logging, dashboards or control logic. Because the communication relies on the standard Serial Port Service and BleuIO AT commands, the same structure can be reused for many other projects where a PC, an embedded board and a BLE device need to work together.

Share this post on :

How AI Makes BLE Development Even Easier with BleuIO

Bluetooth Low Energy (BLE) has become a key technology in modern wireless applications—from IoT devices and sensors to wearables, smart tools, and more. While BLE development can traditionally require time, experience, and familiarity with complex protocols, BleuIO dramatically simplifies the process.

BleuIO is a powerful USB BLE dongle designed to help developers of all levels build BLE applications quickly and efficiently. With straightforward AT commands, intuitive documentation, and cross-platform flexibility, it allows users to prototype and develop BLE solutions without the usual learning curve.

But now, with the rapid growth of AI tools such as ChatGPT and Gemini, the development workflow becomes even smoother. AI can help generate ready-to-run scripts, automate coding tasks, and speed up BLE experiments—making the combination of BleuIO + AI incredibly valuable for developers.

Common Challenges in BLE Development

Developing Bluetooth Low Energy applications often requires a solid understanding of BLE protocols and command structures, which can be intimidating for beginners. Developers must also write code that interfaces correctly with hardware such as dongles or embedded devices, and this process can involve repetitive boilerplate code—especially when handling tasks like scanning, connecting, and transferring data. Another common challenge is ensuring that code works consistently across different languages and platforms. These factors can slow down development and create barriers for those who simply want to prototype or test BLE functionality quickly.

How BleuIO and AI Solve These Problems

BleuIO addresses many of these challenges by offering straightforward AT commands that simplify common BLE operations. When paired with modern AI tools, the development process becomes even more efficient. AI systems can read the BleuIO AT Command List and instantly generate complete scripts that integrate these commands correctly, significantly speeding up prototyping. This eliminates the need for manually writing repetitive code, allowing developers to focus on their application rather than the setup. Because BleuIO works seamlessly with Python, JavaScript, C#, Node.js, and many other environments, developers can choose the language they prefer. Even newcomers can get started easily, as AI-generated scripts help bridge any knowledge gaps and provide a smooth entry point into BLE development.

Example: Using ChatGPT and Gemini to Generate a BLE Scan Script

To demonstrate how effectively BleuIO and AI work together, we created a simple test scenario. We began by downloading the BleuIO AT Command List PDF from the Getting Started guide and then asked both ChatGPT and Gemini to generate a Python script that communicates with the BleuIO BLE USB dongle. The script needed to use the correct AT commands, include the appropriate COM port, and perform a scan for nearby BLE devices lasting five seconds. After generating the scripts, we ran them to compare the output produced by the two AI tools.

Video Demonstration

You can watch the full demonstration below, where we walk through the entire process—from downloading the command list to generating and testing the scripts:

This example demonstrates just how powerful the combination of BleuIO and modern AI tools can be. By letting AI generate boilerplate code and BLE scripts, you can focus on building features, testing ideas, or integrating wireless communication into your products.

BleuIO already makes BLE development easy—but with AI, it becomes even more efficient, accessible, and developer-friendly.

Share this post on :

A Simple Way to Work with BLE: Introducing the BleuIO Web App

The BleuIO USB dongle is designed for developers who want direct access to BLE functionality through simple AT commands. Because the dongle connects to a computer via USB and communicates over a virtual serial port, users typically need a terminal application to send and receive those commands.

Traditionally, this means relying on tools like PuTTY, Tera Term, CoolTerm, or minicom, each requiring installation, configuration, and platform-specific setup. These extra steps can slow down development, especially for users who simply want to plug in the dongle and start working immediately.

To remove these barriers and make BleuIO development easier and more accessible, we created the BleuIO Web App, available at https://bleuio.com/bleuioapp/. This lightweight, browser-based tool replaces traditional terminal software entirely. With no installation required, it provides a clean and intuitive interface to send BleuIO AT commands instantly across Windows, macOS, Linux, and ChromeOS — all directly from your browser.

A Modern Solution: The BleuIO Web App

The BleuIO Web App completely eliminates these barriers. With the help of the Web Serial API, you can now connect to your BleuIO dongle directly from your browser. No software installation, no drivers, and no configuration are required. You simply open the webpage, click Connect BleuIO, and begin working with AT commands instantly.

The interface is clean, responsive, and optimized for ease of use. It displays incoming data, allows you to send commands, and provides a smooth editing and execution workflow that feels like a native application rather than a traditional serial console.

Instant Access on Any Platform

The web app works on any system that supports Chrome-based browsers. Whether you’re using macOS, Windows, Linux, or ChromeOS, your experience remains identical. This platform-independent design is extremely helpful when working with BLE applications across different machines or when collaborating with teams using mixed environments.

You can also install the application directly onto your system as a Progressive Web App (PWA). Once installed, it behaves like a standalone desktop application, launches instantly, and provides a dedicated workspace for your BleuIO projects.

A Faster Way to Use AT Commands

The command input field includes auto-complete support, which makes working with BleuIO’s full library of AT commands significantly easier. Whether you’re scanning for devices, entering central mode, transmitting data, or testing advertisements, the auto-suggest feature guides you to the correct syntax and reduces mistakes.

Instead of remembering every command variation, you can rely on the terminal to assist you. This feature is especially helpful for beginners and speeds up workflow for experienced developers.

Designed for Real BLE Development

The terminal provides everything necessary for testing BLE applications, whether you’re developing firmware, building IoT solutions, testing advertisements, or debugging device interactions. Commands like AT+CENTRAL, AT+GAPSCAN, AT+ADVDATA, and AT+DUAL work exactly as they do in a traditional terminal — but in a much cleaner environment.

When commands run continuously, such as a scan without a timeout, you can use the Stop Process button to interrupt the operation instantly, acting just like pressing Ctrl + C in traditional terminals. This small detail makes a big difference in usability when working with long-running BLE scans.

Making BLE Development Easier for Everyone

The BleuIO Web App is more than just a console. It represents a simpler philosophy for BLE development: remove unnecessary obstacles, support all levels of expertise, and allow developers to focus on building instead of configuring.

Whether you’re testing BLE advertisements, building prototypes, teaching a class, developing IoT applications, or simply exploring the BleuIO ecosystem, this tool gives you a direct and enjoyable way to work.

Just open the URL, connect your dongle, and start creating.

Share this post on :

Introducing Python Library v1.7.2 for BleuIO

We are excited to announce the release of BleuIO Python Library v1.7.2, bringing improved compatibility, new features, and better performance for developers building Bluetooth-enabled applications with BleuIO.

This update supports the latest firmware versions — BleuIO Standard v2.7.9.29 and BleuIO Pro v1.0.4.14 — ensuring seamless integration with the newest hardware capabilities.

Important Note:
Python Library v1.7.2 does not support BleuIO Standard firmware 2.2.0 or earlier (SSD005).
Please update your dongle to use this library version.

What’s New in v1.7.2

Updated Command Functions

This release introduces expanded support for the latest AT commands shipped with BleuIO Standard v2.7.9.29.

New: ATAR Function

The library now includes a dedicated function for the newly introduced ATAR command, used to enable or disable auto-reconnect:

  • atar()

This addition offers developers more control over connection stability in dynamic environments.

Enhanced Polling Behavior

Several existing functions have been updated to align with the new status-polling behavior added in firmware v2.7.9.29.

The following command functions now automatically poll status when called without parameters:

  • ata()
  • atasps()
  • atassm()
  • atassn()
  • atds()
  • ate()
  • atew()
  • atsiv()
  • atsra()
  • atsat()
  • at_frssi()
  • at_show_rssi()

This enhancement allows quicker and more intuitive status queries, reducing boilerplate code in your applications.

Improved Logging and Debugging

The library now uses Python’s built-in logging module instead of basic print statements, giving developers much finer control over how information is captured and displayed. This change improves the handling of debug output, warnings, and errors, and allows logging levels to be adjusted to suit different environments. It also enables smoother integration with larger applications that rely on structured logging. Overall, you can now tailor log visibility to match your debugging or production needs more effectively.

New Constructor Parameters

To improve flexibility and performance, three new parameters have been added to the library’s constructor:

w_timeout

Configures the write timeout for the serial port — useful when handling long operations or slower host systems.

exclusive_mode

Optional flag passed to PySerial to request exclusive access to the port.
This prevents other processes from interfering with communication.

rx_delay

Enables a short non-blocking sleep time in the RX thread when no bytes are available.
This improvement helps avoid busy-looping and reduces CPU load on some platforms.

Smarter RX Thread Behavior

Thanks to the new rx_delay parameter, the receive thread now behaves more efficiently when no incoming data is present.
This prevents unnecessary CPU usage while maintaining responsiveness.

Safer Thread and Exit Handling

This release includes more robust exit behavior:

  • Improved exit_handler
  • A safer SIGINT (Ctrl+C) handler, even when the library is used outside the main thread

These adjustments help ensure clean shutdowns and reduce the risk of hanging threads in complex applications.

Upgrade Recommended

Updating to Python Library v1.7.2 is quick and straightforward. If you already have a previous version installed, start by upgrading the package through pip. Run the following command in your terminal or development environment:

pip install --upgrade bleuio

This will fetch and install the latest version of the library.

Python Library v1.7.2 is a significant update that enhances functionality, stability, and performance — especially when used with the latest BleuIO firmware versions.
We recommend upgrading to take advantage of all new features.

Share this post on :

BleuIO Firmware Release v2.7.9.29 – Improved Reliability, Control & Transparency

We are excited to announce the release of BleuIO Firmware v2.7.9.29, a significant update focused on improving connection stability, enhancing user control, and expanding the range of readable system states. This release introduces new functionality requested by developers, further strengthens internal reliability, and resolves rare—but important—edge cases in JSON output handling.

With this update, BleuIO becomes more transparent, responsive, and configurable than ever.

What’s New in v2.7.9.29

In previous versions, the auto reconnect function was always active. It automatically attempted to reconnect whenever the dongle received a disconnect event with reason 3E – “Connection failed to be established”.

With v2.7.9.29, developers now have direct control over this behavior through a new command:

  • ATAR0 – Disable auto reconnect
  • ATAR1 – Enable auto reconnect (default)

This allows applications to fine-tune how the dongle responds to failed or dropped connections, offering more flexibility across a variety of use cases.

Expanded Readback Functionality

Transparency and configurability are essential for development and debugging. This update introduces read functions for a number of commands that previously could not report their current state.

The following commands now support readback functionality:

  • ATA
  • ATAR
  • ATASPS
  • ATASSN
  • ATASSM
  • ATDS
  • ATE
  • ATEW
  • ATSIV
  • ATSRA
  • ATSAT
  • AT+FRSSI
  • AT+SHOWRSSI

This enhancement makes it easier to query and verify configuration states during development, which is especially valuable for dynamic or complex applications.

Stability Improvements

This release includes improved handling of internal connection states, resulting in a more robust and reliable operation—particularly in environments where devices frequently connect and disconnect.

Users can expect smoother behavior, fewer edge-case issues, and more predictable Bluetooth communication.

Bug Fixes

Resolved a rare malformed JSON response occurring in verbose mode after executing the AT+GAPCONNECT command.
This fix ensures that developers relying on JSON-based parsing and debugging experience consistent and valid output.

Firmware v2.7.9.29 is designed to give developers more control, better insight, and improved reliability. Whether you’re building sophisticated BLE applications or fine-tuning device behavior, this update enhances the overall performance and experience of the BleuIO dongle.

We encourage all users to upgrade to the latest firmware to take advantage of these improvements.

Share this post on :

Ambient-Adaptive Particulate Monitor (PM1.0 / PM2.5 / PM10) with BleuIO & HibouAir

Outdoor air quality is a major focus in Europe in 2025, with tighter standards placing greater emphasis on fine particulate matter—especially PM2.5. Elevated PM levels are linked to asthma, reduced cognitive performance, and increased cardiovascular risk, making reliable monitoring essential. This project demonstrates a simple, browser-based way to visualize PM1.0, PM2.5, and PM10 in real time—supporting better ventilation decisions and aligning with evolving EU air-quality expectations.

What you’ll build

A single HTML file styled with Tailwind CSS that:

  • Puts BleuIO in a central scanning role
  • Periodically runs a targeted scan for your HibouAir Board ID
  • Decodes PM1.0 / PM2.5 / PM10 from the manufacturer data inside BLE advertisements
  • Maps the values to three horizontal bars (default display windows: PM1.0/PM2.5 → 0–150 µg/m³, PM10 → 0–200 µg/m³)
  • Shows a high particulate banner when any value exceeds your thresholds

Source code: https://github.com/smart-sensor-devices-ab/pm-monitor-bleuio
Live demo: https://smart-sensor-devices-ab.github.io/pm-monitor-bleuio/

Hardware & software

How it works

HibouAir broadcast short advertisement packets that includes real-time air quality data. We can read them without pairing.

Scan cadence. The dongle sends:

  • AT+CENTRAL once to enter scanning mode
  • AT+FINDSCANDATA=<BOARD_ID>=3 every cycle to run a 3-second targeted scan
  • It reads lines until BleuIO prints SCAN COMPLETE, then waits and repeats

Decoding. HibouAir advertises a compact environmental frame beginning with the marker 5B 07 05. PM values are 16-bit little-endian fields. In this build we anchor to the marker and read:

  • PM1.0 (raw ÷ 10 → µg/m³)
  • PM2.5 (raw ÷ 10 → µg/m³)
  • PM10 (raw ÷ 10 → µg/m³)

UI behavior. Each metric drives a bar that fills left-to-right as the value rises within its display window. Thresholds are configurable (defaults: PM1.0 1, PM2.5 2, PM10 5 µg/m³). If any metric is at or above its threshold, the page shows “High particulate levels detected.”

Customize & extend

You can tailor this monitor to your space and workflow in several practical ways. If you anticipate larger spikes, widen the display windows—for example, expand PM2.5 to 0–200 µg/m³—to keep the bar responsive at higher ranges. For lightweight analytics, append readings to a CSV file or store them in IndexedDB to explore trends over hours or days. If you’re tracking multiple HibouAir units, build a wallboard that scans a list of Board IDs and renders compact tiles for each sensor in a single view. To act on thresholds, add automation hooks that trigger a webhook or drive a fan/relay from a companion script when levels rise. Finally, pair this particulate display with your existing CO₂ or Noise monitors to create a more complete picture of indoor conditions and ventilation effectiveness.

Output

In the video , the session starts at 0.0 µg/m³ across PM1.0/PM2.5/PM10. To demonstrate responsiveness, we briefly spray aerosol near the HibouAir device. Within seconds, the bars respond and the page displays “High particulate levels detected.” After stopping the aerosol and allowing air to clear, values decay back down, the bars recede, and the banner disappears. This sequence illustrates typical behavior you’ll see during quick particulate events (e.g., cleaning sprays, dust disturbances, smoke from cooking) and their recovery.

This project turns HibouAir’s BLE adverts into a clear view of PM1.0, PM2.5, and PM10 using a BleuIO dongle. In minutes, you get live bars, thresholds, and a simple alert that makes particulate spikes obvious. It’s easy to tune—adjust display windows, tweak thresholds, and adapt the layout for different rooms. As EU air-quality expectations tighten, this lightweight monitor helps you spot issues and validate ventilation quickly. From here, you can add data export, multi-device dashboards, or pair it with your CO2 monitor for a fuller picture.

Share this post on :

BleuIO Python Library v1.7.0 available: Enhanced Performance and New Security Functions

We are excited to release version 1.7.0 of the BleuIO Python library, a significant update focused on performance, stability, and support for the latest dongle firmware features.

This update ensures full compatibility with BleuIO firmware v.2.7.9.11 and BleuIO Pro firmware v.1.0.4.14. It brings substantial improvements to responsiveness and new functions that give developers more control over their Bluetooth Low Energy (BLE) applications.

Key Improvements in v1.7.0

Enhanced Performance and Throughput

Users will immediately benefit from improved responsiveness across the library. We’ve optimized data handling to deliver better throughput, making your BLE interactions faster and more efficient, which is especially valuable for data-intensive applications.

New Security and Command Functions

This release introduces several new functions to match the latest capabilities of the BleuIO firmware:

  • Auto-Execution Password Commands: We have added at_set_autoexec_pwd, at_enter_autoexec_pwd, and at_clr_autoexec_pwd. These new functions allow you to programmatically set, enter, or clear a password for the auto-execution script, adding a critical layer of security to your device’s startup routine.
  • ATEW Command Support: Added function for missing command atew . This is used for disabling or enabling the ‘data written’ echo when doing gattcwrite commands.
Stability and Usability Upgrades

To improve the developer experience and overall robustness, v1.7.0 includes several important under-the-hood changes:

  • Terminal Echo Disabled by Default: To provide a cleaner output and prevent commands from being echoed back, terminal echo is now disabled by default.
  • Better Event Parsing: We have improved the handling of event and scan result parsing, making the library more reliable and less prone to errors when processing incoming BLE data.
  • Safer Error Handling: The library now incorporates a safer serial port closing mechanism during exceptions in the reader loop. This ensures better resource management and prevents port-locking issues if an error occurs.

Get the Update

Upgrading to the latest version is simple. You can install or upgrade the package directly from PyPI using pip:

pip install --upgrade bleuio

We are confident that these improvements will help create BLE application with BleuIO and Python a more seamless and powerful experience.

Share this post on :

Smart Sensor Devices AB Partners with Novel Bits to Expand BLE Innovation and Distribution of BleuIO in the U.S. Market

We are pleased to announce a strategic partnership between Smart Sensor Devices AB and Novel Bits, a leading provider of Bluetooth Low Energy (BLE) education and development resources to advance Bluetooth Low Energy (BLE) innovation and expand the reach of BleuIO across the United States.

BleuIO is a powerful and easy-to-use Bluetooth Low Energy USB dongle designed to help developers, educators, and businesses build, test, and integrate BLE applications quickly. With its AT-command interface, cross-platform libraries, and plug-and-play functionality, BleuIO enables rapid prototyping and seamless connectivity — whether you are developing IoT products, smart devices, or wireless data solutions.

Under this collaboration, Novel Bits will leverage BleuIO to develop and showcase BLE-based solutions, demonstrating how BleuIO can serve as a core component in practical, scalable BLE applications. The partnership will focus on creating comprehensive technical resources, tutorials, and real-world applications that demonstrate how BleuIO simplifies Bluetooth development and enables businesses to rapidly integrate wireless connectivity into their products.

Mohammad Afaneh, founder of Novel Bits, has built a career focused on BLE education and developer advocacy. Through Novel Bits, he has created educational content and resources for the Bluetooth Low Energy community. His experience and connection with developers will help demonstrate BleuIO’s capabilities and support its adoption among developers and organizations.

In addition to the collaboration, Novel Bits will also act as an authorized distributor of BleuIO in the United States, providing developers, educators, and organizations with direct access to BleuIO products and integration support.

This partnership reflects our shared vision of making Bluetooth Low Energy technology more accessible, educational, and impactful for the global developer community.

Share this post on :

Log Real-Time BLE Air Quality Data from HibouAir to Google Sheets using BleuIO

Have you ever wanted to stream real-time air quality data from a Bluetooth sensor straight into the cloud — without any expensive gateway or IoT server?
In this tutorial, we’ll show you how to use the BleuIO USB dongle and a HibouAir sensor to capture CO2, temperature, and humidity readings over Bluetooth Low Energy (BLE), then automatically log them into Google Sheets for easy tracking and visualization.

By the end, you’ll have a live data logger that updates your Google Sheet every few seconds with real environmental readings — and you’ll even learn how to create charts directly inside Google Sheets.

What is Google Sheets?

Google Sheets is a free, cloud-based spreadsheet application that lets you create, edit, and share data online in real time. It’s part of Google’s Workspace tools and is accessible from any device with an internet connection. Because it stores data in the cloud, it’s ideal for data logging, quick testing, and lightweight analysis — especially for IoT projects. You can capture sensor readings, visualize trends with charts, and even connect Sheets to other platforms like Google Looker Studio or BigQuery for deeper analytics. For developers and makers, Google Sheets serves as an excellent starting point for collecting and analyzing data without needing a dedicated server or database.

What You’ll Need

You’ll also need a few Python libraries, which we’ll install below.

Step 1 — Set Up Your Google Sheet

We’ll use Google Sheets as our cloud storage for the data.

  1. Go to Google Sheets and create a new spreadsheet.
  2. Name it something like BleuIO_HibouAir_Data.
  3. Rename the first tab to data.
  4. In the first row, add the following headers: timestamp, CO2, temperature, humidity

Step 2 — Create a Google Apps Script Webhook

Next, we’ll build a small Google Apps Script that accepts POST requests and appends data to your sheet.

  1. Open https://script.google.com/home and click New Project.
  2. Paste this code into the editor:
// ===== CONFIG =====
const SPREADSHEET_ID = 'YOUR_SHEET_ID_HERE'; // from your sheet URL
const SHEET_NAME = 'data'; // tab name
// ==================

function doPost(e) {
  const sheet = SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName(SHEET_NAME);
  if (!e || !e.postData || !e.postData.contents) {
    return ContentService.createTextOutput('NO_BODY');
  }
  let payload = JSON.parse(e.postData.contents);
  const rows = Array.isArray(payload) ? payload : [payload];
  const toRow = o => [
    o.timestamp || new Date().toISOString(),
    Number(o.CO2),
    Number(o.temperature),
    Number(o.humidity)
  ];
  const values = rows.map(toRow);
  sheet.getRange(sheet.getLastRow() + 1, 1, values.length, values[0].length).setValues(values);
  return ContentService.createTextOutput('OK');
}
  1. Replace YOUR_SHEET_ID_HERE with your sheet’s ID — it’s the long string between /d/ and /edit in your Sheet URL.
  2. Click Deploy → New Deployment → choose Web app.
  3. Under settings:
    • Execute as: Me
    • Who has access: Anyone with the link
  4. Click Deploy, then copy the Web app URL.
    This will be your WEBHOOK_URL.

Step 3 — Install Python Libraries

Open your terminal (or PowerShell) and install the required dependencies:

pip install pyserial requests

These will let Python talk to the BleuIO dongle and send HTTPS requests to Google Sheets.

Step 4 — Connect and Configure the BleuIO Dongle

Plug in your BleuIO USB dongle.

  • On macOS, it will appear as something like /dev/cu.usbmodemXXXX.
  • On Windows, it will show up as COMX.

You can list serial ports to confirm:

ls /dev/cu.usbmodem*    # macOS

or

Get-WMIObject Win32_SerialPort | Select-Object DeviceID,Name  # Windows

Step 5 — Run the Python Script

Now we’ll use a Python script that handles the entire process automatically. The script first connects to the BleuIO dongle and sets it to central mode using the AT+CENTRAL command, which allows it to scan for nearby BLE devices. It then searches for HibouAir BLE advertisements using the AT+FINDSCANDATA=220069=3 command, which filters packets matching the HibouAir sensor’s unique identifier. Once it receives a valid advertisement, the script decodes the CO2, temperature, and humidity values from the data packet. Finally, it packages these readings along with a timestamp and pushes them to your Google Apps Script webhook, which automatically logs them into your Google Sheet.

📂 GitHub Repository: View Source Code on GitHub

Before running, update:

  • SERIAL_PORT → your BleuIO port
  • WEBHOOK_URL → your Google Apps Script Web App URL

Step 6 — Watch Your Data Flow!

Open your Google Sheet. You’ll see new rows appear every few seconds:

timestampCO2temperaturehumidity
2025-10-10T14:48:07.849Z51423.846.1

Step 7 — Create Charts in Google Sheets

Once your data is flowing into Google Sheets, you can easily visualize it without using any external tools. Start by highlighting the range of data you want to analyze, then go to Insert → Chart in the menu. Google Sheets will automatically suggest a chart type, but you can switch to a Line Chart or Combo Chart to better visualize trends over time. For a more dashboard-like view, you can also add a Gauge Chart to display real-time values for CO₂ or temperature. Customize the chart’s colors, titles, and formatting to match your preferences, and adjust refresh settings so your visuals update automatically as new data arrives.

And that’s it! You’ve built a real-time BLE air-quality logger with BleuIO and Google Sheets — no servers, no databases, no fuss.
This setup is perfect for classrooms, offices, or research labs that need quick, visual environmental monitoring.

Use Cases

This project demonstrates how you can use BleuIO and Google Sheets to quickly prototype and test IoT ideas. For example, it’s perfect for indoor air-quality monitoring in offices, classrooms, or labs, allowing you to observe changes in CO₂ levels, temperature, and humidity over time. Researchers can use it to log environmental data during experiments or field studies. It’s also useful for IoT developers who want to validate BLE sensors or test new device firmware without setting up a backend system. Teachers can turn this setup into an educational project, helping students understand Bluetooth communication, data logging, and visualization. Overall, pairing BleuIO with Google Sheets offers a fast, free, and flexible way to monitor and analyze real-world sensor data.

Whether you’re analyzing indoor air quality, tracking sensor performance, or just exploring IoT data pipelines, BleuIO makes BLE integration simple and powerful.

Share this post on :

BleuIO Pro Firmware update v1.0.4.14 — Enhanced Security and Flexibility

We’re excited to announce the release of BleuIO Pro Firmware v1.0.4.14, bringing enhanced control, improved security, and extended functionality to your Bluetooth development experience. This update focuses on giving users more flexibility in automation while keeping sensitive configurations protected.

New: Password Protection for AUTOEXEC List

One of the most significant updates in this release is the ability to lock the AUTOEXEC list with a password.

The AUTOEXEC list allows you to automate commands that run when the device powers on. In previous versions, anyone with access to the device could read, modify, or delete these commands.

With the new password feature, you can now secure your automation scripts by setting a password that prevents unauthorized access or changes.

  • Once a password is set, the list is locked — meaning it cannot be viewed or modified without entering the correct password.
  • The password persists through power cycles, ensuring protection even after the device restarts.
  • Updating the firmware to a different version will clear the password, allowing you to reset it if needed.

This feature is especially useful for developers deploying BleuIO Pro in environments where multiple users might interact with the device, ensuring that sensitive setup scripts remain intact.

Extended Wait Time for AT+WAIT Command

Another improvement is the extended maximum wait time for the AT+WAIT command.
Previously limited to 60 seconds, the command can now wait up to 1 hour (3600 seconds) — matching the functionality of the BleuIO (SSD005).

This enhancement provides more flexibility for time-sensitive applications or scenarios that require extended delays between command executions, such as long data collection intervals or connection monitoring.

New Commands Added

To support the new password-protection functionality, several new AT commands have been introduced:

1. AT+SETAUTOEXECPWD

Used to create or set a password for the AUTOEXEC list.
If a password already exists, you’ll need to provide the old one before setting a new one.

2. AT+ENTERAUTOEXECPWD

Allows you to enter the password when prompted to access or modify the AUTOEXEC list.

3. AT+CLRAUTOEXECPWD

Used to clear or remove an existing password.
To do so, the correct password must be entered first — adding an extra layer of protection.

These commands make it easy to manage your device’s security without complicating the user experience.

Bug Fixes and Improvements

  • Fixed an issue in verbose mode where some error codes and error messages did not match.
    This update ensures more accurate debugging information and smoother development workflows.

Download the Latest Firmware

You can download the latest BleuIO Pro Firmware v1.0.4.14 from our official documentation page:
https://www.bleuio.com/getting_started/docs/firmware_pro/

Share this post on :