Problemi con Arduino Cloud

Buonasera a tutti, da un paio di giorni sto cercando di risolvere un problema alquanto insolito riguardo l'uso di Arduino Cloud e non ne sono ancora venuto a capo. Il problema si verifica solo quando la scheda (Arduino nano 33 iot) viene scollegata dal pc dal quale carico lo sketch tramite il web editor. Finché la scheda è collegata al pc tramite cavo USB tutto procede nella norma e la dashboard si aggiorna normalmente ma, non appena tolgo il cavo USB e alimento Arduino tramite
un Power supply module (sto usando quello della elegoo del kit starter), si scollega dal wifi e di conseguenza va offline non mandando più i dati per la dashboard anche se il led di accensione rimane on.

Ho provato a rifare tutto il procedimento associando un'altra scheda e ricreando variabili e sketch nuovi ma non cambia nulla.

Se alimento arduino tramite fonti che non sia il cavo USB collegato al PC, arduino non va online.
A volte non va online nemmeno se è inserito nella breadbord con collegamenti presenti, lo devo togliere dalla board, caricare lo sketch e poi inserirlo da accesso nella board, ma dopo qualche secondo va offline anche se risulta il led di accensione acceso

Possibile che magari il problema sia il mio router e/o provider ?

Verifica che nel codice del tuo sketch non ci sia nella setup() la riga o le righe
while(!Serial) ;

Non c'è, è presente solo Serial.begin(9600); che dopo tentativi ho pure commentato quindi di serial non c'è manco l'ombra nel codice

La elegoo del kit starter NON è una roba ufficiale Arduino ma una roba cinese (elegoo).
Posta un link a questo prodotto e soprattutto a questo "Power supply module"

Questo è il link del kit starter della Elegoo, in alto a sinistra, nella prima foto, c'è il modulo di alimentazione in questione

Dalla foto non si leggono le sigle dei transistor smd. Quelli leggendo poi i datascheet fanno capire quanta corrente possono erogare. Secondo me quel cosetto (pensato per una basetta) non riesce ad erogare molta corrente. va bene solo per fare esperimenti.

P.S. posta anche il codice, magari c'e' qualcosa che richiede la usb.

Questo è il main

#include "thingProperties.h"
#include <SPI.h>
/*#include <nRF24L01.h>
#include <RF24.h>*/
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <Adafruit_GFX.h>
#include "Adafruit_CCS811.h"
#include <Multichannel_Gas_GMXXX.h>
//#include <SoftwareSerial.h>
#include <Arduino.h>
#include "wiring_private.h"
#include <WiFiNINA.h>

Adafruit_CCS811 ccs;
Adafruit_BME280 bme;
GAS_GMXXX<TwoWire> gas;

void setup() {
  Serial.begin(9600);
  delay(1500);
  initProperties();
  ArduinoCloud.begin(ArduinoIoTPreferredConnection);
  bme.begin(0x76, &Wire);
  gas.begin();
  ccs.begin();
  setDebugMessageLevel(2);
  ArduinoCloud.printDebugInfo();
}

void loop() {
  ArduinoCloud.update();
  Temperature();
  MiCS();
  CCS811_sensor();
}

void Temperature() {
  humidityCloud = bme.readHumidity();
  temperatureCloud = bme.readTemperature();
  pressureCloud = bme.seaLevelForAltitude(195.0, bme.readPressure()) / 100.0;
}

void CCS811_sensor() {
  if (ccs.available()) {
    if (!ccs.readData()) {
      co2Cloud = ccs.geteCO2();
      tvocCloud = ccs.getTVOC();
    }
  }
}

void MiCS() {
  coCloud = gas.getGM702B();
  if (coCloud > 999) coCloud = 999;
  etanoloCloud_C2H5OH = gas.getGM302B();
  if (etanoloCloud_C2H5OH > 999) etanoloCloud_C2H5OH = 999;
  no2Cloud = gas.getGM102B();
  if (no2Cloud > 999) no2Cloud = 999;
}

Questo è il thingProperties.h -- SSID e PASS sono dichiarate nel file Secret

// Code generated by Arduino IoT Cloud, DO NOT EDIT.

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

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

float pressureCloud;
int co2Cloud;
int coCloud;
int etanoloCloud_C2H5OH;
int humidityCloud;
int no2Cloud;
int temperatureCloud;
int tvocCloud;

