Etching a PCB for the IEBus Module

Posted by angrycamel at September 30th, 2007

I completed the etching process of my first printed circuit board tonight. It took a lot of work just to learn how to use the Eagle software to produce the board layout but once I had it done I printed it onto some generic glossy laser paper. Next I took it downstairs to the ironing board, and armed with a piece of cardboard to stiffen the ironing surface, the heat from the iron began to transfer the toner from the printed piece of paper to the blank copper PCB.

After about 4 minutes (read online that 4 minutes was a good time to ensure a good transfer) I took the board with the paper now stuck to it, and put it into a plastic container filled about an inch high with hot water. Immediately I began to see the paper coming away from the copper and forming little bubbles between the paper and the board. Finally, after about 30 seconds of watching the water soak into the paper, I grabbed the corner of the paper and pealed it off like a sticker. Most all of the paper came off leaving behind the toner and a little bit of the paper that rubbed off with my thumb very easily.

Next it was time to put the board into a bath of etchant. I went all cheap and purchased the little $15 kit from RadioShack to test all of this out, but I plan to put together an acrylic bubbler along with some of that nice Ammonium Persulfate that is see through. The board sat in the etching chemical for a little over an hours just because I didn’t feel like babysitting it and went to watch some boob-tube. When I came back the board was done and I transfered it back to the water to deactivate the chemical.

Now that the copper that I didn’t want is gone, all thats left is to clean off the toner. This was handled by some of my wife’s finely smelling Acetone (finger nail polish remover) and a good bit of rubbing with a paper towel. The finished result looks like this:

AngryCamel's First IEBus Module PCB

Now all that is left is to drill the holes and mount all of the components. Next time I do this, I think I am going to go with all surface mount components, so I guess its time to hit up digikey again.

Posted in Automotive, IEBus, Electronics| No Comments | 

IEBus Studio - Progress Update

Posted by angrycamel at September 24th, 2007

It’s been a little while since I updated everyone on the progress so I put together a quick screenshot.

IEBus Studio is definately one kick ass program, if I do say so myself. I wanted to take the time to do screenshots of all the features but its just too late on Sunday night and I have been writing code all weekend. So here is my one screenshot that shows just about everything there is to know about the test event feature.

I should have a video sometime soon of it working in the car. Cross your fingers! We have tested and confirmed that the firmware recieves the event message perfectly, so testing that the firmware can put it on the bus properly is all thats left.

Click on the pic for the larger view.

Posted in Automotive, IEBus, Programming, Electronics| No Comments | 

IEBus Studio - In Car DLL Tests

Posted by angrycamel at September 9th, 2007

Well I finally made it into the car today to do some tests with the first DLL that was produced by IEBus Studio. The test went great and it seems like we are definitely on the right track. I put together a video of my test today if you want to check it out below:

The testDLL application in the video consists of very little actual code to do what you are seeing there. It is a simple VB.Net application that references the DLL exported from IEBus Studio for my 2004 Acura TSX.
Thanks to CLuis for putting this together!

Here is the DLL as viewed in the VS.Net object browser. The only event we had defined at the time of building this DLL was the touchscreen event:
DLL Object Browser

I have pasted the code below to show just how simple it really is:

Public Class Form1
   	Dim WithEvents Acura As New Acura.TSX_2004()

   	Public Delegate Sub SetTextDelegate(ByVal text As String)
   	Dim sText As New SetTextDelegate(AddressOf SetText)

   	Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
   		For Each strPort As String In My.Computer.Ports.SerialPortNames
   			Ports.Items.Add(strPort)
   		Next
   	End Sub

   	Sub SetText(ByVal text As String)
   		Output.Text &= text
   		Output.ScrollToCaret()
   		Output.Focus()
   	End Sub

   	Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
   		Acura.OpenPort(Ports.Text, 9600, 8, IO.Ports.Parity.None, IO.Ports.StopBits.One, IO.Ports.Handshake.None)
   	End Sub

   	Private Sub Acura_TouchScreenPress(ByVal Master As Acura.TSX_2004.CarDevice, ByVal Slave As Acura.TSX_2004.CarDevice, ByVal X As Integer, ByVal Y As Integer, ByVal Unknown1 As Integer) Handles Acura.TouchScreenPress
   		If Output.InvokeRequired Then
   			Output.Invoke(sText, "TouchScreenPress: X:" & X & ", Y:" & Y & ", Unknown:" & Unknown1 & Environment.NewLine)
   		Else
   			SetText("TouchScreenPress: X:" & X & ", Y:" & Y & ", Unknown:" & Unknown1 & Environment.NewLine)
   		End If
   	End Sub
   End Class

Posted in Automotive, IEBus, Design, Programming| 1 Comment | 

IEBus Studio - Progress Update

Posted by angrycamel at September 8th, 2007

IEBus Studio is coming along very well with the help of my two friends CLuis and Ramzi. We are really cranking code out at an astonishing rate and bringing IEBus Studio into reality. Here is the 1000 foot view:

Event Discovery works but we are just beginning to rewrite a lot of it to add functionality that will discover dynamic message types such as volume or touch events (Ex: most of the message is the same structure except for the coordinates of the touch, so we need to use some pattern matching to define non unique messages as the same event)

Defining devices is a cinch with the new Device Discovery tab. You can manually add devices or have it automatically add them to the library when it sees a message with a new unique device come across the bus. For each device you can record a name and description for it.

In the Define Events tab you can easily describe events that you have identified. Currently this only supports static messages such as a single button press on the dash (Ex: the cancel button), but it will soon support the dynamic messages as well.

CLuis did a great job with the DLL generation code. You can now build the library of events then choose File->”Export DLL” to produce a DLL of event definitions which you can tie into from any software that allows the referencing of a DLL. A test application has been setup and works in the emulation environment, so I will be testing it in the car very soon. The only events that the test DLL contains at the moment is touch events from the screen. This sample application will handle the touch events and display the x and y coordinates in a console as you touch the screen. Soon it will graphically overlay the screen with a grid to show how this whole thing will eventually control your computer.

And last but not least, you can now save out your progress into a library of events and device definitions (xml file) and open it back up again later to resume your work where you left off. If you thought you had all of the events that you wanted to use in your installation defined but realized you needed one more, simply open the library file do event discovery for that new event then re-export your DLL. Thats all there is to it.

Posted in IEBus, Programming| No Comments | 

IEBus Emulator

Posted by angrycamel at September 4th, 2007

Tonight I put together a screen cap of me using the new IEBus Emulator in conjunction with com0com and IEBus Studio. Com0com is used to produce a virtual null modem connection as well as the virtual com ports from com2->com4. With the emulator we can test IEBus Studio locally with data captured to log files from inside of the car or with manually typed in commands.

It’s the first thing I did when I got back from my trip, here it is:

Posted in Automotive, IEBus, Programming| No Comments |