Silent Key : K1VTX -Loretta Federico SzretterYou will always be loved - and missed dearly.
|Welcome to my Amateur (HAM) radio site. I will try to post interesting bits of news and information related to our hobby, OR that are electronics related that I find interesting and hope you do too. You can subscribe to the RSS feed to receive updates to your rss reader, or follow me on twitter. Please comment if you have suggestions.|
Here’s a tutorial that will round-out your understanding of ZigBee wireless communications (translated). The protocol is great for hobby electronics projects because it uses low-power short range wireless devices to build a mesh network. The guide covers both hardware and software, but also takes the time to explain what that hardware is doing in the background. As you can see, several different renditions of an XBee module are used as examples. They pretty much all rely on a series of SparkFun breakout boards that each serve different purposes. Once you’ve acquired these modules, there’s a fair number of choices needed to configure them to play nicely with each other. We read most of the tutorial (we’ll save the rest for later enjoyment) and had no problem following along even without owning the hardware or being able to use the interface as we learned. Whenever we cover XBee modules we always like to mention that it’s quite easy to use these for remote sensors with no additional microcontroller needed: [Jody] wanted to know when his garage door was open.
A great option for adding temperature and humidity (and dew point) measurement to the Arduino (and freeduino) is to use the Hurimel HS1101 sensor. It is packages as a small board, approximately 1" x 2" with 4 screw terminals.
The only electrical connections are these 4 - 1 for ground, and 3 I/O pins used on the Arduino - 1 analog and 2 digital. The pin references used in this article are taken from a Freeduino BBB board.
The 4 pins on the Hurimel are THERM, PULSE, GND and V+. Besides a connection to ground on the Arduino, 3 additional pins will be required - an analog and 2 digital pins. One digital pin is used to provide power (+5VDC), in this example, pin 2 is connected to the V+ screw terminal on the Hurimel. Digital pin 5 can be used to count the pulses, connected to the PULSE screw terminal on the Hurimel. Finally an analog input is required for the temperature reading. Analog pin A5 on the Arduino connected to the THERM screw terminal on the Hurimel. Note that a 10k resistor must also be placed between 5V and analog pin A5 on the Arduino.
In summary, the electrical connections in this example are:
In a future article, the Arduino source code required to read the temperature, humidity and dew point measurements will be discussed.
The Arduino is a small programmable device that can hold a small program and perform tasks such as reading temperature sensors, turning on or off switches, and can even serve as the 'brain' for a robot. I have used the Arduino (actually freeduino) for projects related to HVAC and hydroponics automation.
It is often useful to be able to communicate with the Arduino - for example, a common use of an Arduino is for data collection. You may have a temperature sensor wired in to the Arduino and interface with flash storage to log the temperature data. Later you have to go remove the flash storage and transfer it to your computer. But what if you could communicate with the Arduino? With Ethernet or wireless connectivity, you could simple connect to the Arduino with a computer and capture the data real time. This offers much more automation, and opens a world of possibilities - real time alerts, real-time adjustments (have the Arduino switch something on/off) and more.
There are already a number of choices available for communications.
Serial: The Arduino has TTL lines, not traditional RS232, but it is possible for reasonable cost to use a conversion/level adapter or circuit. You could then run a serial line to a computer. This is acceptable in many cases, but restricts you to using one computer, and in the case of my home, the wiring is not as convenient. I have Ethernet cat5 running all over the place, so if I am going to use a wired solution Ethernet makes the most sense.
Here is another option for getting your Arduino (or other PIC) connected to your network (ethernet) - use an old NSLU2!
The NSLU2 and Arduino both talk TTL, but the NSLU2 is 3.3v and Arduino is 5v. Simple fix - add a resistor!
Only 3 wires are required - pins 2, 3 and 4 on the NSLU2. You do not want to connect the power pin. Per the table below, look for the white stripe - that is the power pin.
NSLU2 - pin-out of the J2 serial port
Pin 1 - 3.3v, pin 1 has a white stripe next to it
Pin 2 - RXD, receive from Arduino to NSLU2 (must have resistor)
Pin 3 - TXD, transmit from NSLU2 to Arduino
Pin 4 - GND, ground connection
This article is written in reference to the "Freeduino" - a BBB (bare bones board) type. Make sure everything is powered off and unplugged. Then, connect the TTL pins labeled "RX", "TX" and "GND" on the BBB to the proper pins on the NSLU2. The 4 serial port TTL pins on the NSLU2 are visible just below the battery to the right.
You must place a 10k resistor between the Arduino and the NSLU2 on pin 2 of the NSLU2 so the 5v coming from the Arduino are reduced to safe levels.
Now power up the Arduino and NSLU2 that is flased with Debian (SlugOS should work also). Install minicom (apt-get) and start up minicom and set the serial port to ttyS0, 9600, 8N1.
If the connections are correct, the TTL pins/port on the Arduino and NSLU2 are functional you should now see the output from the Arduino. If you do not see anything, be sure you have pre-programmed your Arduino with a program that outputs text at the proper baud rate. Also try powering off both units, power back up and try again. If you have made other hardware mods such as overclocking on the NSLU2, it is possible the serial port will not work. You must place a 10k resistor between the Arduino and the NSLU2 on pin 2 of the NSLU2 so the 5v coming from the Arduino are reduced to safe levels.
I am using some Arduino (freeduino BBB) units to monitor temperature, humidity and other sensor inputs for an HVAC project.
I needed a way to communicate with the unit, allowign it to send data and to send it commands.
I did not want to rely on the serial port, as that means a computer on the other end - if that computer fails (reboots, powers off), it would ultimately reset the arduino when the serial port opens again. Also, I want to keep as much logic within the unit itself for the same reason. The main reason for sending data out is for data logging and analysis. If I loose a little data, no big deal, as long as the unit itself is doing it's job reliably.
I looked in to ZigBee, XBee, PC-Net and other ethernet shields/chipsets. There are also various 'serial to ethernet' adapters / bridges. The main issue with these is cost. Just to get 2 units connected - one unit with the sensors, the other connected to a computer to send/receive data - it would cost approximately $50.00, is several configurations more than that.
So, I found some RFM12 units on ebay for less than $30 for THREE. They were fairly easy to wire up, code is straightforward, and they work well.
Look at the readme at this url, there is also a sample arduino sketch:
The readme will have additional links to get info on how these work.