Meeting tonight starting at 6pm! See the Meeting Info page for more info.

You are currently browsing the archives for "Networking"

Aether Tap (BOM)

Forgot to post this earlier so here it is.

I found a Mouser part number for everything except the reset switch I’m using which is just a simple SMD pushbutton.

I have a project set up for this on Mouser, if anyone else has an account there and would like me to share the project let me know.

Part Value Package Mouser Part #
C1-10 0.1uF 0805 80-C0805C104M5R
C11-14 27pF 0805 140-CC501N270J-RC
C15-18 10uF 1206 74-293D106X96R3A2TE3
IC1 ENC28J60 SO28W 579-ENC28J60-I/SO
IC2 PIC24FJ64GA002 SO28W 579-PIC24FJ64GA002SO
IC3 LM317D2TG D2PACK 863-LM317D2TG
ICSP ICSP Header 1X6 Pin Header 538-22-28-8062
JP1-4 IO Header 1X3 Pin Header 517-2314-6111TG
JP5 Power Header 1X2 Pin Header 517-2314-6111TG
L1 60Ohm 0805 81-BLM21BB600SN1D
LED1-4 Green 0805 645-598-8170-107F
Q1 32Khz MM20SS 695-CM200C-327KF-U
Q2 25Mhz HC49UP 815-ABLS-25-B2
R1-2 2K0 0805 292-2.0K-RC
R3-7 390 0805 71-CRCW0805-390
R8 240 0805 71-CRCW0805-240
R9-12 49.9 0805 71-CRCW0805-49.9
RJ1 Ethernet Jack RJ45 673-J1006F21
S1 PushButton SMD On Hand
SD1 SD Card Slot MICROSD 517-2908-05WB-MG

Aether Tap (Toaster Oven Reflow)

Most of the passive components for this project are 0805 surface mount devices measuring 2.0 mm × 1.25 mm, anyone who has dealt with surface mount devices knows that they can be a real pain to solder, especially if you don’t have a variable temp iron with a small diameter tip, So for this project I decided to forgo that mess and purchase a slightly used toaster oven from a second hand store, unfortunately it is missing a knob but besides that its in pretty good shape.

The basic process goes something like this:
1) Tin all your pads.
2) Apply flux to your tinned pads.
3) Stick the components where they go using tweezers / forceps using the flux as a sort of tacky glue.
4) Heat the entire board until the solder “re-flows” and binds the components to the board.
5)Immediately remove the board from the oven to prevent heat damage.

The key to toaster oven reflow is the temperature, basically you want to get to 180-190 Degrees Celsius without getting any higher than ~210 Degrees Celsius. At 180 Celsius most solder will begin to melt, by 190 it will all have become liquid, By 210 Many components will begin to burn, By 230 the entire board and copper substrate will begin to burn.

In the photo’s below you can see the toaster oven I used as well as a multimeter connected to a thermocouple device for monitoring the temperature inside the toaster oven. There are also a couple images of the final board minus some headers attached to a pic-kit 3 for programming.

Aether Tap (PCB Creation Process)

The following will be a sequence of steps detailing the PCB creation process that I subscribe to. If you have any questions or comments feel free to email me directly or post a question in the comments. I will also include images which correspond to each step in this process, I will indicate that an image corresponds to a certain step by adding a reference id Example: (1) where the number in the parentheses corresponds to an image index in the gallery below.

I’m assuming in this process that you are familiar with creating dextrin glue for toner transfer paper, If not, no worries simply read this guide on creating dextrin coated toner transfer paper By Triston J. Taylor, the original process is attributed to a make.com user by the alias Cashsale.

http://www.radagast.org/~dplatt/hamradio/How_to_make_laser_toner_transfer_paper.pdf

Without the dextrin coating its nigh impossible to create such high resolution boards with any fidelity so I highly recommend investing in some dextrin or creating it in the process described in the above link.

as a side note my dextrin comes from my pyrotechnics / chemistry stash because dextrin is also used as a water soluble adhesive for creating fireworks stars / shells as well as compact smoke bombs and other items.

