Lora Range Test

Lora Pager

Lora Pager

Aright So I designed those awesome Lora pagers mentioned in my previous post based off some SX1276 modules. How far can they really go? Here’s a graph with a quick test to find out. Red line represents the Lora module broadcasting its GPS position back to the base-station. Blue line represents my phone’s GPS record (to show where I was actually driving). Yellow thumbtacks represent base station. Unfortunately my  apartment is at a low altitude with roads on giant dirt hills around the base station: this killed range testing in most directions.

4.27 miles! yellow line represents base station to tag largest distance

Remember that this is with a 5dbi antenna on the base station located on the second floor of my apartment, and a free 2-3dBi antenna on the GPS tab sticking out of the sunroof on my car. Transmission power was 20dB. Zooming into that largest distance:

Zoom into the industrial area from previous image — Found the line of sight path!

Not bad for the pager’s 13mm! bad antenna. Definitely blows every other 100mW radio <10$ I’ve tested out of the water. It’s also awesome that it can sleep for only a couple microamps which brings the whole pager to ~50uA when on standby.

Pager with gps attached in car

Pager with gps attached in car

In case you want to generate this kind of plot: save the pager’s Lat,Long in csv format then upload to gpsVisualizer and export as google earth (kmz format). For the phone use Geo Tracker (android) to record positions then share as a kmz and email yourself the kmz file. Then just open both files in google earth. I couldn’t figure out how to open these files in google earth for web browser, it’s very easy with the full install.



Hey the 90’s called err, paged… yeah remember those? I missed out on having a pager, so why not create my own and rock it — complete with a tiny display and mario ring tones!


Pager iterations with a quarter for reference

I really need to make a belt clip for this. hmm Anyway I created a pager with the idea that it should get a few weeks between charges on a 150mah battery. Some specs on the two iterations I made:

First iteration is based on a Si4432  radio. With a max range of ~1/2 a mile in a fairly urban environment (metal fences, wood/drywall buildings) at 433Mhz, 2dB omni antennas, 100mW tx power, GFSK modulation, 56uA when it’s sleeping, ~90mA when it’s talking to the base station. ~3$ radio module

Second iteration is on a Sx1276 LORA radio. Max range is upgraded to roughly 2 miles with Lora modulation — same environment at at 910Mhz, 2dB/5dB omni antennas, 100mW tx


Lora range Test

power, 56uA when it’s sleeping, ~90mA when it’s talking to the base station. ~10$ radio module.

Yeah I’m leaving out a lot of the fine details on the modulation, but i’ll post source code if anyone is really interested.

Quick video of me rambling just a heads up I am up for making this into a kit if anyone is interested.

Expect another post with Sx1276 range test (lora range test)


Nixie clocks

Some clocks I’ve made:

Lethal Nixie Clock

Lethal Nixie Clock

Clock 1 schematic

Clock 1 schematic

Clock 1: Single tube Lethal Nixie clock — you know having all the high voltage lines exposed and un-insulated. Inspiration for this design was from this clock. Unfortunately I built mine right after having surgery. I think the painkillers had something to do with the aesthetics… Anyhow I wasn’t electrocuted while building it under the meds…That’s always a plus!

Pinout and some key components

Clock 1 Pinout and key components

ATMEGA 328 arduino with a DS1307 RTC for timekeeping. Basically the arduino pulls time from the RTC then updates IO. During this it’s got a time based ISR that: interrupts the code, measures the high voltage, then makes necessary tweaks to the boost converter duty cycle via a proportional controller. Alright let’s get to me gabbing on about it in the video. I forgot to show how to set the time in the video, here’s a quick video on that. Arduino Code here.

Main circuit schematic of the 4 tube nixie

Clock 2 main schematic

Clock 2: Four tube nixie clock. Very similar to the previous clock but uses i2c GPIO port expanders for all the tube outputs, and a GPS instead of a DS1307. This clock just needs some final tube aligning and some buttons to change the time zone! Everything’s implemented on the board/code side. Code for it is here. Just a heads up this is a ‘guide’ to making one, not instructions.

Each individual nixie tube schematic

Clock 2 individual nixie tube schematic

The individual nixie tubes have the same repetitive circuit for each cathode, here’s what one cathode


Clock 2 protoboard header layout

