-
Notifications
You must be signed in to change notification settings - Fork 78
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
18 changed files
with
951 additions
and
51 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
73 changes: 73 additions & 0 deletions
73
examples/ArduinoIoTCloud-Notecard/ArduinoIoTCloud-Notecard.ino
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
/* | ||
This sketch demonstrates how to exchange data between your board and the | ||
Arduino IoT Cloud, while using the Notecard for wireless communication. | ||
* Connect a potentiometer (or other analog sensor) to A0. | ||
* When the potentiometer (or sensor) value changes the data is sent to the Cloud. | ||
* When you flip the switch in the Cloud dashboard the onboard LED lights gets turned ON or OFF. | ||
IMPORTANT: | ||
This sketch works with any Wi-Fi, Cellular, LoRa or Satellite enabled Notecard. | ||
The full list of compatible boards can be found here: | ||
- https://github.com/arduino-libraries/ArduinoIoTCloud#what | ||
*/ | ||
|
||
#include <Notecard.h> | ||
#include "thingProperties.h" | ||
|
||
#if !defined(LED_BUILTIN) && !defined(ARDUINO_NANO_ESP32) | ||
static int const LED_BUILTIN = 2; | ||
#endif | ||
|
||
/* | ||
* Choose an interrupt capable pin to reduce polling and improve | ||
* the overall responsiveness of the ArduinoIoTCloud library | ||
*/ | ||
// #define ATTN_PIN 9 | ||
|
||
void setup() { | ||
/* Initialize serial and wait up to 5 seconds for port to open */ | ||
Serial.begin(9600); | ||
for(unsigned long const serialBeginTime = millis(); !Serial && (millis() - serialBeginTime <= 5000); ) { } | ||
|
||
/* Set the debug message level: | ||
* - DBG_ERROR: Only show error messages | ||
* - DBG_WARNING: Show warning and error messages | ||
* - DBG_INFO: Show info, warning, and error messages | ||
* - DBG_DEBUG: Show debug, info, warning, and error messages | ||
* - DBG_VERBOSE: Show all messages | ||
*/ | ||
setDebugMessageLevel(DBG_INFO); | ||
|
||
/* Configure LED pin as an output */ | ||
pinMode(LED_BUILTIN, OUTPUT); | ||
|
||
/* This function takes care of connecting your sketch variables to the ArduinoIoTCloud object */ | ||
initProperties(); | ||
|
||
/* Initialize Arduino IoT Cloud library */ | ||
#ifndef ATTN_PIN | ||
ArduinoCloud.begin(ArduinoIoTPreferredConnection); | ||
ArduinoCloud.setNotecardPollingInterval(3000); // default: 1000ms, min: 250ms | ||
#else | ||
ArduinoCloud.begin(ArduinoIoTPreferredConnection, ATTN_PIN); | ||
#endif | ||
|
||
ArduinoCloud.printDebugInfo(); | ||
} | ||
|
||
void loop() { | ||
ArduinoCloud.update(); | ||
potentiometer = analogRead(A0); | ||
seconds = millis() / 1000; | ||
} | ||
|
||
/* | ||
* 'onLedChange' is called when the "led" property of your Thing changes | ||
*/ | ||
void onLedChange() { | ||
Serial.print("LED set to "); | ||
Serial.println(led); | ||
digitalWrite(LED_BUILTIN, led); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
Notecard Connectivity | ||
===================== | ||
|
||
The Notecard is a wireless, secure abstraction for device connectivity, that can | ||
be used to enable _ANY*_ device with I2C, or UART, to connect to the Arduino IoT | ||
Cloud via cellular, LoRa, satellite or Wi-Fi! | ||
|
||
As a result, your existing device architecture can now have first class support | ||
in the Arduino IoT Cloud, by using a Notecard as a secure communication channel. | ||
|
||
> \*_While any device with I2C/UART may use the Notecard, the Arduino IoT Cloud | ||
> library is not supported by the AVR toolchain. Therefore, devices based on the | ||
> AVR architecture cannot access the Arduino IoT Cloud via the Notecard._ | ||
> | ||
> _However, any device (including AVR), may use the Notecard library to send data | ||
> to Notehub, then that data may be routed to any endpoint of your choosing. See the | ||
> [Notecard Routing Guide](https://dev.blues.io/guides-and-tutorials/routing-data-to-cloud) | ||
> for more information..._ | ||
Wireless Connectivity Options | ||
----------------------------- | ||
|
||
- [Cellular](https://shop.blues.com/collections/notecard/products/notecard-cellular) | ||
- [Cellular + Wi-Fi](https://shop.blues.com/collections/notecard/products/notecard-cell-wifi) | ||
- [Wi-Fi](https://shop.blues.com/collections/notecard/products/wifi-notecard) | ||
- [LoRa](https://shop.blues.com/collections/notecard/products/notecard-lora) | ||
- [Satellite](https://shop.blues.com/products/starnote) | ||
|
||
How it Works | ||
------------ | ||
|
||
**Architecture Diagram:** | ||
|
||
``` | ||
-------- ------------ ----------- ----------- | ||
| | | | | | | | | ||
| Host | | | Secure | | | Arduino | | ||
| MCU |---<I2C/UART>---| Notecard | ( ( Wireless ) ) | Notehub |---<TLS>---| IoT | | ||
| | | | Protocol | | | Cloud | | ||
|______| |__________| |_________| |_________| | ||
``` | ||
|
||
Getting Started | ||
--------------- | ||
|
||
### Setup a Notehub Account | ||
|
||
Using the Notecard only requires a couple of easy steps: | ||
|
||
1. [Purchase a Notecard](https://shop.blues.com/collections/notecard) (and | ||
[Notecarrier](https://shop.blues.com/collections/notecarrier)) that fits the | ||
needs of your device. | ||
> _**NOTE:** We recommend starting with our [Dev Kit](https://shop.blues.com/products/blues-global-starter-kit) | ||
> if you are unsure._ | ||
1. [Setup a Notehub account](https://dev.blues.io/quickstart/notecard-quickstart/notecard-and-notecarrier-f/#set-up-notehub). | ||
> _**NOTE:** Notehub accounts are free (no credit card required)._ | ||
1. [Create a project on your Notehub account](https://dev.blues.io/quickstart/notecard-quickstart/notecard-and-notecarrier-f/#create-a-notehub-project). | ||
1. In `thingProperties.h`, replace "com.domain.you:product" (from | ||
`NOTECARD_PRODUCT_UID`) with the ProductUID of your new Notehub project. | ||
|
||
### Power-up the Device | ||
|
||
1. [Connect the Notecard to your Host MCU](https://dev.blues.io/quickstart/notecard-quickstart/notecard-and-notecarrier-f/#connect-your-notecard-and-notecarrier) | ||
1. Flash the `ArduinoIoTCloud-Notecard` example sketch to your device. You | ||
should see the device reporting itself as online in your [Notehub Project](https://notehub.io). | ||
|
||
### Associate Notecard to Arduino IoT Cloud | ||
|
||
1. Create a "MANUAL Device" in the Arduino IoT Cloud, then [add environment | ||
variables for the "Device ID" and "Secret Key" to your Notecard in Notehub](https://dev.blues.io/guides-and-tutorials/notecard-guides/understanding-environment-variables/#setting-a-notehub-device-variable). | ||
- `_sn`: \<Device ID\> | ||
- `_secret_key`: \<Secret Key\> | ||
|
||
### More Information | ||
|
||
For more information about the Notecard and Notehub in general, please see our | ||
[Quickstart Guide](https://dev.blues.io/quickstart/) for a general overview of | ||
how the Notecard and Notehub are designed to work. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
#include <Arduino_ConnectionHandler.h> | ||
|
||
/* If provided, the Wi-Fi Credentials will be passed along to the Notecard. If | ||
* the Notecard supports Wi-Fi, it will attempt to connect to the network using | ||
* these credentials, if not, the Notecard will safely ignore these values. */ | ||
#define SECRET_WIFI_SSID "YOUR_WIFI_NETWORK_NAME" | ||
#define SECRET_WIFI_PASS "YOUR_WIFI_PASSWORD" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
#include <string.h> | ||
|
||
#include <ArduinoIoTCloud.h> | ||
#include <Arduino_ConnectionHandler.h> | ||
#include "arduino_secrets.h" | ||
|
||
/* The Notecard can provide connectivity to almost any board via ESLOV (I2C) | ||
* or UART. An empty string (or the default value provided below) will not | ||
* override the Notecard's existing configuration. | ||
* Learn more at: https://dev.blues.io */ | ||
#define NOTECARD_PRODUCT_UID "com.domain.you:product" | ||
|
||
/* Uncomment the following line to use the Notecard over UART */ | ||
// #define UART_INTERFACE Serial1 | ||
|
||
void onLedChange(); | ||
|
||
bool led; | ||
int potentiometer; | ||
int seconds; | ||
|
||
#ifndef UART_INTERFACE | ||
NotecardConnectionHandler ArduinoIoTPreferredConnection(NOTECARD_PRODUCT_UID); | ||
#else | ||
NotecardConnectionHandler ArduinoIoTPreferredConnection(NOTECARD_PRODUCT_UID, UART_INTERFACE); | ||
#endif | ||
|
||
void initProperties() { | ||
ArduinoCloud.addProperty(led, Permission::ReadWrite).onUpdate(onLedChange); | ||
ArduinoCloud.addProperty(potentiometer, Permission::Read).publishOnChange(10); | ||
ArduinoCloud.addProperty(seconds, Permission::Read).publishEvery(5 * MINUTES); | ||
|
||
if (::strncmp(SECRET_WIFI_SSID, "YOUR_WIFI_NETWORK_NAME", sizeof(SECRET_WIFI_SSID))) { | ||
ArduinoIoTPreferredConnection.setWiFiCredentials(SECRET_WIFI_SSID, SECRET_WIFI_PASS); | ||
} | ||
} |
Oops, something went wrong.