SC Projects

So much to learn, so little time…

  • Home
  • About
    • Me
    • Github Repositories
    • My Inspirations / Sites to Check Out
  • Programming
    • Repos
  • Robotics
    • Micromouse
    • ReboundBot
  • New Parts

Android App for Monoprice Select Mini 3D Printer

Posted by SCProjects on March 9, 2019
Posted in: Electronics, Programming, Uncategorized. Leave a comment

Over the holidays I finally caved and bought myself a cheap 3D printer, a Monoprice MP Select Mini v2.

It’s obviously a lot smaller than some of its competitors for the same price like the Ender 3, but I needed it to fit in a small space and it packs surprisingly high performance software/hardware in it.

This little thing works great! The UI on the physical device looks fine and works well. It even has Wifi! However, I was disappointed to discover how primitive the native web UI was, and it failed to show some basic things like the target temperatures the extruder and bed were set to.

So after using the web UI for a few weeks I decided I needed to make something better looking (more like the local controller) and easier to use. I took a weekend to write up a simple Android app to accomplish this and add a few extra features that are supported by the device’s native web server but not available in that web UI.

MP Mini 3D Printer Client

Get it on Google Play

 

Features

  • UI theming similar to the local UI on the physical device
  • View print status, including loading bar and percentage complete
  • View current extruder/bed temperatures
  • View and set extruder/bed target temperatures
  • Cancel print button
  • Automatic querying on app open to allow quickly checking on the status
  • Automatic retrying connection a few times to account for occasional phone connectivity issues or printer server issues

Unfortunately I’ve had a limited time to continue development, but I hope to continue adding features:

  • Uploading a file to print (as on web UI)
  • Start/Pause print button (as on web UI)
  • Allow selecting from and starting a print from files already on inserted SD card
  • Adding guidance and tutorials to assist in troubleshooting or initially setting up printer’s Wifi connection
  • Notifications on print completion

Notifications would be by far the most useful feature that isn’t natively available, but this adds an unfortunate amount of complexity to the app. This would involve either repetitively querying the print server when the app is in the background or keeping a web socket connection open in the background, both of which would result in higher battery consumption which is obviously not ideal. This also means being very careful about ensuring the user is aware of this high power usage and making sure the background querying starts and stops when requested and only when requested.

So that’s the goal! In the meantime, I hope this is useful to others in its current state.

Advertisement

Current Project: My first CNC build!

Posted by SCProjects on November 16, 2018
Posted in: Electronics. Leave a comment

For a couple years during college I got used to having a laser cutter and other fabrication tools available from Techshop. Ever since losing access to all their tools, I’ve dreamed of building my own CNC machine, and hopefully eventually laser cutter and 3D printer.

Still a work-in-progress, but here’s a peek at what I’ve been working on for the last 8 months or so in my free time!

This slideshow requires JavaScript.

Full bill of materials and current build status here.
My design:

  • Mounted on custom folding table, based on design by The Carmichael Workshop, built to a slightly larger scale, with added wheels and an extra shelf on the bottom for hiding away the water-cooling bucket and cyclone dust collector
  • Rails: Based on X-Carve rail system, using MakerSlide and X-Carve’s custom X-axis rail and one-piece X-axis carriage
  • Drive System: Belt
  • Motors: NEMA 23, with a high torque X-axis motor to balance with the two lower torque Y’s
  • Motor Drivers: TB6600HG Motor drivers
  • Controller Board: Arduino Mega with GRBL
  • Cutting Surface: MDF wasteboard
  • Spindle: Chinese generic 1.5KW 65mm water-cooled 220v, with 220v VFD
  • Water-cooling System: Small bucket with waterfall pump, 360mm (3-fan) Aluminum Computer Radiator, running distilled water with “PrimoChill Liquid Utopia” anti alge and corrosion additive

 

I had two major goals in this build:

  1. Ability cut a wide range of materials in different sizes, so I can use this for everything from wooden sign-making to PCB milling and metal fabrication (aluminum).
  2. To build this as cheap as possible, given that high performance.

 

