Anyone tried Laird RM1XX modules ? part 2

I believe I have CE version using “RM191_CE_AU_102.6.1.0-r1_ENGINEERING” This goes back several years.
Also I am not using BLE so did not see any need to change from CE to PE when I flashed a firmware upgrade.

I systematically worked through setting the port to input rc = GpioSetFunc(28,1,X) varying X from 0 to 4. I think I can see pull-up and pull-down with this.

When configuring an output, eg
rc=GpioSetFunc(4,2,1)
rc=GpioSetFunc(5,2,0)
The last variable can be a zero or a one. I assume this is to configure the two drive levels ie Std-Drive = 0.5mA or High-Drive = 5mA.

If in doubt about any of the commands I check the BL600 documentation as that seems to be where the firmware is based on. And sometimes the example code and reading the include files reveal ‘secrets’ they forget to mention in the documentation.

1 Like

You have to be joking. There is a wealth of information in the BL600 SmartBasic documentation. Why did they remove some of the detail when they created the SM1xx docs?
Thanks

1 Like

I am measuring 0v on both sides of the I2C pull-up resistors and this applies to both SCL and SDA. I connected the pull-up resistors to spare I/O pins 16 and 17 (SPI MISO and MOSI) and powered them from these pins.

I get exactly the same result every time. The module goes to low power after a join and after the first use of the I2C the power drain jumps to 5mA between events.

I now assume the processor is failing to return to low power mode. After reading the I2C sensors, sending the data etc i can see the modules current varying before settling down to 5mA. This suggests to me the processor is not sleeping between events.

I’ve tried a number of different sequences in closing the I2C port and powering down the pull-ups to SDA and SCL. Have checked the UART does not have something in the buffer.

I have switched all the serial pins to input with weak pull-down resistors and no change.

This is doing my head in.

You closed the serial port after the last print? Print automatically reopens it.

Yes, done that. I also comment out all the print statements in the final code so it does not open the uart. I also close it when the code first boots. I also confirm this by connecting a terminal to check no print statements remain.

In your node how do you achieve low power with the I2C sensors? Does each sensor have a sleep mode where you sleep each sensor after it is read? Do you close the I2C port as well?

The sensor automatically returns to sleep mode after a measurement. I2C is closed after taking a reading.

1 Like

Thanks, I will reconfigure my code and eliminate the power down system. In the test I will also only use the sensors that I can sleep or that have low power consumption.

Problem Solved: I had one I2C sensor that had become disconnected and did not respond to I2C write and reads. It happened to be a outdoor light sensor and would expect to read zero while testing the node indoors.

As a result the I2C Close command did not work and the Laird module would draw around 5mA while sleeping between Timer Events.
After all of this I can confirm the power down of the sensor 3.3V using a High Side switch to turn off the sensors and also to power down the I2C pull-up resistors works fine.

3 Likes