New Product: SMD LCD 117

The original serial LCD117 was one of two boards that utilized a PIC chip running firmware developed by the late electrical engineer Peter Anderson (KZ3K), who taught in Baltimore, Maryland.

Peter made the firmware freely available before he passed away.
Both Brian Riley‘s K107 serial board and our LCD117 kit were based on these LCD117 chips.

We’ve sold several thousand of our through-hole serial LCD117 kits since we designed it in 2008, and received many orders for pre-assembled boards. Looking around the shop, most pre-assembled things are surface mount– it’s easier for everyone that way, as surface mount assembly is much cheaper. With that in mind, we created the SMD LCD117.

It receives TTL serial (optionally RS232) on one side and and drives an HD44780-compatible LCD, just as the older through-hole LCD117 kit did.

Solder on the included 3-pin and 16-pin headers and you’re ready to talk to any of our character displays, 3.3v or 5v.
We’ve also added an inverted logic mode, available via SMD solder jumper, for RS232 support.

Here’s how easy it is to use with Arduino– plug the RX line into your Arduino TX pin, and:

void setup() {
Serial.begin(9600); // 9600 baud is chip comm speed
Serial.print("?G216"); // set display geometry, 2x16 in this case
delay(500); // pause to allow LCD EEPROM to program

void loop() {
//Serial.print("?y0?x00"); // cursor to beginning of line 0
Serial.print("?f"); //clear the screen
Serial.print("hello world");
delay(1000); // refresh every second

In this configuration, Arduino Serial.<thing> debug statements print straight to the display!

Go check it out in the shop

Oh, one more thing. In honour of the debut of the SMD version, we’re putting the old through-hole LCD117 kits on sale. $8, matching the new SMD boards, while supplies last.

By Nadya on August 28, 2015.

Motion Plug code updates

Seb Madgwick IMU demoDemo by SebMadgwick

Our Dutch collaborator, Jean-Claude Wippler, recently pointed us to more polished code on GitHub for the MPU9250 (Motion Plug). This board uses the Invensense MPU9250 and includes 3 axis: accelerometers, gyros, and magnetometer. The software was written for something called rpicopter, work that appears to be significant group effort to us.

Screen shot 2015-04-01 at 2.39.57 PM

We have simplified the Arduino sketch and turned it into an Arduino library. The library only supports hardware I2C pins on whatever Arduino or Atmega chip you’re using, because it uses 400khz high speed I2C. There are settings for the low-pass filter which only affects the Gyro, as far as we can see. It default is 188Hz (defined in inv_mpu.cpp). The library also supports the Teensy.

The library outputs Yaw, Pitch, and Roll (standard orientation headings in the flying business) smoothed out in an almost magical way. This comes courtesy of some very fancy math functions.

“A quaternion is a four-dimensional complex number that can be used to represent the
orientation of a rigid body or coordinate frame in three-dimensional space.” says Sebastian O.H. Madgwick, who wrote the sensor fusion algorithms which bear his name.

In any case, all the quaternions are now hidden out of sight (in mpu.cpp), the library works really well, and the Arduino sketch is easier to read and modify.

By Nadya on March 31, 2015.

RFM69 Radios

New Radios!

The RFM69CW radio module by HopeRF is a compact, powerful radio transceiver module for swapping data packets in the 868 MHz ISM band, using standard and enhanced FSK modulation. The radio is great for sub-compact designs; just 4mm of mounted height from using an SMD precision crystal.

Though consuming a similar level of power, the RFM69CW receiver section can decode fainter signals than the classic RFM12B, so it has better receive sensitivity. The transmitter section *maximum* output power is +13dBm, considerably higher than the +5dBm of the RFM12B. The current drain at these (adjustable) higher power settings is correspondingly higher though. With the better receiver sensitivity, many applications will not need to use the higher transmit power settings, potentially saving on battery life.

Compared with the RFM12B, pairs of RFM69 modules will generally have greater range and/or better penetration of walls/ceiling than when using pairs of the classic RFM12B.

The physical module is compatible with the PCB footprint on all current JeeNodes and JeeLinks. For details of the fast-evolving level of software support, see this Forum topic on the JeeLabs forum.

Control is via a fast SPI bus with reduced loading on the microcontroller, another nice advantage with the radio. The recommended power supply range of 1.8 < Vdd < 3.6 V can squeeze almost the last energy out of depleting batteries without needing a boost converter.

An antenna must be connected to RFM69 module – for 868 MHz, an 82-mm (quarter wavelength) wire can be used (not included). Operation without an antenna at the higher transmitter power levels risks permanent damage to the output stages.

Marking Convention: a yellow spot on the top of the transceiver chip indicates optimized for the 868 MHz ISM band. You can have confidence that you are building your project with a fully functional module!


  • More transmit power than the RFM12B (but more current required).
  • Better sensitivity on receive.
  • An RF signal strength is available
  • Fits the current RF12B footprint
  • The JeeLabs driver fully supports the radio with only one definition change at the top of a sketch.
  • RFM69 and RFM12B radios may be mixed in a JeeNode network and talk to each other.

For detailed specifications, see HopeRF’s RFM69CW documentation.

The RFM Board provides convenient signal breakout with an option for connecting to 5V power systems.

Digital Smarties (The JeeLab Shop) stocks a 868 MHz version of these modules with EU prices. Both Modern Device and Digital Smarties (Jeelab Shop) have the 434 versions.

Right now we are selling these on RRM12B boards and JeeNode kits.

By Paul Badger on March 19, 2015.

Maxbotix Ultrasonic Rangefinder MB1013 (1mm Resolution) Proveout

A month or so ago we decided to carry the Maxbotix’s line of ultrasonic rangefinders (the MB1010, MB1013, and the MB1200 are the models we have currently stocked).  The MB1013 in particular caught our eye in its claim to have a resolution of 1mm, so we decided to put it to the test. We lashed together a test rig with two panels (of plywood) that are raised and lowered by three drive shafts of 1/32″ threaded rod (pictured below).




The board has two holes in the opposite corners that make mounting to a surface a no-brainer. We quickly proved out the analog output using a 5v power supply and a multimeter, but we wanted the most precise measurement. Opting for the serial (digital) output  reading with an Arduino- both methods are covered in the Maxbotix tutorial. For ease of documentation, we hooked up the Arduino to an LCD driven by our LCD117 board, for an easy three wire interface to the LED. This was just handy way to get feedback without a laptop or desktop. Actually the USB cable in the picture below snakes about 10 ft to the nearest desktop in our shop.


Our threaded rod was 32 threads per inch, which is equivalent to 24.4 mm, so one thread represents 32 threads per inch / 25.4 mm per in. or 1.25984 threads per millimeter. This allowed us to index the jig 1.25 turns per unit and not have a lot of error, with an error of .246 threads per 25 turns. In any case we indexed all the way through one inch,

Our results showed that it does indeed have a 1mm resolution, meaning that 1 1/4 turns did actually correspond with a Maxbotix output of 1mm! Our algorithm kept the readings consistent with the range up until around 620mm – where the sensor’s output started to report smaller values than the measured distance, ending up 8-10mm ahead of where it was supposed to be at 582 mm. Maxbotix cuts off the serial output of the sensor at 300mm (11.8″) so one could speculate that the error in the electronics started to be a factor in the measurement, which lead to Maxbotix to cut off the specification at 300mm.



Check out the raw data here.

The max range and cone shapes vary from the sensors we have available. They could be used for things like a parking sensor (found in most modern cars), self-navigating robots, or a suit that helps you navigate blind. Maxbotix has done a great job  of taking ultrasonic measuring technology and pushing itas far as they can in accuracy, range and sensing properties (sensing cones) in these very low-cost sensors. Here’s a line up of the models we carry at Modern Device.

MB1010 LV-MaxSonar®-EZ1 – Least Expensive, good starter ($27.97)

MB1013 HRLV-MaxSonar®-EZ1 – Highest Resolution (1mm)

MB1200 XL-MaxSonar®-EZ0 – Longest Range (300in)


We got in contact with the good people at Maxbotix and showed them our research. They were pleased to see us exhibiting their equipment, and gave us some feedback on our setup…

First, I reviewed your test setup and thought you did a pretty good job. As such there is a variable that can make a big difference in your testing results. This is the temperature compensation and the location of measurement. Going though a vertical column of air is known to typically have temperature variation from the top vs the bottom. This change in temperature can affect the temperature compensation of the sensor and lead to some inaccuracies. For best accuracy, it is recommended to use a MaxTemp mounted half way between the target and sensor so that you have the most accurate temperature reading. Even one or two degrees c will have an effect on the reported range. 

You can view more on the MaxTemp at this link

By Britton on January 28, 2015.

New Product – ExtraCore MD – Alarmingly tiny Arduino Clone!

Dustin Andrews created the first ExtraCore Arduino which is the size of a postage stamp. We sold the first batch we had, and by that time, the original was extinct as Dustin had moved on to another job and didn’t want to make more. We decided to respin the board with a few improvements and a smaller chip. The result of our efforts is in the shop  here .

The ExtraCoreMD, as we’re calling it, is a minuscule form factor Arduino clone, ideal for applications where space and weight need to be kept to a minimum- aircraft, robotics, fashion, wearables. The size of the board is .92″ x .825″ (21mm x 23mm), and it is manufactured on 1.3mm PCB for a sleek height profile of only .09″ (2.2mm). The board is small enough to conceal in jewelry, or DIY musical greeting cards, or wearable tech, if you’re crafty.

Programming is through our USB BUB or any standard FTDI cable, unlike the first ExtraCore. We also made one non-fatal mistake in the boards, although we are revising them immediately. The labels on the VCC and Vin are just swapped.

We cooked up a quick example app, just to prove out the board, using 18 pins (all the I/O except RX & TX) LED’s with a basic loop. Keep posted for more experiments using this board.


There are more details on the product page:

We’re giving away ten of the boards, with orders over ten dollars. Use coupon code EXTRACOREMD.

By Britton on January 23, 2015.

New Product Bundle: Jeelabs Mini Starter Kit!


We are introducing a starter kit for JeeLab’s JeeLink and JeeNode SMD!

This Jeelabs Mini Starter Kit kit comes with everything you need to start working with wireless communication. We have also included a USB BUB II to interface with the JeeNode SMD. All products are surface mount and require little assembly to attach headers. We can also solder all headers on both the JeeNode SMD and the BUB II for an additional charge.

Save 25% off both the Jeenode SMD and the JeeLink, and 28% off the USB BUB II when you purchase them bundled together!

If you for some reason decide to get to different frequencies please let us know in the customer comments upon checkout. The kit will not work together if you purchase two different frequency modules.

By Britton on December 29, 2014.

Free Shipping Every Weekend!

We offer Free USPS First Class Domestic shipping every weekend for orders over $10 to help you save a few bucks here or there. We tend to start the weekend early, so Free Shipping gets activated around 3pm EST Friday, and deactivated at 10am Monday. If for some reason the option is not available, please feel free to contact us and we will fix that!

Despite offering this for quite some time, I have noticed that not everyone takes advantage of this offer. When checking out, make sure you select the option “Free Shipping on Weekends, Domestic US only.” Please note that orders that are over 13oz in weight are not eligible for First Class Mail, and you will have to use another option.

By Britton on December 5, 2014.

Wires, more wires, in all gender combinations


These are 12″ long ribbon-wire jumper cables suitable for a wide variety of temporary or permanent wiring tasks. These are much more robust than flexible breadboard wires which are fine for quick prototypes, but do not hold up to soldering.

We’re even including some double-long male headers with the female pins, as handy gender changers.

They’re in the shop and ready to go.
I’m giving away ten of ten of them for free. Use coupon code RIBBON_WIRES. Limited to one per person on orders over $10.

By Paul Badger on November 4, 2014.

A hybrid power connector


You love screw terminals. You love barrel jacks.

These things seem so standard to you, so convenient, and you dream of their lovechild, a sweet hybrid of convenience, solder-free terminals coupled with that 2.1mm silver power plug that powers myriad devices (e.g. Arduinos and most of the boards we sell).

Believe or not – this slightly monstrous adapter lives!  Soldering standard barrel plugs onto wall-adapter and battery-pack wires is not rocket science, but there are two principle challenges:

  1. You have to put the barrel plug insulator onto the wires, in the correct direction, BEFORE you solder the wires.
    This simple act is cunningly easy to forget and evades me a fair percentage of the time I solder plugs on wall warts and guitar cords. So I end up with a perfect solder joint on the connector, and the insulating sleeve is lying on the bench, and I have to do it all twice.
  2. The other challenge is soldering well enough, and making tidy enough solder joints, so that the sleeve will slide down over the wires and screw on. This never bothers me anymore, but it often taxes my student’s soldering abilities.

This screw-terminal power plug eliminates both problems, perhaps at the expense of aesthetics. Also you don’t really have much strain relief with this jack, but it could easily be added with hot glue or epoxy putty. Perhaps at the further expense of aesthetics.

This also a great way to reuse all those power adapters in your junk box.

We have a short tutorial on using the plug below.



Unscrew the terminals,

Tin the wall-adapter or battery-holder wires, Tinning the wires is not strictly necessary but is a good idea.

Insert the wires into the adapter. The marked “+” terminal is positive. This is way more standard than center-negative. Center-negative adapters do exist, but not in Arduino land. Double check your specs and the polarity.


And screw the terminal back down again.


If you’re seeking permanence, the wires can be soldered in place, though it takes a while. (this iron is off, use a hot one for best results).



It’s ready to go in the shop here! It’s never too early for nerd gifts for the holidays.

By Nadya on September 30, 2014.