PROBLEMA Problema di configurazione Arduino Uno r4 WIFI e sensore HDC1080

Pubblicità

AndyV

Nuovo Utente
Messaggi
20
Reazioni
1
Punteggio
26
Ciao, ho comprato da poco un Arduino uno r4 WIFI cinese (ma il problema non é qui) ed un sensore HDC1080 per un progetto.

Saldato il sensore, ho collegato il sensore ad A4 SDA, A5 SCL, 3.3V e GND tramite fili ed ho eseguito lo script che scriveró qui sotto, ma su monitor seriale, leggo solo temp 125*C e umiditá 100%.

Pensando che fosse un problema di saldature ho verificato con tester il tutto, ma era tutto corretto.

Allora ho provato a rifare il collegamento e rilanciare lo script su un Arduino uno r3, e magicamente, temperatura e umiditá vengono letti correttamente.

A questo punto, pensando fosse un problema della r4 wifi cinese, ho acquistato una scheda originale, ma si ripresenta lo stesso problema che su quella cinese.

Ho giá verificato la usbc e cambiato diversi cavi (usbc-usbc, usbc-usb), ma non ha risolto, ma in fondo il monitor seriale scriveva sempre, ma ho voluto provare ugualmente...

Inoltre ho verificato e quando colego l'hdc1080 alla r4wifi non trovo nessun dispositifo facendo una scanzione I2C, mentre collegandolo alla r3 riesco a trovarlo correttamente all'indirizzo 0x40.

Chiedo aiuto, perché sto impazzendo...

Incollo0 qui sotto il codice utilizzato per le prove.

Grazie in anticipo e scusate, ma non trovavo la sezione in cui inserire la domanda...

AndyV




Codice:
#include <Wire.h>

#include "ClosedCube_HDC1080.h"



ClosedCube_HDC1080 hdc1080;



void setup() {

  Serial.begin(9600);

  Wire.begin();



  // Inizializza il sensore HDC1080

  hdc1080.begin(0x40);

 

  Serial.println("HDC1080 inizializzato");

}



void loop() {

  // Legge la temperatura in gradi Celsius

  float temperature = hdc1080.readTemperature();

  // Legge l'umidità relativa in percentuale

  float humidity = hdc1080.readHumidity();



  // Stampa i valori sul monitor seriale

  Serial.print("Temperatura: ");

  Serial.print(temperature);

  Serial.println(" °C");



  Serial.print("Umidità: ");

  Serial.print(humidity);

  Serial.println(" %");



  Serial.println("-----------------------");



  // Attende 5 secondi prima di ripetere la lettura

  delay(5000);

}
 
Ultima modifica:
Ciao. Vedi se c'è un aggiornamento firmware:
Insomma aggiorna l'aggiornabile prima di procedere
Ciao, allora le schede le ho entrambe già aggiornate all’ultimo firmware.

@speedyant
Per il porting ammetto che non ne ero a conoscenza, e dovendomi basare su questo GitHub qui, la Closedcube_HDC1080 non è elencata tra quelle che sono state testate/porting:

GITUB PORTING

Vi vengono altre idee che non siano di cambiare sensore e utilizzare un BME280?
 
Ciao, allora le schede le ho entrambe già aggiornate all’ultimo firmware.

@speedyant
Per il porting ammetto che non ne ero a conoscenza, e dovendomi basare su questo GitHub qui, la Closedcube_HDC1080 non è elencata tra quelle che sono state testate/porting:

GITUB PORTING

Vi vengono altre idee che non siano di cambiare sensore e utilizzare un BME280?
Se non c'è il porting delle librerie a meno che non ti cimenti tu la veggo buia come dice Pieraccioni
 
Ciao, ammazzavo il tempo e ho letto velocemente la libreria che hai linkato. Non sembra particolarmente difficile la modifica, ovviamente ci sono alcuni step da fare e debugging.
P.s. non seguo arduino da un bel po'

Hai controllato l’endianess dei due arduino? Il protocollo i2c invia sempre i byte più importanti prima, ma se i processori lavorano diversamente le chiamate ai metodi della libreria possono differire e da qui il problema

Inoltre il delay della libreria potrebbe interferire. Prova a debuggare il codice man mano, usa un vscode con le estensioni per accedere ai byte
 
Prima di mettersi a lavorare su certe schede andrebbe studiato che una mcu 8bit avr e' altra cosa da una 32 bit arm cortex M. Soino controller i2c del tutto diversi.

Se pensi di riuscire in un porting (nulla di difficile ma senza le basi lo puo essere), direi poi di iniziare da un semplice loop in lettura, oscilloscopio all mano, verificare che ci sia clock e dati, clock a frequenza giusta. Se non ci sono, allora qualche problema di configurazione dei pin, o del clock.
 
Ultima modifica:
Si certo immagino non sia estremamente semplice. Sarebbe comunque interessante fare un tentativo
 
MCU e' un cortex M4 renesas, nel caso puoi anche usare qualsiasi OS che supporta quel cortex, ad esempio ottimo zephir,

screenshot_202501221737555958.webp

con gia tutti i driver i2c. Non vedo il driver del sensore, ma per me sarebbe una ghiotta occasione per aggiungerlo a zephir.
Alla fine per inizializzare il sensore dovrai dare uan semplice sequenza di i2c_write, e per leggere. i2c_read, come indicarto nel datasheet
 
Ciao, in ordine:

Hai controllato l’endianess dei due arduino
Si, ho verificato ed entrambi sono little-endian.

Ho provato a modificare .cpp e .h della libreria, e ammetto di esser già abbastanza soddisfatto di essere riuscito ad arrivare correttamente a compiling al termine, ma ancora non riesco a vedere/comunicare con il sensore…

MCU e' un cortex M4 renesas, nel caso puoi anche usare qualsiasi OS che supporta quel cortex, ad esempio ottimo zephir
Zephir mi è nuovo del tutto, ci butto un occhio e vedo che riesco a fare…
 
Pubblicità
Pubblicità
Indietro
Top