This setup demonstrates remotely monitoring the amount of water flowing through a tube. It also demonstrates an ARM chip communicating with an Arduino wirelessly.
For this demo, I used two microcontrollers: an ARM Cortex M0+ chip(LPC810) to measure the water flow and transmit the data, and an Arduino to receive the data and display it on an LCD screen.
I was looking for a project for this ARM chip that I had on hand so it was fun to use it here. I could have used a solderless breadboard for the ARM, but I wanted to set it up as a more permanent dev board that I could reuse for other ARM projects. After prototyping it on a solderless breadboard, I cleaned up the layout a bit and soldered it to a perfboard. The final layout includes a 6 pin header for a FTDI cable which I used for programming the ARM, a 3.3V voltage regulator so I can power the board off of 5V, reset and bootloader enable buttons, and headers to easily access all 8 pins of the chip. The LPC810 has a switch matrix which allows you to map any peripheral on the chip to any GPIO pin. In this case I only needed to map one UART for communication to an XBee module and one IO pin to read pulses from the water flow sensor. The ARM keeps track of total pulse count(which can be converted to a volume of water), and sends it periodically via its XBee to the Arduino.
The Arduino Nano receives that data with its XBee, then updates the character LCD accordingly.
Both circuits are running off batteries. With the XBee modules acting as a wireless serial link, the water flow data could easily be monitored some distance away. With some calibration, the pulse count can be converted to a precise volume of water with good accuracy. Similarly the rate of increase in the pulse count could be easily converted to a water flow rate.