Research

Back in January I began researching the costs involved in purchasing a pre-built or kit machine. The existing options seemed either too small, too imprecise, or too expensive, so I decided early on that I would have to piece something together taking design ideas from many others. Here’s the basics of what I’ve learned.

Major Components & Technology Options

  • Router/Spindle – Two possible routes
    • Air-cooled
      • Simple to use, same as used by hand.
      • Cheap, relatively ($100).
      • Plug straight into a regular 110v (or whatever your locality has) wall socket.
        • This means you can’t (easily) control the speed or off/on via CNC controller.
      • LOUD
      • Common examples:
        • DeWalt DWP611
        • Makita RT0701C
    • Water-cooled & Speed Controller (VFD)
      • Uses a 3-phase motor and requires a speed-controller. Very much like modern variable-speed pool pumps use.
      • These can range more widely in physical size, wattage, and speed.
      • Generic design allows the spindle size to be scaled up or down to match any necessary application. For example, I went with a 65mm diameter, 1.5KW, ER11 (bit holder size) spindle.
      • Can be purchased for 220v or 110v power source.
      • Uses international standard ER type collet, a very refined, quality method of holding routing bits.
      • QUIET. I needed this since I’ll be running mine out of my garage.
      • Expensive (>$250).
  • Motors – Stepper motors are pretty much all the same no matter where you get them. You could even pull them out of old scanners or copy machines if you wanted to go real cheap. The only two factors you really need to worry about are size (NEMA number) and torque. The common ones used for this purpose are:
    • NEMA 17
      • Used for smaller CNC builds and some larger 3D printers.
    • NEMA 23
      • Most common for a 1000x1000mm build such as mine.
      • Common Torque ratings:
        • 179oz.in – Basic cube shape. I used two of these for my Y axis.
        • 269oz.in – Taller than the former. I used one of these for my X gantry to compensate for there only being one on this axis but two on the Y.
  • Motor Drivers – Chosen based on power needed by motors
    • A4988 or DRV8825
      • Very small, come on most Arduino CNC shields.
      • Best for 3D printers and small CNC machines.
      • Too low power to make full usage of NEMA 23 motors, but could work in a pinch.
    • TB6600
      • Full-size drivers capable of 4+ amps per motor, more than NEMA 23’s use
  • Controller Board/Firmware – Connects everything together: motor drivers, limit switches, emergency stop button, spindle speed controller, etc
    • Chinese “5 Axis Breakout Board” or other generic
      • Requires connection to computer through Parallel port. A very old type of port that modern computers haven’t come with for the last 15 years. Therefore, the common recommendation is to go to Goodwill and pick up an old (crappy) computer. I believe that’s a pretty poor solution.
      • USB-to-Parallel adapters don’t work reliably because the breakout board relies on the precise timing from the host computer. I looked into getting a PCI-to-Parallel adapter which should theoretically work better, but costs ~$40 and still might not work well enough.
    • Arduino (Uno or Mega) with GRBL firmware, shield or not
      • Open-source hardware & software
      • Uses basic serial (USB or otherwise) connection, DOESN’T require parallel port. Handles more processing and event timing itself rather than relying on connected PC, allowing slower methods of communication such as USB and Bluetooth.
      • Arduino boards are cheap and easily accessible
      • Since firmware is C code uploaded through Arduino IDE, it’s highly configurable and modifiable to match your needs
    • Arduino Mega with RAMPS & shield
      • Meant for use on 3D printers
      • Kit comes with display, small drivers, and limit switches
      • Requires RAMPS Arduino shield, so it’s not easy to modify usage of IO pins
  • CNC Control Software
    • Mach3 (or now 4)
      • Proprietary, not free
      • Can run on Windows OS
      • Based on same original software EMC as LinuxCNC
    • LinuxCNC (EMC2)
      • Open-source
      • Full Linux OS installation, not runnable on Windows
      • One of the oldest and most advanced control software, not new-user friendly
      • Requires a platform with real-time computing capabilities, not reliably runnable on Raspberry Pi or other embedded boards
    • Universal G-Code Sender (UGS)
      • New, still under active development
      • Open-source, highly configurable
      • Java-based, cross-platform on anything that can run Java (including Raspberry Pi)
      • Meant for use with GRBL firmware to handle precise timing
    • Easel
      • Proprietary, made by Inventables to work with GRBL in their X-Carve machine
      • Web-based, run through browser
      • Very easy to use
      • Not configurable, meant only to work with X-Carve or very similar applications
  • Rail System
    • V-slot Linear Rail
      • Comes in many different form factors for very small to very large machines
      • For use with rubber V-wheels running along center of the rail
      • Can have OpenRail attached for use more similar to MakerSlide
    • MakerSlide
      • Modified version of regular or V-slot linear rails
      • Used primarily by Inventables with their X-Carve machine
      • Custom-made for medium sized machines for use with V-wheels running along outer edge of rail
      • More rigid than typical V-slot rail due to modified extrusion design
    • Linear Guide Rail
      • Best for smaller applications
      • Much more expensive
      • More precise than V-slot or MakerSlide
      • Usage of ball bearings means more susceptible to problems due to dust and contaminants
    • Linear Guide Rod
      • Cheaper than flat guide rail
      • Can be used for small or large applications
      • Similar ball bearing issues as flat guide rail
  • Drive System
    • Belt
      • Cheapest
      • Can be used in two possible configurations: 1) similar to rack & pinion with motor mounted on moving carriage or 2) with motors mounted on ends and belting in a loop attached to carriage
      • Least precise, and not good for very hard materials due to elasticity of belting
    • Rack and Pinion
      • Requires motors mounted to carriage, not on ends
      • Has to be mounted with perfect alignment across whole machine in order for motor with pinion to mesh properly with rack. This can be solved by spring-loading the rack, but this increases cost and complexity.
      • Can be run at much higher speed than screw driven
      • Expensive
    • Screw (Lead or Ball)
      • Requires motors mounted on ends, not carriage
      • Fixed size, have to get screw that matches your application precisely
      • Most expensive (if decent quality)
      • Most complex assembly
      • Most susceptible to dust contamination
  • Cutting Surface
    • MDF wasteboard
      • Cheapest
      • Can handle being milled if bit is driven too far down on work piece
      • Mounting holes must be drilled for clamping work piece down
    • Aluminum extrusion rails
      • Allows easier clamping along whole length of work area
      • You have to be more careful not to hit surface when milling

