Saturday, December 21, 2013

Dealing With a Stubborn Laptop Battery

I own an older model Panasonic Toughbook CF-28. I picked it up a couple of years ago for around a hundred dollars or so. It has a Pentium III 800MHz processor and 512MB of RAM, nothing to phone home about. What it lacks in performance it makes up for in its' rugged design. It is a military specification laptop that is capable of withstanding short drops, extreme temperatures and light water splashes. It also has a touchscreen. In other words, it is a fun toy.

This laptop was missing the battery when I acquired it. I decided to opt for a cheap replacement available on eBay for around fifty dollars. When the battery arrived, I was quite pleased with the quality and performance of the product. I was easily able to get more than 5 hours of battery runtime out of the laptop.

This laptop is far from my daily driver and I left it on the shelf for a few months. When I came back to it the battery was expectedly discharged completely. The interesting part is that it would not accept a charge despite the charge indicator being illuminated.

I decided to disassemble the battery to investigate and was able to bring it back to life!

Fixed Battery

Friday, December 6, 2013

A Graphical Introduction to Hash Functions with SHA-2

Bitcoin Logo
Cryptography is the glue that holds together our modern society of electronic banking, web authentication mechanisms and identity verification. It is also the basis for the radical shifts in the way we think about our money such as Bitcoin.

I have been fascinated by the concepts of cryptography lately and decided to implement a cryptographic hashing function to try and better understand them. I will present the knowledge that I have gained in an easy to understand fashion. I am by no means an expert on this subject but if you have a general interest this should be a good starting point.

I have decided to implement SHA-256 due to the widespread adoption and ubiquity of this particular function. This implementation is designed in LabVIEW which is a graphical programming language. Whether you are a seasoned programmer or just interested in cryptography, this gentle introduction will be beneficial to you.

Wednesday, December 4, 2013

A Testament to X11 Backwards Compatibility

I recently scored a Hewlett Packard 1670A Deep Memory Logic Analyzer and I finally had a chance to fire it up. This unit dates back to 1992 and is packed with all sorts of interesting options for connecting peripherals to it. One particular feature that caught my eye was the option to connect to an X Server.

HP 1670A Logic Analyzer
HP 1670A Logic Analyzer
Here is the interface of the logic analyzer running on a remote X connection. I enjoy the colour scheme.

HP 1670A user interface over an X connection :]
I will give you a quick explanation as to how I was able to set this up by modifying a couple of configuration files to enable remote X connections.

Saturday, November 30, 2013

YALEDD! 16x16 LED Display

I would like to present to you "Yet Another LED Display" (YALEDD!): a 16 by 16 LED Display. I am currently taking an engineering project management course and one of the objectives is to take a circuit from design to implementation while sticking to a schedule that we define.

The class was instructed to choose a simple circuit such as an LED flasher or a simple sequential state machine composed of discrete logic, capture the schematic, layout the PCB and have it made by the end of the term.

I decided that it would be boring to design a simple state machine. I also thought it might be pretty cool to have an electronic gizmo of my own design to show off on my desk at work.

Something Special :]
This display utilizes constant current LED drivers to regulate 10mA through each of the LEDs. I have not used multiplexing to drive this display. I've done multiplexing in the past, and the STP16CPC26 drivers looked like they would be fun to experiment with. The entire design uses surface mount technology (aside from a couple of connectors) and was hand assembled by yours truly.

PCB Back
A Sea of LEDs

Sunday, September 15, 2013

ARM Bare Metal Programming

Embedded systems programming has been a passion of mine for a couple of years now. I really enjoy bringing a processor online and making it dance to the beat of my drum. Over the past few days I have taken an interest in writing my own linker scripts, start code and a CRT0 (C Runtime). In this article I will give you some background as to why this is important. I will guide you through the steps that I have taken to bring an ARM processor from reset to main() and beyond.

I am using the SAM4E16E processor on a SAM4E-EK development board. I have the Atmel SAM-ICE debugging tool to facilitate loading code. The steps that I am taking in this article will be very similar for other ARM processors. I did some bare metal programming on the Raspberry Pi about a year ago and it was similar.  My development host is an up to date Linux Mint 15 system.

Debugger (front) and Evaluation Kit (back)

Monday, September 2, 2013

Networking a Home from the 1950s

The year is 1957. The world is being taken storm by a wave of new technology. The first artificial satellite Sputnik 1 was launched and Elvis Presley's Jailhouse Rock was holding the number one spot on music charts around the world. All of this happened, of course, long before I was born.

Along with these exciting historical events, a small home was built in Stoney Creek, Ontario. My parents have recently purchased this home with the intention to renovate it into the 21st century.

The front of the tired old home (before new windows).
Date of Manufacture
I was tasked with networking the home and I decided to take some pictures along the way. I have retrofitted Cat6 and RG6 into each bedroom and living space to pave the way for Home Theater PCs (HTPCs) and "Smart TVs". We use Channel Master 4221 antennas to receive local terrestrial ATSC signals. The RG6 will distribute this signal into each room. I purchased most of the supplies from the local Nutech Electronics and Home Depot.

