Hello Ladies and Gentlemen.
I'm working on my first app and I believe I have damaged 2 Nano 33 BLE's once I was finally able to connect to my cell phone.
The first time I was able to get the Nano to connect with the MIT Inventor app, It appeared to connect successfully, but that was the last time. I could not connect again. Then I tried connecting with with LightBlue software, which I have been using successfully all along and could not connect with that either.
I tried a new Nano 33 BLE with LightBlue first and was able to connect. I then tried the new Nano with the MIT software and successfully connected 1 time and now cant connect with either the MIT software or the LightBlue.
I tried doing a double press reset and re loading the sketch but no difference.
Any Ideas?
I'm very reluctant to mess with this any more until I figure this out.
The MIT Inventor project is still a work in progress that looks like these 4 pages:
The Arduino code:
[code]
const int RadPin = A0; // Radiator Input Thermister
const int CndPin = A1; // Condenser Input Thermister
const int AuxPin = A2; // Auxilary Input Not used at this time
const int FanPin = 9; // Set Fan pin
const long Period = 10000; // Recheck period
long previousMillis = 0; // last time the temperature levels were checked, in ms
/*
Temperatur Monitor
This example creates a Bluetooth® Low Energy peripheral with the standard Temperature service and
level characteristic. Pins A0, A1 and A2 are used to calculate the temperatures of 3 sensors.
The data is calculated by the time set in the constant Period.
The circuit:
- Arduino MKR WiFi 1010, Arduino Uno WiFi Rev2 board, Arduino Nano 33 IoT,
Arduino Nano 33 BLE, or Arduino Nano 33 BLE Sense board.
You can use a generic Bluetooth® Low Energy central app, like LightBlue (iOS and Android) or
nRF Connect (Android), to interact with the services and characteristics
created in this sketch.
This example code is in the public domain.
*/
#include <ArduinoBLE.h>
// Define the Temperature Service
BLEService TempService("53436b3f-5f91-474b-963e-8b09b170c670"); //*** BLEService Class Any Hex Name 128-bit UUID in String format *********************************************************
// Define Temperature Level Characteristics as BLEUnsignedIntCharacteristic, BLEUnsignedCharCharacteristic will not work.
// Note define Characteristics and
BLEUnsignedIntCharacteristic RadLevelChar("694d181e-4421-47f3-9653-c4d6bb295a07", // standard 128-bit characteristic UUID *******************************
BLERead | BLENotify); // remote clients will be able to get notifications if this characteristic changes
BLEUnsignedIntCharacteristic CndLevelChar("0407dd37-ae29-4ec7-ab40-a83898d610df", // standard 128-bit characteristic UUID *******************************
BLERead | BLENotify); // remote clients will be able to get notifications if this characteristic changes
BLEUnsignedIntCharacteristic AuxLevelChar("ad43db8f-e3e6-4025-b745-43f2100f27e1", // standard 128-bit characteristic UUID *******************************
BLERead | BLENotify); // remote clients will be able to get notifications if this characteristic changes
void setup() {
Serial.begin(9600); // initialize serial communication
//while (!Serial);
pinMode(LED_BUILTIN, OUTPUT); // initialize the built-in LED pin to indicate when a central is connected
// begin initialization
if (!BLE.begin()) {
Serial.println("starting BLE failed!");
while (1);
}
/* Set a local name for the Bluetooth® Low Energy device
This name will appear in advertising packets
and can be used by remote devices to identify this Bluetooth® Low Energy device
The name can be changed but maybe be truncated based on space left in advertisement packet
*/
BLE.setLocalName("Testing 123"); //******************************************************************************
BLE.setAdvertisedService(TempService); // add the service UUID
TempService.addCharacteristic(RadLevelChar); // add the radiator level characteristic
TempService.addCharacteristic(CndLevelChar); // add the condenser level characteristic
TempService.addCharacteristic(AuxLevelChar); // add the aux level characteristic
BLE.addService(TempService); // Add the Temperature service
RadLevelChar.writeValue(0); // set initial value for this characteristic
CndLevelChar.writeValue(0); // set initial value for this characteristic
AuxLevelChar.writeValue(0); // set initial value for this characteristic
// Start advertising Bluetooth® Low Energy. It will start continuously transmitting Bluetooth® Low Energy
// advertising packets and will be visible to remote Bluetooth® Low Energy central devices
// until it receives a new connection
BLE.advertise(); // start advertising
//Serial.println("Bluetooth® device active, waiting for connections...");
}
void loop() {
// wait for a Bluetooth® Low Energy central
BLEDevice central = BLE.central();
// if a central is connected to the peripheral:
if (central) {
Serial.print("Connected to central: ");
// print the central's BT address:
Serial.println(central.address());
// turn on the LED to indicate the connection:
digitalWrite(LED_BUILTIN, HIGH);
// check the temperature levels every Period (ms)
// while the central is connected:
while (central.connected()) {
long currentMillis = millis();
// if Period ms have passed, check the temperature levels:
if (currentMillis - previousMillis >= Period) {
previousMillis = currentMillis;
updateTemperatures();
}
}
// when the central disconnects, turn off the LED:
digitalWrite(LED_BUILTIN, LOW);
Serial.print("Disconnected from central: ");
Serial.println(central.address());
}
}
void updateTemperatures() {
// Read the current voltage level on each analog input pin.
// This is used here to simulate the charge level of temperaturs.
int Rad = analogRead(RadPin);
int Cnd = analogRead(CndPin);
int Aux = analogRead(AuxPin);
/*
int RadLevel = map(Rad, 0, 1023, 0, 100);
int CndLevel = map(Cnd, 0, 1023, 0, 100);
int AuxLevel = map(Aux, 0, 1023, 0, 100);
*/
int RadLevel = Rad;
int CndLevel = Cnd;
int AuxLevel = Aux;
Serial.print("Rad Level % is now: "); Serial.println(RadLevel);
Serial.print("Cnd Level % is now: "); Serial.println(CndLevel);
Serial.print("Aux Level % is now: "); Serial.println(AuxLevel);
RadLevelChar.writeValue(RadLevel); // update the Radiator level characteristics
CndLevelChar.writeValue(CndLevel); // update the Condenser level characteristics
AuxLevelChar.writeValue(AuxLevel); // update the Aux level characteristics
}
[/code]