Existing Communities & Stores

An interesting note: The different CNC communities online seem to be growing quickly, but were very disconnected from each other, having very different commonly used build processes and designs. For example:

  • CNCZone (forum)
    • Seem to be some of the oldest and probably most professional CNC users, those using CNC machines for their day job, or those who have had the hobby for 20 years already. Here most people seem to use high performance water-cooled CNC spindles, and use older more professional CNC software such as LinuxCNC and Mach3.
    • Most users of this forum do not seem to make much use of newer open-source software/firmware such as GRBL and Universal G-Code Sender as I’ve chosen to use.
  • BuildYourCNC (store)
    • The best variety of parts, a good place to get ideas on what you might use.
    • Have the most wide range of DIY and kit machine designs, almost all made out of wood, rather than steel and aluminum construction as most other sites and communities use.
    • Have specialized designs for every possible application and tool type.
    • Sell (re-sell?) a lot of cheaper Chinese manufactured parts. This is where I learned about the spindle and VFD I would eventually purchase from Ebay.
    • Has the best documentation you’ll find on Chinese spindles and VFDs.
  • Inventables (store & forum)
    • One of the newest communities. Seems to have likely formed initially alongside the OpenBuilds community.
    • Most new-user friendly
    • Centered around a single very high quality, high performance machine kit (currently X-Carve) which has been iterated on for the last ~5 years by its designers.
    • Offers the most complete machine kit and straightforward build instructions
    • One of the most expensive kits, due to its high quality and user-friendliness.
  • OpenBuilds (store & forum)
    • Forum for open-source DIY designs for CNC machines, laser cutters, plasma cutters, 3D printers, etc.
    • Has infinite unique designs created by users, to be rated and used by others. By far the best melting pot of design ideas.
    • Most users build their frames on widely available generic aluminum “2020” extrusions and rubber wheels.
    • Has a parts store selling commonly used parts and partial or entire machine kits.
    • Parts store contains most of the components used by Inventables, but those parts are not common in builds by these users.
  • Reddit – r/Machining, CNC, DIYCNC, XCarve, HobbyCNC
    • The most disorganized set of subreddits for a hobby that I’ve ever seen. You have to make yourself a multi-reddit view with all of them for them to be at all browsable.
    • Very minimal community activity. Pretty useless, which is surprising given Reddit is such a great source of information on other hobbies like auto detailing, PC building, or general DIY.

 

