Is there a way to send I2C data wirelessly without using a processor?

Thread Starter

pyroartist

Joined Oct 9, 2015
115
My application is to transmit sensor data wirelessly about 40 feet. The remote sensor will be powered by a small solar cell and a 4 Farad capacitor to allow continuity of operation when the sun goes behind a dark cloud. So the sensor circuit must draw as little as possible. I was using an HC12 433 MHz transceiver module but that draws about 100 mA. which is too much. I see that the nRF24L01+ module draws about 8 mA. on average when transmitting.
My sensor chip can be easily set to output data once every second over the I2C interface. Is it possible to connect this directly to the nRF24L01 or other simple RF transciever chip? Has anyone tried this?
 

Attachments

Thread Starter

pyroartist

Joined Oct 9, 2015
115
Thanks. That particular system (Long Range) would probably use too much current. I only need about 40 foot of range and don't forget I am trying to power this with a small solar panel. (Think solar calculator size.) So the current draw is a big consideration.
 

ronsimpson

Joined Oct 7, 2019
2,058
So the current draw is a big consideration.
Then you need to be in sleep mode most of the time.
Send data only when needed.

A quick read of the sensor indicates it is a slave so it cannot sent data every 1 second.
I see the power consumption numbers are based on data 1/S.
I think you need a micro to be a master for the I2C bus.
Little micros can be 8 pin and use 1uA if run slow.

I see there is also a SPI interface but it has the same problem of needing a master.
 

Thread Starter

pyroartist

Joined Oct 9, 2015
115
Thanks, Ron. I will try to find a simple, low current micro to run this. I read on BMP280 page 21 that "Continuous (CONT) mode provides an update rate of 1 Hz and shall only be used for use cases that incorporate very fast events or stimulus." So I thought that it would just present the new data every second on the output pins. Since it works as a "slave", if it just needs a trigger to send out the data then maybe a simple pulse every second might satisfy that requirement.
 

ronsimpson

Joined Oct 7, 2019
2,058
I did not read all so I may have missed something.

In SPI mode you will need 17 clocks. And you need to do CSB.
In I2C mode you need 9x3 clocks.

Both modes are complicated to do without a micro. PIC10Fxx, PIC12Fxxx or PIC16Fxxxx. Last time I used a PIC10F204.

There are many companies that make small, low cost, low power computers.
Can you program?
----------------------------------
Now that I look at the other IC. It needs to be programmed before it starts working. You do need a micro.
 

KeithWalker

Joined Jul 10, 2017
2,351
Why are you are resricting your options on this project by choosing the power source first. It is usually done the other wqy round. Why are you using a capacitor for standby power? Wouldn't a battery be a better solution?
 

dendad

Joined Feb 20, 2016
4,134
Read up on putting the micro and the sensor to sleep so the draw is a few uA.
Power the sensor only just before taking a reading then power it off.
Do you need to read every second?
Not many things in the real world change temperature very fast. Once a minute (or even longer) may well be quite ok.
On the site I mentioned, there will be info on sleep modes to save power. Sometimes removing LEDs etc from boards is a good idea to save power too.
 

GetDeviceInfo

Joined Jun 7, 2009
2,095
The nrf24 utilizes SPI. The BME680 is capable of utilizing SPI. Both need configuration data written to them to operate. A power conscious micro is a must. All in all, you will have a power hungry grouping, relatively speaking. Depending on your data rate and device timing, you might sleep the micro, and have it enable a switching supply that powers up/down the other devices. A battery and solar panel would be sized to accomplish the task.
 
Last edited:

MrChips

Joined Oct 2, 2009
26,077
No, you will need a processor at each end. You can use nRF24L01+ modules but forget the I2C part.
You want to transmit data, not signals. Get the data first from the sensor using I2C. Then transmit the data with nRF24L01+ modules. In order to do this you will need a microcontroller at both ends, one at the sensor and another at the receiving end.
 

Thread Starter

pyroartist

