Git Product home page Git Product logo

nimble-arduino's Introduction

Latest release Release Version Release Date

Need help? Have questions or suggestions? Join the Gitter

NimBLE-Arduino

A fork of the NimBLE stack restructured for compilation in the Ardruino IDE with a CPP library for use with ESP32.

Note for IDF users: This repo will not compile correctly in ESP-IDF. An ESP-IDF component version of this library can be found here.

This library significantly reduces resource usage and improves performance for ESP32 BLE applications as compared
with the bluedroid based library. The goal is to maintain, as much as reasonable, compatibility with the original
library but refactored to use the NimBLE stack. In addition, this library will be more actively developed and maintained
to provide improved capabilites and stability over the original.

Resource use improvement

(Original) BLE_client example comparison (Debug):

Arduino BLE Library

Sketch uses 1216377 bytes (58%) of program storage space.
Memory after connection: Free Heap: 171548

NimBLE-Arduino library

Sketch uses 617256 bytes (29%) of program storage space.
Memory after connection: Free Heap: 270336


(Original) BLE_notify example comparison (Debug):

Arduino BLE Library

Sketch uses 1208409 bytes (57%) of program storage space.
Memory after connection: Free Heap: 173300

NimBLE-Arduino library

Sketch uses 603432 bytes (28%) of program storage space.
Memory after connection: Free Heap: 269792

As shown: there is nearly a 50% reduction in flash use and approx. 100kB less ram consumed!

Installation

Arduino Library manager: Go to sketch -> Include Library -> Manage Libraries and search for NimBLE and install.

Alternatively: Download as .zip and extract to Arduino/libraries folder, or in Arduino IDE from Sketch menu -> Include library -> Add .Zip library.

#include "NimBLEDevice.h" at the beginning of your sketch.

Tested and working with esp32-arduino in Arduino IDE and platform IO.

Using

This library is intended to be compatible with the original ESP32 BLE functions and types with minor changes.

If you have not used the original Bluedroid library please refer to the New user guide.

If you are familiar with the original library, see: The migration guide for details about breaking changes and migration.

Also see Improvements_and_updates for information about non-breaking changes.

Full API documentation and class list can be found here.

For added performance and optimizations see Usage tips.

Check the Refactored_original_examples in the examples folder for highlights of the differences with the original library.

More advanced examples highlighting many available features are in examples/ NimBLE_Server, NimBLE_Client.

Beacon examples provided by @beegee-tokyo are in examples/ BLE_Beacon_Scanner, BLE_EddystoneTLM_Beacon, BLE_EddystoneURL_Beacon.

Change the settings in the src/nimconfig.h file to customize NimBLE to your project,
such as increasing max connections, default is 3, absolute maximum connections is 9.

Development Status

This Library is tracking the esp-nimble repo, nimble-1.3.0-idf master branch, currently @5bb7b40.

Also tracking the NimBLE related changes in ESP-IDF, master branch, currently @639e7ad.

Acknowledgments


nimble-arduino's People

Contributors

h2zero avatar tobozo avatar wakwak-koba avatar beegee-tokyo avatar staars avatar davidjrobertson avatar gkoh avatar thorrak avatar lknop avatar doudar avatar asukiaaa avatar bascy avatar corneliusmunz avatar deepak4395 avatar huming2207 avatar j4m3s avatar jason2866 avatar ketan avatar mr-mime avatar mblasee avatar boozer2 avatar btsimonh avatar sivar2311 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.