Skip to contentSkip to author details

hobbies

A 5-post collection

My Second Gundam Model Build - Barbatos Lupus

Written by Michael Earls
 hobbies  Gundam  Gunpla  models

I just finished building the Gundam Barbatos Lupus (021) kit from Bandai. It costs me $12 on Amazon and I spent about three hours total building it.

I finally see the differences in the models as this one was a much different experience than my first model.

This model is a little more stiff and doesn't have the same articulation variability as the Try Burning Gundam does.

However, it has a cool sword that it can hold.

Also, there are a lot more areas that require panel lining on this model. None of my pictures have the panel lining in them (yet), but I've been adding a little here and there since taking the photos. I may update this post with some panel lining after shots.

It's all about the quiet time

Once again, I really enjoyed the quiet time building this model. I woke up early on a Saturday and Sunday and worked on it in the silence of the morning. It was a very relaxing activity. It's amazing that these models require no glue (so far). I did add cement to the side of the head of my first model in an attempt to cover a seam line, but it didn't work. There's no glue or cement in this model.

Low standards for appearance

I'm also not cleaning or painting my models to any particular high specification. I'm currently just satisfied with having an assembled model. It's easy to see areas where I need to clean the edges on the model. I'm also not going to paint these models just yet as I'm not sure I want to go that deep into the hobby yet. I also used the supplied decals. A lot of really good model builders on YouTube don't use the decals, but paint the model instead. I'm not ready for that at this point.

Summary

All in all, this has been a fun hobby. I have to admit that I was a bit reluctant to start building this one right before I started, but once I got through the first few steps, I started enjoying it again.

I may buy a higher grade model in the near future (more parts and longer build times), but I still have a few High Grade models on my list at Amazon.

Build photos

Box art Box Art

Head Head

Head (side view) Head (side view)

Head (with eyes visible) Head (with eyes visible)

Upper body Upper body

Back of upper body Back of upper body

Legs Legs (I forgot a panel on the back of the left leg when this photo was taken).

Assembled upper body Assembled upper body

Here are some pictures of the model after I did some panel lining:

Panel Lining 1

Panel lining 2

Panel lining 3

Panel lining 4

Panel lining 5

My First Gundam Plastic Model (Gunpla) - "Try Burning Gundam"

Written by Michael Earls
 Gundam  Gunpla  models  hobbies

After working with electronics for awhile, I wanted to take a break from puzzles and try something new that requires less thinking (and less math). I decided that I wanted to build plastic models. After looking around local hobby shops, all I could find were cars, airplanes, and a few Star Wars snap-tites.

Then, while browsing YouTube, I found what I was looking for: Gundam Mobile Suit plastic models; "Gunpla" for short. I watched a lot of videos from some master Gunpla builders and learned some cool tricks.

The models come in different "grades" that indicate how difficult they are to assemble. I chose to go with High Grade (HG). That's the lowest grade and the easiest to assemble.

My birthday was last week and I received my first Gunpla model as a present. To get started in the hobby, I really only needed a few things: X-Acto hobby knife, nail files of various coarseness, and some liquid cement. I already had the precision tweezers and side cutters from my electronics hobby.

I started the model at around 6:00 AM this morning and finished up around 9:30. It was very relaxing to just follow the instructions and build the model. Once assembled, the model is pose-able and has a lot of points of articulation.

Here are photos that I took at various points along the way.

Chest area Chest area

Right Arm Right Arm

Work Area Work Area

Head (without forehead decal) Head (without forehead decal)

Right Leg Right Leg

Completed Model Completed Model

Completed Model Closeup Completed Model Closeup

I really enjoyed assembling this model. I'm looking forward to the next model.

I haven't added any effects or panel lining yet (lines around the edges of the "panels" on the model). I'm not sure if I'm comfortable trying to do panel lining on my first model. Maybe I'll do it in the future.

Update: I decided to add panel lining to my model. It makes it look much better. The details really shine! Here's a sample from the waist area:

Panel Lining Panel Lining