More to come soon!

CHIP by Next Thing Co. – Quicker Setup (Headless, without a screen!)

Posted by SCProjects on February 23, 2016
Posted in: Arduino, New Parts, Programming. Tagged: arduino, C.H.I.P., cheap, CHIP, command line, how to, instructions, Next Thing Co, Raspberry Pi, setup, technology, tutorial. Leave a comment

chip1

I got my C.H.I.P. computer a little while back, but I found the setup instructions very convoluted, especially for setting it up without plugging it into a screen as I’m used to doing with a Raspberry Pi. So now that I’ve combed through the documentation for entirely too long, I hope I can help others save some time. For simplicity I’m mainly covering use on Windows, as the Linux instructions are actually better documented.

  1. If you were a part of the first shipment, you may need to run this Boot Repair Tool to fix the originally shipped firmware.
  2. Connect the CHIP to your computer by micro-USB cable (if not already done for the boot repair). The full size USB there might work as well, but I haven’t tried.
  3. SSH into the CHIP through the serial connection, as detailed here.
    The Windows instructions using Putty come after the Linux ones. Find your COM port number in the Device Manager, then on Putty connect using:
    Capture

    • Connection type: Serial
    • Serial line: COM[number]
    • Speed: 115200
    • Once it connects, login with:
      • Username: chip
      • Password: chip
      • Alternately, you can log in directly to root with the same password.
  4. Now that you’re finally in, connect to Wifi using these instructions. Basically:
    1. Find nearby networks:
      chip@chip:~$ nmcli device wifi list
    2. Connect!
      chip@chip:~$ sudo nmcli device wifi connect '(your wifi network name/SSID)' password '(your wifi password)' ifname wlan0

DONE!

You may want to run a sudo apt-get update and sudo apt-get upgrade. If, like me, you really don’t have a screen to plug it into, the next step is to get VNC or X11 forwarding set up. Instructions for this will be about the same as any other Linux machine. I followed the instructions for setting this up on Raspberry Pi, here:

  1. Install VNC server.
    chip@chip:~$ sudo apt-get install tightvncserver
  2. Run it to prompt password setup.
    chip@chip:~$ tightvncserver
    Pay attention to the number it gives the desktop.
    New 'X' desktop is chip:1
  3. Find its IP address on your network.
    chip@chip:~$ ip a
    And it will come up with a few devices, but we want the IP under “wlan0”. Something like:
    4: wlan0: [........]
    inet 192.168.1.122/24
  4. Connect using a VNC viewer from any computer on your network.
    We’ll use the IP address we found, and at the end put the number it gave us when we set up tightvncserver.
    Capture
    And you’re in! No extra monitor required!Capture
  5. If you want the VNC server to run automatically on every boot, you’ll need to create the script mentioned at the end of those instructions, here.

