101hero: Assembling the printer

The first part covers the short story of the printer, the contents of the box, a few tips and warnings about the ways you might damage your printer unintentionally (if you have not read these you should).

This part is about assembling the printer step by step.

First connect only the PSU to the controller and switch it ON and OFF, the red LED should light up when it is ON.

Now connect the motors and end-stops to the controller (do not assemble anything yet) and attach the SD card slot. The intended order of the pylons as well as the motor-end-stop pairings are below:

After connecting these put a simple “go home” file on your SD card and then power it up. The motors should start moving the carriages (all three at the same time) until one hits its end-stop. Then the other two should stop and only that should move back and forth triggering the end-stop a few times. After this the remaining two should do the same one by one.

If all three carriages hit the end-stops then congrats, you have working motors and end-stops, this is a good start! If not… well then you are in the unlucky group of quite a few people, including me. In this case check out the 101 Hero (Unofficial) Facebook group.

You can restart the procedure by pushing the reset button or power cycling the controller board.

Now on to assembling the printer!

At the top of the pylon arrange the red-black cable of the end-stop so it goes through the shaft:

At the bottom of the pylon the red-black cable should go through the shaft just like above and arrange the cables of the motor like on the picture:

Make sure for each pylons that the spring on the belt is tight to provide tension…

… the belts are properly on the wheel at the top…

… and the bottom:

 

If the belts are off the wheels try to put them back carefully. If that is not enough then you can loosen the motor a bit by loosening the two screws holding it in place (3mm Hex Socket aka Allan heads). If you have to remove the belt tensioner spring here’s a video how to put it back.

Next, assemble the bottom plate and the three pylons (4 pcs of M4x12 self-tapping screws (PH1 head) for each pylon):

And then add the top plate (2 pcs of M4x12 self-tapping screws (PH1 head) for each pylon, NOTE: the two inner holes remain empty on each end on the top):

And now fix the effector to the rods. The facing of the head does not matter but it can be useful to see the fan (to see if it is working) and the door (for change filament) from the front. The first screw…

… the second screw (you can safely leave it hanging)…

… and the rest:

Now stick some painter’s tape to the glass plate (you don’t need to cover the whole glass just make sure you have no overlaps of the tape) put it on the bottom plate and fix it in place using the paper clips like this:

Now connect the rest of the cables to the controller box:

Next step is to load the filament. The extruder assembly has a door you can open, this door pushes the filament to the extruder motor which is supplying the filament to the heated nozzle. Open up the door and put the filament in at the top of the extruder assembly, guide it into the tube after the motor, like this:

When completed close the door and tighten the screws (2 pcs M3x12 self-tapping screws (PH1 head)).

After completing this step the printer should look like this:

Which is a mess. The cable management is pretty much non-existent for the 101hero by default. People use different cable organizing methods, the most popular is the spiral wrap but personally I like the zip tie method which is nothing special just zip tying the cables at a few centimeters interval, like this:

After completing this step you should cut the ties short, of course. One more thing I did was fixing the bunch of extruder cable to the top plate to an unused hole like this:

You need to leave about 25 cm (10 inches) of cable between the fixing point and the extruder assembly so the hot end can reach the farthest point safely.

And that’s all about assembling the printer. The next post will be about how to calibrate the 101hero.

101hero: Hello

The 101hero is a pylon 3D printer that had a campaign on both IndieGoGo and Kickstarter with early bird prices of US$ 49 and retail price of US$ 99 on 101hero.com.

First of all, the 101hero team’s goal was to create “The World’s Most Affordable 3D Printer” as they said and not the the printer you should start your 3D printing adventures with and this can be seen in a few places. Nevertheless, the printer is functional and the prints can turn out surprisingly nice if one is willing to spend enough time and don’t mind the hassle but if you’re new to 3D printing and you want a printer that works out-of-the-box, this one is not the best choice.

