Pro Mini 3.3v does not receive messages
-
I have multiple 5V nodes running normally and I am trying to build a battery powered 3.3V node. I have assembled three 3.3V nodes (based on 'Easy/Newbie PCB') and all three of them have the same issue.
The sketch is the pulse energy meter sketch with sleep mode activated. Node id is hardcoded to 33. The node does not receive messages from the gateway. Gateway and the node are reasonably closer. I have tested the radio with a 5V node and it is working.
Can someone please help me to understand the issue. Thanks.
Node log:
0 MCO:BGN:INIT NODE,CP=RNNNA--,VER=2.1.1 4 TSM:INIT 4 TSF:WUR:MS=0 12 TSM:INIT:TSP OK 14 TSM:INIT:STATID=33 16 TSF:SID:OK,ID=33 18 TSM:FPAR 53 TSF:MSG:SEND,33-33-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 2062 !TSM:FPAR:NO REPLY 2064 TSM:FPAR 2101 TSF:MSG:SEND,33-33-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 4108 !TSM:FPAR:NO REPLY 4110 TSM:FPAR 4147 TSF:MSG:SEND,33-33-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 6154 !TSM:FPAR:NO REPLY 6156 TSM:FPAR 6193 TSF:MSG:SEND,33-33-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 8200 !TSM:FPAR:FAIL 8202 TSM:FAIL:CNT=1 8204 TSM:FAIL:PDT 18208 TSM:FAIL:RE-INIT 18210 TSM:INIT 18216 TSM:INIT:TSP OK 18221 TSM:INIT:STATID=33 18223 TSF:SID:OK,ID=33 18225 TSM:FPAR 18262 TSF:MSG:SEND,33-33-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 20271 !TSM:FPAR:NO REPLY 20273 TSM:FPAR 20310 TSF:MSG:SEND,33-33-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 20979 TSF:MSG:READ,1-1-33,s=255,c=3,t=8,pt=1,l=1,sg=0:1 20985 TSF:MSG:FPAR OK,ID=1,D=2 21254 TSF:MSG:READ,0-0-33,s=255,c=3,t=8,pt=1,l=1,sg=0:0 21260 TSF:MSG:FPAR OK,ID=0,D=1 22319 TSM:FPAR:OK 22321 TSM:ID 22321 TSM:ID:OK 22323 TSM:UPL 22331 TSF:MSG:SEND,33-33-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1 24340 TSM:UPL 24344 TSF:MSG:SEND,33-33-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1 24352 TSF:MSG:READ,0-0-33,s=255,c=3,t=25,pt=1,l=1,sg=0:1 24358 TSF:MSG:PONG RECV,HP=1 24363 TSM:UPL:OK 24365 TSM:READY:ID=33,PAR=0,DIS=1 24373 TSF:MSG:SEND,33-33-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100 26386 TSF:MSG:SEND,33-33-0-0,s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=OK:2.1.1 26400 TSF:MSG:SEND,33-33-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=OK:0 28430 TSF:MSG:SEND,33-33-0-0,s=255,c=3,t=11,pt=0,l=12,sg=0,ft=0,st=OK:Energy Meter 28442 TSF:MSG:SEND,33-33-0-0,s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=OK:1.0 28467 TSF:MSG:SEND,33-33-0-0,s=1,c=0,t=13,pt=0,l=0,sg=0,ft=0,st=OK: 28487 TSF:MSG:SEND,33-33-0-0,s=2,c=0,t=23,pt=0,l=0,sg=0,ft=0,st=OK: 28493 MCO:REG:REQ 28532 !TSF:MSG:SEND,33-33-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=NACK:2 30547 TSF:MSG:SEND,33-33-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=1,st=OK:2 32589 !TSF:MSG:SEND,33-33-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=NACK:2
GW log (rpi):
TSF:MSG:READ,33-33-255,s=255,c=3,t=7,pt=0,l=0,sg=0: TSF:MSG:BC TSF:MSG:FPAR REQ,ID=33 TSF:CKU:OK,FCTRL TSF:MSG:GWL OK !TSF:MSG:SEND,0-0-33-33,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=NACK:0 TSF:MSG:READ,33-33-255,s=255,c=3,t=7,pt=0,l=0,sg=0: TSF:MSG:BC TSF:MSG:FPAR REQ,ID=33 TSF:CKU:OK,FCTRL TSF:MSG:GWL OK !TSF:MSG:SEND,0-0-33-33,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=NACK:0 TSF:MSG:READ,33-33-255,s=255,c=3,t=7,pt=0,l=0,sg=0: TSF:MSG:BC TSF:MSG:FPAR REQ,ID=33 TSF:CKU:OK,FCTRL TSF:MSG:GWL OK !TSF:MSG:SEND,0-0-33-33,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=NACK:0 TSF:MSG:READ,33-33-255,s=255,c=3,t=7,pt=0,l=0,sg=0: TSF:MSG:BC TSF:MSG:FPAR REQ,ID=33 TSF:CKU:OK,FCTRL TSF:MSG:GWL OK !TSF:MSG:SEND,0-0-33-33,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=NACK:0 TSF:MSG:READ,33-33-255,s=255,c=3,t=7,pt=0,l=0,sg=0: TSF:MSG:BC TSF:MSG:FPAR REQ,ID=33 TSF:PNG:SEND,TO=0 TSF:CKU:OK TSF:MSG:GWL OK !TSF:MSG:SEND,0-0-33-33,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=NACK:0 TSF:MSG:READ,1-1-0,s=255,c=3,t=24,pt=1,l=1,sg=0:1 TSF:MSG:PINGED,ID=1,HP=1 TSF:MSG:SEND,0-0-1-1,s=255,c=3,t=25,pt=1,l=1,sg=0,ft=0,st=OK:1 TSF:MSG:READ,33-33-255,s=255,c=3,t=7,pt=0,l=0,sg=0: TSF:MSG:BC TSF:MSG:FPAR REQ,ID=33 TSF:CKU:OK,FCTRL TSF:MSG:GWL OK TSF:MSG:SEND,0-0-33-33,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=OK:0 TSF:MSG:READ,33-33-0,s=255,c=3,t=24,pt=1,l=1,sg=0:1 TSF:MSG:PINGED,ID=33,HP=1 !TSF:MSG:SEND,0-0-33-33,s=255,c=3,t=25,pt=1,l=1,sg=0,ft=0,st=NACK:1 TSF:MSG:READ,33-33-0,s=255,c=3,t=24,pt=1,l=1,sg=0:1 TSF:MSG:PINGED,ID=33,HP=1 TSF:MSG:SEND,0-0-33-33,s=255,c=3,t=25,pt=1,l=1,sg=0,ft=0,st=OK:1 TSF:MSG:READ,33-33-0,s=255,c=3,t=15,pt=6,l=2,sg=0:0100 !TSF:MSG:SEND,0-0-33-33,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=NACK:0100 TSF:MSG:READ,33-33-0,s=255,c=0,t=17,pt=0,l=5,sg=0:2.1.1 Sending message on topic: mysensors-out/33/255/0/0/17 TSF:MSG:READ,33-33-0,s=255,c=3,t=6,pt=1,l=1,sg=0:0 Sending message on topic: mysensors-out/33/255/3/0/6 Message arrived on topic: mysensors-in/33/255/3/0/6 !TSF:MSG:SEND,0-0-33-33,s=255,c=3,t=6,pt=0,l=1,sg=0,ft=0,st=NACK:M TSF:MSG:READ,33-33-0,s=255,c=3,t=11,pt=0,l=12,sg=0:Energy Meter Sending message on topic: mysensors-out/33/255/3/0/11 TSF:MSG:READ,33-33-0,s=255,c=3,t=12,pt=0,l=3,sg=0:1.0 Sending message on topic: mysensors-out/33/255/3/0/12 TSF:MSG:READ,33-33-0,s=1,c=0,t=13,pt=0,l=0,sg=0: Sending message on topic: mysensors-out/33/1/0/0/13 TSF:MSG:READ,33-33-0,s=2,c=0,t=23,pt=0,l=0,sg=0: Sending message on topic: mysensors-out/33/2/0/0/23 TSF:MSG:READ,33-33-0,s=255,c=3,t=26,pt=1,l=1,sg=0:2 !TSF:MSG:SEND,0-0-33-33,s=255,c=3,t=27,pt=1,l=1,sg=0,ft=0,st=NACK:1 TSF:MSG:READ,33-33-0,s=255,c=3,t=26,pt=1,l=1,sg=0:2 !TSF:MSG:SEND,0-0-33-33,s=255,c=3,t=27,pt=1,l=1,sg=0,ft=0,st=NACK:1 TSF:MSG:READ,33-33-0,s=255,c=3,t=26,pt=1,l=1,sg=0:2 !TSF:MSG:SEND,0-0-33-33,s=255,c=3,t=27,pt=1,l=1,sg=0,ft=0,st=NACK:1
-
@erangaj great that you have identified that it is a power supply issue. Have you looked at the power issue flowchart at https://forum.mysensors.org/topic/666/debug-faq-and-how-ask-for-help ?
-
Finally managed to fix it. It was an issue with the battery booster. In the PCB battery booster is connected to the MCU only and the radio was powered directly. Fixed by removing the booster. Now both mcu and radio 3.3v pins are connected together. Battery booster can be connected externally.
-
@erangaj - good you fixed it.
The PCB is made that way for a reason though. The booster is very noicy which will disturb the radio. Therefor only the MCU is connected to the booster. The radio can also handle down to 1.9V so the booster isnt needed. If you are using batteries the node will die when the voltage goes below 2.8 since this is the lower point of the atmega with standard bod. If you are using 3.3v arduino and powering it with a 3.3v power source (not batteries) I would jump the REG and also the voltgage regulator Vin and VOut and just skip the booster.
-
I really don't know how it happens. Here are some pictures of the node. (I have de-soldered battery sensor voltage divider while testing.)
When the booster is connected to power MCU only:
Vin of the booster was about 2.9V and Vo was 3.3V as expected.
0 MCO:BGN:INIT NODE,CP=RNNNA--,VER=2.1.1 4 TSM:INIT 4 TSF:WUR:MS=0 12 TSM:INIT:TSP OK 14 TSM:INIT:STATID=32 16 TSF:SID:OK,ID=32 18 TSM:FPAR 53 TSF:MSG:SEND,32-32-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 86 TSF:MSG:READ,1-1-32,s=255,c=3,t=8,pt=1,l=1,sg=0:1 92 TSF:MSG:FPAR OK,ID=1,D=2 2062 TSM:FPAR:OK 2062 TSM:ID 2064 TSM:ID:OK 2066 TSM:UPL 2103 !TSF:MSG:SEND,32-32-1-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=NACK:1 2119 TSF:MSG:READ,0-1-32,s=255,c=3,t=25,pt=1,l=1,sg=0:2 2125 TSF:MSG:PONG RECV,HP=2 2129 TSM:UPL:OK 2131 TSM:READY:ID=32,PAR=1,DIS=2 2170 !TSF:MSG:SEND,32-32-1-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=NACK:0100 2179 TSF:MSG:READ,0-1-32,s=255,c=3,t=25,pt=1,l=1,sg=0:2 2185 !TSF:MSG:PONG RECV,INACTIVE 2189 TSF:MSG:READ,0-1-32,s=255,c=3,t=15,pt=6,l=2,sg=0:0100 2234 !TSF:MSG:SEND,32-32-1-0,s=255,c=0,t=17,pt=0,l=5,sg=0,ft=1,st=NACK:2.1.1 2277 !TSF:MSG:SEND,32-32-1-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=2,st=NACK:1 2367 TSF:MSG:READ,0-1-32,s=255,c=3,t=6,pt=0,l=1,sg=0:M 2383 TSF:MSG:SEND,32-32-1-0,s=255,c=3,t=11,pt=0,l=12,sg=0,ft=3,st=OK:Energy Meter 2430 !TSF:MSG:SEND,32-32-1-0,s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=NACK:1.0 2473 !TSF:MSG:SEND,32-32-1-0,s=1,c=0,t=13,pt=0,l=0,sg=0,ft=1,st=NACK: 2514 !TSF:MSG:SEND,32-32-1-0,s=2,c=0,t=23,pt=0,l=0,sg=0,ft=2,st=NACK: 2523 MCO:REG:REQ 2537 TSF:MSG:SEND,32-32-1-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=3,st=OK:2 2545 TSF:MSG:READ,0-0-32,s=255,c=3,t=6,pt=0,l=1,sg=0:M 2551 TSF:MSG:READ,0-1-32,s=255,c=3,t=6,pt=0,l=1,sg=0:M 2557 TSF:MSG:READ,0-1-32,s=255,c=3,t=6,pt=0,l=1,sg=0:M 4546 TSF:MSG:SEND,32-32-1-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=OK:2 6590 !TSF:MSG:SEND,32-32-1-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=NACK:2 8634 !TSF:MSG:SEND,32-32-1-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=1,st=NACK:2 10643 MCO:BGN:STP New pulse count:1 10645 MCO:BGN:INIT OK,TSP=1 Requesting last pulse count from gw 10684 !TSF:MSG:SEND,32-32-1-0,s=2,c=2,t=24,pt=0,l=0,sg=0,ft=2,st=NACK: 15665 TSF:MSG:READ,1-1-255,s=255,c=3,t=7,pt=0,l=0,sg=0: 15671 TSF:MSG:BC 17661 TSF:MSG:READ,1-1-255,s=255,c=3,t=7,pt=0,l=0,sg=0: 17668 TSF:MSG:BC 19701 TSF:MSG:READ,1-1-255,s=255,c=3,t=7,pt=0,l=0,sg=0: 19707 TSF:MSG:BC 21727 TSF:MSG:READ,1-1-255,s=255,c=3,t=7,pt=0,l=0,sg=0: 21733 TSF:MSG:BC
When the booster is powering the entire board:
0 MCO:BGN:INIT NODE,CP=RNNNA--,VER=2.1.1 4 TSM:INIT 4 TSF:WUR:MS=0 12 TSM:INIT:TSP OK 14 TSM:INIT:STATID=32 16 TSF:SID:OK,ID=32 18 TSM:FPAR 53 TSF:MSG:SEND,32-32-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 2062 !TSM:FPAR:NO REPLY 2064 TSM:FPAR 2101 TSF:MSG:SEND,32-32-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 2961 TSF:MSG:READ,0-0-32,s=255,c=3,t=8,pt=1,l=1,sg=0:0 2967 TSF:MSG:FPAR OK,ID=0,D=1 3811 TSF:MSG:READ,1-1-32,s=255,c=3,t=8,pt=1,l=1,sg=0:1 4108 TSM:FPAR:OK 4108 TSM:ID 4110 TSM:ID:OK 4112 TSM:UPL 4122 TSF:MSG:SEND,32-32-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1 4130 TSF:MSG:READ,0-0-32,s=255,c=3,t=25,pt=1,l=1,sg=0:1 4136 TSF:MSG:PONG RECV,HP=1 4139 TSM:UPL:OK 4141 TSM:READY:ID=32,PAR=0,DIS=1 4179 !TSF:MSG:SEND,32-32-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=NACK:0100 4188 TSF:MSG:READ,0-0-32,s=255,c=3,t=15,pt=6,l=2,sg=0:0100 4200 TSF:MSG:SEND,32-32-0-0,s=255,c=0,t=17,pt=0,l=5,sg=0,ft=1,st=OK:2.1.1 4210 TSF:MSG:SEND,32-32-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=OK:0 4259 TSF:MSG:READ,0-0-32,s=255,c=3,t=6,pt=0,l=1,sg=0:M 4270 TSF:MSG:SEND,32-32-0-0,s=255,c=3,t=11,pt=0,l=12,sg=0,ft=0,st=OK:Energy Meter 4284 TSF:MSG:SEND,32-32-0-0,s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=OK:1.0 4294 TSF:MSG:SEND,32-32-0-0,s=1,c=0,t=13,pt=0,l=0,sg=0,ft=0,st=OK: 4306 TSF:MSG:SEND,32-32-0-0,s=2,c=0,t=23,pt=0,l=0,sg=0,ft=0,st=OK: 4313 MCO:REG:REQ 4319 TSF:MSG:SEND,32-32-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=OK:2 4327 TSF:MSG:READ,0-0-32,s=255,c=3,t=27,pt=1,l=1,sg=0:1 4333 MCO:PIM:NODE REG=1 4335 MCO:BGN:STP New pulse count:1 4337 MCO:BGN:INIT OK,TSP=1 Requesting last pulse count from gw 4347 TSF:MSG:SEND,32-32-0-0,s=2,c=2,t=24,pt=0,l=0,sg=0,ft=0,st=OK: 4397 TSF:MSG:READ,0-0-32,s=2,c=1,t=24,pt=0,l=1,sg=0:0 Received last pulse count from gw:0 4403 MCO:SLP:MS=20000,SMS=0,I1=255,M1=255,I2=255,M2=255 4411 MCO:SLP:TPD
The sketch (modified for home-assistant):
// Enable debug prints #define MY_DEBUG #define MY_NODE_ID 32 //#define MY_SIGNING_SOFT //#define MY_SIGNING_SOFT_RANDOMSEED_PIN 7 //#define MY_SIGNING_REQUEST_SIGNATURES // Enable and select radio type attached #define MY_RADIO_NRF24 //#define MY_RADIO_RFM69 #include <MySensors.h> #define DIGITAL_INPUT_SENSOR 3 // The digital input you attached your light sensor. (Only 2 and 3 generates interrupt!) #define RESET_PIN 7 #define PULSE_FACTOR 1000 // Nummber of blinks per KWH of your meeter #define MAX_WATT 10000 // Max watt value to report. This filetrs outliers. #define CHILD_ID_KWH 1 // Id of the sensor child #define CHILD_ID_PC 2 // Id of the sensor child unsigned long SEND_FREQUENCY = 20000; // Minimum time between send (in milliseconds). We don't wnat to spam the gateway. double ppwh = ((double)PULSE_FACTOR)/1000; // Pulses per watt hour bool pcReceived = false; volatile unsigned long pulseCount = 0; unsigned long oldPulseCount = 0; double oldKwh; MyMessage kwhMsg(CHILD_ID_KWH,V_KWH); MyMessage pcMsg(CHILD_ID_PC,V_VAR1); bool kwhInitialValueSent = true; bool pcInitialValueSent = true; void setup() { // Fetch last known pulse count value from gw // request(CHILD_ID_PC, V_VAR1); // Use the internal pullup to be able to hook up this sketch directly to an energy meter with S0 output // If no pullup is used, the reported usage will be too high because of the floating pin pinMode(DIGITAL_INPUT_SENSOR,INPUT_PULLUP); pinMode(RESET_PIN, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(DIGITAL_INPUT_SENSOR), onPulse, RISING); } void presentation() { // Send the sketch version information to the gateway and Controller sendSketchInfo("Energy Meter", "1.0"); // Register this device as power sensor present(CHILD_ID_KWH, S_POWER); present(CHILD_ID_PC, S_CUSTOM); } void loop() { if (digitalRead(RESET_PIN) == LOW) { kwhInitialValueSent = false; pcInitialValueSent = false; } if (!kwhInitialValueSent) { send(kwhMsg.set((double)0, 4)); // Send kwh value to gw request(CHILD_ID_KWH, V_KWH); wait(60000, C_SET, V_KWH); } if (!pcInitialValueSent) { send(pcMsg.set(0)); request(CHILD_ID_PC, V_VAR1); wait(60000, C_SET, V_VAR1); } if (pcReceived) { // Pulse cout has changed if (pulseCount != oldPulseCount) { Serial.print("Sending pulse count to gw:"); Serial.println(pulseCount); send(pcMsg.set(pulseCount)); // Send pulse count value to gw double kwh = ((double)pulseCount/((double)PULSE_FACTOR)); oldPulseCount = pulseCount; if (kwh != oldKwh) { send(kwhMsg.set(kwh, 4)); // Send kwh value to gw oldKwh = kwh; } } } else { // No count received. Try requesting it again Serial.println("Requesting last pulse count from gw"); request(CHILD_ID_PC, V_VAR1); wait(60000, C_SET, V_VAR1); } sleep(SEND_FREQUENCY); } void receive(const MyMessage &message) { if (message.type==V_VAR1) { pulseCount = oldPulseCount = message.getLong(); Serial.print("Received last pulse count from gw:"); Serial.println(pulseCount); pcReceived = true; pcInitialValueSent = true; } if (message.type==V_KWH) { kwhInitialValueSent = true; } } void onPulse() { pulseCount++; Serial.print("New pulse count:"); Serial.println(pulseCount); }
I have tried different radios and boosters without success.
-
My issue appears to be same as https://forum.mysensors.org/topic/4895/strange-behaviour-with-dc-3-3v-step-up-booster/6
Im going to try CR123 batteries instead.
-
@erangaj - I cant see on the pictures which mode you selected on the PCB. Did you solder BAT or REG ?
In your case, using batteries and a booster you should solder a jumper over BAT. Just checking.Also the voltage divider for measuring the battery looks really strange, but that should not matter.
Did you read the instructions for the PCB?
-
@sundberg84 said in Pro Mini 3.3v does not receive messages:
BAT
Thank you for asking. BAT is soldered.
-
@erangaj - good!
I hope you find the cause of this - let me know if I can do anything else.