And NOW you can finally get to all the fun stuff following the intro steps in the documentation that require GUI usage.

$15 LED Vehicle Footwell Lighting

Posted by SCProjects on July 5, 2015
Posted in: Electronics, New Parts. Tagged: Camaro, cheap, dome light, Footwell lighting, LED lighting, LED strip. Leave a comment

2014-09-20 21.23.16

LED Footwell lighting can be done DIY amazingly cheap, especially considering dealerships like to charge as much as $400 for it.

Required tools/parts (if buying uncut LED strips):

  • Soldering iron (and preferably some experience)
  • Spare wires to use between strips
  • (Optional) Wire connectors to be able to easily disconnect portions of lighting and wires

People are always posting their car mods online, so it’s very easy to find How-to’s for your specific vehicle. I found one particularly great post on the Camaro5 forums by “AUS10BMX”, here, that was very useful for help with installation.

Here are the basics:

  1. Get some LED strip from eBay for about $10, in whatever color you prefer, or even RGB for around $20.
    These strips come in long strands that have to be manually cut and soldered to wires and connectors. Pre-cut and wired strips can be found for a little extra cost, but you don’t get nearly as much length of lighting.
  2. Find wiring harness to wire LEDs into, as well as a “ground” connection.
    This is the most important part. For newer cars, there will be a wiring harness under the driver’s side dash which will include the dome light power wire, which is the direct power line for the dome light. The details can be found by Googling your vehicle model and “dome light wire” or “dome light wire tap”. By plugging into this power source, we don’t need to worry about turning our LED lighting off and on, as it just does so whenever the dome light does, primarily when the doors open and close. For older cars, this may take more effort, as the dome light wire may be routed somewhere entirely different.
  3. Measure lengths for strips under dashboard and spaces between where wires will have to be routed.
    Keep in mind, the space between the driver’s side footwell and passenger’s side sometimes has a hole or just a snap-on cover that can be opened to route wires through. This,obviously, is useful for hiding the wires and making the exact length of the wire cuts less important.
  4. Cut strips to length to fit under dashboard on each side.
    For me, this was about 11 inches.
  5. Solder wires (and optionally, connectors) onto cut LED strips.
    This is, of course, the most difficult and time-consuming part. Using bulk LED strips, the wires and connectors will have to be hand-soldered and installed. As mentioned, if it’s worthwhile to you, you can get pre-wired LED strip at slightly higher cost. eBay and Amazon have a massive selection of “footwell LED strip” ranging from $10-$30.
  6. Install it!
    Use the adhesive on the back side of the strips and plug the wires into their places. I also reinforced the adhesive with clear packaging tape over it.

This slideshow requires JavaScript.

For more specific details, consult the Googles! I’m sure someone in the world has done it for your particular car. For my specific build, I wish I had taken more pictures, but the linked post by AUS10BMX has all the necessary info. I’ll try to get an Instructable posted, but until then, there is a very detailed Instructable by “ecellingsworth” that my be useful, here.

Resources:

  • DIY : Footwell Lighting Install – Dome/Toggle Switch – by AUS10BMX
  • Dome Light Triggered LED Footwell Lighting for a 2010 Honda Fit – by ecellingsworth
  • LED Strips on ebay
  • My build photo album

It’s been a while, here’s what I’ve been up to!

Posted by SCProjects on September 20, 2014
Posted in: Uncategorized. Leave a comment

It’s been about a year since I last posted a project. A lot has happened over the past year. I’ve hardly had time to work on personal projects, and even less to do any major doucmentation of them. But I worked hard my last couple semesters and graduated college with the highest GPA I’ve ever had, I got myself a real job doing what I love, software development. With the new income, I’ve purchased a few awesome toys like a Pebble smartwatch, an Oculus Rift DK2. And most importantly I made my first real car purchase!

Cars-NID

Quite an upgrade for me!

So along with this comes a whole bunch more project ideas!

