Salve a tutti, è il primo post che scrivo perciò chiedo scusa per eventuali errori.
Sto realizzando un progetto che comprende 2 sonde pt100 per realizzare una bilancia termica (utilizzando 2 "Adafruit PT100 RTD Temperature Sensor Amplifier - MAX31865" per la comunicazione SPI con arduino) e una nano 33 iot e l' IotCloud per interfacciarmi con il sistema. Tenendo la libreria della adafruit senza apportare modifiche (con il baud rate a 115200) ho scritto il codice e testato con un arduino uno. Successivamente ho aggiunto le variabili che mi interessavano tramite il pannello dell' iot cloud, compilato e caricato.
Tutto funzionante se non fosse che dopo un po' (tra 1 e 3 ore) l'arduino smetteva di comunicare con il server.
Man mano ho iniziato a togliere pezzi di codice fino ad arrivare ad un semplice blink non bloccante sul pin 13 per vedere cosa facesse realmente la scheda e con il baud rate a 115200 il blink si blocca (sempre nello stato accesso) come si perdesse all'interno di una funzione.
Il collegamento al router rimane anche quando si blocca.
Qualcuno ha qualche idea?
Aggiornamento 1: Errore mio, utilizzavo la denominazione Serial e non Serial1, probabilmente interferendo con la comunicazione con il modulo wifinina.
Aggiornamento 2: Continua ad andare in blocco anche con Serial1, ora provo a ricaricare il blink eliminando qualsiasi libreria, inizio a pensare che l'unità abbia problemi.
Aggiornamento 3: Inserendo semplicemente un blink senza nessun'altra libreria oltre a quella relativa all'iotcloud la nano 33 iot si è bloccata dopo 2 ore e 15 minuti (partito alle 21.32 ultima comunicazione alle 23.45).
Allego il codice del blink nel caso qualcuno veda qualcosa che a me sfugge.
//Titolo file: Riscaldamento_Centrale_mar08a
#include "thingProperties.h"
#define INTERVALLO 10000
int stato = LOW;
unsigned long t0, dt;
void setup() {
initProperties();
// Connect to Arduino IoT Cloud
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
pinMode(13, OUTPUT);
t0 = millis();
}
void loop() {
ArduinoCloud.update();
dt = millis() - t0;
if ( dt >= INTERVALLO ) {
t0 = millis();
stato = !stato;
digitalWrite(13, stato);
}
caldaia= 10;
boiler = 20;
maxBoiler = 30;
isteresi = 40;
}
void onMaxBoilerChange() {
}
void onIsteresiChange() {
}