void initProperties(){

  ArduinoCloud.addProperty(pressureCloud, READ, ON_CHANGE, NULL);
  ArduinoCloud.addProperty(co2Cloud, READ, ON_CHANGE, NULL);
  ArduinoCloud.addProperty(coCloud, READ, ON_CHANGE, NULL);
  ArduinoCloud.addProperty(etanoloCloud_C2H5OH, READ, ON_CHANGE, NULL);
  ArduinoCloud.addProperty(humidityCloud, READ, ON_CHANGE, NULL);
  ArduinoCloud.addProperty(no2Cloud, READ, ON_CHANGE, NULL);
  ArduinoCloud.addProperty(temperatureCloud, READ, ON_CHANGE, NULL);
  ArduinoCloud.addProperty(tvocCloud, READ, ON_CHANGE, NULL);

}

WiFiConnectionHandler ArduinoIoTPreferredConnection(SSID, PASS);

Il modulo di alimentazione in questione è il: Elegoo Power MB V2

Come datasheet ho trovato solo questo ma non mi pare sia giusto, nel dubbio metto il link lo stesso: https://components101.com/sites/default/files/component_datasheet/MB102-Datasheet.pdf

Il codice non mi pare abbia problemi.
Da usb probabilmente arrivano gli ampere necessari (corrente) mentre quella power limita gli ampere

Capisco...esistono modulo di alimentazione di un formato simile al MB V2 che eroghi i necessari ampere per Arduino ?

Mi sembra molto strano ...
... quelli sono i classici moduli per alimentare tramite le piste da breadboard e almeno 500mA li forniscono tutti ... ho idea invece che il problema sia nei collegamenti o nei ponticelli.

@Turf: ma tu, hai la USB e ... cosa altro hai che colleghi a quel modulo? Perché "Arduino nano 33 iot" ha il suo ingresso VIN che, probabilmente, potresti utilizzare senza mettere null'altro in mezzo ... :roll_eyes:

Guglielmo

Allora, al momento, (solo per i test), al modulo di alimentazione nella sezione dei 5V ho solo il sensore BME/BMP 280.
Arduino ho provato ad alimentarlo sia con il 5V al pin VIN, sia con i 3V al pin del 3V ma la situazione non cambia, il led della scheda si accende ma dal cloud nella sezione Device la scheda risulta sempre offline.

Il modulo di alimentazione in seguito dovrà alimentare:

-----[5V]-----
BME/BMP 280
Grove - Gas Sensor V2
PMS-5003

-----[3V]-----
MiCS 6814
NRF24L01

... con che alimentatore? Che corrente è in grado di erogare? Perché ... non c'è motivo che non funzioni salvo che ... la corrente che l'alimentatore fornisce sia insufficiente ... :roll_eyes:

Guglielmo

Utilizzo quel modulo di alimentazione con una batteria a 9V e posso scegliere se utilizzare 5V o 3V nella board

Le batteria a 9V danno una corrente infima, NON vanno bene ... prenditi un vero alimetatore a 5V, va bene anche un carica batterie per telefono.

Guglielmo

Ah, non lo sapevo. Immaginavo che con una batteria da 9V bastasse anche perché la includono nel kit e quindi sono andato per logica…
Ora Arduino è collegato direttamente con il carica batterie della Samsung, risulta online e la Dashboard si aggiorna.
Nell'alimentatore c'è la dicitura Fast charger, potrebbe rovinare la scheda nel lungo periodo ?
I 5V li posso portare dal pin VIN alla riga + della board e così quindi alimentare i sensori che vanno a 5V oppure devo portare i 5V direttamente dall'alimentatore al positivo della board e poi collegare i sensori ?

Non dovrebbe; in condizioni normali dovrebbe erogare solo i 5V e non tensioni differenti.

I 5V dell'alimentatore li puoi portare al VIN della board ed alimenti la board ed anche ai vari sensori per alimentare i sensori. Ovviamente anche il GND deve essere in comune a tutti.

Guglielmo

Per GND in comune si intende che i sensori a 5V hanno un GND e quelli a 3V ne hanno un altro ?
Perdona l'ignoranza :sweat_smile:

NO, il GND DEVE essere in comune con tutto! Poi i vari VCC vanno alle varie rispettive cose.

Guglielmo

Ricevuto, grazie !