# ๐ฌ Easy/Newbie PCB for MySensors

• Hello

I think there is a mistake in your code (on github) to mesure battery.
The array have 4 values, but you divide by 3. So you get to high result.
https://github.com/sundberg84/HomeAutomation/blob/master/BatteryMeasurer/BatteryMeasurer.ino
On line 77

Everything else is ok in my case the board works well with 2 battery AA, and 47uF cap (not with 4.7uF) .

• Nice catch @barrydou

The bat array is declared to hold 3 elements

``````int batArray[3];
``````

but then 4 values are fetched

``````batteryPcnt = (batArray[0] + batArray[1] + batArray[2] + batArray[3]);
``````

batArray[3] is outside of the array, so the ram here could hold any value.

The code should probably be changed to this

``````batteryPcnt = (batArray[0] + batArray[1] + batArray[2]);
``````

• @mfalkvidd : I think you have to change the condition in if too :

``````if (batLoop > 1) {
``````

With that, batLoop = 2 when entering in the if (so the 3 values of the array are filled : 0, 1, 2), calculating the average and reseting the batLoop to 0.
If not modify, the array will be set with batArray[3] just before entering the

``````if (batLoop > 2) {
``````

Other way is to set the batArray size to 4 values, and divide by 4 (I'm actually trying that).

• @barrydou @mfalkvidd - thanks.
Wouldnt it be easiest to just "+ batArray[3]" so it is

``````batteryPcnt = (batArray[0] + batArray[1] + batArray[2]
``````

the declaration = 3 elements
batterypct = 3 elements
batloop > 2 should be correct (0,1 and 2)

I dont think the code has made any faulty readings since the declaration is only for 3 elements, making batArray[3] never used? (Or always been 0). The batteryPcnt is then divived by 3.

• @sundberg84 batloop > 2 is incorrect, since that means batloop==3 and the code above has just written outside the array, corrupting whatever happened to be there.

• We must be ordering EasyPCB alof from PCBway since they used it as an example board for this youtuber:

PCBWay Circuit Boards - 2 Minute Review๐ฆ๐ ๐ – 02:57
— MKme Lab

• @sundberg84 haha gorgeous, I think they only sent open hardware boards, and ran some batches from boards available on openhardware, as except the perfboards they send as free gifts the other real PCBs are MySWeMosIRShield by @emc2 and the RollerShutterNode by @Scalz

• Looks nice in red

• hello, i have a stupid question... on the 3 rows below VCC and GD on your prototyping area; are the rows connected horizontally like a breadboard? thanks

• @pierre1410 - no stupid questions, simple answer though, no

• Hello Sundberg84 et al,
I purchased Easy Newbie PCB (Rev 10) with the hope of jumping into the IoT rave... I tried to create the Gateway - and it works perfectly. I also found and created an advanced Water Sprinkler MyS project by Pete and Co!... that also worked perfectly.

However, I cant seem to get simpler beginner sketches to work with EasyNewbie. I have soldered the need components (the regulated version). I plan to connect to a 4 relay module, but for now, I am simulating the relay with a simple LED attached to D2. I have uploaded the following sketch which was originally written for version 1.0 MySensors - but have been corrected using guidelines I found for converting 1.0 - 2.0 version. but still no cheese - the controller (Domoticz) displays the Node, but not the complete child nodes, - the LED connected to pin D2 (or D3, D5..) on the Easy Newbie doesn't light up even when I toggle the switches and devices on controller. Don't know what I might be doing wrong, please help.

``````// Example sketch showing how to control physical relays.
// This example will remember relay state even after power failure.

// Enable debug prints
#define MY_DEBUG

// Enable and select radio type attached

#define MY_NODE_ID 4  // Set this to fix your Radio ID or use AUTO or 1
#define MY_REGISTRATION_FEATURE // Forece registration
#define MY_REGISTRATION_RETRIES 5

#include <Wire.h>
#include <TimeLib.h>
#include <SPI.h>
#include <MySensors.h>
#include <LCD.h>
#include <LiquidCrystal.h>
#include <LiquidCrystal_I2C.h>

// For Debug
#ifdef DEBUG_ON
#define DEBUG_PRINT(x)   Serial.print(x)
#define DEBUG_PRINTLN(x) Serial.println(x)
#else
#define DEBUG_PRINT(x)
#define DEBUG_PRINTLN(x)
#define SERIAL_START(x)
#endif

//#define RELAY_1  2  // Arduino Digital I/O pin number for first relay (second on pin+1 etc)
#define RELAY_PIN 3
#define NUMBER_OF_RELAYS 4 // Total number of attached relays
#define RELAY_ON 0  // GPIO value to write to turn on attached relay
#define RELAY_OFF 1 // GPIO value to write to turn off attached relay
#define SKETCH_NAME "Base Relay Node"
#define SKETCH_VERSION "0.1.2"
#define CHILD_ID 0

MyMessage msg(1,V_LIGHT);

//void before()
void setup()
{

for (int sensor=1, pin=RELAY_PIN; sensor<=NUMBER_OF_RELAYS; sensor++, pin++) {
// Then set relay pins in output mode
pinMode(pin, OUTPUT);
// Set relay to last known state (using eeprom storage)
}
}

void presentation() {
sendSketchInfo(SKETCH_NAME, SKETCH_VERSION);

// Fetch relay status
for (int sensor=1, pin=RELAY_PIN; sensor<=NUMBER_OF_RELAYS; sensor++, pin++) {
// Register all sensors to gw (they will be created as child devices)
//    present(sensor, S_BINARY);
present(sensor, S_LIGHT);

// Then set relay pins in output mode
pinMode(pin, OUTPUT);
// Set relay to last known state (using eeprom storage)
digitalWrite(pin, savedState?RELAY_ON:RELAY_OFF);
send(msg.set(savedState? 1 : 0));
}
DEBUG_PRINTLN(F("Sensor Presentation Complete"));
}
void loop()
{
// Alway process incoming messages whenever possible
// Sleep until interrupt comes in on motion sensor. Send update every two minute.
//  sleep(digitalPinToInterrupt(DIGITAL_INPUT_SENSOR), CHANGE, SLEEP_TIME);

//      update Relays;
for (int sensor=1, pin=RELAY_PIN; sensor<=NUMBER_OF_RELAYS; sensor++, pin++) {
// Register all sensors to gw (they will be created as child devices)
//    present(sensor, S_BINARY);
send(msg.set(sensor).set(false), false);
wait(50);

}
}
void incomingMessage(const MyMessage &message)
{
// We only expect one type of message from controller. But we better check anyway.
if (msg.type==V_STATUS) {
// Change relay state
digitalWrite(msg.sensor-1+RELAY_PIN, msg.getBool()?RELAY_ON:RELAY_OFF);
// Store state in eeprom
saveState(msg.sensor, msg.getBool());
// Write some debug info
Serial.print("Incoming change for sensor:");
Serial.print(msg.sensor);
Serial.print(", New status: ");
Serial.println(msg.getBool());
}
}
``````

• @eme - hi!
Im very sorry, code is not my strong side.
Do you think its a problem with the hardware?
Do you have any logs?

• @sundberg84 I have the Domoticz log below. but just incase it doesn't reveal much, do you have a working sketch for EasyNewbie and a 4-relay module block?

``````2019-04-05 22:28:20.172 (My Sensors Gateway) Light/Switch (Light)
2019-04-05 22:28:21.229 (My Sensors Gateway) Light/Switch (Light)
2019-04-05 22:28:22.169 (My Sensors Gateway) Light/Switch (Light)
2019-04-05 22:28:55.333 Status: MySensors: Node: 3, Sketch Name: Base Relay Node
2019-04-05 22:28:56.459 (My Sensors Gateway) Light/Switch (Light)
2019-04-05 22:29:00.141 Status: LUA: All based event fired
2019-04-05 22:29:53.736 Status: User: Eme initiated a switch command (29/Light/On)
2019-04-05 22:29:54.297 (My Sensors Gateway) Light/Switch (Light)
2019-04-05 22:29:57.701 Status: User: Eme initiated a switch command (29/Light/Off)
2019-04-05 22:29:58.206 (My Sensors Gateway) Light/Switch (Light)
2019-04-05 22:30:00.533 Status: User: Eme initiated a switch command (28/Light/On)
2019-04-05 22:30:00.534 Status: LUA: All based event fired
2019-04-05 22:30:01.729 (My Sensors Gateway) Light/Switch (Light)
2019-04-05 22:30:07.427 (My Sensors Gateway) Light/Switch (Light)
2019-04-05 22:30:07.095 Status: User: Eme initiated a switch command (27/Light/On)
2019-04-05 22:30:13.674 Status: User: Eme initiated a switch command (29/Light/On)
2019-04-05 22:30:15.706 (My Sensors Gateway) Light/Switch (Light)
2019-04-05 22:30:19.773 Status: User: Eme initiated a switch command (26/Light/On)
2019-04-05 22:30:20.138 (My Sensors Gateway) Light/Switch (Light)
2019-04-05 22:30:55.858 (My Sensors Gateway) Light/Switch (Light)
2019-04-05 22:30:55.427 Status: User: Eme initiated a switch command (26/Light/Off)
2019-04-05 22:30:59.611 (My Sensors Gateway) Light/Switch (Light)
2019-04-05 22:30:59.256 Status: User: Eme initiated a switch command (29/Light/Off)
2019-04-05 22:31:00.280 Status: LUA: All based event fired
2019-04-05 22:31:02.813 Status: User: Eme initiated a switch command (27/Light/Off)
2019-04-05 22:31:03.242 (My Sensors Gateway) Light/Switch (Light)
2019-04-05 22:31:06.944 Status: User: Eme initiated a switch command (28/Light/Off)
2019-04-05 22:31:07.393 (My Sensors Gateway) Light/Switch (Light)
2019-04-05 22:31:22.892 (My Sensors Gateway) Light/Switch (Light)
2019-04-05 22:31:22.527 Status: User: Eme initiated a switch command (26/Light/On)
2019-04-05 22:32:00.351 Status: LUA: All based event fired `````````

• @eme sorry I don't. The most common "issue" is that power is to weak for 4 relays or noice is introduced in the radio from the relay.

It's very hard to understand without real logs. Sorry

• I eventually got it to work. I am not using the EasyNewbie to power the load (its for 24volts swimming pool light). Couldn't get the 4th relay to work - not sure why its not responding to the controller. but I noticed some bug with my batch of 16 PCB -

Okay I think I have seen some bugs... my batch of EasyNewbie Rev 10 has some hardware issues - The provisions to attach sensors are not correctly marked. D6 doesn't actually connect to D6 pin on the Arduino (must have failed a via somewhere). I am not sure how many pins are used for the radio and other components, but if you intend to use this for a small project, I will avoid D8 - D13 as they appears to be taken. D1 and D2 are used for the TX & RX so you only have D2 - D6 to play with (more than enough pins for a newbie if you ask me).

• @eme good you found the issue. First time I ever hear of a comfirmed PCB hardware bug, so its very rare. Very strange the silkscreen were moved or not aligned correctly as well. From where did you order the PCB?

The documentation states which pins connect to what on the PCB, so make sure you check that out. D9-D13 are used by the radio as in all MySensors projects. D8 for the extra flash. You can find the MysX documentation here as well if you need to find out more about the pins.

• @Sunberg84 I bought them off Ebay via this very site... The Packing List reads Shipped by Abdera's Sundberg Ostra Gransgatan 2, Lonsboda, Sverige 28070, SE. I believe that's you.
Well I am forced to solder directly to the Nano pins, and so far so good. I think you should help with a 4 relay sketch that works. My appears to be a hit and run, works in the morning and fails after a while. but I am learning as I go.

• @eme Thats me - ok, good to know then - but I guess you mean the Mini pins and not Nano since the PCB doesnt support the Nano?

• @sundberg84 Yes you are right I meant to say ProMini not Nano - I have 18 of these PCB - not so happy I have to solder directly to the Arduino - that's exactly what I was avoiding in the first place. Do you have a good relay block sketch that works? Much appreciated if you can help.

One last thing, I am trying to run a node off a 12Volts battery, can you explain this image below again?

• Will this work for a 5V Promini?
• What are the blue lines? and
• what are the red lines?

• @eme - its is very strange - I have a big batch here with Rev 10 and i checked atleast 20 of them randomly and all have continutiy between D6/pro mini and D6/MysX. You must have had extreme bad luck and if you check the others it should be ok.

Can you post a picture (close up) of the board not working please showing D6/Pro mini and D6/MysX.

For 12v I would use the prototyping area with a 12 > 5v converter. If you want to use the internal voltage regulator on the pro mini you can connect to RAW but beware that clones will not handle this very good. The specs are 12v but I have seen many bad clones getting destroyed.

I dont really remember this image and from which context this is from. I guess the lines represent different voltages. Adding 12V on reg and a 12>5v regulator on the TO92 footprint will convert and feed the board 5v, but kill the radio...

• I just checked my batch of Rev 10, random check of the batch checked out OK. I have 20 boards.

• Dear sundberg84, thanks to your really nice and easy mysensors PCB. I ordered ten of them via SEEED and they were delivered today (REV.10). Unfortunally I found some serious bugs in the PCB design regarding the SPI Flash: First pin 6 (SPI SCK) of the flash chip is not connected at all - should be digital IO pin 13 of the Arduino pro mini. Second mistake: the filter capacitor of the flash chip is not between VCC and GND. Third mistake: pin 3 and pin 7 should be connected to VCC and not to the filter capacitor. I changed that on my arrived boards and the flash chip is now working perfectly. Kind regards, JPM

• I checked the schematic, and:
First mistake: Seems that the schematic is OK, the label for SCK (pin 6) is connected to physical pin 16 which is PCINT13 on the Arduino,
Second mistake: that is a bug, filter capacitor is not connected correctly.
Third mistake: That is also a bug, pin 7 and 3 should be connected to VCC
Now I am going to check the PCB, be back shortly,

• I have now checked the PCB, and you are right @JPM
Pin 6 of the flash chip is not connected at all. No wonder I could not get that to work. Strangely is that the schematic is OK.
Thanks for finding this, I will modify my boards to get them working.

• Sorry for this. The flash has been untested by me. I will fix this asap and upload new files.

The schematics is wrong:

New schematics:

The same error goes for RFM version

• @mickecarlsson I found this out and wrote it above that D6 is not connected at all... but it was promptly swept aside cos nobody had reported it before now. I am glad someone else saw it, and that you had the notion to check. D4 is also not connected to the test area. I have been connecting directly to the Nano.

• @eme im sorry - since your wrote "The provisions to attach sensors are not correctly marked. D6 doesn't actually connect to D6 pin on the Arduino" I thought you was talking about the MysX connector and not flash. If you mentioned flash I would probably found the issue. They are not talking about D6 but pin 6 on flash which connects to D13 on the Arduino.

Are you sure it's the same problem? Not much that sounds the same.

• @sundberg84 if you look at the schematic you have connected MySX pin 10 to D2, but according to the spec for the MySX 2.4 it should go to D4.

• @mickecarlsson - I understand your point, and I have changed this back and forth and also asked @Anticimex becuase its a but unclear in the documentation.

MysX 9 + 10 should go to a Digital IO with interrupt, and D2 and D3 is the only pins with interrupts on mini.

I guess you are refering to Mysx_D3_INT but this is the MysX name.

• @sundberg84 @mickecarlsson
It is important to remember that MYSX is agnostic from any devices.
Any names in MYSX pins bear no correlation to any device specific pin naming, so D3 and D4 mentioned on pin 9 and 10 has nothing to to with any D3 or D4 on any MCU.
If you look here, you will find that the 'A' and 'D' notation is simply an indicator of the pin function (analog or digital) and it simply increments with the pin number, so the lowest analog or digital pin number in the MYSX connector will start at '1' and then increment as the pin number increments with '2' for the next digital being on pin '6'.
Also note that since some pins are deprecated in MYSX 2.x, MYSX 2.x analog pins starts with 'A3'.

• I was wondering if there are any CAD files for corner through hole size/locations for Rev 10? Trying to design enclosure for it.

• @birinderk SHould be easy enough to measure it with a caliper. That's what I did with the earlier revisions of the board (rev 8 & 9). They had pretty much the same hole spacing. Here are a few of the enclosures/sensor cases that I did that fit the rev 8 and 9's.
https://www.thingiverse.com/thing:2186286
https://www.thingiverse.com/thing:3339158
https://www.thingiverse.com/thing:2904969

• Does anyone know where we can find the write ups for old revisions? i have a bunch of Rev9 boards that, now that i have restarted these projects after a year break i cant remember the write ups for them....

• @markjgabb do you mean the stuff in README.md in the zip file that can be downloaded on the revisions tab?

• @mfalkvidd yeh i guess so, not quite what i was after the orignal in that version had some good pictures and such of what went where on the board....do doubt i can work it out from an old dead one i have lying around, was just hoping for a nice visual guide to get me back into it.

• @markjgabb not sure if this is what you want, but if I paste the contents of the readme into a markdown viewer (for example https://dillinger.io/ ) I get the images:

• @mfalkvidd ahhhhh That answers my question perfectly....i was just dumping it into notepad ++ ill try that first thing in the morning.

• Hi,

First of all: I really appreciate the simplicity and flexibility of this board!

Now then, I have a problem with battery life which is only around 3 weeks for my DHT22 node and around 8 weeks for my BMP280 node. Both are 3.3V mini clones with NRF24 radios (probably clones) that run on 2xAAA batteries and a booster. I use NodeManager for software and report sensor values in 2 minute intervals. LED and voltage regulator has been desoldered from the Pro Mini.

Why isn't battery life better - am I missing anything obvious?

1. Can/should I remove C2 (10uF) and C3 (0.1uF) capacitors? I added them first but after checking the schematics I now think they are not used at all for the battery/booster setup?

2. What battery life can I expect for a BMP280 on 2xAAA batteries and booster?

3. New batteries report at 3.13V. When the nodes fail, reported battery voltage is around 2.6V. However, when measured I get it to around 1.6V (at no load). This could be a software problem but I include it as a clue. My setup in NodeManager is:

``````battery.setBatteryPin(0);
battery.setMinVoltage(1.8);
battery.setMaxVoltage(3.1);
``````

• @fredswed - Hi!
You should be able to get much longer batterylife than this! I have same setup running around 12 months.

It is hard to say, your setup in the image looks correct. Sometimes when i bought boosters or sensors they draw much more current than expected due to clones. In these cases I try to solder pro-mini and radio, then connect a multimeter in series with the batteries to analyze current consumption - then add sensor by sensor to find out what is drawing current - is this possible for you?

1. The are used for the booster to smooth noice, so both can be used in your setup.
2. 2xAA with DHT22 = 1 year, BMP280 has a low current consuption when sleeping so it should be able to do atleat 1 year there as well.
3. I dont know nodemanager. The booster should boost the voltate for VCC, so it depends on the specs for your booster.

My first thought is that your BMP module is always active drawing alot of current even though you put the node to sleep. Test current consumption during sleep. Should be < 100uA and even maybe 50 uA atleast!

• @fredswed hello, are you sure you booster is wired correctly and running fine ?

Node failing around 2.6V looks a lot like the value before the default brownout detection (2.7V). Then when you are at this level the node will be in a reset loop forever and completely drain the battery, but of course your node will not be able to report it.

So I would check the wiring and behavior of the boosters as they don't seem to do their jobs. I might be wrong but it would be a strange coincidence to have both nodes failing just at the brown out voltage.

• Hi A question about powering using the step booster. When I connect the BAT jumper it would seem from the schematic that the output of the booster will be delivered to vcc (i.e. the arduino) but the supply to the radio module will be the battery supply. Is that what was intended?

• @4994james yes. The radio supports lower voltage, and is extremely sensitive to imperfections in the power supply voltage. The booster introduces a lot of imperfections.

• Excited to get started with this board, ordered 10 and soldered up the basic components for a 3.3v battery-powered sensor last night. Got everything soldered exactly as in the battery operated picture for rev 10 on the newbie-pcb page with the exception of the D5 resistor.

When I connect the batteries to the PCB, the LED on the pro mini does not turn on, so I'm assuming it's not getting power. When I connect the battery to RAW, the LED on the pro mini turns on. Any ideas on where I should start troubleshooting before I start removing and replacing components?

I know the pro mini is good, I've uploaded a sketch to it using FTDI. I'm pretty sure my soldered connections are ok. I've double checked caps and resistors. I don't think I checked the step-up booster, so I'll try to test that to ensure it's functioning correctly, but any advice would be really appreciated!

• @genuinejd - can you post a picture of your pcb? Might be easier.
If you have a multimeter, you can measure the input and output of the booster.

• @sundberg84 I meant to post a picture, then last night I discovered my issue. I soldered all the components except the pro mini! Once I did that, everything started working. I did discover that mys was reporting "No potential parents replied to find parent request." Once I changed my radio cap from 4.7 to 47 it started sending messages immediately.

Here's my first node (I haven't removed components from the pro mini yet for extended battery life), with bare minimum components in all it's battery-powered newbie glory!

Thanks!

• @genuinejd - Nice work! Thanks for reporting back!

• @sundberg84 So as it turns out, it worked great for about a day while I was letting it run to test battery life. Suddenly my gateway was not receiving any messages from my node.

• I checked all the caps, the booster, etc.
• I tried a few different caps for the radio up to 100uF
• The voltage on the radio matched the voltage from the battery.
• I tried switching to the REG jumper and wiring across the voltage regulator, the radio was then getting 3.3v from the booster, but still no communication between the node and gateway
• I also tried using my bench power supply for reg 3.3v.

Strangely, the ONLY thing that worked was when I used the 5v post on my bench power supply (with the BAT jumper, no voltage converter)

I have not yet tried swapping out the radio since it works with 5v, but I'm unsure what to try next. I have 6 other mys nodes communicating with my gateway with no problems and greater distances (all using nanos).

Any suggestions? Apologies if this doesn't sound like an issue with the board, I can post in the troubleshooting forum if you think it's a radio problem.

• @genuinejd - the radio can not work with 5v, sorry but this might destroyed your radio. Do you have any serial debut for your node? Can you see what it does? It might be alot of different things, maybe the booster. In many times I have seen bad boosters which introduces noice and makes the radio go crasy.

• @sundberg84 I know that everything I've read says the radio cannot use 5v, but when hooked up to my bench power supply and connecting my multimeter leads to the NRF24L01+, it says it's getting 5v AND it's the only scenario where the node can successfully find the gateway and send/receive data.

I tried swapping out the radio and it was the exact same scenario. I'm getting NACK debugging messages on the gateway when it's trying to accept the node as a child. The only thing I haven't tried is replacing the booster.

For the moment, I wired up a second node with all new components and (after remembering to solder everything) it connected to the gateway right away. It's been running for about 30 minutes, so I'll post back after a time when I know if it will stop working or run until the batteries drain completely.

Side note: thanks for making such an awesome board!