I backed the IndieGoGo run and have received the printer in January, 2017. I am new to 3D printing this is the first one I bought and the first one I ever printed with, In these posts I will share my experiences, tips I find useful and caveats.
The printer comes in two versions: the CV (Consumer Version) and DV (Developer Version). The only difference is that the DV has a USB port and can be connected to a computer while the CV can only print from SD card (which is not part of the package).


Assembling the 101hero is pretty straightforward but before getting started check all the components that should be in the box:

  • 3 pylon assembly – they are identical except for the length of the wires and labels, there should be an end-stop microswitch (to detect that the carriage reached the top of the pylon), two slide rods, a belt, a carriage (fixed to the belt, sliding on the two slide rods, fixed to effector rods) and a motor
  • 1 controller box
  • 1 SD card slot
  • 2 plates – one for the base and one for the top
  • 1 extruder assembly with effector – the “head”
  • 1 bunch of filament – the printer comes with black or white, I bought the green separately
  • 1 roll of painter’s tape – to help adhesion of the first layer printed
  • 1 glass plate
  • 3 paper clips – to fix the glass plate to the base
  • 6 pcs M3x10 machine screws (PH1 head) – for the carriage-straw/strand and straw/strand-extruder assembly
  • 18 pcs M4x12 self-tapping screws (PH1 head) – for pylon-base and pylon-top
  • 2 pcs M3x12 self-tapping screws (PH1 head) – for door fixing on extruder assembly (identical to the ones used for end-stops in early editions)

In early editions the end-stops are hitting against M3x12 self-tapping screws with PH1 heads, I have read that later they switched to Hex Socket (aka Allen) types.

Before assembling the printer I would like to tell you some basics and recommend to do further checks.

When the printer is powered it looks for a file called “101hero” on the SD card and starts to execute it (i.e. printing, moving, etc.). The file is a G-code file and has no extension, it is just “101hero” (when saving the file using Notepad on Windows to prevent it appending “.txt” change the “File type” drop-down to “All files (*.*)” or put the file name between quotes).

The button on the controller box simply resets the printer that causes it to re-initialize and looking for the file and execute it.

The pylons are identical except for the cable lengths and the labels that are on them, that is you can have them swapped and even replaced from a different package, they will work. One important note however – the end-stops are used to detect when the carriages reach the top of the pylon so the motor-end-stop pairs need to be kept consistent, if they are not then the controller will keep moving the carriage until you turn the power off.

A big warning: the power is not only sourced from the power connector but from USB as well – that is as long as your printer is connected over USB it will power the board – regardless of the power switch! Yeah, if you slide the switch to OFF the board will still be powered, although the printer will not operate properly due to the low current but you can damage the printer if you short something.

One more big warning: the controller has no flyback diodes to protect itself from inductive spikes. Simply put: only move the carriage slowly by hand because the motor generates current that will be fed back to the controller. If the current is too high (due to moving fast) it might damage your controller. Although I have not tested it yet, it might also be fed back over USB damaging your computer as well.

The printer has basically no customer support. As of March, 2017 the 101hero team is still busy shipping packages and really unresponsive to support questions, however there is a really active group on Facebook, the 101 Hero (Unofficial) and a forum at 101user.com.

Now it is time to start connecting things, meet me in part two.

Creating a mobile Wi-Fi network

As a part of a somewhat larger project I have been thinking about creating a mobile Wi-Fi network that can be carried around (and later can be extended to a network of multiple routers).

As I already have a PowerBank (basically a rechargeable battery with USB ports to charge a phone on the go) it looked like the ideal solution to use this as a power source. But then after a few searches of USB powered or at least 5 volts powered Wi-Fi access-points that meet my requirements to create a secured WDS (more on this in a later post) seemed to be too high. I found a few of them but they either were ridiculously priced or were given bad reviews.

At this time I realized that I had a good old Linksys WRT54GL router laying around. As this is a fairly common model with a quite favorable hackability factor, I did a quick research and found that this might be the best device for me.

IMG_9862_3_1600

