Restrict End Node from pushing packets continuously to the Center Node and configure the End Node to send the packets only on threshold change in Accelerometer sensor.
Please guide us, where to modify the source.
Hi Nuthan, I see that the macro ENABLE_LOW_POWER_MODE is not defined in the project. This must be enabled to build the project with support for low power mode.
Hi Nuthan, Could you please let us know which version and protocol (ADRadioNet or AD6LoWPAN) are you working on?
Hi Harish, Thanks for the response. We are working on AD6LoWPAN01 EDKv1.0 Platform: EV-ADRN-WSN-1Z
Assuming you have configured the ADXL362 to generate interrupt on the required threshold, the following steps should help you achieve what you are looking for.
1. Enable external interrupt from XL on S1 switch. Check "APPENDIX-F" in AD6LoWPAN-All-in-One-GettingStartedGuide_v1.0.pdf2. Set the "Sleep Time" on Configuration window as high as possible (~60000sec). So the WUT won't wake up the node till 60000 seconds.
Let me know if this helps.
Hi Schennu, Thanks for the suggestions.
Configuring ADXL362 to generate interrupt on required threshold means wake up
We followed the steps, but the sensitivity of the Accelerometer stays far
from our expectation, Its not helping us for what we are looking for.
As suggested, We increased the sleep time of Node to 60000 seconds, but no
Essentially, These changes will drive the node into hibernate end node
On Tue, Jul 19, 2016 at 6:38 PM, schennu <
Yes. I am hoping that you made the modifications required for generating wake up event under from ADXL362 in the ADXL362_Init() under ADXL362.c file.
Please check ADXL362 datasheet or seek help from MEMS community to know the register settings for the operation you're looking for. The same changes can be included in ADXL362_Inti() function.
Once you are able to generate the interrupt from ADXL362 on the threshold you wanted, the next step is to route the interrupt to the external interrupt pin of the MCU (ADuCRF101).
On BUNCH platform, the external interrupts from 3 sensors can be routed to IRQ1 based on the selection on DIPSwitch S1. Turn 6 on and the rest as OFF on S1 to route interrupt from ADXL362 to IRQ1.
The Bunch end node is configured to wake up on any interrupts with priority equal or higher than UART Rx pin.
This indicates that the node should wake up from hibernate mode whenever an event detected on external interrupt pins, activity on UART Rx line and after the Sleep time elapses.
My recommendation of increasing sleep time to 60000 is to make sure node goes to hibernate for that many seconds, allowing only the event from external sensors to wake it up.
My suggestion is to try the above settings with the prebuilt binaries we provided. Once you see how this is functioning, you can make the modifications to ADXL362 configuration to achieve the wake up on required acceleration threshold.
Hi Subbu, Thanks for the response.
Your recommendation worked partially, i.e., Though the node was sending the packets on events detected via external int pins, node was not going to hibernate, instead polling continuously in addition to event triggered.
Polling did not stop.
We tried the above with pre-built binaries, but when tried with the source, It didn't work as expected. Do we have to modify the source for the event
to be detected on external int pins? XL pin to MUC port?
These are the settings that we tried to bring the device into wakeup mode, wanted to know if these are right.
On Wed, Jul 20, 2016 at 7:16 PM, schennu <
If the node is sending packets on the events detected on the external interrupt from ADXL362, you're almost there.
Is the radio button next to Sleep time option ticked in the Node configuration?
If not, this should be ticked. Or you can send "Enable Sleep mode" command from Border Router (Please refer to GSG on this).
Apart from ADXL362, there are other sources capable of waking up the MCU from hibernate.
Those are, 1. Event on UART Rx pin,
2. Time out of Wake up timer 3. Any other interrupts enabled from other sensors using Switch S1.
Follow the below steps to disable these possibilities.
1. Make sure the device is disconnected from PC (prevent event on UART Rx line). If the device can only be powered through PC USB, make sure the device is disconnected from UI tools.
2. Setting the sleep time as large as possible (to avoid periodic interrupts).
3. Turn OFF all other switches on S1 except the 6th (XL).
Hope this helps.
Extremely thankful for step by step description. Glad you took time to explain us in detail and hopefully this helps people in this community as well.
The objective is successful when we try it with pre-built binaries - where all the sensors are enabled!
But when we removed preprocessor directives ADT75_Sensor, SHT21_Sensor, ALS_Sensor but for ADXL362_Sensor.
The 6th (XL) is enabled on bunch wsn, but node is still polling with configured sleep time(5s, 10s, 30s). The interrupt is not honored by the MCU.
We doubt if the pre-built binaries were not generated with the source that came with the package.
I believe that the binaries are generated from the sources released.
Did you set the sleep time more than 5/10 sec? Maybe set it as 120sec and try to generate the event with ADXL362 by tilting it. Let me know if you see a packet transmitted on that event.
We tried all possible permutations with the source, none work as expected. We just disabled the sensors as in the documentation and tried to generate binaries with IAR EWARM 7.5.
Do we have to use any other IDE, compilers to generate the binaries?
Also, attached the source with pre processors disabled except ADXL362.
Please, let us know if we are on the right track.
Hi Subbu/Schennu, Have you had a chance to look into this?
Are you sure the pre-built binaries are generated from the source attached above?
Or is there any other way to disabling other MEMS sensors?
Hi Nuthan, I am sure the prebuilt binaries are built with the source supplied.
I did download the source and it is exactly the same code we added as part of the installer, but none of the sensors enabled.
I have enabled ADXL362_Sensor and ENABLE_LOW_POWER_MODE macros and was able to get the operation required.
I am attaching the binaries I built to check with the device at your end.
Maybe one point you must be missing is that the device must be configured in sleep mode.Once you flash the binary, in the configuration window, set the sleep time as 60sec and tick the radio button next to Sleep time option.Then click on "Write Config".
- Power the device by battery or USB supply.
- Try generating the event with ADXL362
you should see the packet on the border router every time an event is generated and also for every 60 seconds.
Important note: Once the configuration is written, do not click on "Find Devices" or do not "select the device". These actions would disable the sleep mode.
That was it, Our project was missing ENABLE_LOW_POWER_MODE macro. The sources released did not have this macro enabled. This recommendation was missing in the getting started guide too.
It works now!
Retrieving data ...