What’s in progress and what’s to come:

  • Ambient footwell lighting – Much like what is offered OEM and aftermarket for around $400, done for around $20.
    I have it almost all wired up, and a post about it is to come soon!
    2014-09-14 09.49.40
  • Mounted Display for Media and Engine Diagnostics  – Using a Raspberry Pi, a 7″ LCD panel, and a USB OBDII connector. I have all the parts, and already laser cut a shell for the raw LCD panel and control board. Just need to do the GUI and OBD connection programming now.
    2014-09-10 07.42.46 - NID
  • Dashcam – This is something I’ve been planning on doing for a long time. This is using a Raspberry Pi and camera. Most of the programming is already done (as one of my last projects in school).
  • Head-Up Display – Inspired by this Lifehacker post, though I would not let it look nearly so ugly. This is a bit more of a dream, not sure how feasible it will be to do well without digging into my dashboard, but I love the idea ever since I got to try out a Camaro with one. It was way more useful than I ever gave the idea credit for.

Hobby Radio Receiver: Arduino class + FS-R6B Fritzing files

Posted by SCProjects on October 13, 2013
Posted in: Arduino, Programming, ReboundBot, Robotics. Tagged: arduino, class, FlySky, fritzing, FS-R6B, part editor, radio receiver, radio receivers, svg. Leave a comment

The Class

FS-R6B
About a year ago now I got my hands on a Fly-Sky 2.4G CT6B 6-Channel radio transmitter. This thing is awesome, but I haven’t had much time to put it to use. I have now finally perfected a nice class for it and other similar receivers.

Found here in my Arduino repository is my HobbyRadioReceiver class header file and an example sketch.
This class is based on the FS-R6B six channel receiver, but I’ve generalized it to accept any given number of channels so you can use this class with other common radio receivers. I’ve also given the ability to test the channels as different types of input. View the class declaration to see more details. I apologize if the usage of the class is not clear, let me know if there is any confusion or anything I can improve on.

Fritzing it!

Control Testing_bb

Fritzing is an awesome program for visually mapping out the wiring of a project. Unfortunately, it does not always have the parts you need. I was very disappointed to find there was no included hobby radio receiver part, so with much strife, I made my own. After a LOT of Googling to figure out how to make parts in Fritzing, I finally got a nice “breadboard view” svg image file created. Figuring out how to make a part, then how to use the Inkscape photo editor, then finally making the part took me a few of hours total. All I wanted was the breadboard view anyway, so naturally, when I discovered you also have to make the Schematic and PCB views as well, I gave up for the time.

So I may later post the other views, but until then, here is the svg image for the FlySky FS-R6B six channel receiver in breadboard view. To then convert this into a part in Fritzing, you must follow the steps listed here using the Fritzing parts editor. It is a pain in the rear, so if anyone happens to make the other views, please share!

This will be the basis of my ReboundBot communication, at least until I get me xBee’s set up. Here is a quick test of the input using the exact circuit shown above. Keep in mind this video was made before I perfected the input sensing. I have since added a small deadzone on the joystick, as well as rounding the input value to reduce noise.

Resources:

  • Arduino “HobbyRadioReceiver” Class
  • FS-R6B Fritzing “breadboard view”
  • Fritzing “Providing Part Graphics” Tutorial

$32 Fly-Sky 2.4G CT6B 6-Channel Transmitter

Posted by SCProjects on October 29, 2012
Posted in: New Parts. Tagged: arduino, cheap, fly-sky, gadgets, rc, software, sparkfun, technology, transmitter. Leave a comment

Well I know it’s been a while, school’s kept me pretty busy lately. I haven’t done much work on my projects, but with a new job this semester, I have finally been making enough to get some cool new parts I’ve been dying for!

Since I intend to eventually get a quadrocopter or airplane drone going, I figured I might as well finally buy myself a transmitter.

I’d take my own photo, but this one’s better.

It can be found on hobby sites like Nitroplane or xHeli, and Amazon.