The Cat6 and RG6 lines departing from the electrical panel. Looks good :]
Read on to see more details!

Saturday, August 3, 2013

NI LabVIEW HD44780 Driver

I have always had a place for LabVIEW in my toolbox. My opinion of it varies from week to week but I am settling on the side of appreciating what it brings to the table. It is an intriguing software package that allows you to write programs using graphical block diagrams. It is targeted primarily for scientists and engineers (read: non-programmers). I am a seasoned programmer with experience in C, C#, Java and a whole pile of other languages so it is fun for me to use LabVIEW and think about it as if I am using C. I taught myself LabVIEW over the past year by working on increasingly complex projects.

I recently got my hands on a National Instruments USB-6009 Data Acquisition (DAQ) card and decided to write up a driver for the classic Hitachi HD44780 LCD controller. I used the object oriented features of LabVIEW to implement the driver. This allows multiple instances of the LCD to exist concurrently which means that I can have multiple displays interfaced to my PC simultaneously. The results were great!

The Initialized and Functional Display :]

I I released the code on NI Developer Zone. Read on to see how I did it!

Friday, July 19, 2013

Programming the Vintage Intel MCS-48 Microcontrollers

I have had a box in my parts collection for a few years that contains a variety of interesting vintage components. The most prominent are the Intel 8035L microcontrollers. These microcontrollers are from the Intel MCS-48 (commonly known as the 8048) line. They have 64 bytes of RAM and access to 4096 bytes of external program memory. Thankfully they are not the one-time-programmable (OTP) variety so I am free to put them up to any task. These processors have a copyright date of 1977 which puts them at roughly twice my age.

There are also a couple of different EPROMS: D27256, with a copyright date of 1984 and D2758 with a copyright date of 1977. Obviously whoever owned these components prior to me was building some interesting embedded systems.

Vintage ICs
They are in relatively good shape. I would say that these are socket pulls. They have some signs of prior use (adhesive on the quartz windows). These may have also been "development" units.

These components coupled with my new EPROM tools were enough for me to bring this vintage processor online. I managed to get the classic blinking LED working as shown on the top trace of my oscilloscope.

Intel 8035L in Action :]
Continue reading to see how I did it!

New EPROM Tools!

I have ordered some tools to experiment with EPROMs. I ordered a "Universal Memory Programmer" that goes by the name MEMprog2 from eBay user cosmicmedevac. The unit arrived quickly and very well packed.

MEMprog2 Programmer
MEMprog2 Programmer
I was able to load a file onto an old Intel D27256 EPROM that I have and then read the file back successfully. The programmer is a very nice piece of gear with device coverage of over 15000 units.

I have also ordered a very low-cost EPROM eraser from eBay user techex_us. This unit also arrived quickly and well packed. It is definitely a piece of gear that I do not plan to leave connected to mains unattended. The entire device feels quite cheap. The AC power cord is thin and the rotary dial seems to have a mind of its' own. The one small piece that I do trust is the mains power switch. I can't complain for less than $25 shipped.

Cheap EPROM Eraser
I had no trouble erasing a few EPROMs in this little oven. I am quite happy with the product despite its' quality shortcomings.

I have a box of Intel 8035L microcontrollers (from the MCS-48, 8048 line) that have been in my collection for a few years. They have a copyright date of 1977 on them. I plan to bring one of these processors online on a breadboard. It should be interesting to experiment with a processor that is nearly twice my age.

Sunday, June 23, 2013

Villard Cascade Voltage Doubler

I recently watched an interesting EEVBlog video about Villard Cascade Voltage Doublers. I have had some neon tubes (NE-2) in my parts collection for a few years now. I have always wanted to drive them from a relatively low voltage DC supply. I decided to spend the afternoon/evening designing a circuit to drive the neon tube from a 12V supply.

The Glowing NE-2 Neon Tube

Sunday, April 28, 2013

Homebrew Solder Fume Extraction System

Over the past year I have been slowly building a solder fume extraction system. It has been a slow project because there was no real push for it. I have been doing a lot of soldering lately and decided that it was time to wrap it up and blog about it.

This system is based upon a vacuum cleaner. I am using a vacuum that goes by the trade name Shop-Vac. They are well known for their tremendous reliability on construction sites and other rough applications. I chose this vacuum because I assumed it would be up to the task of extended run times under medium to high load.

Here are a couple of pictures of the completed system:
The lab side of the completed fume extractor.
The garage side of the fume extraction system.
Here is a video demonstration:

Wednesday, April 24, 2013

Creating a Glass Circuit Board

I was inspired by CNLohr to create my own glass circuit board. I decided to create a 2D LED matrix because the layout is simple enough to fit onto a single sided board.

I decided to take a different approach than CNLohr took. Rather than adhering a layer of copper to the glass and etching out the traces, I used copper tape and glued each trace to the glass. Unfortunately this takes away the printed aspect of PCB manufacture but it allowed me to complete the project using parts that I found in a local craft store.

Here is a picture of the completed project.

Completed Project
Here is a video demonstration:

Wednesday, April 17, 2013

Graphing the Links between Articles on Wikipedia

One of my summer projects last year was to graph the links between Wikipedia articles. I was inspired by the Wiki Wars concept and wanted to see if I could programmatically beat the game. I used C# and the Mono .NET runtime to build a Wikipedia pathfinder.

Here are a couple of graphical representations of the results. They make great wallpapers!

My Current Wallpaper
A Zoomed Out Link Graph

Sunday, April 14, 2013

Designing a Window Manager for an AVR Microcontroller

I have been experimenting with the uVGA-II VGA controller for the past couple of weeks. It is an amusing piece of hardware that is capable of drawing graphics onto a VGA framebuffer. The VGA controller takes care of line drawing algorithms and helps to hardware accelerate the drawing of geometric primitives (squares, circles, triangles, polygons, lines).

Once I realized the power of this hardware I decided to implement a window manager like you would expect on any standard desktop PC. I have used a mouse for user input to the system.

Close-up of the Default Configuration
The default system boots with three applications: Theme Manager, Audio Player and Window Factory. The Theme Manager is used to modify the colors of the system theme, the Audio Player is used to playback some audio files stored on an SD card and the Window Factory is used to create new windows for the purposes of demonstration.

Slightly Blue Theme, More Windows
Here is a video demonstrating the system.

Thursday, March 28, 2013

Enlightenment Desktop on Fedora

I have been a full-time Linux user for just over 2 years now and I have never looked back. In the world of embedded software, web development, database design and electronics design it makes a lot of sense for me to run a free operating system.

Just today I was watching a very entertaining video about a shell named Terminology. This shell is unique in that it allows images to be "catted" to the interface. I did some more research and discovered Enlightenment Desktop.

Sunday, March 24, 2013

Fun with Embedded HTTP Servers

I have been distracted for the past week by an embedded HTTP server. I am currently taking a very exciting course entitled Internet Embedded Systems taught by Senior Embedded Software Designer Robert Laswick. The end goal of the course is to achieve web based control and status of hardware.
Olimex MOD-IO with ENC28J60 Module
After I completed the core objective of the course I decided to run absolutely wild with the concept. I created some Makefile targets that minify, gzip and convert web resources (HTML, JavaScript, CSS) into C header files which I can then serve up to the browser.

Friday, March 15, 2013

AVR VGA Generation

I have always wanted to create a VGA generator. It has been a personal goal of mine for some time. Over the past couple of weeks I toyed with the idea and finally decided to implement one. I decided to implement it as a framebuffer to allow for general purpose display rather than application specific display. I implemented my own small colour gamut to be memory and CPU efficient.

I have made the source code available on Github.

Daft Punk from Tron Legacy
VGA Controller on a Breadboard

Wednesday, March 13, 2013

New Breadboards!

I ordered some breadboards 3 weeks ago and they have arrived today. I really like breadboards for building and prototyping some of my simple and even my not-so-simple projects. I ordered them from eBay user sinedya and they arrived within 3 weeks. This is a typical amount of time required to ship from China to Canada.

The quality is great and for less than $4.00 each, they are a steal!


Revisiting Projects - Microcontroller Audio Playback

This is another one of my older projects from the fall of 2010. I became very interested in playing audio using my microcontroller. This project is based upon my ATmega Butterfly board but this time I have paired it with an SD card and a lone DAC for monaural audio playback.

The final project assembled on two breadboards.
The final project assembled on two breadboards.

Monday, March 11, 2013

Revisiting Projects - Oscilloscope Graphics

Over the past few years I have developed a keen interest in working on small projects in my spare time. They typically involve a microcontroller or some fun analog circuitry. This blog will revisit an old project of mine from circa August 2010. I had just received my first oscilloscope and decided that it would be fun to show some graphics on it in X-Y mode.

The Mohawk College Logo
The Mohawk College Logo

Sunday, March 10, 2013

Hello World!

Microcontroller 128x96px 8bpp Frame Buffer
Microcontroller 128x96px 8bpp Frame Buffer
What is this place?

Welcome to The Resistor Network! I have decided to create this blog as a place to share my technology-related projects. I have a deep interest in the field of embedded software design, electronics and, at a higher level, the development of dynamic web applications.

A Brief Biography

My name is Andrew Rossignol, and I am passionate about electronics. I have been interested in electronics and technology since I was a child, when I would hook up simple series and parallel circuits. I started getting involved in embedded software development during my high school years. The ATmega Butterfly was my first demo board and I created simple PWM controllers and melody generators. I have been taking on personal and professional projects ever since!

My Style

I like big cities and the constant energy that they have. I love every aspect of the 8-bit scene and own a Commodore 64 and a couple of accessories. The artistic and technical creations of members of the demoscene never cease to amaze me. I have a nice collection of chiptunes that I listen to while coding. They keep me productive into the wee hours.

I can be geeky when I enjoy technology of past years, but I also know the importance of modern computer architecture. Older equipment gives me a view of the foundations of many technologies that we know and use today. The resource constraints force me to be more efficient with the modern resource abundant technology that exists today.