Pager-Duino

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!

20170116_13273401

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

screenshot_2017-01-08-15-21-1901

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.

 

Advertisements

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

4nixieTubeProtoLayout

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

20151001_172931

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

20160520_185557

Ebay kit of the ‘lethal nixie tube clock’

3d Printed Minigun

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

20141116_233219

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

Inspiration

and of course racing mini quads

Legality

20141116_233356

Better view of electronics and camera

Please respect the FAA rules — Note: The goggles are now considered illegal. The ones included in my BOM have a video out that allows you to easily connect classic RCA composite screen to put you back in the legal field. Darren from Hak5 talked a bit about this.

BOM

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.

My BOM

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.

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.

a

15Hz-10Khz sweep with simulation

a

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.

Hardware

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

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)

Code

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.

https://github.com/thefatmoop/bode

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!

Linear resistive divider for the ADC

Vdivider

Simulation of changing -24v to 24v into ~ 0 to 5v.

This is a topic that’s very simple, but I’ve seen individuals do it in ways that are really over complicated. My example will show how to measure from -24v to 24v using a 10bit Analog Digital Converter (ADC) with an analog reference of 5v. The micro controller for this example will be an Arduino since it’s easy to get up and running. If you are having issues with selecting resistor values for your situation, leave a comment and I’ll help you out!

Design and deriving the equation:

Vdivide eqn paper

Circuit and deriving the equations.

This is a circuit that’s basically an addition to the simple voltage divider which gives one the ability to measure high voltage ranges using an ADC with limited voltage ranges. I’m going to be using a voltage divider that starts out at half the Vdc, which is 2.5v for the Arduino’s 5V power. From there I’m going to use a higher valued resistor to pull the 2.5v up to nearly 5v at it’s peak positive voltage, and down to 0v for its minimum negative voltage. If you wanted to measure just negative voltages then get rid of Rc (use infinity in the equation).

Equations required with explanation.

For deriving the equation, I just used nodal analysis. As you can see there is no calculus or anything very math intensive, but there are some variables. This isn’t a guide on circuit analysis, but if you need some tutorials on signal analysis look around youtube or try the book – Schaum’s Outline of Basic Circuit Analysis. Just as a warning there are a similar methods of doing nodal/mesh analysis that will get different equations but yield the same final equation.

Note: Vout is the output of the resistive divider, which will be what’s connected to the Arduino’s analog input (ADC). Vout should only go from 0-5v. Vac is the input to the overall circuit which may vary from positive to negative voltages. Vout may be found by using 5*(double)analogRead(pin)/1024.

Usage notes:

This isn’t a volt meter! If you build it and you’re not measuring a voltage, you’ll notice that it reports a few volts although nothing is connected. Connect Vac to Ground and you should get close to zero volts. As you can see the example above is fairly low impedance, but you can use higher resistors.

The two resistors standing up are both 10k. Two 10k resistors in parallel are equivalent to 5k. Red wire running off of picture is Vac and black is ground.

As for problems: the only thing I can think of is if the ADC wasn’t giving off good readings. If you’re measuring something that’s time critical or behaves sinusoidally, don’t put any capacitors on Vout since this will do a phase shift on Vout. If you’re worried about voltage spikes then you could use two  zener diodes facing oppositely. Also remember that in this example the voltage spread is over 24*2 = 48 volts, so with a 10bit ADC that’s 48/1024 ~ .5 volt increments.

Example code and material:

Voltage equations from above (pdf)

Arduino example program (pdf)

I was going to use this for a 3 phase triac driver with simple pwm. I needed a zero volt detector on one phase which would allow me to calculate the other phases and trigger the triacs at the right time. Originally I was going to sample the voltage with the ADC and look for about 2.5v coming to the ADC. I ended up using a simple voltage divider and a comparator which is definitely a better route! Now you can measure negative voltages with your ADC or Arduino!

Standard Deviation and Moving Average

Recently my neighbor paid me to build a key less entry system for his dorm room. I decided to go the economical route and use a button/potentiometer that sits outside the door and an Arduino on the inside that controls a servo connected to the lock. For my room, I thought it would be interesting to use a Ping))) ultrasonic distance sensor instead of the potentiometer and lose the button.

The Ping))) sensor kept taking readings while my hand was moving. In order to fix this I decided use a Moving Average filter, then calculate the Standard Deviation of the values currently included in the M.A. filter. When my hand is still, the Standard Deviation will become very small.

Example code:

M.A._and_S.D.(pdf)- “storeValue(variable);” is how to enter data into the array, then call M.A. and S.D.

Not much of a circuit required! Arduino's regulator also powers Ping))). Servo has it's own 5v regulator... needs capacitors

pingDoorLocker(pdf) – As you can see, this program blew up a little…

Download .pde source code from RapidShare

I tried to make the M.A. and S.D. code very easy to follow. Some things could have been combined in the S.D. and Variance method, but to the beginner what I wrote above is probably easier to understand since it follows the equations. As for the pingDoorLocker – I threw that code together very quickly.

Follow up notes: That was probably the worst way to do this project… I thought of a few ways how to write the program that would chop the code WAY down, but this is an example about using M.A. and S.D.! Pretty bad use of a M.A. filter if you ask me!

His door unlocker.

Since I did put a few hours into building my neighbor’s door opener, here’s an image of it! He didn’t want numbers on the potentiometer dial, so I made the LED flash the number that is currently being entered.

Code for his door opener (pdf) – leave a comment if you want schematics/code on rapid share since pdf loses tabs.