It might not look like much, but this 6 channel transmitter is fully computer programmable and adjustable, has “bind and fly” transmitter/receiver pairing, and only $32!

Sparkfun has an awesome tutorial for using the receiver with Arduino, and I found this detailed tutorial for setting up the transmitter, along with all the drivers, software, and other resources.

It’s all super easy to set up, I’ll have a short servo test video up soon.  This thing should make that and all my RC projects a whole lot easier. I plan to set this thing up on my ReboundBot, along with a video camera and some xBee’s to transmit to my computer.

 

EDIT: Check out my Arduino class for this radio receiver in this post.

Resources:

  • Transmitter Software and Driver Download + Tutorial
  • T6 Manual
  • Sparkfun: Arduino + receiver tutorial

Micromouse Outcome – Why I lost, and What I learned

Posted by SCProjects on May 27, 2012
Posted in: Arduino, Micromouse, Programming, Robotics. Leave a comment

So, after spending a good couple months on the thing, I didn’t get very far, but I sure learned a lot from the whole experience. Now knowing all of my robot’s strengths and weaknesses, as well as all the other competing robots.

The Rush for a Final Product

The last few days before the UCSD Micromouse Competition were pretty hectic. With midterms the previous few weeks, I hadn’t given myself nearly enough time for programming and testing it in our maze. In fact, I hadn’t even finished my flood-fill (maze-solving) algorithm until the Friday before the competition.

By the day before the competition, my robot was able to successfully solve the maze in its head, but it still didn’t move around the maze very well. And this was my ultimate downfall.

The Programming

Here is my repo if you care to see the code. I believe I included all of the libraries I used. All the folders preceded by “Mouse” are my main libraries, the others are all helpers for the implimentation. Please feel free to criticize any of my code, that is, all of the files with my name at the top.

Structure

My main goal was to abstract everything as much as possible,  though keeping speed and RAM efficiency a close second priority. I accomplished that decently, though I became dangerously close to running out of RAM with my Maze information.

I began by building reusable classes for each of my I/O devices. The MouseIR, MouseMotor, MouseOutput (using an RGB LED), and PushButton all allow me to easily add any number of these devices by simply instantiating a new one passing in the pin(s) I used. I then built around these abstracting more each time.

The “MouseBrain” library was my outermost, fully abstract functions, used by “MouseBrainExample.ino”. This encompassed both the “Mouse” library, which controls all of the physical movement of the mouse, and the “Maze” class, which held all of its knowledge of the maze its position in it.

Maze-Solving

The main maze-solving algorithm I used was the popular modified flood-fill. I was unable to figure out the supposed way to “generate cell values at runtime” in time for the competition, so I went for the heavy RAM usage method, using two 256 byte arrays to store my walls and the flood values. Luckly, I just barely had enough leftover RAM for everything else.

Its Biggest Weaknesses – Size!

Album of the build.

After months of planning the build without any real testing, I put the whole mouse together in one day, BEFORE the programming. I was naive. While other teams began rebuilding to downsize their bots, I kept telling myself, “Ah it’s a little big, but I’ll just make up for it with good programming.” FALSE. There’s only so much my programming could do to help.

The motor gears were loose enough to give a random and unaccountable error every time it turned, as well as in normal wall avoidance. It only had to be off by a couple centimeters to run into a wall.

Hopes for the Future

Overall, it was a whole lot harder than I expected it to be. I have so many plans for improvement if I get another chance to compete. Including but of course not limited to:

  • Smaller body
  • micro-switches on outside to detect wall hits
  • motor current-sensing for crash detection
  • compass direction checking
  • more IRs, including diagonal-facing

ReboundBot – Intro

Posted by SCProjects on May 3, 2012
Posted in: Arduino, ReboundBot, Robotics. 4 Comments

So I’ve been planning to do this for way too long, and I’m just now getting to the experience level to actually be able to do something with this.

Tyco RC Super Rebound – Anybody remember this bad-boy from their childhood?!