Joined Oct 9, 2015
115
Thanks to all for your input! I will now have to buckle down and study the (extensive) data sheet on each of these components AND a small micro to design this. The reason for using solar and no battery is that this needs to be as small and light as possible, will only be used on sunny days and will be exposed to very warm and cold conditions that batteries don't like. Also it will be in a spot with poor access so I can't just switch it off when not being used.
 

dendad

Joined Feb 20, 2016
4,134
How often do you really need the reading?
Will your target change each second?
I made a water sensor for irrigation that spent almost all the time asleep.
It would "call home" every couple of hours just to prove it had not been stepped on by a cow or something, and the base would reset a count down timer to say the sensor was still active. But if the base missed a couple of calls, it would raise an alarm to say sensor fault.
The sensor would call immediately on sensing water.
So, you may not need to send the data each second, just when it changes, or every so often as a status check.
 

Thread Starter

pyroartist

Joined Oct 9, 2015
115
Yes, I do need it every second as I am expecting only small changes and need to compare the reading with another identical sensor that will be on a 2nd channel, in real time.
 

Ya’akov

Joined Jan 27, 2019
5,654
Aside from mentioning a solar cell and a 4F cap, you didn’t say much about how you were going to work out the power supply.

In case your plan is a naïve one without understanding the needs of the PV and supercap arrangement (it may not be, but if it is), this article and its part 2 will be very valuable.

Using a supercap in this application is a great idea, but it has to be done correctly to work well. It’s a specific sort of problem that has particular requirements.
 

dendad

Joined Feb 20, 2016
4,134
Yes, I do need it every second as I am expecting only small changes and need to compare the reading with another identical sensor that will be on a 2nd channel, in real time.
I doubt the sensor will respond in a second so reading it that fast may well be moot.
If you need a fast response, a small discrete sensor with external amp and processing will be the way to go. These will be too much thermal inertia in the BME680.
What are you trying to measure the temperature of, and to what accuracy?
 

Thread Starter

pyroartist

Joined Oct 9, 2015
115
Yaakov, thanks for the link to that article. One of the first experiments I have done towards this project was to see how much voltage, current and time it takes to charge the supercapacitor with the solar cell so I have already built the circuit of figure 1. It took 20 min to charge a 5V rated, 1F cap to 3.3 V in mid-day sun. So I have a good idea about how to use this and I think it will work easily in my application if I can keep the average load below 60ma.
 

dcbingaman

Joined Jun 30, 2021
566
If you want to reduce transmission power, and the temperature is changing ever so slightly from one second to the next consider transmitting first the absolute temperature after that you only need transmit the 'delta' with could be significantly less bits just a short signed bit extension and if the temperature has not changed from one second to another you can skip that transmission and only transmit if there is a change in temperature. I am not sure about how fast your data is changing and how often the resolution causes a change from one second to the next. But if certain things are true, the technique I mentioned can save power. There are other methods depending upon your data rate and how fast the data is changing.
The microcontroller in sleep mode is a must. Generally an interrupt wakes it up every second, data is transmitted and it goes right back into sleep mode again. If the data has not changed, the microcontroller can verify that and not transmit during that interval and simply go to sleep again until the next second.
 
Last edited:

GetDeviceInfo

Joined Jun 7, 2009
2,095
And you could further reduce power by omitting the BMP280 in favour of a thermistor on the micro’s ADC port. Transmissions may be reduced as mentioned above, saving data and sending as a packet, or even pushing functionality onto the micro. A brown out detector might avoid false starts or corrupt conversions, transmissions.
 

Thread Starter

pyroartist

Joined Oct 9, 2015
115
I never mentioned it but the parameter I am most intersted in from the BMP280 is the RH. However it is difficult to find a sensor that can take a RH measurement (to 63%) rapidly. The BMP series is 8 seconds. The new Sensiron SHT41 is 4 seconds and I have not found anything faster. So this may not work for my need to see the 1 second change. I am confident that with micro sleep mode and the other tricks mentioned that I will have enough power.
 
Top