A Saturday morning puzzle on my FPGA

Written by Michael Earls
 FPGA  electronics  hobbies

I woke up this morning with a desire to solve a puzzle. I decided that I'd make a simple LED chaser on a 7-segment LED display using my Mojo FPGA (now that I have everything working in Windows 10 again thanks to the awesome customer support from Justin at Embedded Micro).

Here's a video of the results:

Here is a breadboard image showing how I've wired up the circuit:

Mojo 7-segment chaser breadboard circuit

Here's my constraints file that shows the wiring of the 7-segment display:

NET "seg<0>" LOC = P51 | IOSTANDARD = LVTTL;  
NET "seg<1>" LOC = P50 | IOSTANDARD = LVTTL;  
NET "seg<2>" LOC = P41 | IOSTANDARD = LVTTL;  
NET "seg<3>" LOC = P40 | IOSTANDARD = LVTTL;  
NET "seg<4>" LOC = P35 | IOSTANDARD = LVTTL;  
NET "seg<5>" LOC = P34 | IOSTANDARD = LVTTL;

Update (8:00 PM): I was able to reach my goal and pull this off using VHDL instead of Lucid. Here is the entire program (no dependencies required). This is much more precise. I really like VHDL.

library IEEE;  
use IEEE.STD_LOGIC_1164.ALL;  
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity circle_chaser is  
    Port ( clk : in  STD_LOGIC;
             rst_n : in STD_LOGIC;            -- reset button (active low)
             led : out STD_LOGIC_VECTOR (7 downto 0); --8 user controllable LEDs
             cclk : in STD_LOGIC;             -- configuration clock, AVR ready when high
             spi_miso : out STD_LOGIC;       -- AVR SPI MISO
             spi_ss : in STD_LOGIC;           -- AVR SPI Slave Select
             spi_mosi : in STD_LOGIC;         -- AVR SPI MOSI
             spi_sck : in STD_LOGIC;          -- AVR SPI Clock
             spi_channel : in STD_LOGIC_VECTOR (3 downto 0); --AVR general purpose pins (used by default to select ADC channel)
             avr_tx : in STD_LOGIC;           -- AVR TX (FPGA RX)
             avr_rx : out STD_LOGIC;          -- AVR RX (FPGA TX)
             avr_rx_busy : in STD_LOGIC;
             seg : out  STD_LOGIC_VECTOR (5 downto 0)
     );
end circle_chaser;

architecture Behavioral of circle_chaser is

signal clk_div   : std_logic_vector(21 downto 0);  
signal shift_reg : std_logic_vector(5 downto 0) := "000001";