looks like (you’ll need to make 10 replications for a tube that needs to display 0-9, for like the tens minutes you’ll only need 0-5 cathodes to work. The gpio expander boards all connect to the same I2c bus. There’s jumpers on the MCP that select the i2c address, these jumpers are different on each tube to allow the microcontroller to control each one individually.Anyway VIDEO PART2, PART3 here. I did a lot of explanation in the video’s, so I’ll keep this post brief.

pinout mapping of nixie tube

Clock 2 Pinout mapping of nixie tube

Finally Clock 3 (Not a nixie!):

This is when I look back and think “I really make too many clocks…”, I’ll keep this one brief. This is a clock based on a ~3 inch TFT with touchscreen with Teensy3.1. It generates fractals thanks to a julia2 fractal algorithm I found online. My code randomly tweaks some of the constants that determine shapes/colors in the julia2 algorithm to keep things fresh.

As you can see it graphs temperature, humidity, barometric pressure over a 2 day period. The vertical markers represent 6 hours. The graph auto


Fractal Clock

zooms/offsets each sensor’s data to keep it looking nice with the mins/max displayed at top and bottom per graph. The 3d printed case insulates the insides, so the temperature is a bit high — i need to print one with more vents.  Time is set by the touch screen (video doesn’t show that). As you can see I actually made this clock quite some time ago. Source code here.

I did a game of life with this library too. I meant to make a clock where the game of life would randomly get organisms added that would eat away at the time. This code also demonstrates the graph algorithm that auto scales/auto offsets.

Clock 4:

Hey remember that original clock? I also made a kit I had up on ebay for a while. PCB was designed with CircuitMaker, PCB manufactured by OSHpark


Ebay kit of the ‘lethal nixie tube clock’

3d Printed Minigun


Quick post on something I whipped up Friday night: A completely 3d printable rubber band mini gun. All that’s required past the expensive printer and filament ;p is about 3ft of string and some hot glue. I designed the gun around rubber bands used for making bracelets. If a larger rubber band is needed, just do a non-uniform scale to make the barrel and clip longer (yellow and purple pieces in image). Design based off this guy’s video

Files: AutoDesk123d , STL

Venturing into 250cm quadcopters


My quadcopter

Hey all sorry it’s been so long! I promise I’ve got a tutorial on the way for a super simple and easy to build nixie clock that I’ve designed. Anyway I thought I’d share my quadcopter build. This isn’t a tutorial! I’ve included a BOM at the end, and I encourage anyone who’s experienced in putting electronics together to give it a shot! If you’re interested but intimidated, I’d be up for building and tuning a quadcopter for you for a very reasonable price! If you want to get into this hobby, I highly recommend you to buy a cheap toy quadcopter like this one and learn to fly — I guarantee it will save you money and frustration in the long run. I’m also rank 1 jet/heli pilot in BF4 and I can say it flies similar to a small chopper when using the FPV system (wireless camera First Person) :P


Check out some other racing mini quads


Better view of electronics and camera


The BOM is what/where I bought parts. Don’t forget that multirotors need ESCs that don’t do any input filtering. Get an ESC (like in the BOM) flashed with SimonK firmware or an equivalent. Check out my youtube video’s description for latest parts.


Overall my quad is flying like an absolute champ! Unlike the QAV250, it doesn’t have a battery hanging way out the rear, which has caused the QAV250 to have some notoriously bad flight characteristics due to poor weight distribution. The only thing I’d change are the 20A escs which are overkill on 3s maybe get a 12A esc, but a 20A esc compatible with a 4s battery would really put this quad into overdrive — I’ve read the motors can handle 4s but may fail if pushed to hard.

Some terms

What is this ‘s’ mentioned above? It stands for the number batteries in series in a battery pack:  4s = 4*4.2v = 16.8v, 3s = 3*4.2 = 12.6v. A fully charged lipo = 4.2v per cell.

Also in my BOM I have a high ‘C’ battery. C determines how much current the battery is rated for. To find this max current take the C*mAh/1000 = max continuous amps. So a 1300mAh, 45-90C battery can do 45*1300/1000 = 58.5 amps continuously, but can handle a spike of 90*1300/1000 = 117 amps. In this field a spike is generally less than 10 or 5 seconds.

Senior Design

20130428_204455For my senior design I wanted to incorporate MEMS sensors and show off how awesome they are. The immediate project that came to mind was a segway style robot, or a quad copter. I mentioned these ideas to my mentor (Dr. Kocanda), but he suggested not to do those projects since they pop up fairly regularly. I recruited two others and we got to it!

So we tried to come up with some creative content and thought it would be a great idea to stabilize a vehicle with as few sensors as possible and incorporate a gyroscope. In the end we had two sensors: a gyroscope and a wheel encoder. We also needed the angle of the front wheels, but we assumed the steering servo would maintain whatever angle we were sending it, so that really makes it three inputs.flow diagram

The control system will try to stabilize the vehicle by compensating the steering and reducing throttle. In the video below I maintained a fairly constant throttle and just occasionally made minor adjustments. My steering input is displayed, and you can see the steering output – see video intro.

The hardware we went with was the adafruit boarduino for the microcontroller, parallax gyroscope module available at radioshack, two xbees – one serving as serial/programmer and the other as a kill switch for the inevitable times when something goes wrong and it takes off uncontrollably =P We were able to wirelessly tune and graph everything in real time without a restart. We could also wirelessly (and reliably) reprogram the arduino. For the vehicle we purchased an RC drift car from hobbytown usa.

A very rushed project!

A very rushed project!

Results? Decent, not great. I think the slow analog steering servo was a problem. I also noticed that at high speeds even if the system appropriately responded, the car would still spin out. In the end it’s worth mentioning that the system is purely reactive.

We should have added a simple proactive system – have the max steering angle allowed a proportional function of speed. At high speeds the driver shouldn’t be allowed to try to turn on a dime.

The system was pretty rough, but look at the time line! Not much time to complete this project and we were all taking a full load of classes while involved in various other extracurriculars. All of the engineering senior designs do take part in a senior design competition and we did end up coming in second.

Breadboards work surprisingly well with vibration! =P

Breadboards work surprisingly well with vibration!

I’ll keep the blog post short, but more can be found in the reports below:

Vehicle Stabilization Presentation – #3.2 (ppt)

Final Report (pdf)

Bode Plot on an Oscillscope

intropicMaybe you’re learning about filters and want to see the how your filter responds in the 10Hz to 1MHz range. This guide will show you how to make a low frequency ‘spectrum analyzer with tracking generator’ using a few cheap modules and an oscilloscope — Based off of a video done by Dave Jones over at EEVBlog. Dave does a great job going into the theory, so check out the video if you want to see how it works! He will also show you how to set up the scope. Check out my video below for the reader’s digest version.

Some important notes

For the audio crowd — the vertical scale is still in volts, not decibels. There is also no information on phase shift.

Arduino math

Arduino math

Brief Theory

The circuit from this guide generates a sine wave and the frequency of this sine wave ramps up exponentially. This creates a logarithmic axis on the horizontal axis of your scope. The filter under test will then react differently as the frequency is ramped up. Finally everything will be displayed on the oscilloscope which is synced via the external trigger. The oscilloscope and the arduino will also need  the same time settings.


15Hz-10Khz sweep with simulation


15Hz-1Mhz sweep with simulation. marker at 50Khz (approx peak)

One major problem is that the oscilloscope’s horizontal axis markings aren’t going to be placed correctly all the time. To solve this the microcontroller will calculate where the axis bars should be and generate a 1ms pulse at 10Hz, 100Hz, 1000Hz, etc… The two screenshots show different generated axis and there are some simulations to compare results.


For this project I used an arduino (breadboard friendly) to do the timing/math/markings, but the star of the show here is the AD9850 DDS sine wave generator. It’s easiest if you are using a breakout for the AD9850. Luckly they can be found on ebay for about 5$ with free shipping! This seems to be the breakout specs from the original creator — EIM377_AD9850 (pdf)


Schematic, add some decoupling caps as in the next photo

The AD9850 also needs a buffer amplifier. I decided to use the TS922IN from adafruit as a unity gain amplifier. Many op amps will do the job just fine, but get one that doesn’t require a dual power supply and has a high current output. If you want to do any impedance matching or if your filter is low impedance, be sure to add an appropriate terminating resistor.

Wire everything up and get you scope hooked up!

Completed circuit

Completed circuit (with filter on the right)


What a mess! I coded this pretty quick and fudged a few things =P You’ll want to jump down to sweepTime_mS and get ready to input the correct values — I’ll cover these in the video.

Why did I have a bunch of these DDS modules floating around? They had something to do with an LCR meter I built ;p — more on that hopefully soon!