Making it work.
I got everything to function with a rather messy board setup as shown below.
The output from the Arduino shows the delta T between messages received from the end-devices. It is pretty close to the calculated ones. I will change the duration to be 15 minutes later on but for debugging purposes 10s intervals for pin sleep is tolerable.
I opted for hardware driven sleep mode (SM=1) in the XBee. I felt that that cyclic sleep mode (SM=4) to be a pain to setup. I felt that that keeping the XBee asleep for extended durations, the device would be MIA from host. With a hardware based sleep, I could use a swith to to force it awake, configure remotely with the software tool I wrote, flick the switch back to the timer based sleep. Simple in my mind.
I needed a project to dabble and distract me in a constructive manner. The goal for this project is to build a low power data collection network to sample slow changing analog data such as temperature, ambient lighting, among other things. The constraint given was to use XBee Series 2, run in API mode, and operate on batteries.
I purchased 5 XBee Series 2s to experiment with. I used X-CTU software to configure the Xbee chips as per the last project I did. The difference this time is I did not want to use AT mode but API mode to give me more control over XBee interactions from the Arduino host software. The project context is as shown below.
I’ve been busy with work and never have the time to get back to this project. Anyway, I penciled in a few hours to wire up the xBee transmitter/receiver to the arduino. The xBee explorer is a time saver. What I wanted to do is to program the arduino over wireless as well. Given that time is limited, I opted to just send data over wireless to simplify connectivity.
The xBee explorer had 4 connection points that made it easy to hookup:
- +5 to arduino +5
- gnd to arduino ground
- dout to rx (pin 1 of ardiuino)
- din to tx (pint 2 of arduino)
That is pretty all that is required to wire up the xbee. The explorer takes care of the 5v to 3.3v level shifting. Remember I am using the Duemilanove as the reference board. Note that you can’t plug in the USB in the Duemilanove and xBee in the explorer at the same time. The two will conflict with each other. This is rather trivial to hook up so no wiring diagram other than pin connection mapping is provided.
On the host side, I used the USB explorer which is basically leads to a plug and play model which I like. Rather than regurgitate xBee configuration, I found that it is well explained here. (Xbee Configuration tutorial) I tweaked the PAN, Baud rate, and type. I made the host a coordinator and the slave device a routing type. Again, explained well in the tutorial.
Just like the other parts of this project, I found soldering and wiring it up the hardest. I used left over wire wrap wires (I think the stuff is 20 years old) to connect things. I don’t wire wrap them and still solder. I like it because it is not tot bulky. It does break easy though. Anyway, I have a renewed appreciation for those who package hardware. Although mine works, only a mother could love the way it looks. Alas, it is for my own use so prototype mode is good enough.
Current Transformer Revisited
I revisited the current transformer wiring in the context of safety. Rather than use terminal blocks, I should have used simple audio jacks to simplify the wiring. Either way, there was a safety issue that loomed in the back of my head and I wanted to address it before wiring the sensors to the power mains. The secondary in an open circuit mode of a transformer (not connected to anything) can reach a high voltage and should it come in contact to a person, guess who is going to be the resistor for that voltage to close the circuit. You. It does not take much to kill you.
What I did was add a switch that shunts (shorts) the secondary of the transformer that I flip to “field work mode” before handling the terminals. This is not like shorting a 120 AC line. The voltage on the secondary is the function of the reflection of the impedance on the primary. This can get mathematical so I will spare the math. Suffice it to say that shunting the secondary won’t hurt the current transformer and will add another level of safety.
There are two ways I am willing to entertain for measuring current. One is via a current transformer and the other vial hall effect.
I combed the web to look for affordable devices in North America. It seems that Europe has access to cheaper current transformers. I ended purchasing three (3) current transformers and two(2) hall effect chips.
Two (2) revenue Grade Current Transformer Two from CR Magnetics to install on each side of my 200A pannel per each side (CR8459-2000-N)
One (1) general purpose 0-20A for experimentation CR Magnetics (CR8410-1000)
Two (2) Hall effect bases chips from Allegro ACS712ELCTR-20A-T
I ordered on-line via Digi-Key and found to have an excellent customer experience. I opted for one stop shopping for other goodies such as zigbee chips and other odds and ends. I also wanted something Canada friendly so I picked a place that operates in both Canada and US.
I entertained the idea of spit-core transformers to facilitate wrapping around the wire. I could not find some at a cheap rate and figured some higher quality ones could be used for permanent installation. I’ve done enough wiring to feel comfortable inside the panel box. I would not recommend venturing in high voltage areas without a good understanding what can harm you. Get an electrician to wire those if you have any doubts.
I have a bunch of AC transformers lying around so I plan on using those to measure the AC voltage. 120:10 volts p-p will do as that is all I have in stock.
I entertained the idea of using a multi-tasking OS such as The FreeRTOS Project and finding a board to host it. The KISS principle forced me to focus on deploying hardware to perform specific tasks and avoid creeping elegance. I only want a device that at will feed into the mesh network. No sense over engineering things. I can use the FreeRTOS for a data concentrator later on. There were many choices out there e.g. PIC and Micromint. I opted for simplicity and went with the Arduino Duemilanove.
I purchased my Aduino from spikenzielabs along with the following to help me get ball going.
- Arduino Duemilanove w/ Atmega328
- XBee Explorer USB
- Adafruit Proto Shield for Arduino
- Basic 16×2 Character LCD – White on Black 5V
- Breakout Board for XBee Module
Time to plug things in and see what happens.