begin  
    led <= X"00";
    spi_miso <= '0';
    avr_rx <= '0';

    -- clock divider
    process (clk)
    begin
      if (clk'Event and clk = '1') then
            clk_div <= clk_div + '1';
      end if;
    end process;

    -- LED chaser
    process (clk_div(21))
    begin
      if (clk_div(21)'Event and clk_div(21) = '1') then
            shift_reg <= shift_reg(4 downto 0) & '0';
            if (shift_reg(5) = '1') then
                shift_reg <= "000001";
            end if;
      end if;
    end process;

    -- display the result on the LEDs
    seg <= shift_reg;

end Behavioral;  

Update (6/18 10:00 AM): I completed the HDL trilogy this morning and implemented this chaser in Verilog. Here is the code:

module mojo_top(  
    // 50MHz clock input
    input clk,
    // Input from reset button (active low)
    input rst_n,
    // cclk input from AVR, high when AVR is ready
    input cclk,
    // Outputs to the 8 onboard LEDs
    output[7:0]led,
    // AVR SPI connections
    output spi_miso,
    input spi_ss,
    input spi_mosi,
    input spi_sck,
    // AVR ADC channel select
    output [3:0] spi_channel,
    // Serial connections
    input avr_tx, // AVR Tx => FPGA Rx
    output avr_rx, // AVR Rx => FPGA Tx
    input avr_rx_busy, // AVR Rx buffer full
     output [5:0] seg
    );

wire rst = ~rst_n; // make reset active high  
reg [22:0] clk_div = 22'b0;

// these signals should be high-z when not used
assign spi_miso = 1'bz;  
assign avr_rx = 1'bz;  
assign spi_channel = 4'bzzzz;

assign led = 8'b0;

parameter REG_INIT = 7'b0000001;

    reg [6:0] shift_reg = REG_INIT; // register for led output

    always @ (posedge clk) 
    begin
        clk_div = clk_div + 1;
        if (clk_div[22] == 1) begin
            clk_div = 0;
            shift_reg = shift_reg << 1;
            if (shift_reg[6] == 1) begin
                shift_reg = REG_INIT;
            end
        end
    end

    assign seg = shift_reg[5:0]; // wire output and leds register

endmodule

I had to take a different approach with the shift register to allow for an additional bit to check to see when to reset the shift register (and mirrored LED segments) back to the start. I made the shift register 1 bit larger (line 36) than the LED segments so I could check to see when the MSB was high and then reset. When the shift register was the same size as the LED segments, it would skip lighting one because it got reset before it could be lit up.

Here is the Lucid code (the Mojo-specific HDL):

  
.clk(clk) {
  .rst(rst) {
    circleChase chase(#SPEED(22));
  }
}

always {  
  seg = chase.out;
}

The chaser was a lot easier to implement than I expected...

module circleChase #(  
    MAX_OUT = 6: MAX_OUT > 2,
    SPEED = 25: SPEED > 0 // the lower the SPEED, the faster the counter
  )(
    input clk,  // clock
    input rst,  // reset
    output out[6]
  ) {

  .clk(clk) {   
    .rst(rst) {    
      slowCount count(#SPEED(SPEED));
    }
  }

  const TOP = MAX_OUT;
  counter outCount(.rst(rst), .clk(count.q), #TOP(TOP - 1));

  always {

    out = 6h0; 

    if(count.q) {
        out[outCount.value] = 1;
    }
  }
}

Notice how the clock to the outCount module on line 17 is coming from the slowCount's .q trigger. This goes high each time the slowCount reaches it's limit (the code for this is at the bottom of this post).

I've covered it before, but for completeness, here is the code for the slowCount module (in Lucid, the Mojo-specific HDL):

module slowCount #(  
      SPEED = 25 : SPEED > 0
    )(
    input clk,  // clock
    input rst,  // reset
    output value[8],
    output q
  ) {

  .clk(clk), .rst(rst) {
    dff flip[SPEED];
  }

  const LIMIT = SPEED - 1;
  counter ctr(.rst(rst));

  always {
    ctr.clk = flip.q[LIMIT];

    // toggle the q bit when the counter reaches each end
    q = flip.q[LIMIT] == 0 ? 0 : 1;

    flip.d = flip.q + 1;
    value = ctr.value;
  }
}

Why I really got back into electronics

Written by Michael Earls
 electronics  diy  music  hobbies  Lunetta  art

Why I really got back into this hobby

A few weeks ago, I stumbled on a DIY synthesizer community based on synthesizers called "Lunettas" (after Stanley Lunetta, the guy who pioneered the process). I'll let you read about it if you're interested.

Intro to Lunetta CMOS Synthesizers

Lunetta on Breadboard

Basically, Lunettas are CMOS-based (usually) integrated circuits that are setup to generate clock frequencies within the range of human hearing. The circuits are created using very inexpensive chips containing "oscillators", very much like the more expensive Moog or Eurorack alternatives (one Lunetta CMOS with six oscillators costs less than $0.50 while a single simple Eurorack oscillator costs about $150). However, the sound from Eurorack modules is more "mature" and musical, while Lunettas tend to be a bit "beepy" and chaotic.

An example of a Lunetta Synth

WARNING! Obnoxious beeping ahead!

I hope to change that by removing the annoying beeping sounds from the resulting output of my Lunetta device and replacing them with more musical results.

The possibilities are endless when you combine CMOS-based (along with some passive components to change clock frequencies driving the components) with a Raspberry Pi and software.

I have a lot of ideas, but every time I get a new Idea, I research the underlying theory and get caught up in the science of it all. The idea behind Lunettas is that they're supposed to be experimental and a way to just play around with circuitry to make cool sounds. I'm applying an enormous amount of brain energy thinking of ways to control the sounds based on theories like the General Theory of Generative Music (GTTM).

Honestly, I just need to sit down and play with these circuits before I can build my ultimate "smart" machine that "composes" its own music.

One of my biggest desires in life is to create a machine that can create art based on minor inputs from me and a little guidance along the way. I want it to "learn" how to listen to music, develop its own "tastes" and then create "music" based on what it has "learned". All of those words in quotes are because I'm not really trying to build a self-realizing AI, I just want to build a machine that creates art.
Google AI Deep Dream Artwork

After 30 years, I have returned to my favorite hobby

Written by Michael Earls
 electronics  michael  programming  diy  projects  hobbies  computing

The past

When I was a teenager, I was a major nerd. Well, actually, I have been a major nerd for my entire life, but it really started to emerge during puberty.

On my exterior, I was a "metal head" who wore Iron Maiden and Metallica t-shirts, ripped up blue jeans (I don't think my father will ever forgive me for cutting up a perfectly good pair of new jeans so I could wear - this is so embarrassing - a zebra patterned leotard under it like some sort of Whitesnake poser. I only did it once, and regretted it for the rest of my life).

Anyway, awkward teenage clique memberships aside, I was into all things "computery" (as I had been since my parents bought me my TI-99/4A computer in 1982).

In Junior High, I bought a makeup kit that had latex appliques for your face that gave the appearance of a skull. It came on a piece of plastic that was shaped like a skull. By filling it with plaster (which I later replaced with a papier mâché alternative), I could get a skull shaped face.

I drilled holes in the center of the eye sockets and glued red LEDs to the insides of the holes. I then ran the wires to a AA battery pack, soldered it all together with a switch, painted them with a paint called "Fleckstone" (which gave the appearance of being made from granite) and gave them to my friends to hang in their locker.

FleckStone

I named it "Norman" (after Norman Bates from Alfred Hitchcock's famous movie, Psycho.

Psycho!

I also read a lot of computer magazines.

One day, one of my computer magazines featured an article on how to make your Commodore 64 talk. A light bulb as bright as a supernova lit up over my head and I immediately turned to the article.

I cut the parts list out of the magazine and asked my dad to take me to Radio Shack to buy the parts. My father was very frugal and did not part with money lightly. I remember one time begging (my memory of it is clear, I was extremely obnoxious about this) for him to buy me an ambulance GoBot (the long lost predecessor to Transformers). This persisted for a few days until he finally got tired of hearing me whine (sorry dad) and bought it.

GoBots, Unite!

We had a rule in the house, we only got gifts for Christmas, Easter, and our Birthday. There were a few exceptions from time-to-time (like a brief behavior modification scheme recommended by one of my teachers in elementary school when I stopped doing my homework (because I was spending all of my time writing BASIC programs on my computer after school) that failed miserably because my father believed that hard work was its own reward - and I'm glad he did, because it taught me, ever so brutally, that you have to work to survive in the real world). Incidentally, I ended up working hard doing EXACTLY the thing that kept me from doing my school work for all of those years - and it pays better!

So, my dad agreed to pay for the parts (thank goodness electronics parts (even at Radio Shack retail prices) are so inexpensive). My grandfather had already given me a lot of parts (he was a vocational high school teacher at the time and had a lot of cool stuff). One of the items my grandfather gave me was a capacitor from a microwave. When he gave me the box of parts (along with an awesome work/test bench that had a built in adjustable power supply and a breadboard), he pulled the capacitor out and specifically warned me to never hook that up to AC power. He said if I ever charged it to its full capacity, it would kill me upon discharge. So, I never even touched it (because I knew that I wasn't mature enough to fully understand how it worked). My dad bought everything that I needed for my project and we came home.

SP0256-AL2 in its original package

The SP0256-AL2 Speech Chip

There was no Internet to refer to back then, so I had to figure out how to read the schematics. My grandfather had given me a "cheat sheet" that had the symbols and what they meant. I believe the magazine also had a small section on how to decipher the plans.

I got started right away. I built the circuit on a breadboard using the schematics in the magazine. The plans that came with the chip were slightly different, so I studied both to try and figure out why they differed.

I never could get the stand-alone audio amplifier working (using the well-known LM386 chip), so I took the advice of the author and ran the output pin to a hole in one of the input jacks on the C-64 for audio (probably the cassette interface). One of my goals for the near future is to get a working audio amplifier going with the LM386 chip (I got one with my starter box the other day).

The female plug that attached to the C-64 was too long and had to be physically cut with a hacksaw to make it the correct size. I also had to solder every single pin that I was using on it, then attach the leads to my breadboard.

SP0256-AL2 on Breadboard

This picture shows the SP0256-AL2 on a breadboard with an Arduino microcontroller

The magazine article explained that the crystal specified on the datasheet that came with the chip was extremely rare, so they offered up an alternative crystal that caused the pitch of the final voice to be higher than it should be.

Once completed, I began the arduous task of typing in the program from the back of the magazine that I could use to trigger allophones one after the other to make my computer talk. I then altered the code so that I could put in some common words without typing all of the allophones each time.

My best friend at the time was dating a girl and we (probably just me) decided to prank call her and have the computer say an offensive sentence. I remember it well, but the adult in me is preventing me from sharing due to its graphic nature. It wasn't too bad, but it doesn't bear repeating.

I still have that chip lying around on the same breadboard I used to make the project. I see it from time-to-time (usually during a move when we're packing boxes).

A few years back

Back in 2009, I made a "robot" for Laurie to use in the classroom for teaching special education preschoolers. I created it using off-the-shelf parts from Radio Shack and a little bit of soldering. It had a button on the back that lit up the eyes when you pressed it. It reinforced correct answers to questions. It was quite boring. I always wanted to print up a fancy sticker to put on the face and body, but never got around to it.

Cerkit the Robot

Cerkit the Robot - A preschool teaching aid

The present.

I recently ordered a bunch of components off of the Internet. Included in my purchases were 2 Raspberry Pi Zeroes. The Raspberry Pi zero is a full computer on an extremely small motherboard (~1 x 2 inches). It can run Linux and even has an HDMI output so you can plug it into a TV.

Raspberry Pi Budget Pack

Link: Raspberry Pi Zero Budget Pack

I also bought some other components to support my projects.

Last night, I spent about four hours playing with a 555 timer Integrated Circuit (IC).

555 Timer IC Circuit

It just blinks a light at a frequency depending on the resistance coming from the blue potentiometer. As I turn the pot, the light blinks faster or slower.

I tried to use a second 555 timer IC triggered by the output of the first so that I could have a light blink twice for every cycle of the first timer, but I couldn't get that to work before it was time to go to bed.

I then put together a simple circuit to help me learn how to use transistors. I used a momentary switch to trigger current through a NPN transistor to turn on an LED. That was fun as I never really grokked transistors when I was younger.

When I created my domain name in 1996, I had every intention of eventually writing about electronics (hence the name cerkit). Even though at the time, I used the name cerkit as a shorthand way of referring to the "Cerebral Kitchen.

It works both ways now as I can include non electronics stuff, as well.

Ultimately, all of my hobbies (as well as my 20+ year career experience as a programmer) are coming together in a symphony of exquisite mental pleasure.

I have been "cerkit" for a very long time. My BBS handle was "cerkit", and I use it whenever I can (someone beat me to it on Soundcloud, so I have to be "cerkit-music").

I like that it hints at electronics, but also allows me to be the Cerebral Kitchen, too.