Uso del sensore SDS011 con display OLED 128x32

Buongiorno a tutti, forse mi sono imbattuto in un problema che non si può risolvere ma mi rivolgo a voi per averne la certezza.
Ho acquistato da qualche settimana un rilevatore di PM2.5/PM10 SDS011. Usandolo da solo funziona benissimo. Ho provato a collegarci un display OLED 128x32 (che usa i pin A4 e A5) e il codice si blocca prima del "void setup".
Singolarmente funzionano entrambi correttamente ma insieme no. Il tutto con un Arduino UNO R3. L'IDE è la versione 1.8.9

Vi posto solo le prime righe del codice per non annoiarvi perché oltre non va.

#include "SdsDustSensor.h"
#include "Adafruit_SSD1306.h"

#define OLED_RESET -1
Adafruit_SSD1306 display(OLED_RESET);


int rxPin = 0;
int txPin = 1;
SdsDustSensor sds(rxPin, txPin);

void setup() {
  Serial.begin(9600);
  Serial.print("Void Setup!");

Grazie a chiunque mi risponda.
Alessandro.

Perché, con tanti pin utilizzabili con la SoftwareSerial, andarsi a complicare la vita ed eliminarsi qualsiasi possibilità di debug impegnado i pin 0 ed 1 che sono usati dalla Serial e dal convertitore seriale <-> USB di Arduino ? ? ? ::slight_smile:

Guglielmo

Grazie del suggerimento Guglielmo, ho provato con il 6/7 e anche con 8/9 ma si blocca lo stesso.
Qualche altra idea?
Grazie.
Alessandro.

Che vuol dire "si blocca" ? ? ? :o :o :o

Arduino è un microcontrollore (senza un sistema operativo) e NON può bloccarsi ...
... al limite entra in una sezione di codice che continua a ripetere e non ne esce più, o salta in parti di pogramma non previste, ma qualche cosa fa sempre. Quindi ... specifichiamo meglio cosa esattamente accade ...

Utilizza la seriale, che ora hai liberato e riempi il programma di Serial.println() di diagnostica facendoti stampare sia dove stai passando sia i valori che leggi/non leggi, così da individuare dove è il problema ...

Guglielmo

A me risulta che, dopo le dichiarazioni, la prima cosa che viene eseguita sia il "void setup" e li ho messo subito un Serial.print come si può vedere dal primo post, però non viene visualizzato il che mi dice che è, come dici tu, entrato in loop prima.

Se non fa neanche quel Serial.print() ho idea che NON parta proprio ...
... quanto assorbe il sensore PM2.5/PM10 SDS011 (... che non conosco)? Come lo stai alimentando?

Non vorrei che la somma del sensore e dell'OLED faccia più di quanto Arduino possa dare e che quindi vada in protezione e si blocchi ...

Altri motivi per cui non entri nemmeno nel Setup() non ne vedo, savo che il costruttore della classe SdsDustSensor non si pianti da qualche parte per qualche motivo (è l'unica cosa chiamata prima del Setup()) ... ::slight_smile:

Guglielmo

Alex73PN:
A me risulta che, dopo le dichiarazioni, la prima cosa che viene eseguita sia il "void setup" e li ho messo subito un Serial.print ...

... che però, se usi i pin 0 ed 1 per il modulo, NON puoi vedere visto che quelli sono i pin della Seriale ::slight_smile:

Confermi di aver spostato il modulo su altri pin e di averlo inizializzato in modo da usare tali altri pin ?

Guglielmo

Si, confermo. Adesso è impostato sul 8 e 9.
Il datasheet dice che ha un'assorbimento di picco di 80mA.
Pensi che l'arduino non ce la faccia? Mi consigli di dargli una alimentazione indipendente e usare dei fotoaccoppiatori per i 2 pin? 0.35W non mi sembra poi così tanto.
Ho provato anche a scollegare la sua ventolina per il ricircolo dell'aria ma non va comunque :frowning: .

No, no, fino a qualche centinanio di mA non c'è problema ...

Se ora hai collegato l'oggetto ai pin 8 e 9 e fatta l'istanza della classe con tali pin, non c'è motivo per cui non vada.

Hai un link alla libreria che stai usando per questo sensore ?

Guglielmo

Si, li ho impostati sul 8 e 9 e provato singolarmente e funziona (ma insieme no).
Il link della libreria è il seguente: SdsDustSensor

Alessandro