home Home import_contacts Research library_books Notes style Projects photos Photos Notes Nt 48

TEVO Tarantula Pro

This is a build guide and review for the new Tevo Tarantual Pro 3D printer. I got this printer from banggood.com for review. It's also available from Tevo directly, but the lead time is 20 weeks currently!


Marlin 2 configured for TMC2208 drivers with dual z-axis motors and BLTouch: [https://github.com/nathantsoi/Marlin/tree/tevo-tarantula-tmc2208-bltouch-2.0.x]

  • To use: download the source via the zip file or checkout the branch with git and flash with platform.io



The FluxLamp Soldering Reflow Oven

This post contains an overview and build guide for the FluxLamp soldering reflow oven.

Built with a Vertile PowerCore, the FluxLamp is designed to be inexpensive, easy to make and easy to use. I hope this project will enable makers and hackers to start doing their own reflow soldering! Here's an early prototype at work:

If you're interested in ordering a Vertile PowerCore to build your own FluxLamp, you can sign up to be notified when the Indiegogo campaign launches using this form: https...

PowerCore Dev Board

Tired of playing with safe, low voltage, dev boards? Want complete control over your AC powered device. How about WiFi programmability, remote logging, integrated temperature sensing, an LCD and more!? The PowerCore is what you need!

This blog post covers the features of the PowerCore and walks through the story of why and how it was developed.

It all started with my personal need for a soldering reflow oven. I was working on the design of a machine vision camera and needed to solder some...

Training Deep Neural Networks on Google Tensor Processing Units (TPUs)

As part of my research work at Stanford, I have been training Object Detection Deep Neural Networks. Training these networks is extremely compute intensive, and while we have a variety of powerful compute options at Stanford, I was looking for a faster way to train these networks. This article is a detailed guide to training the popular RetinaNet object detection network on TPU.

Google's Tensor Processing Units (TPUs)

Finding a Tensorflow Tensor Processing Unit (TPU) enabled version of the network...

Klipper 3D printer Firmware

I have been exploring different firmware options for my TronXY X5S 3D Printer, and Klipper is interesting in that it runs the CNC control on a single board computer (SBC) and uses the 3D printer's control board as a motor controller. I've also added a touchscreen display to the SBC running Klipper for easy printer control.

Klipper is convenient in that the printer can be controlled via a WiFi interface. No need to use an SDCard to copy gcode files from the computer to the printer anymore, simply...

ESP3D WiFi Enable your 3D Printer

Let's add WiFi to the TronXY X5S 3D Printer for only a few dollars!


I'm using the following hardware:

  • LoLin V3 ESP8266

  • A 3A, 5v Voltage Regulator to power the ESP8266

  • On my TronXY X5S 3D Printer.

Arduino ESP8266 Setup

  • Install Arduino IDE version 1.8.8 from https://www.arduino.cc/en/Main/Software
  • Open the Arduino IDE and then open the Preferences dialog
  • In the "Additional Boards Manager URL field, paste in: http://arduino.esp8266.com/stable/package_esp8266com_index.json
  • Click...

Stanford JackRabbot2 - 360° 2D to 3D Multi-Target Tracker

This post follows from a project at the Stanford Vision and Learning Lab, where I've been working for some time, and serves as documentation for our social navigation robot's onboard multi-target person-tracker I developed under the guidance of Roberto, Marynel, Hamid, Patrick and Silvio.

The above video shows the results of the tracker. The top portion of the video is the result of the 360° cylindrical image having been passed through YOLOv2 and Deep SORT. The bottom portion of the video shows...

TronXY X5S Build Guide

This is a build guide and review for the awesome (and large) TronXY X5S I purchased from banggood.com, but it is also available on gearbest.com.


The build quality of this huge printer is reasonable given the price. The frame, heated bed and motors are all great. Electronics are based on the Arduino compatible Sanguino ATmega1284P processor. Drivers are the standard A4988. Electronics quality is reasonable and I've updated the config for Marlin 1.1.6, see the Firmware Update section...

Silent Stepper 3D Printer Upgrade (and other noise mitigations)

My printer sits in a closet that shares a wall with our bedroom. Normally it's fine, but when things are quiet I can hear the motors making slight buzzing and ringing noises with the normal A4988 Stepper Motor Drivers. In an attempt to make the printer entirely silent, I got four TMC2100 stepper motor drivers. At $10 each, they're expensive, but wow, they are awesome.

For the GT2560 on my i3 Clone I have been running the TMC2100s in the default Stealth Chop mode for quite a while now and they...

NOX Flight Controller 180mm Build

The NOX flight controller is a full-featured F4 flight controller with integrated OSD and 4x BLHeli 32 ESCs, DSHOT and telemetry! Here are some build photos.


And flight video

I have a V2 version of the NOX. As you can see from the video, I have not configured current sensing and RSSI yet. I'm running this BetaFlight 3.2.4 hex and the ICM20608 gyro.

The flight controller has a damped and replaceable gyro. Just unscrew the 4 screws on the bottom and you can swap out the...

Flashing Kiss 24a ESCs with DSHOT firmware via BetaFlight Passthrough

This guide assumes you have a flight controller running BetaFlight connected to KISS 24A ESCs. Alternatively, use a USB-UART converter to program the ESCs.

Download the latest ESC firmware from here: https://github.com/flyduino/kissesc-firmware/releases

Pre 1.02 Firmware

If your ESCs have firmware less than 1.02, you'll need to go through the extra steps of flashing the bootloader as follows:

Install the Arduino IDE if you don't have it already. https://www.arduino.cc/en/Main/Software

Nuttx and Px4 Development Getting Started Guide

Lets start by building and flashing plain old nuttx, without Px4

Plain Nuttx

Im using the STM32F746 Nucleo-144 board pinmap

Install deps (Mac OS):

brew install gperf stlink

Make a nuttx top level dir

mkdir ~/src/embedded/nuttx
cd ~/src/embedded/nuttx

Nuttx depends on kconfig-frontend, so lets build and install it

git clone https://bitbucket.org/nuttx/tools
pushd tools/kconfig-frontends
# https://github.com/PX4/NuttX/tree/master/misc/tools
# appy this diff: https://github.com/PX4/NuttX...

Run Jupyter Notebook behind a nginx reverse proxy subpath

The server I want to run Jupyter on has some other apps running on an nginx server, so I'll configure Jupyter to at the path /groot

First, generate the Jupyter config with:

jupyter notebook --generate-config

Generate a sha1 sum of the password you want to use, in an ipython shell:

from notebook.auth import passwd; passwd()

Update the config generated in the --generate-config command

c.NotebookApp.allow_origin = '*'
c.NotebookApp.base_url = '/groot'
c.NotebookApp.password = 'sha1:[put generated...

Mostly Printed CNC (MPCNC)

This is my build log of vicious1's.com Mostly Printed CNC.

Here we are running a 2.5w diode laser on it.

Huge shout out to Tim, in the photo above, for helping me get past the final hurdles of this project. He hand-wrote some g-code to get this working before we found a tool to generate it.


The awesome thing about this CNC is that it can be built using only parts made on your 3D printer, a few RepRap electronics and some parts from your local hardware store!


My build started...

Xiaomi A1

I've never reviewed a phone before, but the Xiaomi A1 is unique in that it is the first Android One phone available. Android One is awesome as it allows hardware manufacturers to ship a vanilla version of Android. Giving us the best of both worlds, awesome value hardware with a bloat-free Android experience. My main concern was how the coverage would be and what bands the phone would support.

Above, the phone is running Google maps on the Google Fi network. As you can see I'm getting 4G.

Enabling Automatic Security Updates on Ubuntu 16.04

Edit: /etc/apt/apt.conf.d/10periodic and append the following:

APT::Periodic::Unattended-Upgrade "1";

This depends on the apt package unattended-upgrades being installed and the log output will be in /var/log/unattended-upgrades

My full 10periodic file looks like:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "0";
APT::Periodic::AutocleanInterval "0";
APT::Periodic::Unattended-Upgrade "1";

This is run by /etc/cron.daily/apt-compat and the full list...

Installing Ubuntu 16.04 on an Asus CN60 Chromebox

Get the kodi install script

cd; curl -L -O https://mrchromebox.tech/setup-kodi.sh && sudo bash setup-kodi.sh

Pick the option to install the Custom UEFI Firmware

Backup your firmware when prompted, using a USB drive

Create a USB boot disk for Ubuntu 16.04. I like using Etcher

Put in the USB drive and reboot

Pick the Install Ubuntu option and install as normal.

On the partitioning page, pick the LVM option, so you can expand the root disk easily later.

After selecting partitioning layout...

Installing Tensorflow with GPU support on Ubuntu 16.04

These are my notes from setting up my Ubuntu 16.04 box with GPU enabled Tensorflow:

Hardware Dependencies

The Cuda documentation encourages us to check a couple things:

Do we have a CUDA capable GPU? Any output here is good:

lspci | grep -i nvidia

I have a 980 Ti, so I see:

01:00.0 VGA compatible controller: NVIDIA Corporation GM200 [GeForce GTX 980 Ti] (rev a1)
01:00.1 Audio device: NVIDIA Corporation Device 0fb0 (rev a1)

Software Dependencies

Do we have a supported version of linux...

Getting Started with ROS Kinetic and ROS on Ubuntu 16.04

I'm starting to experiment with px4 off-board control. These are my setup notes. First, a photo of the awesome hardware setup. The Pixracer is mounted on top of an OrangePi.

Software Setup

I'm using an Ubuntu 16.04 VM on my mac. I set the network interface to "shared" and ssh into the vm. In the ssh session, I run tmux.

Ubuntu and SSH

Install Ubuntu 16.04 in a vm and use apt-get to install vmware tools, vim, tmux, ssh server and other dependencies

sudo apt-get install -y open-vm-tools-desktop...

FPV Goggle Guide, FatShark Setup

A while back I reviewed a bunch of box style goggles. These single-screen goggles are generally more cost effective, but bigger and less comfortable on the face. This time around I got a couple dual-screen goggles, e.g. FatSharks to try out and see if they're worth the money.

I went all in and bought the best (or at least the most expensive) FatShark Goggles one can buy, the Dominator HD. I also bought a pair of Aomway commander goggles for comparison.


TLDR: you get what you pay...

FPV Camera Comparison

I was curious what the best camera low light camera for the money is, so I ordered a bunch of low-light FPV cameras and tried them out. This article details what I found. First, my test rig:


These are the cameras in the comparison.

$12.04 Generic Sony EFFIO
$22.99 Aomway WDR 700TVL

Betaflight 3.2 and F7 Flight Controllers

As of Jul 31, 2017, 2:26 PM PDT, Betaflight 3.2 is in the Release Candidate stage and with this release, F7 flight controllers have arrived. While an F7 MCU is not entirely necessary, not yet anyway, having a very fast and very capable MCU is future proof. I expect some of the most exciting new performance features in Betaflight will target the F7 MCU. This article is an overview of the current F7 landscape.

That is a photo of an early OmnibusF7 prototype with 2, user selectable, gyros: MPU6000...

Converting a Soldering Station from 220v to 110v

I recently received a Soldering Station, mine is labeled Huayu 898D+.

It has a nice digital display for PID temperature controller.

Of course, I took it apart.

The only problem is that I got the 220v version, which is quite inconvenient here in the USA where 110v is the norm. I tried it out without modification and it sort of worked. The iron wouldn't go above 250 degrees C and the hot air was also quite under powered.

Unfortunately, there is no switch to easily change between 220v and...

Asguard AIO

The Asguard flight controller is an OmnibusF4 with an integrated 4-in-1 ESC. This is a build guide showing how to build an Asguard based quadcopter.

The frame kit and the Asguard flight controller are from Airbot.

The motors I'm using are 1806, but you'll notice the ones in the photo above are orange and I've built the quad with black ones. This is because the wires on the orange ones are too short. 2204, 2205 or 2206 motors might be a better choice if you're planning on running 3 or 4 blade...

Cleaning up the Ubuntu boot volume

If you've been using an apt update && apt upgrade-ing a linux system for a while, at some you've probably seen this error:

Purging configuration files for linux-image-extra-3.13.0-96-generic (3.13.0-96.143) ...
(Reading database ... 520779 files and directories currently installed.)
Preparing to unpack .../linux-image-3.13.0-117-generic_3.13.0-117.164_amd64.deb ...
Unpacking linux-image-3.13.0-117-generic (3.13.0-117.164) ...
dpkg: error processing archive /var/cache/apt/archives/linux...

Orange Pi Zero Google Cloud Print Server

This guide will show you how to turn an Orange Pi Zero into a Google Cloud Print server.

Orange Pi Zero Setup

Download Debian Jesse from Armbian.

Download Etcher, use it to write the Armbian image to the SDCard. A 4gb card turned out to be the perfect size.

Power the Orange Pi via micro USB and connect the serial port via a CP2012, or your favorite USB/Serial adapter.

On a Mac (or linux) you can use this screen command to connect to the serial terminal. Use your favorite Windows terminal...

STM32CubeMX Makefile project

STM32CubeMX is a cool little code generation tool from STM that helps you choose the pinout for you microcontroller project given the pin assignment constraints of a given CPU. The only problem is that it doesn't allow you to generate a Makefile project for use with the arm-none-eabi- toolchain.

I'll show you how to do this.

STM32CubeMX Overview

If you've never used STM32CubeMX before, checkout this great overview video first:

By the way, STM32CubeMX now runs on Mac OSX.

Generate the code

BetaFlight Micro Brushless Aurora 100

The Aurora 100 is a micro brushless quadcopter from Eachine, similar to the Falcon120. It's no less powerful than the Falcon 120, however it's lighter and therefore more nimble.

Here's some flight video. I flew both line of sight and FPV. This little 100mm quad feels like a 250mm, but without the expense of a larger quad or any of the risks of 5" props. You'll notice the horizon moves the wrong way when I turn. More on this later.

This video was shot on the Eachine VR D2 Pro goggles.


Unlocking STM32 Chips

If you run into weird issues flashing your board, it might be because the board is locked.

First check for

  • Ground loops: Are you powering the board from a different power supply than the OpenOCD or J-Link programmer? Try to power the board from the programmer.


While pressing the boot button or shorting the boot pads, open OpenOCD, connect the SWD port and run:

  • For F4 and F7 devices, run:
> stm32f2x unlock 0
stm32f2x unlocked.
INFO: a reset or power cycle is required for the new...

Taranis Q X7 Review, Teardown and Setup

The Taranis Q X7 is an awesome new radio from FrSky that is budget priced, just over $100 and stocked full of premium features like a backlight screen, audio output, an SDCard for tons and tons of models and not to mention, ever switch is 3-position.

This is a huge upgrade from my FlySky 9x and probably the best value radio on the market today. Not only is the FrSky protocol the best among many manufacturers, but the radio quality and features are outstanding.

That said, I pre-ordered as early...

DJI Mavic Pro

I just got my first DJI drone, the Mavic Pro. Coming from the miniquad scene, the features on the Mavic are amazing. This article will walk through the unboxing and setup. I hope that an absolute beginner can use this as an easy walk through to get everything needed to setup and get flying.


Once you get it unboxed, go out and capture some awesome footage!

What's Included

I bought just the Mavic Pro, not the "Fly More" combo which costs a cool $299 extra. In the box with my Mavic...

Falcon 120

The Falcon 120 is a micro, brushless x-configuration quadcopter. This is a review and setup guide.

The Eachine Falcon 120 is similar to the BeeRotor 160, but ready to fly.


When ordering the Falcon 120, you'll have a choice of what flight controller to order with it. I got the SPRacing F3 flight controller. To run BetaFlight, you'll want at least an F3 flight controller. The SPRacing F3 is not quite as nice as the OmnibusF4, but it'll do the job.

You'll also need a battery. I also ordered...

Easy 3D Printer Upgrades

I recently made some improvements to my Geeetech Prusa i3 3D Printer. These quick and easy upgrades provide a massive improvement in build ease and quality.

PEI Plastic Build Platform

By far, the biggest, single ~$20 improvement you can make to your machine is switching from the included aluminum print bed to a PEI sheet.

Since the aluminum plate deforms as it heats, to get that perfectly flat print surface, you'll also want to get a glass plate as well.

If your PEI sheet didn't come with...

FPV All the things!

It's cold outside. It's winter and days with flying weather are few and far between. However, that doesn't mean we need to pack up our goggles and wait for spring.

Here's how I put FPV cameras on all the things!

Vortex 1/18th Scale Truck

This little truck is super fast and super fun. It works great out of the box, so there's not much to say. Let's take it apart.

Turns out that the whole electronics bay is epoxied, which makes it waterproof, but really hard to add a camera.

It comes...

The Taranis Q X7 is Real

The Taranis Q X7 has hit the FCC Database. It's real and from the features below, it looks awesome!

From the manual, there are a plethora of 3 position switches:

Features include speech output, logging (via SDCard) and nice gimbals (at least on paper):

Here is the SDcard port, along with a smart port and USB port:

There is an integrated XJT module, which can be turned off in software so an external module can be used:

According to the documentation, there will be three models:


Running Ardupilot Mission Planner with Mono on Mac OSX

This is a guide to running Ardupilot's Mission Planner on Mac without a virutal machine. We'll use Mono instead.

Setup Steps

  • Download both the latest Mission Planner (zip file) as well as the Mono installer.

  • Install Mono

  • Create the required directories and set the permissions by running the following in a terminal:

sudo mkdir /usr/share/Mission\ Planner
sudo chown `whoami` /usr/share/Mission\ Planner
  • Unzip the Mission Planner zip file you downloaded and in your terminal cd into this directory...