Hi @scalz , thanks for the rapid reaction. Sure. Let's try this. Here is my code: /* --- Bathroom Environment Data Logging Node --- */ // +-+-+-+-+-+-+-+-+ DECLARATION +-+-+-+-+-+-+-+-+ // --- MYSENSORS DEFINITIONS --- // sketch #define SKETCH_NAME "EnvBad" #define SKETCH_VERSION "1.1" // debug prints #define MY_BAUD_RATE (115200) #define MY_DEBUG #define MY_DEBUG_VERBOSE_RF24 // soft SPI settings #define MY_SOFTSPI #define MY_SOFT_SPI_SCK_PIN 12 // (usually at pin 13) #define MY_SOFT_SPI_MISO_PIN 13 //(usually at pin 12) #define MY_SOFT_SPI_MOSI_PIN 11 // NRF24 #define MY_RADIO_NRF24 #define MY_RF24_PA_LEVEL (RF24_PA_HIGH) #define MY_RF24_CE_PIN 9 #define MY_RF24_CS_PIN 10 #define MY_RF24_IRQ_PIN 2 // need to be enabled using the solder jumper at the top side of the PCB // LEDs #define MY_DEFAULT_TX_LED_PIN 6 #define MY_DEFAULT_RX_LED_PIN 5 #define MY_DEFAULT_ERR_LED_PIN 7 #define MY_WITH_LEDS_BLINKING_INVERSE // node ID #define MY_NODE_ID (100) // child IDs #define CHILD_ID_TEMPERATURE (0) #define CHILD_ID_HUMIDITY (1) #define CHILD_ID_LIGHT (2) // --- CONSTANTS --- // pin definitions const uint8_t phResistorEnPin = 4; const uint8_t PHOTO_RESISTOR_PIN = A0 ; // Timing constants const uint32_t ENV_VARS_CHECK_PERIOD_MS = 60UL*1000UL; const uint32_t LIGHT_CHECK_PERIOD_MS = 1UL*1000UL; // --- LIBRARIES --- #include <MySensors.h> #include <SHT3x.h> // temp and humidity sensor // --- Objects SHT3x Sensor; // ------------------------------------------------------------------------ // S E T U P // ------------------------------------------------------------------------ void setup() { Serial.println(F("-- " SKETCH_NAME " " SKETCH_VERSION)); Sensor.Begin(); } // ------------------------------------------------------------------------ // L O O P // ------------------------------------------------------------------------ void loop() { float tSHT; float hSHT; static uint8_t lightLev = 0, lightLevPrev = 200; static uint32_t t1 = millis(), t2 = 0; readPhRest(&lightLev); if ( abs(lightLevPrev - lightLev) >= 2 ) { lightLevPrev = lightLev; send( MyMessage(CHILD_ID_LIGHT, V_LIGHT_LEVEL).set(lightLev) ); } if ( t2 - t1 >= ENV_VARS_CHECK_PERIOD_MS ) { readSHT3x(&tSHT, &hSHT); send( MyMessage(CHILD_ID_TEMPERATURE, V_TEMP).set(double(tSHT), 2 /*#decimals*/) ); send( MyMessage(CHILD_ID_HUMIDITY, V_HUM).set(double(hSHT), 2 /*#decimals*/) ); t1 = t2; } wait(LIGHT_CHECK_PERIOD_MS); t2 = millis(); } // ------------------------------------------------------------------------ // SUB - ROUTINES // ------------------------------------------------------------------------ // ----------------------- presentation -------------------------- void presentation() { Serial.println(F("-- Init MySensors")); sendSketchInfo(SKETCH_NAME, SKETCH_VERSION); Serial.print(F("NodeID: ")); Serial.println(getNodeId()); present(CHILD_ID_TEMPERATURE, S_TEMP, "Bad_Temp"); present(CHILD_ID_HUMIDITY, S_HUM, "Bad_LuFeu"); present(CHILD_ID_LIGHT, S_LIGHT_LEVEL, "Bad_Hell"); } // ----------------------- readSHT3x -------------------------- void readSHT3x(float *_tSHT, float *_hSHT){ Sensor.UpdateData(); *_tSHT = Sensor.GetTemperature(); *_hSHT = Sensor.GetRelHumidity(); Serial.print("Temperature: "); Serial.print(*_tSHT); Serial.write("\xC2\xB0"); //The Degree symbol Serial.println("C"); Serial.print("Humidity: "); Serial.print(*_hSHT); Serial.println("%"); } // ----------------------- readPhRest -------------------------- void readPhRest(uint8_t *_lLevel) { pinMode(phResistorEnPin,OUTPUT); digitalWrite(phResistorEnPin,LOW); *_lLevel = 100 - (uint8_t) ( ( (float)analogRead(PHOTO_RESISTOR_PIN) /10.24 ) + 0.5 ) ; pinMode(phResistorEnPin,INPUT); Serial.print ("PhotoResistor: "); Serial.print (*_lLevel); Serial.println(); } and here my debug print: __ __ ____ | \/ |_ _/ ___| ___ _ __ ___ ___ _ __ ___ | |\/| | | | \___ \ / _ \ `_ \/ __|/ _ \| `__/ __| | | | | |_| |___| | __/ | | \__ \ _ | | \__ \ |_| |_|\__, |____/ \___|_| |_|___/\___/|_| |___/ |___/ 2.3.0 16 MCO:BGN:INIT NODE,CP=RNNNA---,VER=2.3.0 26 TSM:INIT 28 TSF:WUR:MS=0 30 RF24:INIT 30 RF24:INIT:PIN,CE=9,CS=10 34 RF24:WBR:REG=0,VAL=14 43 RF24:WBR:REG=3,VAL=3 45 RF24:WBR:REG=4,VAL=95 47 RF24:WBR:REG=5,VAL=76 49 RF24:WBR:REG=6,VAL=37 53 RF24:WBR:REG=16,VAL=115 55 RF24:WBR:REG=29,VAL=4 57 RF24:RBR:REG=6,VAL=0 61 !RF24:INIT:SANCHK FAIL 63 !TSM:INIT:TSP FAIL 65 TSM:FAIL:CNT=1 67 TSM:FAIL:DIS 69 TSF:TDI:TSL 71 RF24:SLP 71 RF24:WBR:REG=0,VAL=12 10074 TSM:FAIL:RE-INIT 10076 TSM:INIT 10078 RF24:INIT 10080 RF24:INIT:PIN,CE=9,CS=10 10082 RF24:WBR:REG=0,VAL=14 10090 RF24:WBR:REG=3,VAL=3 10092 RF24:WBR:REG=4,VAL=95 10096 RF24:WBR:REG=5,VAL=76 10098 RF24:WBR:REG=6,VAL=37 10102 RF24:WBR:REG=16,VAL=115 10104 RF24:WBR:REG=29,VAL=4 10108 RF24:RBR:REG=6,VAL=0 10110 !RF24:INIT:SANCHK FAIL 10115 !TSM:INIT:TSP FAIL 10117 TSM:FAIL:CNT=2 10119 TSM:FAIL:DIS 10121 TSF:TDI:TSL 10123 RF24:SLP 10125 RF24:WBR:REG=0,VAL=12 Moreover, I tried to re-programm an otherwise well-performing node (one with a DIP NRF24) by adding these lines to the program: #define MY_SOFTSPI #define MY_SOFT_SPI_SCK_PIN 13 #define MY_SOFT_SPI_MISO_PIN 12 #define MY_SOFT_SPI_MOSI_PIN 11 ... and i got identical errors. So it really might be a limit of the softSPI to not use the hardware SPI pins. And considering the hint with the manual rewiring: Well, yes, I would consider this for one board but I want to deploy between 15 and 20 of those boards in our flat for varios types of sensors. I guess if software can't fix it I would bite the bullet an order a new PCB pile. Regards....