Help with IoT water flow monitoring schematic

Hello everyone,

I’m building an IoT water flow monitor and would like some feedback on my schematic.

Hardware:

  • Arduino Pro Mini 3.3V.
  • Water flow sensor (5V~15V(DC)).
  • LoRa module (3.3V).
  • Resistor, capacitor, fuse, LDO regulator, 5V boost converter.

What I want to do:

  • Read pulses from the water flow sensor.
  • Send readings over LoRa to a remoter receiver each minute only when accumulated flow is > 0, otherwise - sleep (preserve battery).

My questions:

  • Does this schematic look reasonable for safe and reliable operation?
  • Are there any improvements I should consider?
  • Is this design suitable for low-power/battery operation, or are there inefficiencies?

I'd really appreciate feedback on the schematics (file is attached). Thanks.

People usually still have water flowing during a commercial power failure. So, you will loose all stored readings and take no new readings. Why bother if this happens frequently?

the microcontroller in the schematic is labeled Arduino Nano Every
which microcontroller is it?
post your code?
are you building a PCB?

No.

  1. The C1 connection makes no sense at all, and should go from VO to GND. F1 is not needed. From the regulator data sheet:

  1. The circuit appears to connect a 5V sensor output with a 3.3V input. A logic level shifter is required. A 1K;2K resistor divider will work. Perhaps the flow sensor will work on 3.3V, in which case drop the boost converter.
1 Like

Yes, that 5V boost converter will not be as efficient as you are hoping, I suspect. Your schematic labels it as 13uA quiescent current, but I imagine that is when it is disabled and not producing 5V output. The quiescent current when it is producing 5V will be nearer 100x as much, I suspect. I hope I am wrong about this, so please post a link to its specs, because if it is as efficient as you hope, I want some of those too!

1 Like

Thanks for pointing that out, in schematics I used Arduino Nano Every, since KiCad did not have Mini Pro, but the schematics is just for reference.

I’m still prototyping with schematics so I don’t have the code yet.

And I am not building a PCB, just prototyping to learn electronics.

If short circuit occurs, will this not cut the connection and protect components? Or why it’s not needed?

Does the schematic look better now? Do I need C1 or straight to 3V3 pin?

It mentions that working voltage for it is 5V~15V (DC). So keep this boost converter?

Yes, 13uA is when it’s not supplying 5V, but in my case the device most of the time is idle, so I believe this boost converter is acceptable? I am not sure actually how often the device will be used in regards to the power usage and the choice whether to use boost converter, buck, LDO, whatever. What would you do here to be safer for unknown usage patterns of device? Keep this converter or use a different component?

Thanks for any help.

No, it still won't work because of C1.

You have added C3, but that was supposed to replace C1, not be in addition to it.

I don't get how your circuit is supposed to work. Can't water start flowing at any time? If so, won't your sensor completely miss that if it is not powered with 5V full time?

you maybe better off going for a module with ESP32 and LoRa onboard, e.g. Hailege ESP32 LoRa Kit 863-928MHz SX1262 LoRaWAN

The sensor may work at 3.3V, regardless. At 5V, you still have the problem of level conversion. so save yourself trouble by buying a flow switch that IS specified to work at 3.3V. Some flow sensors have a reed switch that will work at any voltage.

If you don't know what capacitors do, then it is way too early to be "designing" circuits.

Sorry about that, it should’ve went straight to 3V3 pin right? Keeping C3 connected to the GND.

I don’t understand how “it is not powered with 5V full time” here? What I meant before is that there will not be no constant flow of water, let’s say at max 1-2 hours of constant flow water a day. But now as I see, there is nothing I can do that sensor must be powered all the time at 5V to detect flow, right? It won’t survive on several batteries for long.

From what perspective this way is better? I thought pro mini + lora would be better in terms of power consumption.

ok ill try thanks

if you can find a module with Microcontroller + LoRa that meets your requirements it saves interconnecting modules reducing the possibility of poor connections and intermittent problems
for example, currently looking at using a Heltec wifi-lora-32-v3 module (as a daughter board on a custom PCB) plus solar panel on a water monitoring project

found this program which uses a Pro Mini 3.3V + RFM95W to transmits text using arduino-LoRa library

// Pro Mini RFM95 sender

// NOTE: RFM95 requires external 3.3V supply
// Pro Mini 3.3V output insufficent for transmitter OK for receiver

// Tools>Board select Pro Mini 5V or 3.3V 

// Pro_Mini connections
// Pro_Mini SCK pin GPIO13  to RFM95_pin SCK
// Pro_Mini MISO pin GPIO12  to RFM95_pin MISO
// Pro_Mini MOSI pin GPIO11  to RFM95_pin MOSI (alternate connection)
// Pro_Mini SS pin GPIO 10   to RFM95 SS
// Pro_Mini pin GPIO4   to RFM95 Reset
// Pro_Mini pin GPIO2   to RFM95 DIO0
// Pro_Mini pin GPIO6  to RFM95 DIO1  (required for LoRaWAN)

#include <SPI.h>
#include <LoRa.h>

int counter = 0;

void setup() {
  Serial.begin(57600);
  while (!Serial);
  Serial.println("\n\nPro Mini RFM95 LoRa Sender");
    //void setPins(int ss = LORA_DEFAULT_SS_PIN, int reset = LORA_DEFAULT_RESET_PIN, int dio0 = LORA_DEFAULT_DIO0_PIN);
  //LoRa.setPins(8,4,7);   // for Lora 32u4
  //LoRa.setPins(10,9,2);   // for UNO LoRa shield
  LoRa.setPins(10,4,2);   // for Pro Mini 
  if (!LoRa.begin(866E6)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }
}

void loop() {
  Serial.print("Sending packet: ");
  Serial.println(counter);

  // send packet
  LoRa.beginPacket();
  LoRa.print("hello ");
  LoRa.print(counter);
  LoRa.endPacket();
  counter++;
  delay(5000);
}

serial monitor output

Pro Mini RFM95 LoRa Sender
Sending packet: 0
Sending packet: 1
Sending packet: 2
Sending packet: 3
Sending packet: 4
Sending packet: 5

serial output of a Feather 32u4 LoRa receiver

LoRa Receiver
Received packet 'hello 0' with RSSI -50
Received packet 'hello 1' with RSSI -50
Received packet 'hello 2' with RSSI -53
Received packet 'hello 3' with RSSI -53
Received packet 'hello 4' with RSSI -53
Received packet 'hello 5' with RSSI -53
Received packet 'hello 6' with RSSI -53
Received packet 'hello 7' with RSSI -53
Received packet 'hello 8' with RSSI -50
1 Like