Places to buy dextrin:

United Nuclear

Ebay

Cheap Chems

Step 1: Initialize

Begin by printing out a to-scale representation of the front and back of your boards on separate pieces of paper (1), make sure that along with each side’s copper mask you also print any Vias and or pads which need to be present. In eagle layers that would be [Top Copper, Vias, and Pads] for the “front” and [Bottom Copper, Vias, and Pads] for the “back”.

If you look at the final board layout image you’ll see that I have also strategically placed alignment marks at the 4 edges of the board, these are marks that I can line up later to ensure that the front and back layers are perfectly aligned, which is important because if they are skewed then your via’s and pads wont line up and the board will become useless.

Step 2: Prepare Substrate

Next, cut out an amount of silicone sealed laser photo paper (2) which completely covers your design(3) (refer to this pdf if you don’t know what that means), you will need one piece for each layer you are printing, make sure to leave about 1/8 to 1/4 inch extra border which will make it easier for you to insert the copper clad later and tape the edges to align them.

Step 3 Apply Dextrin:

Next we are going to coat one side of these two pieces of photo paper with dextrin adhesive(4), again if you don’t have any please refer to the how to create dextrin PDF in the previous posts. Begin by using an eye dropper to place 3-4 drops of dextrin glue on the paper (use more or less depending on the surface area you are working with, in my case 3 or 4 was the most I needed) at first the dextrin glue will tend to bead up(5)(6), that’s OK, just keep spreading using a roller or a small paint brush until it begins to get tacky at which point it will begin to adhere evenly. Obviously repeat this step again for the second layer if you are producing one.

I have had some people ask me what a coated piece of paper is supposed to look like, so for reference i have included a photo(7) where the left piece is coated with dextrin (very light yellow coating) and the right piece of paper is not coated. You’ll also notice the coated piece is slightly curled up which is OK, if you want it to flatten out then just heat it for about 30 seconds under a warm light bulb to dry it otherwise rest assured your laser printer will dry it out plenty quick.

Step 4: Print

Next, using a small amount of masking tape go ahead and tape your dextrin coated paper over the original design template that you printed out(8).
And print!(9) Remember to mirror one of your sides otherwise you’ll find its curiously hard to line up your layers in the next step…

Step 5: Align Layers

Now remove the masking tape from the dextrin paper and arrange the two layers such that they are facing one another and line them up, this step is crucial, especially if you have a complex board, once the two layers are lined up then tape them together using more masking tape(10)(11), leaving an opening in at least one side to slide the copper in after we prepare it.

Step 6: Prepare Copper Clad

Next cut out a piece of copper clad to match your board size, in my case that’s 3.5 by 2 inches, use an Xacto to score the board and then snap it or even cut it out with a good pair of scissors, either way just make sure that after you have your piece cut out that you clean it. Copper clad oxidizes(12) while it sits in storage so you need to scrub that layer off(13) with some steel wool or a pot cleaner, after you have taken the layer of oxidation off it doesn’t hurt to wipe the entire board down with some acetone or alcohol(14) to remove any dust or oils that might be present.

Notice the difference in the copper before(12) and after(13) cleaning in the images.

Step 7: Prepare for Transfer

Next you’re going to slide your freshly cleaned and dry copper clad in between your two dextrin coated copper mask layers making sure to line the board up with the edges of your mask, its hard to show this step with an image(15) but it should be fairly self explanatory what you’re doing here.

Step 8: Transfer

Next you need to apply heat and pressure to the entire sandwich in order to transfer the toner to the copper clad from the paper (hence the name toner transfer method) I use a small lamination machine(16)(17) because it applies even and consistent pressure and heat which tends to produce excellent results, I have also used a clothes iron with mixed results, if you use a lamination machine 8-10 passes through should be plenty, if you use an iron the rules vary from iron to iron so you’ll have to play with it and see what works. Generally speaking 5 minutes of solid ironing should do the trick, and make sure you put something between the transfer paper and the iron like a layer of wax paper otherwise you will burn your transfer paper.

Step 9: Dissolution