I had this in my attic for years, and a couple years ago, (in my naive interest in robotics) I opened it up and tore out the circuit board, hoping to put my own in and do… something? with it. Little did I know, at the time, that that original board would’ve made it a bit easier to deal with.

My first year of college, after getting my first Arduino (which I very much wish I had heard of before then), I finally hooked it up using the original motors, this motor driver shield with the added half-amp of the SN754410 motor driver, and a big old Pro Max Ni-Cd battery from my nitro RC car’s starter. However, it still wasn’t powerful enough to make the thing turn on its axis.

This sample sketch was supposed to make it move forward, backward, and spin around. As you can see, it never quite accomplishes that.

More recently I’ve completely removed the “shield” and added two nice big L298N motor drivers giving it roughly 3A per motor (one motor on each side). Somehow it seems even this is still doesn’t give it the ideal power I’m looking for, but it’ll do until I figure something out.

Current picture, without the drivers or Arduino attached (It’s in my Micromouse).

As you can see in the picture, I have added IR sensors to the front and back. Not sure yet how I’m going to detect a wall to its side though… The wheels are way too big for it to sense anything diagonally.

I wish I had taken more pictures of the disassembly, but I hadn’t thought of it at the time, I’ll have much more in the current updates! Including schematics and my code.

$8 Bluetooth Module – JY-MCU BT_BOARD

Posted by SCProjects on April 28, 2012
Posted in: New Parts. Tagged: ebay, gadgets, micromouse project, technology. Leave a comment

from Ebay

Just Got this awesome little thing in from ebay. Using the default settings you can just plug-n-play, it’s automatically visible to other Bluetooth devices as “linvor”.

I intend to use it with my Arduino projects, it works perfectly plugged straight into the Arduino’s Serial ports.

Being as cheap as it is, I haven’t seen any official documentation on this thing, but just Googling around I’ve found a lot of people talking about it and how to change settings and such.

Here’s a little example of its usage with the Arduino. I’m working on a Micromouse project and had some example code loaded to receive Serial input commands. Then since my computer’s bluetooth adapter hasn’t come in yet, I used a free Android app I found, Bluetooth SPP, to send and receive commands.

Pretty pointless usage for the time being, but it’s a cool example of the capabilities.

Posts navigation

← Older Entries
  • Categories

    • Arduino
    • Electronics
    • New Parts
    • Programming
    • Robotics
      • Micromouse
      • ReboundBot
    • Uncategorized
  • Recent Posts

    • Android App for Monoprice Select Mini 3D Printer
    • Current Project: My first CNC build!
    • CHIP by Next Thing Co. – Quicker Setup (Headless, without a screen!)
    • $15 LED Vehicle Footwell Lighting
    • It’s been a while, here’s what I’ve been up to!
  • More projects!

    2013-10-23 20.14.24
    2014-09-08 19.06.25
    2013-07-03 16.51.07
    2013-07-03 15.57.39
    2013-02-06 23.20.52
    2012-06-16 03.56.16
    2015-06-17 22.22.51
    2014-11-03 22.33.45
    2015-06-17 22.31.14
    2013-11-24 19.35.42
    2012-05-03 19.41.49
    2012-10-23 15.46.35
    2013-03-05 03.07.58
    2012-05-03 19.43.02
    2014-11-11-11-13-34
    2014-08-23 14.32.41
    2015-06-17 17.20.44
    2013-09-23 16.02.41
    2013-03-06 01.23.50
Blog at WordPress.com.
SC Projects
Blog at WordPress.com.
Privacy & Cookies: This site uses cookies. By continuing to use this website, you agree to their use.
To find out more, including how to control cookies, see here: Cookie Policy
  • Follow Following
    • SC Projects
    • Already have a WordPress.com account? Log in now.
    • SC Projects
    • Customize
    • Follow Following
    • Sign up
    • Log in
    • Report this content
    • View site in Reader
    • Manage subscriptions
    • Collapse this bar
 

Loading Comments...