The OpenWRT can be installed on this router and from software point of view it has all the features I want: WPA2 support, WDS (Wireless Distribution System – mesh, roughly), admin interface over HTTPS and is running Linux. Well, this last part was not strictly on the requirement list but hey, a device running Linux is always good to see (and opens up a lot of new opportunities).

On the hardware part I found out that the power adapter says it is supplying 12 volts and 0.5 amperes to the router. I found a few places where they told that just after the power jack there is a power regulator (a switching mode buck converter) that converts the voltage down to 3.3 volts. After taking apart I saw that this is indeed in place. Good thing about these buck converters that the input voltage range is usually wide, I found that it is about 3.7-16 volts, so it is more than suitable for my battery powered operation where the voltage drops over time when connected directly to the battery.

After finding out this wide range of input voltage I reconsidered my battery selection. Instead of using the PowerBank I decided to use a more universal solution – AA batteries. These can be found virtually anywhere and can be used for a lot more purposes when they are not used in this project. Also, hooking up 4 of them gives me 6 volts, but if I need more power then 8 of them is fine as well (giving 12 volts).

IMG_9865_3_1600

Here I used 2700 mAh batteries, 4 of them gives about 13 Wh (watt-hour) power (1.2 volts x 2.700 ampere-hour x 4), 8 of them gives about 26 Wh. If the router is consuming the maximum the original power adapter can provide (6 watts) then I can use the router for 2 hours straight from 4 batteries. But I really doubt that even a peak consumption ever reaches 6 watts.

Unfortunately it seems that the barrel plug power connector is not too stable (or maybe just the one I bought was of poor quality), when moving the router around a little a momentary loss of power (and therefore a reboot) was fairly common. So… as the router was already taken apart, I have soldered a pair of wires to the main board for the power and found a hole on the bottom of the case where I could bring the cable out without having to drill it.

It turned out to be working perfectly in the end.

In my next post I will write about making another WRT54GL mobile and setting up a WDS (Wireless Distribution System) to extend the range of the mobile Wi-Fi network.

VoCore: A coin-sized Linux computer with Wi-Fi for USD 20

In early July I’ve found an Indiegogo project of a miniature Linux powered computer called VoCore.

It is a RaLink RT5350 (360 MHz MIPS24KEc) based board with 8 MB SPI Flash (although Vonger, the creator of the project upgraded to a 16 MB Flash for the Indiegogo batch just because he’s a nice guy) with two 10/100 Mbps Ethernet interfaces, one USB 2.0 interface, a bunch of serial interfaces (UART, I2C, I2S, PCM, JTAG) and over 20 GPIOs. All these broken out to standard 1.27 mm connectors while keeping the size at 25×25 mm!

There is a dock to provide some connectors: an Ethernet, a USB, a micro USB (for the power) and a micro SD card slot – this measues 25×25 mm as well, of course.

VoCore is running the OpenWRT firmware. It acts as an access point by default, running a network called “VoCore” (this is unfortunately an open network (i.e. no encryption set up) so changing security settings as soon as possible is recommended).

Vonger, the creator of the project is running a blog at vonger.cn, he was constantly updating it with the latest status of the VoCore development and production, both bad and good news. Thanks to this it seemed that we were witnessing all the little details, it felt like we (the backers) were parts of the whole process :)

The VoCore can be ordered from vocore.io/store. If you would like to have the VoCore main board only (with all the I/O breakouts but no connectors at all) it is USD 20, but if you’d like to have the Dock as well, plus a USB to TTL converter (note: this is missing from my pictures below!) to re-flash the firmware it is just USD 45.

I believe that the VoCore has a lot of potential thanks to its small size (25×25 mm) its low power consumption (0.6-1.2 Watts) its flexibility (20+ GPIOs and the whole bunch of connector break outs) and low cost.

I think this is a must have board for any geeks out there who have thought about hacking some hardware once in a while.

