Problema con IotCloud, nano iot33 in blocco

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() {

}

Aggiornamento 4: ricontrollando online ho visto che la causa del blocco di arduino potrebbe essere dovuto dalla saturazione della ram e la libreria "thingProperties.h" ha parecchia fame da quel punto di vista (circa il 70%) ma niente, aggiungendo la libreriadell'adafruit <MemoryFree.h> la memoria ram utilizzata si assestava dopo il primo loop e rimaneva constante fino al crash del programma. Ho fatto divesi test caricando lo sketch da ide, dal web editor attraverso seriale e da web editor attraverso "OTA" (Over-the-Air), ma tutti vanno in blocco dopo circa un' ora di funzionamento senza riempire la ram.

Come sempre ogni consiglio è ben accetto.

Non ho idea qui, nella sezione Italiana del forum, quanti usino quella scheda e, in più, quanti la usino con IoTCloud ...

... secondo me, se vuoi avere qualche risposta in tempi utili, ti conviene porre la domanda, esclusivamente in lingua inglese, nella sezione dedicata alla Nano 33 IoT, poi ... vedi tu ... ::slight_smile:

Guglielmo

... però scusa ... che libreria stai usando ? ? ?

Perché io, come unica libreria ufficiale, trovo solo la ArduinoIoTCloud e non so se stai usando quella, che ... è dichiarata essere utilizzabile solo su:

The following boards are supported:

WiFi: MKR 1000, MKR WiFi 1010, Nano 33 IoT, Portenta H7, ESP8266
GSM: MKR GSM 1400
5G: MKR NB 1500
LoRa: MKR WAN 1300/1310

... ed io NON vedo la Nano 33 IoT ... ::slight_smile:

Guglielmo

La libreria che sto usando è quella che Iot Cloud crea in automatico alla creazione delle variabili e quindi del progetto andando a creare "thingProperties.h"che a sua volta rimanda a <ArduinoIoTCloud.h> e <Arduino_ConnectionHandler.h>

/*
// titolo del file: thingProperties.h
// Code generated by Arduino IoT Cloud, DO NOT EDIT.

#include <ArduinoIoTCloud.h>
#include <Arduino_ConnectionHandler.h>


const char THING_ID[] = "9a1570fd-21ed-4c63-a566-cef232e0edd9";

const char SSID[]     = SECRET_SSID;    // Network SSID (name)
const char PASS[]     = SECRET_PASS;    // Network password (use for WPA, or use as key for WEP)

void onMaxBoilerChange();
void onIsteresiChange();

CloudTemperatureSensor caldaia;
CloudTemperatureSensor boiler;
CloudTemperature maxBoiler;
CloudTemperature isteresi;

void initProperties(){

  ArduinoCloud.setThingId(THING_ID);
  ArduinoCloud.addProperty(caldaia, READ, 10 * SECONDS, NULL);
  ArduinoCloud.addProperty(boiler, READ, 10 * SECONDS, NULL);
  ArduinoCloud.addProperty(maxBoiler, READWRITE, 60 * SECONDS, onMaxBoilerChange);
  ArduinoCloud.addProperty(isteresi, READWRITE, 60 * SECONDS, onIsteresiChange);

}

WiFiConnectionHandler ArduinoIoTPreferredConnection(SSID, PASS);
*/

Le librerie sono supportate :

Library for handling and managing network connections by providing keep-alive functionality and automatic reconnection in case of connection-loss. It supports the following boards:

WiFi: MKR 1000, MKR WiFi 1010, Nano 33 IoT, ESP8266
GSM: MKR GSM 1400
5G: MKR NB 1500
LoRa: MKR WAN 1300/1310

The ArduinoIoTCloud library is the central element of the firmware enabling certain Arduino boards to connect to the Arduino IoT Cloud. The following boards are supported:

WiFi: MKR 1000, MKR WiFi 1010, Nano 33 IoT, Portenta H7, ESP8266
GSM: MKR GSM 1400
5G: MKR NB 1500
LoRa: MKR WAN 1300/1310

Grazie per il consiglio sul forum in inglese, non ho tutta questa dimestichezza con la lingua ma proverò.

Per ora quello che ho scoperto sembra essere che la scheda non digerisca molto bene le variabili che possono essere lette e scritte dal cloud.

ArduinoCloud.addProperty(maxBoiler, READWRITE, 60 * SECONDS, onMaxBoilerChange);
ArduinoCloud.addProperty(isteresi, READWRITE, 60 * SECONDS, onIsteresiChange);

Farò altri tentativi, magari cambiando il tipo di variabile.

Strano perché su GitHub NON trovo quellla frase con quelle schede ...
... per curiosità, hai un link dove posso andare a leggere? :slight_smile:

Guglielmo

Ecco i link di github:
ArduinoIoTCloud
Arduino_ConnectionHandler

La scheda è nominata nel readme, riga Wifi, terza posizione.
Per quanto riguarda la libreria "thingProperties.h" viene creata dall'editor e inserita nel progetto automaticamente.

Per chiarezza inserisco prima dei codic precedentemente inseriti nei post i nomi dei vari file

:smiley: :smiley: :smiley: :smiley: ... mi rendo conto che sono "cecato" io ... se guardi quello che ti avevo copiato/incollato al post #3 ... la Nano 33 IoT c'era !!!

Nulla, ribadisco il consiglio del post #2 :wink:

Guglielmo

Grazie ancora per il consiglio, continuo a fare un po' di test e debug cercare di trovare il problema specifico prima di porre la domanda nella sezione specifica, in modo da essere il più specifico possibile

Fabio

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.