- First steps
- Does it work?
Getting started can be tricky at times. It depends on where you come from and on your expectations. This section covers hooking up a JeeNode, uploading sketches, getting wireless communication going, setting up sensor nodes, and interfacing with JeeMon.
Soldering is not hard, it just takes patience and a bit of trial-and-error at first. There are many soldering tutorials on the web. In a perfect world, you'd only need a basic temperature-controlled soldering iron and some solder with a flux core. In the real world, it's best to also have a flux pen and some soldering wick around to fix up little accidents and mistakes.
My advice: don't stress. Things can and will go wrong at first. But such problems can almost always be fixed - it just takes more time and more patience.
JN build instructions¶
Detailed step-by-step [build instructions](http://jeelabs.org/2009/12/06/building-the-jeenode-v4/) for the JeeNode kit.
The USB-BUB from Modern Device has detailed info on their web site as [PDF](http://cdn.shopify.com/s/files/1/0038/9582/files/USB_BUB_instructions.02.pdf)
Other build instructions¶
See these build instructions for the [Flash Board](http://jeelabs.org/2010/05/07/assembling-the-flash-board/).
Does it work?¶
Whether you've built a JeeNode yourself or just got a pre-assembed unit, such as a JeeLink or JeeNode USB - you want to get something going. Now!
Connecting a JeeLink or JeeNode USB¶
First, connect the unit to your Windows, Mac, or Linux PC via USB. Lights didn't go out? Good :)
The next steps depend on your operating system. You can either use a serial terminal emulator such as UltraTerm (Windows), screen (Mac), or miniterm (Linux), or install the Arduino IDE. Whichever you chose, the goal is to figure out on what USB port you can acces the JeeLink or JeeNode.
JeeNodes and JeeLinks come preloaded with the RF12demo sketch. It communicates at 57600 baud (8 bits, no parity, one stop bit). A successful connection shows a help text as greeting, similar to this:
[RF12demo.3] W i23 g5 @ 868 MHz
<nn> i - set node ID (standard node ids are 1..26)
(or enter an uppercase 'A'..'Z' to set id)
<n> b - set MHz band (4 = 433, 8 = 868, 9 = 915)
That's it. You're connected.
See this page for a project which goes through all the steps to make an LED blink. In the case of Jeelinks and JeeNode USBs, you don't have to connect an extra LED, this example matches the on-board blue LED.
Connecting a JeeNode via FTDI¶
The JeeNode has an "FTDI connector". That's a 6-pin header with power, TTL-level RS232 receive and transmit signals, and a pin used for reset. There are different FTDI boards out there. The important detail is that JeeNodes operate at 3.3V but require a power source of 3.5V or more, so the FTDI board should supply power at 5V but use logic signals at 3.3V. The USB-BUB by Modern Device is a good option, since it can be configured in exactly that way (put the jumper on 3.3V).
You might get away with an FTDI which operates entirely at 3.3V, and you could use a fully-5V FTDI interface if you insert 1 k? resistors between each of the FTDI RX and TX pins and the JeeNode. Someone even reported bypassing the on-board regulator on the JeeNode and running the JeeNode @ 5V, even though the RFM12B is only spec'd up to 3.8V. It may work, it may not - YMMV, as they say.
Once USB is plugged into your FTDI interface and the interface is plugged into the JeeNode, the rest is the same as described above for "Connecting a JeeLink or JeeNode USB".
Going wireless for the first time¶
For this test you need two nodes (JeeNodes, JeeLink, whatever). This README is probably the best guide for setting it all up, right now.
You thought hardware was hard, eh? Wait 'til you see in how many ways software can go wrong...
Ports and RF12 libraries¶
For most of the code running on JeeNodes and JeeLinks, you'll need to use the Arduino IDE to compile the "sketches" and upload them to the board. You also need to have both the Ports and the RF12 libraries installed. There is an unfortunate inter-dependency between them, so even if you only use one, the IDE will still require the other to be installed and mentioned as #include directive.
See the links on the Libraries page for details on how to get these libraries.
This is a sketch running on JeeNodes and JeeLinks. It is in fact pre-loaded, so this is normally the first sketch you'll see when starting off with JeeStuff.
RF12demo has two purposes: to configure and try out wireless nodes based on the RF12 driver, and to act as simple central interface between a workstation and the other wireless nodes.
RF12demo listens to commands on the serial port. All commands are of the form "arg1,arg2,...,argN cmd", where each arg is a decimal value 0..255, and cmd is a single lowercase letter (no quotes). Missing arguments are interpreted as 0. Spaces, tabs, and newlines are ignored. Unrecognized commands cause RF12demo to print out the same help screen as on startup.
This rudimentary command structure uses very little of the ATmega's limited flash memory and RAM, yet it's sufficient to send out arbitrary data packets.
You need to use at least the following commands to get going (again, remember to remove the quotes):
- NNN "i" - set the node ID to NNN (normally an int in the range 1..26)
- NNN "g" - set the network group to NNN (anything int he range 1..250)
- N "b" - set the frequency band: 4 = 433 MHz, 8 = 868 MHz, 9 = 915 MHz
- "t" - broadcast a test packet and request an acknowledgement
10i 1g 9b t
(Pointers to more documentation are badly needed here - they will be added when available.)
[[JeeMon:]] is a switchboard-type application for hooking up anything to anything. Well, not yet, but that's the plan. JeeMon is work-in-progress. It does a few things nicely, but it's still rough.
See this weblog article for details on how to get started.
"Experience is what you get when you don't get what you want." - Dan Stanford
My JeeNode v5 doesn't do anything¶
Are you powering it from a 3.3V source using the FTDI connector? If so, make sure the solder jumper on the bottom of the board is bridged.
Background: v5 added an extra diode to the board, to protect from accidental reversed power on FTDI. This diode will drop the voltage by some 0.8V, which means that when powered from 3.3V, only 2.5V will reach the on-board voltage regulator and the rest. This is too low to run the ATmega at 16 MHz. By closing the solder jumper, the diode is disabled.
Can't push IC socket onto the JeeNode v4 board¶
Some of JeeNode v4 kits include an IC socket with bent pins. This doesn't work well on the JeeNode. You need to flatten the pins to be able to push the socket through the holes. See this post or note for details.
Something getting hot? Smell anything? Unplug!¶
The golden rule of electronics tinkering: Use Your Nose!
Seriously. Most digital components and chips are incredibly tolerant of abuse. What normally causes damage is not the voltage or the current, but the over-heating that is the result of it. If something is seriously wrong, a component may start to heat up to well over 100°C. If it does, it will start smelling or even smoking. Be prepared to unplug, IMMEDIATELY!
Here's a suggestion. Before plugging in a JeeNode for the first time (or inserting a new plug into one of its ports, for that matter), do one thing: locate the voltage regulator and put your finger on it. Then plug it in, turn on the power supply, whatever. If there is a short circuit, you will know - right away! It can be painful, but if you unplug in time, nothing serious will have happened.
The good news is that apart from some high current sources, such as LiPo batteries (and of course high voltages), there is very little that will cause permanent damage - and even then, replacing a component or two will often fix it.
These are hard to locate, usually. The trick is to simplify until you get to the bottom of the problem. In some cases, you may even have to unsolder components. But normally, very close inspection of all the solder joints is all it takes to pinpoint the source of a short.
Nothing happens, open connections¶
This problem is usually fairly easy to resolve. Just follow the incoming power, so to speak. As very crude instrument, you could use a LED with series resistor to find out where the power supply stops. But it's much easier to get a simple multimeter and measure voltages. You need look at the schematics and board layout to figure out where everything is. This takes some patience, but is fairly easy to get used to - besides, interpreting schematics is a valuable skill for all electronics projects.
Flakey behavior when moved / touched¶
This indicates a bad solder connection or a bad connector. Gently flexing a PCB in various ways may help identify the spot where it happens. Once you know which pin on a component, chip, or connector is loose, you can fix it.
Garbled characters on USB serial¶
This usually indicates that your serial terminal software is not set to the proper baudrate. The JeeLabs projects use 57600 baud for almost everything.
Can't upload to JeeLink or JeeNode SMD¶
As of June 2011, the JeeLink and JeeNode SMD are delivered with the "OptiBoot" loader, the other boards all still use the "Arduino Duemilanove" boot loader. Make sure you set the proper board type in the Tools menu of the Arduino IDE. For the OptiBoot, select "Uno" as type (you need IDE version 0022 or higher for this).
This can be caused by bad hardware (not being able to connect to a specific chip or plug) or by a bug in the software. Use various software techniques, such as inserting debug prints or turning a LED on or off via a spare I/O pin to identify the problem.