## IoT water tank telemetry project – HC-SR04 – first trial

IoT water tank telemetry project – ultrasonic sensor – #1 described an inexpensive ultrasonic ranging sensor for trial.

## Stacking two ferrite cores of different permeability for an RF inductor

One of the magic ham recipes often proposed is to stack two ferrite cores of different permeability for an RF inductor, but an explanation is rarely offered, I have not seen one.

## An explanation

Starting with some basic magnetism…

The inductance of an inductor is given by $$L=N\frac{\phi}{I}$$.

For a closed magnetic circuit of high permeability such as a ferrite cored toroid, the flux is almost entirely contained in the core and the relationship is $$\mathcal{F}=\phi \mathcal{R}$$ where $$\mathcal{F}$$ is the magnetomotive force, $$\phi$$ is the flux, and $$\mathcal{R}$$ is the magnetic reluctance. (Note the similarity to Ohm’s law.) Continue reading Stacking two ferrite cores of different permeability for an RF inductor

## Differences in two similar simple untuned small loop configurations

Firstly lets set the context, a small loop means less than λ/10 perimeter, and untuned is to mean that the loop is loaded directly, in this case by a receiver which we will assume has an input impedance of 50+j0Ω.

Let’s look at the two cases. The key difference is in the connection at the gap:

• the first has a short circuit coaxial stub of half the perimeter between the inner conductor at the right side of the gap and the outer surface of the outer conductor at the right side of the gap; and
• The second directly connects the inner conductor at the right side of the gap and the outer surface of the outer conductor at the right side of the gap.

## Small single turn un-tuned shielded loop

Above is a diagram of the loop. Continue reading Differences in two similar simple untuned small loop configurations

## ESP8266 IoT BME280 temperature, humidity and pressure – 06/2021 update

ESP8266 IoT BME280 temperature, humidity and pressure described an IoT project. This article documents an update for newer nodemcu core (NodeMCU 3.0.0.0) and the revised support for BME280 (the older method having been deprecated).

This project is based on ESP8266 IoT DHT22 temperature and humidity – evolution 3, but uses the Bosch BME280 temperature, humidity and pressure sensor. The BME280 has been around for a couple of years, though recently, modules using the chip have become more expensive on eBay, around \$10. If you find BME280s listed for much less than that, it is probably Chinese cheats doing a bait and switch… delivering BMP280 (pressure only). Continue reading ESP8266 IoT BME280 temperature, humidity and pressure – 06/2021 update

## IoT water tank telemetry project – part 4

After a long hiatus… the project activity resumes.

Boxing is underway, and the code has been revised to use a BME280 sensor replacing the DHT sensor. The BME280 is a better sensor (less jitter), and is also capable of barometric pressure if that is of interest.

Experience has been that 18650 cells do not last when exposed to extreme temperatures in solar powered modules like this, so a single cell pouch 2000mAh LiPo will be used (as in the battery trials).

The code has been refactored to make measurements before starting the WiFi as WiFi activity injects noise into the ESP8266 ADC.

The nodemcu core was updated as part of this process.

## Interpolation

The system is easy to calibrate in terms of stored water volume for containers with vertical sides where the change in volume with level is uniform… but there are lots of applications where that is not true, natural dams for example.

Above is a plot of volume versus depth of water for a container like a spherical bowl. The interpolation line is a cubic spline interpolation based on the six input data points, it is of course a very good fit to those points but would appear to be a good estimator of the regions between.

The code now contains a facility to perform a cubic spline interpolation of a small number of data points over the expected range of depths.

Entry{0.000,0.000}
Entry{1.000,313.112}
Entry{2.100,1375.744}
Entry{3.000,2799.159}
Entry{4.000,4959.528}
Entry{5.000,7723.082}


Above, a set of six points (as in the chart) in the format required of the code in a file named dam.xy.

The code calculates and stores an intermediate data file <name>.cstable if it does not exist for more rapid calculation. If the .xy file is updated, the corresponding .cstable file needs to be deleted.

The init.lua file is augmented to call a transform function from the httpreq function which customises the HTTP request.

function transform()
dofile("csinterp.lua")
if level<0 then level=0 end
volume=csinterpolate("dam",level)/1000
volume=string.format(meas_fmt,volume)
print("Volume: ",volume)
end

function httpreq()
--  req=rest_url.."?api_key="..apikey.."&field1="..level.."&field2="..temperature.."&field3="..humidity
transform()
req=rest_url.."?api_key="..apikey.."&field1="..volume.."&field2="..temperature.."&field3="..humidity
body=""
print("req:"..req.."\nbody:"..body)
return req,body
end


Above, the transform function fetches the function definitions for the cubic spline interpolation, and calculates an interpolated volume from the measured level (or depth) value.

Above is a trial run using a calibration generator for the level input, and its conversion to current volume of the storage.

## Hardware

One of the possible paths this project might follow was to use LoraWan… but experience with LoraWan has not been positive, particularly issues with the Laird gateway.

Above is the enclosure, an electrical box with transparent lid. The PV array is mounted inside the lid, the cheap Chinese ones tend to degrade too quickly when exposed to the elements. There is room in the box for a 2000mAh 1S Lipo battery. The switching circuit for the 24V DC-DC converter is mostly on the Veroboard under the (red) DC-DC converter (powers the 4-20mA loop). The module at lower left is a 1S battery management / protection board.

The resistor diagonally across the Wemos module is the 4-20mA sense resistor wired from A0 to ground. Experience is that locating the resistor on-board reduces the errors due to variable contact resistance through the module header pins.

If temperature / humidity monitoring is desired, a BME280 module plugs into the header near the antenna, but it needs to be remote from the box which gets quite hot in the direct sun.

The implementation supports easy development and update, if the battery and solar cell are disconnected, plugging a computer into the USB port on the Wemos board allows update and normal operation / testing.