After you transfer the toner to the copper clad you need to remove the paper that the toner is also fixed to, this is where the dextrin comes into play, by soaking the entire sandwich in warm water(19) you expose the dextrin to water making it dissolve and separate the toner from the paper effortlessly.You will see wrinkles start to form in the paper(20) as the water penetrates into the dextrin layer and dissolves it.

Step 10: Separation

After letting the board and transfer paper soak for about 5 minutes its time to peal the paper off the copper clad, Be gentle and peal back slowly, if a little paper stays behind its OK but ideally the separation should be effortless due to the dextrin(21)(22)(23). If there is paper remaining simply remove it by rubbing it off, you just want to make sure its out of all the spaces between the toner because if it isn’t it will act as an etch-resist and it will cause bridging in your board.

Step 11: Corrections

After you’re satisfied that there isn’t any paper left where it shouldn’t be look over your entire board and make sure there aren’t any breaks in your traces(25)(26), if there are use a fine point sharpie and draw them back in(27)(28), the sharpie ink will act as an etch resist and prevent the breaks from actually etching out.In the image you can see some red tinted areas where I have used a sharpie to correct some gaps in toner.

Step 12: Etching

Finally we are ready to etch the board, I typically use ferric chloride(29) which takes approximately 15 minutes to complete an etch at room temperature, after the board is done etching the copper will have been removed where there was no toner or other etch-resist(30)(31), but the toner will remain, use the same steel wool or pot cleaner that you used to originally clean your copper clad to remove the toner from the now fully etched board.

Step 13: Admire Your Work

At long last you have your completed board ready to solder(33)(34)(35).

Don’t forget to recycle your etchant(32), ferric chloride can be used many many times over and isn’t bad after once use.

More images and a couple videos of a demonstration of this process can be found at http://www.phx2600.org/archive/2009/09/05/september-2009-meeting-history

Aether Tap (Schematic and Board Layout)

I have finalized a Board layout and schematic, I ended up going with a double sided board since I was unable to route the entire board on a single plane.

The advantage of a double sided PCB for those who aren’t aware is that there is copper clad on both sides of the board as opposed to a single sided board which has copper only on one side.

This allows us to run a signal from one side of the board to the other using a “via”, a small conductor which gives us one extra dimension of flexibility in our design, one extra layer in 3d space to route our signals.

Consider this puzzle as a simpler example of the same problem (good luck).

The file below contains the most recent Eagle schematic and board layout as well as several helpful part libraries and the design rules I used.

AetherTapEagle

Aether Tap (Component Identification)

The second step in any project is to identify the main components that are needed to make your goals play out. In this case I have chosen a Microchip PIC24F series Microcontroller as the core of my project supplemented with a Microchip ENC28J60 Ethernet controller to handle the MAC and Physical layers of the Ethernet interface .

The PIC24F series has many advantages over its 10, 12, 16, and 18 series cousins, First and foremost the 16 bit architecture allows the chip to have a far expanded instruction set which makes it much more viable to program the chip in a higher level language such as C or even BASIC. I myself will be using Microchip’s student version of its C30 Compiler which comes fully loaded with individual header files for each chip in the 24 series and even libraries to help out with the on chip hardware peripherals like USART, I2C, SPI, Etc. The 24 series also has one advantage that most people tend to overlook, its hardware peripheral pins can be remapped to almost any pin on the device, meaning much less time working on routing a PCB. Its also interesting to notice the distinction between the 24F and 24H series controllers, while the 24H controllers can typically run at much higher speeds achieving in the range of 64mips, it typically lacks the expanded peripherals of the 24F series which on average has about double the hardware peripherals of the 24H series but performs at only around 16Mips

The exact model I’ll be using in this case is the PIC24Fj64GA002 with 64K of flash memory, 2 hardware SPI interfaces, and a max speed of 32Mhz (16Mips).

I wont be writing a guide for using the pic24 however I was able to find an excellent tutorial for any interested.