Oh, and one more thing: VoCore is open source, both software and hardware. All the schematics, circuits, firmware, 3D model for the shell/case, everything is available to download from the VoCore’s site.

 

GameBoy hardware hacking: Part 1

In the case of GameBoy and GameBoy Color systems the console itself holds just a really minimal program on the board, the so-called boot ROM (256 bytes long). It does the initialization of the components and the cartridge, also it reads the header part of the program stored on the cartridge and checks if that is valid. (Fun fact: the scrolling Nintendo logo is read from the cartridge and it is really a test to see if the cartridge can be accessed correctly. The logo is then compared to the one stored in the boot ROM to see if it was read correctly, if not that indicates some pins are not working and the CPU halts. This is when you need to blow the cartridge.).

All the other program code (i.e. the game itself and all the instructions to make it work) is located on the GameBoy Cartridge alongside with the textures, sounds and all the rest.

So the cartridge is basically the part of the system, the CPU reads it directly when it needs the next instruction and executes the code from there without copying it to its own memory.

The cartridges usually consist of the following components:

  • ROM: Read Only Memory
    Stores the program code and all the resources needed for the game. It is programmed once and then never written again.
  • MBC: Memory Bank Controller (optional)
    The Memory Bank Controller switches banks of the addressable memory space (32 kilobyte in total). The lower 16 kilobytes are always the first 16 kilobytes of the ROM while the upper 16 kilobytes are switchable between several blocks (i.e. part of the ROM or the RAM). There are several MBCs out there with their own purposes. This is a really long story, I’ll write more about this later.
  • RAM: Random Access Memory (optional)
    This is a readable and writable storage, when a game has high-score list, saved game state, etc. it holds them information in the RAM. This is a standard SRAM so this is volatile – it needs constant power to keep the data alive this is why cartridges with RAM need batteries as well.
  • Battery: (optional)
    The battery provides power for the RAM to keep the stored data alive.
  • Connector:
    Last but not least, all the cartridges have a 32 pin connector that provides a connection between the console and the components of the cartridge.

The interface between the console and the cartridge consists of 32 pins (direction is written from console perspective, out: from console to cartridge, in: from cartridge to console):

  • pin 1 [out]: VCC (+5 V)
    This is the supply pin for the cartridge and its components (i.e. the ROM, RAM, MBC).
  • pin 2 [n/c]: not connected or CPU clock
    I have not seen this pin connected so far but some documents claims this is a direct output of the CPU clock. I ran a logic analyzer on this pin, it showed a high-low pattern alternating at 1.04 MHz (0.46 µs high followed by 0.50 µs low).
  • pin 3 [out]: !write
    This is a signal line that is low when a write request is made to RAM. Otherwise this is high.
  • pin 4 [out]: !read
    This is a signal line that is low when a read reqeust is made to ROM, MBC or RAM. Otherwise this is high.
  • pin 5 [out]: !RAM select
    This line is low when the RAM or the MBC is being accessed. Both of them supports reads and writes. Otherwise this is high.
  • pin 6..21 [out]: address selection bit 0..15
    These bits sets the address that is being written or read in the RAM, ROM, or in the MBC registers.
  • pin 22-29 [out/in]: data in/out bit 0..7
    When the console wants to read from the ROM, RAM or MBC these pins are inputs, their values being set by the remote component. When the console wants to write data these are outputs, set to the data by the console.
  • pin 30 [out]: !reset
    When the console reboots it sets this pin high after about 4-5 ms. This delay is probably introduced to give the clock a few cycles to stabilize.
  • pin 31 [n/c]: not connected or analog audio input
    I have not seen this pin connected so far but some documents claims this is an analog audio input. (I think I’ve read something about a direct sound channel on the GameBoy CPU, but that might be a different story.)
  • pin 32 [out]: GND
    The ground connection for the cartridge and all the components.

In the following posts I will write about the different cartridge and MBC types, and also will post schematics and circuits to build a few different homebrew GameBoy cartridges. Stay tuned.