/BlynkNcpExample

Example IoT application using Blynk.NCP

Primary LanguageCThe UnlicenseUnlicense

Blynk.NCP

Issues Downloads PlatformIO CI License Stand With Ukraine

Blynk.NCP is a solution that off-loads connectivity to a Network Co-Processor (NCP), while your application logic resides on the Primary MCU. This implies a dual-Microcontroller Unit (MCU) architecture.

When to use Blynk.NCP?

Using Blynk.NCP is recommended if one of these is true:

  • You have one of the supported dual-MCU boards and want connect it to Blynk
  • You're building a new IoT product with specific requirements for the Primary MCU, so you're adding a separate connectivity module
  • You are using Blynk for retrofitting your existing products
  • You have included an AT command-based module, but you struggle to make it work right or to achieve your product goals
  • You are looking for ridiculously low risks, integration efforts, and time to market, along with improved reliability of your products
Core Features
  • Blynk.Inject: connect your devices easily using Android App, iOS App or 🌐 Web Dashboard
    • BLE-assisted device provisioning for the best end-user experience
    • WiFiAP-based provisioning for devices without BLE support
    • Network Manager: WiFi (up to 16 saved networks), Ethernet, Cellular (depending on the hardware)
    • Advanced network connection troubleshooting
  • Secure Blynk.Cloud connection that provides simple API for:
    • Data transfer with Virtual Pins, reporting Events, and accessing Metadata
    • Time, Timezone and Location, with an ability to track local time when the device is offline, including DST transitions
  • Blynk.Air - automatic Over The Air firmware updates using Web Dashboard
    • Both NCP and the Primary MCU firmware updates
    • Direct firmware upgrade using iOS/Android App, before device activation
Extra Features

Additional services that can be provided by the Blynk.NCP:

  • ⏳ soon Persistent automation scenarios - work even if the device is offline
  • ⏳ soon Non-volatile storage for the Preferences library
  • ✅ ready NCP-assisted fail-safe OTA updates
  • ✅ ready Connectivity-related device state indication - requires a monochrome/RGB/addressable LED attached to the NCP
  • ✅ ready User button (also used for configuration reset) - requires a momentary push button attached to the NCP
  • ✅ ready Factory testing and provisioning
  • 🤔 later Generic File System storage
  • 🤔 later Generic UDP/TCP/TLS socket API
Supported Boards

Dual-MCU Boards

This example project is compatible with a set of ready-to-use Dual-MCU boards:

Board 🔄 MCU / NCP 🌐 ⚙️ 🗃️
UNO R4 WiFi unoR4wifi ⏳ / ✅ WiFi 2.4 BLE 4.25 MB
Portenta C33 portentaC33 ⏳ / ✅ WiFi 2.4 BLE 512 KB
Nano RP2040 Connect rp2040connect ✅ / ❌ WiFi 2.4 BLE 384 KB
Nano 33 IoT nano33iot ✅ / ❌ WiFi 2.4 BLE 384 KB
MKR WiFi 1010 mkrwifi1010 ✅ / ❌ WiFi 2.4 BLE 384 KB
T-PicoC3 t_pico_c3 ✅ / ✅ WiFi 2.4 BLE 512 KB
RPi Pico + ESP8266 pico_esp8266 ✅ / ✅ WiFi 2.4 WiFiAP 1000 KB
Wio Terminal ✅ / ❔ WiFi 2.4/5 BLE

🔄 Over-the-Air Updates, 🌐 Connectivity, ⚙️ Provisioning, 🗃️ File System

Custom Boards

You can also add one of the supported connectivity modules to your own board.

Getting started

  1. This is a PlatformIO project. Please install the VSCode plugin or PlatformIO CLI.

  2. Clone this repository using git, or download it as a ZIP file.

  3. Flash the Blynk.NCP firmware (replace nano33iot with your board type):

    pio run -e nano33iot -t upload_ncp

    Warning: This overwrites both the Main MCU and the connectivity module firmware.
    You can restore the stock firmware easily.

  4. Open src/main.cpp and fill in information from your Blynk Template:

    #define BLYNK_TEMPLATE_ID           "TMPxxxxxx"
    #define BLYNK_TEMPLATE_NAME         "MyDevice"
  5. Upload the example project, and run the serial monitor:

    pio run -e nano33iot -t upload -t monitor
  6. Use the Blynk iOS/Android app to configure your new device
    Ensure that the Blynk App is installed on your smartphone and scan this QR code:
    Add New Device QR
    Alternatively: Open the Blynk App -> click Add New Device -> select Find Devices Nearby

Troubleshooting

If something doesn't work, try some of these solutions:

  • If your board is based on a Raspberry Pi RP2040 chip, it may fail to work on Windows. Please apply this fix
  • Upgrade PlatformIO to the latest version. Run: pio upgrade
  • Upgrade packages to the latest version. Run: pio pkg update --no-save

Disclaimer

The community edition of Blynk.NCP is available for personal use and evaluation.
If you're interested in using Blynk.NCP for commercial applications, feel free to contact Blynk. Thank you!