Recently the people at Logos Electromechanical have announced their new product – the Zigduino.
The Zigduino is an Arduino-compatible microcontroller platform that integrates an 802.15.4 radio on the board. The radio can be configured to support any 802.15.4-based protocol, including ZigBee, Route Under MAC/6LoWPAN, and RF4CE. It uses a reverse polarity SMA connector (RP-SMA) for an external antenna. This allows the user to use nearly any existing 2.4 GHz antenna with it. The Zigduino runs on 3.3V, but all I/O pins are 5V compatible.
Pictured below is a production Zigduino kit with all components:
Thankfully all that SMD word is done for you. The only soldering required is the aerial socket, Arduino headers and the DC socket. All the components shown in the image above are included with purchase. The Zigduino specifications include (from the website):
|Input Voltage (recommended)||7-18V|
|Input Voltage (maximum)||6-30V (transients to -20V and +60V)|
|Digital I/O Pins||14 + 3 auxiliary|
|PWM Output Pins||6|
|Analog Input Pins||6 (0-1.8V)|
|I/O Protection||±30V transient|
|-2.5V to +5.8V continuous|
|DC Current per I/O Pin||20 mA|
|DC Current for 5V Pin||250 mA|
|DC Current for 3.3V Pin||200 mA|
|Flash Memory||128 KB of which 2 KB is used by the bootloader|
|Clock Speed||16 MHz|
|RF transmit power||+3.5 dBm|
|Receiver sensitivity||-100 dB|
|Antenna gain||2 dBi|
|Current Draw||30 mA (transmitting, USB, no I/O connections)|
|15 mA (transmitting, no USB, no I/O connections)|
|6 mA (radio off, no USB, no I/O connections)|
|250 μA (sleep)|
- Compatible with any shield that supports 3.3V logic
- Compatible with existing Arduino libraries that do not use hard-coded pin definitions
- Compatible with Arduino IDE with updated compiler, avr-gcc-4.3.3 or later.
- Ported bootloader and Arduino core libraries, on Github.
- IEEE 802.15.4 MAC, from Atmel
- ZMAC, a compatibility layer to allow the use of Atmel’s MAC from inside the Arduino environment, from ManiacBug
- BitCloud, Atmel’s ZigBee PRO implementation
The Zigduino can be powered through the USB connection or with an external power supply. The power source with the highest voltage is selected automatically.
External power can be supplied via a wall wart or a battery. It can be connected with a 2.1mm center-positive plug inserted into the power jack. Alternately, external power can be connected through the GND and VIN pins of the POWER header.
The board will operate correctly on an input voltage between 6V and 30V. It will survive transients as large as -20V or +60V. However, higher supply voltages may cause excessive heat dissipation at higher current draws. The input voltage regulator has integral overtemperature protection, so you can’t permanently damage the board this way. However, the board may not work correctly under these circumstances.
The power pins are as follows:
- VIN — The input voltage to the Arduino board when it is running from external power, i.e. not USB bus power.
- 5V — The regulated 5V used to power 5V components on the board and external 5V shields. It comes either from the USB or from the VIN via the 5V regulator. Maximum current draw is 250 mA.
- 3V3 — The regulated 3.3V supply that powers the microcontroller. It is derived from the 5V bus via a second regulator. Maximum current draw is 200 mA.
- GND — Ground pins.
The ATmega128RFA1 has 128 KB of flash memory, of which 2 KB is occupied by the bootloader. It also has 16 KB of SRAM (the most of any Arduino-compatible board) and 4 KB of EEPROM, which can be accessed through the EEPROM library.
Input and Output
Each of the 14 digital pins of the Zigduino can be used as an input or output, using pinMode(), digitalWrite(), and digitalRead(). Each pin operates at 3.3V and can source or sink 10 mA. Each also has an internal pullup, which is disabled by default. Each pin is protected against ±30V spikes and can tolerate continuous 5V input.
The six analog input pins, labeled A0 – A5, are likewise protected against ±30V spikes and can tolerate continuous 5V input. Each provides 10 bits of resolution and measures 0 – 1.8V. It is possible to change to a lower top voltage through use of the AREF pin and the analogReference() function.
A key design goal of the Zigduino is maintaining compatibility with existing shields to the greatest extent possible. The ATmega128RFA1’s peripherals are arranged slightly differently than the corresponding peripherals on the ATmega328 used in the stock Arduino. Therefore, in order to provide the desired shield compatibility, there are three solder jumpers provided on the back of the board. They function as follows:
- Digital pin 11 can be set as either SPI MOSI or a PWM output. Neither option is selected as shipped. SPI MOSI is also available on the SPI connector at all times along with SCK and MISO.
- Analog pin 4 can be set as either A4 or I2C SDA. Neither option is selected as shipped. Both I2C pins are available on the I2C connector.
- Analog pin 5 can be set as either A4 or I2C SCL. Neither option is selected as shipped. Both I2C pins are available on the I2C connector.
The following additional special functions are available:
- Serial: 0 (RX) and 1 (TX) — Used to transmit and receive TTL serial data. These pins are connected to the corresponding pins on the FTDI USB interface chip.
- PWM: 3, 5, 6, 9, 10, and 11 — Provides 8-bit PWM output with the analogWrite() function. Pin 11 must be selected for PWM operation with the solder jumper on the back of the board.
- SPI: 11 (MOSI), 12 (MISO), 13 (SCK) — These pins support SPI communications using the SPI library. Pin 11 must be selected for SPI operation with the solder jumper on the back, or SPI must be accessed with the SPI connector.
- LED: 13 — This is the built-in LED on digital pin 13. When the pin is high, the LED is on.
- External Interrupts: 2, 3, 6, and 7 — These pins can be configured to trigger and interrupt on a low value, high value, or an edge. See the attachInterrupt() function for details. The two I2C pins can also be used as interrupts.
- I2C: A4 (SDA) and A5 (SCL) — These pins support I2C communications using the Wire library. They must be selected for I2C operation with the jumpers on the back or I2C must be accessed through the I2C connector. They can also be configured as interrupts.
This is one very capable Arduino-compatible board and sure to find many uses. For updates and new ideas consider following the Logos Electromechanical blog page. Furthermore associated Zigduino files can be found on Github.
So if you are looking to expand into the world of personal-area networks, Zigbee wireless and so on – you could do very well by considering a Zigduino or two. For more information, questions, support, and to purchase visit the product website, Seeed Studio or lipoly.de.
After viewing the trailer for Karl von Muller’s upcoming documentary State of Electronics – A discussion on the Electronics Industry in Australia, it brought back some fond memories of bashing about with a range of kits from many years ago. So today we will have a look at a few of them. But first some history (feel free to correct me here)…
In 1968 an enthusiastic man by the name of Dick Smith started a small car radio shop in Neutral Bay, Sydney. Although he had many ups and downs – through extremely hard work, marketing in ways Australia had never seen before (see the bus below), and revolutionising electronics and computer retailing in this country – he built up Dick Smith Electronics to a company so large he sold it for a huge sum and moved on to other successful ventures. You can download his biography from here.
Dick Smith Electronics’ stores were the place to go for components, a huge range of electronic kits, an interesting range of computers (in [earlier] kit and assembled form), amateur and CB radio – all the fun stuff. You would almost need a shotgun to clear the store out on a Thursday night or Saturday afternoon. There were also repair centres in each capital city and head office, that employed people to fix things for warranty service (and they would fix kits for a price as well). Before the internet one would stalk the mailbox waiting for the new catalogue to arrive. I even worked there for four years in the 1990s. Unfortunately due to market changes and carbon-based factors, the stores are now just glorified flat-screen TV and video game outlets.
However, partly to educate people (and probably to make more money), Dick Smith wrote a series of books titled “Fun Way into Electronics”, starting with the first in 1979. This entailed twenty very basic electronic circuits, such as flashing LEDs using a multivibrator, basic transistor amplifiers, and a “beer powered radio” (I wonder how many children tried that fuel cell?). The book had paper overlays which you would glue onto a piece of chipboard, and screw the components down to form a circuit. Later editions would use a plastic board with holes:
The Funway book was very popular (and still is with some schools, Scout groups and so on), so Dick published volume two from 1980. Finally some “real” projects – twenty kits that required soldering and could be of some real use in the world. Items such as a shortwave radio, intercom, timing devices, digital counters, and a mosquito repeller of dubiuos success. However they sold very well, and in 1984 the final volume of the Funway trilogy was published – another ten projects – “each with an integrated circuit!”
The books were illustrated in a very clear, simple way sometimes hand-drawn but very neat. I suspect some women in the books were meant to resemble associates of Dick Smith, and in general the book is a ‘snapshot’ of the times. For example, the transistor radio:
Please note that I will not email you a .pdf of any of the books mentioned, so kindly don’t ask – they’re still Copyright DSE Pty Ltd. Part of my reasoning for this article was the fact that the Funway era has now drawn to a close. Whilst recently wandering about in a Dick Smith store for some reminiscing, I noticed the remaining stock of Funway 2 kits on the clearance bench and the matching volume two books, which compelled me to rescue them.
At the register, the sales clerk asked me “Why would you want to make a radio?” … ugh
So let’s take a trip back to 1980 and see how they perform!
Wow! I found another kit – project seventeen, the LED level display. It was designed to show audio levels in a blinky form – the addition of a pair to your home or car hi-fi would put those analogue VU meters to shame whilst impressing your friends. When fitted inside the optional box and the label applied, you could be as cool as the guy below looking like he’s getting revved up for a night at the discotheque:
So time to give it a whirl. I remember this kit back in 1985 when a friend gave it to me from someone else, he cut off the LEDs for himself, and I ended up with the useless board. Thanks Tony. Well 28 years later here I am with the brand-new version:
Otherwise everything was as expected, all the parts and the poor PCB included:
Construction was relatively simple but tedious, 22 resistors, 10 diodes, 10 LEDs, 11 transistors etc… just careful and steady work to get it done. This would have kept a teenager busy for a good weekend inside. After an hour and an espresso the board was populated:
Not wanting to chop up any audio leads to test the kit, I’ve instead put some pins on the power supply and input pairs for a quick demonstration. For a signal I’ve attached a function generator and fed a sine wave at various low frequencies. Here it is in action:
In hindsight that’s a pretty fun kit, and with some careful work it would have looked good in a contemporary audio system. It probably could have been done a lot easier with an LM3914 however the cost may have been prohibitive at the time.
Next we have Project Sixteen – the Electronic Siren. This is basically two 555 oscillators, one for the sound, and the other for the duration – which combined with a basic amplifier make a “hee-haw” sound. This kit would have been included as a good sales add-on for the Home and Car alarm kit also described in the book. Typical of the series, when you purchased a kit it would come with the bare minimum, just enough to make it work (excluding the battery):
Naturally a full range of extras would be mentioned in the book, available from the store when required. The PCB looks like it was made at home – examining this one I can now be more grateful than ever for silk-screening and solder-masking on current PCBs:
To make annoying people easier I will add in a SPDT toggle switch, and use some IC sockets for the 555s. Assembling the kit took no time at all, the instructions were clear and easy to follow:
Starting the soldering caused some flashbacks to my childhood, which were interesting. Assembling this at my age was much quicker than as a young lad – my soldering style has changed, and I also have a Fluke 233 to check the resistor and capacitor values. There was one nod to the future in the kit, the polyester capacitor was replaced by an MKT. The only reason to use the IC sockets was so I could reuse the 555s later on. Moving on, here is the finished article:
And did it work? Absolutely – have a listen:
It is really quite loud, that 0.25 watt speaker is being pushed quite hard. According to the book you can connect a horn-speaker directly to the output. Furthermore there are suggestions on how to alter the frequency and duration of the sounds. So overall, this was an easy to assemble kit that was still some fun even to this day.
The next kit to examine is Project Eleven – FM wireless microphone. This consists of an oscillator of around 100 MHz, which receives a signal via the tiny electret microphone. The book illustration shows a Donna Summer lookalike with a guitar, however one could imagine people building these kits and using them as ‘bugs’ and generally getting up to no good:
Again, the clear images and instruction layouts are constant throughout the book. There were two errata sheets included with the components, as the design has been altered a few times. However they were easy enough to follow, and the correct replacement parts had been included:
Once more the PCB was a product of the time. After having issues with the siren kit’s PCB, I gave this one a good squirt with some Servisol PCB cleaner – that made a difference when it was time to solder:
From a beginner’s perspective, this would have been a slightly more difficult kit to assemble, due to the all the vertical resistors and the close spacing between the components. However this was to enable budding ASIO operatives to make their ‘bug’ as small as possible. From memory this is the trickiest of them all, the rest of the Funway 2 kits had generous PCB spacing. I must admit to breaking a 470 pF ceramic capacitor, but that was my own silly fault. However at the end it all came together nicely:
And it worked. I have a feeling that the variable capacitor was damaged a little from heat due to the soldering process, for some insane reason DSE supplied a plastic-encased version. Later on I will replace it and see how we go. But for the meanwhile, with a 20cm aerial wire, I could get about 5 metres out of it with a brick wall in between. Considering the target market for this, that’s pretty good.
The next kit is Project Seven – Pocket Transistor Radio. This is a basic amplitude-modulation radio receiver making use of the MK484 radio-receiver IC. This is a bog-standard simple AM receiver circuit that dates back to the early 1970s. However, it is simple and uses very few parts. Originally the kit was sold without an earpiece or socket, but the last few batches included everything but the battery and a switch:
Once again there were two errata sheets – one explaining the different pinouts of the MK484/ZN414 radio IC, and another showing the evolution of the radio circuit, a capacitor had been replaced with a resistor. There were a couple of tricks to assembling this kit, some pin spacings were unnecessarily close together, and the leads on the antenna coils were terribly difficult for me to discern. Thankfully the book offered some great advice – use a multimeter to determine the resistance of each coil. The coil with the lower resistance is the aerial coil, and the higher resistance is the main coil. And once again I have added a power switch. After some trepidation, the main board was finished:
Ah – where is the 9V battery? With regards to the circuit, versions as published in the book and the errata sheet are quite inefficient with regards to power usage. Let’s have a look:
As part of my electronics learning process, I like to follow the circuit through to see what is going on. The book has the power being supplied by a 9V battery, then using a 6.8V Zener diode. What was the point of that? Instead, I put a link on the PCB instead of the zener, and now the power is from a single AA cell. Much, much cheaper to run now, the receiver only draws nine milliamps of current:
And to think some people have to recharge their music players every day. The radio worked from the first time the battery was connected, and is working very well. The volume/gain is controlled by the 5k trimpot, I have this set to around half-way to a comfortable volume. The reception is highly relative to the positioning of the ferrite rod aerial, so I have locked it into place using some blutac. It receives local AM stations very well, and also some rural stations from interstate. For the price and the amount of parts, this is a very simple, easy to construct receiver with excellent power consumption – which is begging for a solar panel for daytime use. Maybe next week! So we have another success.
Update! I found another kit – the “Universal Timer”. This is basically an over-engineered 555 timer that controls a simple SPDT relay. The 555 is configured as a monostable timer, and the duration controlled by a 1 mega ohm trimpot. I have a feeling the design brief was for an egg timer, based on the illustrations:
Once again, the illustrations of the final product don’t bear much of a resemblance to the contents of the basic kit:
Again, the PCB was quite basic and needed a good clean:
Construction was quite simple, all of the parts fitted nicely where they were meant to. Not bad considering the PCB was designed around thirty years ago, and the parts are much more recent – especially the relay. To make some sort of demonstration I had to add a few extras – a power switch, the piezo buzzer, IC socket and a potentiometer instead of the trimpot:
Though once again it worked, and I actually have a use for it – a shower timer for an intelligent person who seems to forget the concept of time when in the bathroom. A quick trip to the store for a moisture-proof IP67-rated box and we’ll be set.
Unfortunately with the discontinuation of these Funway kits means another opportunity to teach people has gone. I hope you found this article interesting, and helped motivate you to expand your knowledge and those of others in the STEM (science, technology, electronics and maths) area. If you have any Funway projects to share, please get in touch. Some higher-resolution images available on flickr.
In the meanwhile have fun and keep checking into tronixstuff.com. Why not follow things on twitter, Google+, subscribe for email updates or RSS using the links on the right-hand column? And join our friendly Google Group – dedicated to the projects and related items on this website. Sign up – it’s free, helpful to each other – and we can all learn something.
In this review we are going to have a look at some new wireless data modules that have just arrived on the market. They are the Databridge Wireless I/O modules from Starman Electric. Although there are many types of wireless modules out there, such as the discount 315 MHz units that are somewhat unreliable (well for me); and the great XBee series (as we used in Moving Forward with Arduino – Chapter Fourteen) – these Starman modules take it to the next level. How?
The concept of a databridge is a delightfully simple one. The two modules take the place of a wire. Digital, analogue, UART, even PC serial. No firmware settings to adjust, just plug them in and they work!
First of all, there are two physical types of unit, either DIP mount or SMD. The units below are the DIP version, 1mW output power:
The graph paper is 5mm square, and the module measures 53.85mm by 25.91mm. The DIP packaging (above) is meant for experimenters and prototypes, you can order SMD versions for production runs. There are also two power-output versions, 1mW with a theoretical range of 1km, and a 100 mW with a range of 4km. The higher power modules require the use of an external antenna. They require 3.3 volts DC, with a peak current draw of 37mA for the 1mW, and 120mA for the 100mW. For demonstration purposes I am using a Texas Instruments LP2950 to provide 3.3 volts DC at up to 100 mA.
Although the specification sheet is quite long (and you can download it from here) there are a few features that really stand out, including:
- Automatic connection – a pair of modules will ‘lock’ onto each other without any extra work by the user;
- A very high sampling rate of 200 samples per second with a latency of five millisconds;
- Spread-spectrum radio operation – the modules will skip frequencies themselves for reliable connections;
- You can have sixteen unique pairs working in the same area without cross-interference;
- You can have two analogue channels and multiple digital channels simultaneously.
But enough talking, time to put them to the test. I will recreate some examples found in the Getting Started manual available for download here.
As I only have one pair of modules, and somehow I think my neighbours won’t be using any at this point in time, there is no need to set the pair’s unique network ID. However you do need to specify the master and slave in the module relationship (no switches…), which is done with pin 4 – to Vcc for master, and pin 4 to GND for slave. Now on with the show!
The first example of interest is number two in the guide – the wireless digital and analogue I/O bridge. To me this seems like an interesting wireless “repeater” to some Arduino analogue and digital outputs. Here is my test schematic used for the demonstrations in this review:
Well this is a temporary test! The slave module board is running from a 9V PP3 battery so I can take it for a walk.
Anyhow, the setup is – four digital out lines from an Arduino, which are either high or low (+5v or GND). These are connected to pins ‘digital signal’ 1~4 on the master Databridge. Furthermore, Arduino analogue pin 1 went to the Databridge ‘analog signal’ pin 1. At the slave side of things, there are four LEDs with current limiting resistors connected to pins ‘digital signal’ 1~4; and two wires each from ‘analog signal’ 1 would be connected to a voltmeter. The digital output pins on slave modules default to ‘high’ unless driven otherwise.
Finally, there is also an LED and current limiting resistor coming from pin 32 of each unit – the ‘link’ pin. The link pin is a lifesaver. Here is a great feature – when the pair of units are within range of each other and matched as a pair, link goes high (3.3V). Out of range? It goes low (0V). Therefore you can test the range on these modules just by powering them up on a breadboard each, with the LEDs on pin 32, and go for a walk with a unit. When the LED is off – you’re out of range. And when you come back into range, the modules reconnect automatically.
Back to the test. First I just created a loop which turned the digital pins on and off, and the matching LEDs on the slave unit blinked on and off as expected. No extra code, no trying to create wacky functions to multiplex/demultiplex signals – this just works. The modules are like an invisible bunch of wires between two points. Never has anything wireless worked so easily for me.
Here is a quick video clip, first notice the lonely LEDs on each breadboard – the are the link LEDs. When I power cycle the master or slave, notice how quickly they reconnect. Please note that the slave unit retains the state of the digital outputs if connection is lost. So if a pin is high while connected – if the module loses radio contact, the pin will stay high.
The theoretical maximum working range is quoted as 1km for these 1mW modules. My indoor test allowed a distance of 11 metres, with three concrete walls of a thickness of ~110mm in between. Unfortunately living in my area I could not find a flat, open area large enough to test the maximum open-air range – however considering the indoor ‘concrete wall’ test and my experience with other wireless equipment of this power output, it would be accurate in an outdoor, line-of-sight application. As always, conduct your own real-life tests before making any project commitments and so on.
And as always, I was curious about the current draw of the units while in use. The master module with the link LED on measured 53 milliamps, with the slave at the boundary of the radio range:
The current use only dropped around 2 or 3 milliamps when the slave was next to the master. The slave module used 59 milliamps with the link LED on:
Therefore taking the LED current draw into consideration, the power usage of these modules is quite low considering the level of communication between them and the high sampling rate.
The next test was to see how the analogue data lines performed. According to example four in the Getting Started guide, the modules will reproduce an input of between 0 and 2.4 volts DC. So I have placed an 11k ohm resistor in series with a 10k ohm potentiometer with analog input 1, and measured the resulting output from the slave. Notice how I still have the digital data lines in use while using the analogue line. Here is a short clip of this in action:
Amazing – a multitasking wireless module. Note that you could always use an op-amp to boost the output voltage back to the 0~5V DC range, an example of this is on page nine of the Getting Started guide.
Those above were but two from the many possibilities available when using these units:
- wireless serial data links
- remote on/off control of six items
- robotics remote control
- microcontroller I/O wireless extension…
Frankly – if you need to wirelessly connect more than one data line simultaneously, you have an excellent solution with the Databridge modules.
Update! – Radio licensing information:
These modules operate in the 2.4 GHz ISM (industrial, scientific and medical) band. For those in the USA, the Databridge is an FCC-approved “class B” device, and is only for use by OEM integrators (see page 16 of the datasheet.pdf). Starman Electric also state that the Databridge is certified for Canada and the EU (ETSI).
For those here in Australia, these units are operated under the conditions of the Radiocommunications (Low Interference Potential Devices) Class Licence 2000, and I feel are classed as “spread spectrum unit” under the preceding license.
Please conduct your own research with regards to radio transmitter licensing in your area. Furthermore, please read the tronixstuff “boring stuff” here.
But enough about that, where you can get them?
Remember, if you have any questions about these modules please contact Starman Electric via their website.
[Note – these wireless modules were loan units received from Starman Electric for review purposes]
In this instalment we will start to investigate radio data transmission; then introduce rotary encoders.
As technology has marched along and generally improved on the past, things have been getting small and relatively cheaper. What was once jaw-droppingly amazing is now just meh. But as you are reading this, you know differently. We can now take control of this technology for our own devices. What has been in the past quite unapproachable is now relatively – the concept of wireless data transmission. But no just sending a signal, like a remote-control garage door opener – but sending actual, useful data – numbers and characters and so on.
How is it so? With this pair of tiny devices:
Quite small indeed – the pins are spaced 2.54mm apart, and the graph paper is 5mm square. The transmitter is on the right. This pair operates at 315 kHz, over up to a theoretical 150 metres. The data transmission speed is 2400 bps (bits per second). These units are serial passthrough, that is they can replace a link of wire between the serial TX (pin 1) from one Arduino, and the RX of another Arduino (pin 0). They don’t need aerials for very short distances, but the use of one will extend the range towards the maximum. And finally, the transmitter needs between 2 and 10 volts; the receiver 5. Here is the data sheet for these modules: 315MHz.pdf. Normally they are sold individually, for example the transmitter and receiver. You can also find faster (data speed) modules, however we will use these ones today.
In preparation to use these modules, another library needs to be installed – the VirtualWire library. Download the latest revision from the following location: http://www.open.com.au/mikem/arduino/.
There is also a guide to using the library in .pdf format as well. Please note the library author’s instructions with regards to licensing on the last page of the guide. For a refresher on how to install a library, please head back to chapter two. This library will save us a lot of time, it takes care of checking for errors, and only allows complete, correct data (i.e. what is received matches what is sent) to be used in the receiver’s sketch.
However, as wireless is not 100% reliable, you need to take into account that transmissions may not be received, or erroneous ones will be ignored by the receiver’s sketch. You can reduce the data speed to improve reliability and range. Furthermore, you cannot use PWM on D9 and D10 if you are using VirtualWire.
Therefore if you are using this for some important communications, have the transmitter repeatedly sent the message. Later on in this series we will investigate more powerful solutions. Anyhow, moving along …
First of all, we will demonstrate the use of these modules with a basic sketch. It sends some text from one Arduino to another. The receiving Arduino sends the data to the serial monitor box. Of course you could always use an LCD module instead. In my own inimitable style the sketches are very simple, yet allow you to use their contents in your own work. Here is the sketch for the transmitter – tx.pdf and the receiver – rx.pdf.
When working with two sketches at the same time, you can have two Arduinos connected to your PC simultaneously, just remember to select the correct USB port for the correct Arduino. Do this with the tools > serial port menu option in the IDE. Otherwise you will become very frustrated if you upload the rx sketch to the tx Arduino.
Furthermore, you will need to remove the wire from digital 0 to the data pin on the receiving units before uploading the sketch. And finally, remember to set the serial monitor window at 9600 baud.
Here are my two boards in action:
Although having both boards connected to the one computer is only useful for demonstration purposes, in real life this is obviously useless. Remember that once you upload your sketch the Arduino doesn’t need a computer, only a power supply. You can feed yours between 7 and 12 volts DC through the socket. A nice switchmode power pack will do nicely, or if you are a cheapskate like me, a PP3 battery and clip soldered to a DC plug:
You may find that when you use a battery powered Arduino that it basically does not work. Arduino genius Jon Oxer (co-author of Practical Arduino) has found a solution for this issue – place a 10k resistor between GND and digital 0 (RX), or between digital pins 0 and 1. The next thing to consider it improving the reception range. This can be done using two methods – the first by connecting an external antenna, either a length of wire, or perhaps a purpose-built aerial. The second method is to increase the supply voltage of the transmitter up to 12 volts.
Now it is your time to do some work:
You now are able to send characters using the radio link from one Arduino to another. Now it is time to control things remotely. For the purpose of the exercise, we will just control three LEDs, turning them on and off. You already know how to control other things with digital output pins, so we just need to focus on getting the switching on and off. Hint – you can send characters via the wireless link, so create your own codes.
You will need:
- Two standard Arduino setups (computer, cable, Uno or compatible)
- two breadboards and some connecting wire
- One transmitter and one receiver unit
- three LEDs
- 3 x 560 ohm 0.25 W resistors. They are to reduce the current to protect the LEDs
Here is the schematic of my interpretation:
… the transmitter:
… the receiver:
and the video:
So how did you go? Hopefully this exercise was easier than you had first expected. If not, here are the example sketches: exercise 11.1 tx and exercise 11.1 rx. A basic transmit/receive system like this would also be handy for testing the range that wireless modules can operate over, or testing a particular site to see if you could implement such wireless modules. It’s always better to test before agreeing to make something for someone.
That concludes our work with radio wireless links – for now.
Next on the agenda is the rotary encoder. Recall how we used a potentiometer in the previous chapters as a dial, to select menu options using the readdial() function. It was simple, cheap and it worked, but some may say it was a kludge. There must be a better way! And there is, with the rotary encoder. A rotary encoder looks like a potentiometer, but it is a knob that can be rotated in either direction infinitely. Furthermore, the knob is also a normally-open button. The encoder we will be using in this chapter is a 12-step encoder, in that you can feel it physically resist rotation slightly twelve times over the 360 degrees of rotation.
Here is our example:
On one side there are three pins, and two on the opposing side. On the perpendicular sides are legs for strength, that is they are meant to be soldered into a PCB to lock it in nicely. The problem for us is that those legs interfere when trying to use the encoder in a breadboard, so I have bent them up and cut them off:
The pins are easy to understand. The two pins on one side are the button contacts, just like any simple button. The other side with the three pins – the centre goes to ground, and the outside pins are the forwards and backwards output pins. The data sheet for our encoder is here. After fooling about with this all afternoon, the quickest way to get a feel for how it works is with a simple demonstration. So first we will test it out, then see how we can use it in our user-interfaces.
This example is very easy to assemble. You only need an encoder, and the usual Arduino setup. Here is the sketch, and the schematic:
and in real life:
and finally a snapshot of the output. Don’t forget to set the speed in your serial monitor box to 115200 baud:
So as you can see, this is a much better solution that then potentiometer that we used in the past. Plus having the button integrated in the encoder is very convenient, you can really create a user interface with only one control. In the next instalment of this series we will implement the encoder in an existing design. So on to Chapter Twelve.
Have fun and keep checking into tronixstuff.com. Why not follow things on twitter, Google+, subscribe for email updates or RSS using the links on the right-hand column, or join our Google Group – dedicated to the projects and related items on this website. Sign up – it’s free, helpful to each other – and we can all learn something.