The ENC28J60 Ethernet controller handles everything below the network layer of the standard OSI Model, it handles the media access control layer and the physical reception and transmission of packets. The ENC28J60 interfaces to a main controller via SPI and receives and transmits information via an internal 8k buffer operating in a FIFO fashion. the ENC28J60 supports full and half duplex modes as well as unicast, multicast, and broadcast packets. It is also fully compatible with all 10/100/1000 Base-T networks making it a very plug and play device. The only qualm I have about it is that it it doesn’t support auto-negotiation which means its not safe to use full-duplex mode unless you can manually change your switch port to full-duplex.

During the course of this project I will be entering a lot of new territory, I have never before used a 16 bit uC, I have never before coded a Microcontroller in C, (until now I have only used the 8bit 12 and 16 series microchips and coded them in Assembly or PIC Basic), I have also never used the SPI hardware peripheral which many PIC’s provide and I have absolutely zero experience with the ENC28J60 module. So this project will without a doubt put me in a position to learn some new things.

Below I have included a schematic and board layout for a pic24 28Pin SOIC breakout board with an ICSP header for programming, A useful tool for familiarizing yourself with the PIC24 Series

PIC24BrkOutwICSP

Aether Tap (Requirements Definition)

When you begin a project its important to identify what you hope to accomplish or learn in the process, This project will have plenty of both for me. First and foremost I would like to produce an inexpensive Ethernet enabled controller which I can interact with via the Internet. The device will be a product of its programming however, meaning that depending on what I need it to do it should also be able to…

1) Host web content and display real time data via the web

2) Send emails or alerts when necessary

3) Monitor and interact with external devices, sensors, and appliances

4) Allow control of the above mentioned devices via email or web based interface.

5) Log Network activity to the SD Card.

Its important to note that I don’t plan to incorporate relays or other direct appliance control hardware directly into my design, I’ll probably just end up making a bank of I/O pins available for external connections from sensors or relays.

As a rule of thumb its always a good idea to do some research and find out if anyone has done some of your work for you, in this case it happens I was able to find an excellent project to draw from, several years ago Ian from HackaDay posted an excellent How-To on building an embedded web-server which has a lot of the same functionality as my project. Its notable to mention that Ian is also the main developer of the very popular Bus Pirate module. There are also several other good sources of information about the ENC28J60 such as this article on Electronicfr.com or either one of these articles from tuxgraphics.org

So in the footsteps of giants I will lay out my project in the next several posts from Component Identification through Design, Prototyping, Building, Programming, and Testing.

As a final note, because I’m borrowing from other open source work and projects it seems only fair that I reciprocate and deliver my project documents and code as open source, and so it shall be.

IP Uploader – Python Script (.py)

This is my first python script I ever wrote. This script connects to whatismyip.com, fetches the external IP address of the network you are on, puts it into a text file and uploads it via FTP to any server you want.

At home I have Cox, therefore I have a dynamic IP. Even though this IP only changes about once every month, I got sick of needing to connect to my home computer via VNC and not being able because my IP had changed. Therefore I created the following script and set up a scheduled task on my home computer to run this script every hour.

After running this script, you can then use PHP (or any similar language) to include this file into any page you desire.

 #! /usr/bin/env python
import httplib
import sys
import os
import ftplib
 
file="ip.txt"
 
conn = httplib.HTTPConnection("www.whatismyip.com")
conn.request("GET","/automation/n09230945.asp")
response = conn.getresponse()
data = response.read()
 
filename = str(os.path.abspath(os.path.dirname(sys.argv[0])) + "\\"+file) #Create file
FILE = open(filename,"w") #Open file ready for writing
FILE.writelines(data) #Write 'data' to file
FILE.close() #Close file
 
#Replace [server], [user], and [pass] with your information.
s = ftplib.FTP('[server]','[user]','[pass]') #Connect
f = open(file,'rb') #File to send
s.storbinary('STOR '+file, f) #Send the file
f.close() #Close file and FTP
s.quit() #Quit FTP
 
sys.exit(0)

Shouts to Automated Penguin and Nak!

Next Offical Meeting Date: September 3, 2010 Time: 6:00 pm Click for more info