mirror of
git://projects.qi-hardware.com/wernermisc.git
synced 2024-11-21 23:25:20 +02:00
fisl2012/: first outline of FISL13 talk; abstract and biography
Grmbl. Some junk ended up in this commit as well. Don't dare to disentangle the mess.
This commit is contained in:
parent
8418a19db1
commit
cd80647273
@ -17,11 +17,17 @@ GP2RML = $(CAE_TOOLS)/gp2rml/gp2rml
|
|||||||
# Z1 = -44
|
# Z1 = -44
|
||||||
# PIECE_Z = 7.9
|
# PIECE_Z = 7.9
|
||||||
|
|
||||||
X0 = 5
|
# run with acrylic (corner at 4, 0)
|
||||||
Y0 = 45
|
# #1: 15, 10
|
||||||
Z1 = -44
|
# #2: 15, 50
|
||||||
|
# #3: 80, 10
|
||||||
|
# PIECE_Z = 5.15
|
||||||
|
|
||||||
|
X0 = 80
|
||||||
|
Y0 = 10
|
||||||
|
Z1 = -45
|
||||||
PIECE = -5 -5 30 55
|
PIECE = -5 -5 30 55
|
||||||
PIECE_Z = 5.5
|
PIECE_Z = 5.15
|
||||||
Z_STEP = 2
|
Z_STEP = 2
|
||||||
CLEARANCE = 2
|
CLEARANCE = 2
|
||||||
SPEED_XY = 1
|
SPEED_XY = 1
|
||||||
@ -32,13 +38,21 @@ Z_OFFSET = 0.1
|
|||||||
FIN_SPEED_XY = 3
|
FIN_SPEED_XY = 3
|
||||||
FIN_SPEED_Z = 3
|
FIN_SPEED_Z = 3
|
||||||
|
|
||||||
PARAMS = X0=$(X0)mm Y0=$(Y0)mm Z1=$(Z1)mm PIECE_Z=$(PIECE_Z)mm \
|
# acrylic
|
||||||
|
# ~0.1 mm / 12 mil tool correction # not needed
|
||||||
|
#MILL = 120mil
|
||||||
|
SPEED_XY = 2
|
||||||
|
SPEED_Z = 2
|
||||||
|
FIN_SPEED_XY = 5
|
||||||
|
FIN_SPEED_Z = 5
|
||||||
|
|
||||||
|
PARAMS = X0=$(X0)mm Y0=$(Y0)mm Z1=$(Z1)mm MILL=$(MILL) PIECE_Z=$(PIECE_Z)mm \
|
||||||
Z_OFFSET=$(Z_OFFSET)mm
|
Z_OFFSET=$(Z_OFFSET)mm
|
||||||
|
|
||||||
PARTS = top mid bot
|
PARTS = top mid bot
|
||||||
PART = top
|
PART = top
|
||||||
|
|
||||||
.PHONY: all plot mill pos cng clean
|
.PHONY: all plot plot-fin mill pos cng clean
|
||||||
|
|
||||||
all: $(PART)-mill.rml $(PART)-finish.rml
|
all: $(PART)-mill.rml $(PART)-finish.rml
|
||||||
|
|
||||||
@ -73,7 +87,10 @@ $(PART)-finish.rml: $(PART)-finish.gp Makefile
|
|||||||
$< >$@ || { rm -f $@; exit 1; }
|
$< >$@ || { rm -f $@; exit 1; }
|
||||||
|
|
||||||
plot: $(PART)-mill.gp
|
plot: $(PART)-mill.gp
|
||||||
echo 'splot "$(PART)-mill.gp" with lines' | gnuplot -persist
|
echo 'splot "$<" with lines' | gnuplot -persist
|
||||||
|
|
||||||
|
plot-fin: $(PART)-finish.gp
|
||||||
|
echo 'splot "$<" with lines' | gnuplot -persist
|
||||||
|
|
||||||
mill: $(PART)-mill.rml $(PART)-finish.rml
|
mill: $(PART)-mill.rml $(PART)-finish.rml
|
||||||
PORT=/dev/ttyUSB0 $(SPOOL) $^
|
PORT=/dev/ttyUSB0 $(SPOOL) $^
|
||||||
@ -88,5 +105,9 @@ clean:
|
|||||||
rm -f case.gp
|
rm -f case.gp
|
||||||
rm -f $(PARTS:%=%-piece.gp) $(PARTS:%=%.gp)
|
rm -f $(PARTS:%=%-piece.gp) $(PARTS:%=%.gp)
|
||||||
rm -f $(PARTS:%=%-area.gp)
|
rm -f $(PARTS:%=%-area.gp)
|
||||||
rm -f $(PARTS:%=%-mill.gp) $(PARTS:%=%-mill.rml)
|
rm -f $(PARTS:%=%-mill.gp)
|
||||||
rm -f $(PARTS:%=%-finish.gp) $(PARTS:%=%-finish.rml)
|
rm -f $(PARTS:%=%-finish.gp)
|
||||||
|
|
||||||
|
spotless: clean
|
||||||
|
rm -f $(PARTS:%=%-mill.rml)
|
||||||
|
rm -f $(PARTS:%=%-finish.rml)
|
||||||
|
@ -5,7 +5,7 @@ while [ "$1" ]; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
: ${MILL:=125mil}
|
: ${MILL:=125mil}
|
||||||
: ${OVERLAP:=0.5mm}
|
: ${OVERLAP:=1.6mm}
|
||||||
: ${X0:=0mm}
|
: ${X0:=0mm}
|
||||||
: ${Y0:=0mm}
|
: ${Y0:=0mm}
|
||||||
: ${Z1:=0mm}
|
: ${Z1:=0mm}
|
||||||
|
@ -76,11 +76,12 @@ frame top_window {
|
|||||||
frame top_pcb {
|
frame top_pcb {
|
||||||
loop if = 1, top_pcb
|
loop if = 1, top_pcb
|
||||||
|
|
||||||
set off = topborder+topridge
|
set inside = topborder+topridge
|
||||||
|
|
||||||
frame top_outline @
|
frame top_outline @
|
||||||
ll: vec @(off, off)
|
ro: vec @(topborder, topborder)
|
||||||
RRECT(pcb_, ll, width-2*off, length-2*off, ri_ridge)
|
ri: vec ro(topridge, topridge)
|
||||||
|
RRECT(ridge_i_, ri, width-2*inside, length-2*inside, ri_ridge)
|
||||||
}
|
}
|
||||||
|
|
||||||
frame top_ridge {
|
frame top_ridge {
|
||||||
@ -264,13 +265,13 @@ table
|
|||||||
{ part, z, top_surface, top_window, top_pcb, top_ridge,
|
{ part, z, top_surface, top_window, top_pcb, top_ridge,
|
||||||
mid_ridge, mid_pcb, mid_body,
|
mid_ridge, mid_pcb, mid_body,
|
||||||
bot_posts, bot_base, bot_surface}
|
bot_posts, bot_base, bot_surface}
|
||||||
{ "top_surface", 2.5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
|
{ "top_surface", 3.3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
|
||||||
{ "top_window", 1.5, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }
|
{ "top_window", 2.3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }
|
||||||
// { "top_pcb", 0.5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }
|
{ "top_pcb", 1.2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }
|
||||||
{ "top_ridge", 0.5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }
|
{ "top_ridge", 0.5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }
|
||||||
{ "mid_ridge", 0.5, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }
|
{ "mid_ridge", 0.6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }
|
||||||
{ "mid_pcb", 1.0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }
|
{ "mid_pcb", 1.2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }
|
||||||
{ "mid_body", 4.5, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 }
|
{ "mid_body", 4.7, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 }
|
||||||
{ "bot_posts", 1.2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }
|
{ "bot_posts", 1.2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }
|
||||||
{ "bot_base", 2.0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }
|
{ "bot_base", 2.0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }
|
||||||
{ "bot_surface", 2.7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }
|
{ "bot_surface", 2.7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }
|
||||||
@ -291,8 +292,9 @@ table
|
|||||||
|
|
||||||
table
|
table
|
||||||
/* usb_roff = offset from right outer case edge */
|
/* usb_roff = offset from right outer case edge */
|
||||||
|
/* usb_d = 10 mm for prototypes (mini-USB); reduce to 6.0 mm for micro */
|
||||||
{ usb_w, usb_d, usb_roff }
|
{ usb_w, usb_d, usb_roff }
|
||||||
{ 8.5mm, 6.0mm, 4.5mm }
|
{ 8.6mm, 10.0mm, 4.9mm }
|
||||||
|
|
||||||
table
|
table
|
||||||
/* post_y is from the edge of the battery bay. post_x is from the edge */
|
/* post_y is from the edge of the battery bay. post_x is from the edge */
|
||||||
@ -331,8 +333,8 @@ frame bot_surface @
|
|||||||
|
|
||||||
measx top_outline.edge_ul -> top_outline.edge_ur 4mm
|
measx top_outline.edge_ul -> top_outline.edge_ur 4mm
|
||||||
measy top_outline.edge_ll -> top_outline.edge_ul 4mm
|
measy top_outline.edge_ll -> top_outline.edge_ul 4mm
|
||||||
measx top_pcb.pcb_ul -> top_pcb.pcb_ur 3mm
|
//measx top_pcb.pcb_ul -> top_pcb.pcb_ur 3mm
|
||||||
measy top_pcb.pcb_ll -> top_pcb.pcb_ul 3mm
|
//measy top_pcb.pcb_ll -> top_pcb.pcb_ul 3mm
|
||||||
|
|
||||||
measx top_ridge.ridge_o_ul -> top_ridge.ridge_o_ur 4mm
|
measx top_ridge.ridge_o_ul -> top_ridge.ridge_o_ur 4mm
|
||||||
measy top_ridge.ridge_o_ll -> top_ridge.ridge_o_ul 4mm
|
measy top_ridge.ridge_o_ll -> top_ridge.ridge_o_ul 4mm
|
||||||
|
80
fisl2012/Makefile
Normal file
80
fisl2012/Makefile
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
SHELL=/bin/bash
|
||||||
|
|
||||||
|
#DL=USB.png Nano_cola.jpg Atben_atusb_prod_03.jpg Atben_atusb_prod_05.jpg \
|
||||||
|
# M1_dmx_video.jpg \
|
||||||
|
# UBB_production_08.JPG ubb-vga-pub-plugged-medium.jpg \
|
||||||
|
# ubb-vga-pub-1024-medium.jpg SIE_KICAD.png
|
||||||
|
#GEN=schhist.png fped.png kicad.png achieve.pdf flow.pdf
|
||||||
|
#PNG=atusb-front.png
|
||||||
|
|
||||||
|
.PHONY: spotless clean upload upload-es
|
||||||
|
|
||||||
|
all: talk.pdf
|
||||||
|
xpdf talk.pdf
|
||||||
|
|
||||||
|
talk.pdf: talk.tex $(GEN) $(DL) $(PNG)
|
||||||
|
pdflatex talk
|
||||||
|
|
||||||
|
talk-es.pdf: talk-es.tex $(GEN) $(DL) $(PNG)
|
||||||
|
pdflatex talk-es
|
||||||
|
|
||||||
|
kicad.png: eeschema.xwd pcbnew.xwd
|
||||||
|
pnmcomp -xoff=0 -yoff=300 \
|
||||||
|
<(convert eeschema.xwd ppm:-) \
|
||||||
|
<(convert pcbnew.xwd ppm:- | \
|
||||||
|
pnmpad -white -left=900 -bottom=300) | \
|
||||||
|
convert - $@
|
||||||
|
|
||||||
|
schhist.png: schhist.xwd
|
||||||
|
convert $< $@
|
||||||
|
|
||||||
|
fped.png: fped.xwd
|
||||||
|
convert $< $@
|
||||||
|
|
||||||
|
USB.png:
|
||||||
|
wget http://projects.qi-hardware.com/schhist/atusb/847b3546d90d7271690bcd17014cf2cae9482538/diff/USB.png
|
||||||
|
|
||||||
|
Nano_cola.jpg:
|
||||||
|
wget http://en.qi-hardware.com/w/images/7/78/Nano_cola.jpg
|
||||||
|
|
||||||
|
Atben_atusb_prod_03.jpg:
|
||||||
|
wget http://en.qi-hardware.com/w/images/0/06/Atben_atusb_prod_03.jpg
|
||||||
|
|
||||||
|
Atben_atusb_prod_05.jpg:
|
||||||
|
wget http://en.qi-hardware.com/w/images/c/ce/Atben_atusb_prod_05.jpg
|
||||||
|
|
||||||
|
M1_dmx_video.jpg:
|
||||||
|
wget http://en.qi-hardware.com/w/images/5/55/M1_dmx_video.jpg
|
||||||
|
|
||||||
|
UBB_production_08.JPG:
|
||||||
|
wget http://en.qi-hardware.com/w/images/8/83/UBB_production_08.JPG
|
||||||
|
|
||||||
|
ubb-vga-pub-plugged-medium.jpg:
|
||||||
|
wget http://downloads.qi-hardware.com/people/werner/ubb/vga/web/ubb-vga-pub-plugged-medium.jpg
|
||||||
|
|
||||||
|
ubb-vga-pub-1024-medium.jpg:
|
||||||
|
wget http://downloads.qi-hardware.com/people/werner/ubb/vga/web/ubb-vga-pub-1024-medium.jpg
|
||||||
|
|
||||||
|
SIE_KICAD.png:
|
||||||
|
wget http://linuxencaja.com/images/9/9d/SIE_KICAD.png
|
||||||
|
|
||||||
|
achieve.pdf: achieve.fig
|
||||||
|
fig2dev -L pdf $< $@
|
||||||
|
|
||||||
|
flow.pdf: flow.fig
|
||||||
|
fig2dev -L pdf $< $@
|
||||||
|
|
||||||
|
talk.ps: talk.pdf
|
||||||
|
pdf2ps $< $@
|
||||||
|
|
||||||
|
p16: talk.ps
|
||||||
|
mpage -8 $< | lpr
|
||||||
|
|
||||||
|
spotless:
|
||||||
|
rm -f $(DL)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f $(GEN) talk.ps
|
||||||
|
|
||||||
|
upload: talk.pdf
|
||||||
|
qippl talk.pdf fisl13.pdf
|
18
fisl2012/abstract.txt
Normal file
18
fisl2012/abstract.txt
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
Making Hardware with KiCad and Friends
|
||||||
|
|
||||||
|
KiCad is a well-established Open Source EDA suite that provides tools
|
||||||
|
for most of the basic tasks in circuit design. In larger projects,
|
||||||
|
and especially those of an open and collaborative nature, additional
|
||||||
|
requirements appear that KiCad can only partially satisfy.
|
||||||
|
|
||||||
|
Specifically, collaborative projects benefit from visualization that
|
||||||
|
helps to quickly follow the work of others and to track a project's
|
||||||
|
revision history. Furthermore, an automated and thus easily
|
||||||
|
reproducible workflow lowers the barrier of entry and avoids costly
|
||||||
|
mistakes.
|
||||||
|
|
||||||
|
In the Qi-Hardware project, we use KiCad as the centerpiece for various
|
||||||
|
hardware designs and enhance its functionality with patches or external
|
||||||
|
programs. This presentation will describe the complete workflow from
|
||||||
|
design to fabrication, introduce the various tools we use to complement
|
||||||
|
KiCad, and also briefly address common design rules.
|
10
fisl2012/bio.txt
Normal file
10
fisl2012/bio.txt
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
Werner got hooked on Linux in the days of the 0.12 kernel and started
|
||||||
|
to get his hands dirty from early on with contributions like the LILO
|
||||||
|
boot loader, the initial RAM disk (initrd), and the MS-DOS file system.
|
||||||
|
Later activities led him into networking, with the Linux-ATM project as
|
||||||
|
part of his PhD thesis, and he eventually landed in the Openmoko project.
|
||||||
|
|
||||||
|
Having had a taste of hardware there, but eager to do more, he then
|
||||||
|
journeyed deeper into the world of electronics and finally joined the
|
||||||
|
Qi-Hardware project, where he now dabbles with making gadgets that aim
|
||||||
|
to blend software and hardware under common principles of freedom.
|
443
fisl2012/talk.tex
Normal file
443
fisl2012/talk.tex
Normal file
@ -0,0 +1,443 @@
|
|||||||
|
\documentclass[14pt,trans]{beamer}
|
||||||
|
\usepackage{color}
|
||||||
|
\usepackage{url}
|
||||||
|
\usepackage{colortbl}
|
||||||
|
%\usepackage{soul}
|
||||||
|
%\usepackage{verbatim}
|
||||||
|
\usefonttheme{structurebold}
|
||||||
|
\setbeamertemplate{navigation symbols}{}
|
||||||
|
\setbeamertemplate{items}[ball]
|
||||||
|
%\setbeamersize{sidebar width left=-5mm}
|
||||||
|
\title{\Large Making Hardware with KiCad and Friends}
|
||||||
|
\author{Werner Almesberger \\\url{werner@almesberger.net}}
|
||||||
|
\date{July 21, 2012}
|
||||||
|
|
||||||
|
%\setul{}{1.5pt}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\begin{frame}
|
||||||
|
\titlepage
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- Overview ----------------------------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{Overview}
|
||||||
|
\begin{itemize}
|
||||||
|
\item KiCad introduction
|
||||||
|
\item Qi-Hardware workflow
|
||||||
|
\item $\dots$ and tools
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\url{downloads.qi-hardware.com/people/werner/fisl13.pdf}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- KiCad Introduction ------------------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{KiCad}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Complete EDA solution
|
||||||
|
\item Free Software: GPL, LGPL
|
||||||
|
\item Text files $\rightarrow$ extensible
|
||||||
|
\item C++, wxWidgets
|
||||||
|
\item Multi-platform: Linux, Windows, Mac
|
||||||
|
\end{itemize}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- Schematics --------------------------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{KiCad: Schematics}
|
||||||
|
eeschema + component editor: netlist, BOM
|
||||||
|
|
||||||
|
SCREENSHOTS
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- Layout ------------------------------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{KiCad: Layout}
|
||||||
|
cvpcb + pcbnew + module editor -> gerbers (gerbv)
|
||||||
|
|
||||||
|
SCREENSHOTS
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- Fped --------------------------------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{Footprint Editor (fped)}
|
||||||
|
%\begin{center}
|
||||||
|
% \includegraphics[height=6cm]{fped.png}
|
||||||
|
%\end{center}
|
||||||
|
SCREENSHOT (highlight vector)
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item Fully parametric
|
||||||
|
\item Automated repetition (loops, tables, sub-frames)
|
||||||
|
\item GUI or text-based
|
||||||
|
\item Automatic measurements
|
||||||
|
\item Output: KiCad, Postscript, Gnuplot
|
||||||
|
\end{itemize}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- Qi-Hardware -------------------------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{Qi-Hardware}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Collection of loosely connected projects
|
||||||
|
\item Loose collective of like-minded developers
|
||||||
|
\item Copyleft Hardware with Free Software
|
||||||
|
\item Development and manufacturing
|
||||||
|
\item Toolmaking
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
Products:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Ben NanoNote (Handheld computer)
|
||||||
|
\item Ben-WPAN (IEEE 802.15.4 wireless)
|
||||||
|
\item Milkymist One (FPGA-based Video synthesizer)
|
||||||
|
\end{itemize}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- Collaborative Design ----------------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{Collaborative Design}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Track other people's work
|
||||||
|
\item Review other people's work (libraries)
|
||||||
|
\item Shared design information
|
||||||
|
\item Shared version control (git)
|
||||||
|
\item Shared procedures and rules
|
||||||
|
\end{itemize}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- KiCad Limitations -------------------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{KiCad Limitations}
|
||||||
|
\begin{itemize}
|
||||||
|
\item No integrated version control system support
|
||||||
|
\item Integration leads to weak peripheral tools
|
||||||
|
\begin{itemize}
|
||||||
|
\item Footprint editor
|
||||||
|
\item Component catalog
|
||||||
|
\item Module catalog
|
||||||
|
\end{itemize}
|
||||||
|
\item Scattered libraries CHECK
|
||||||
|
\end{itemize}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- Qi-Wardware Adaptation --------------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{Qi-Hardware Adaptation}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Command-line oriented use
|
||||||
|
\item Extend KiCad with patches
|
||||||
|
\item External scripts/programs
|
||||||
|
\item Own component and module libraries with common rules
|
||||||
|
\end{itemize}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- What goes into git ------------------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{What goes into git}
|
||||||
|
KiCad:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Project file: {\tt {\em project}.pro}
|
||||||
|
\item Schematics: {\tt {\em project}.sch}, {\tt {\em subsheet}.sch}
|
||||||
|
\item Footprint mapping: {\tt {\em project}.cmp}
|
||||||
|
\item Layout: {\tt {\em project}.brd}
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
Qi-Hardware:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Makefile ({\tt sch}, {\tt brd}, {\tt fab}, {\tt clean})
|
||||||
|
\item Bookshelf (for dsv)
|
||||||
|
\item Project-local libraries
|
||||||
|
\end{itemize}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- What doesn't ------------------------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{What doesn't}
|
||||||
|
KiCad:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Netlist: {\tt {\em project}.net} \\
|
||||||
|
Generate with eeschema from {\tt *.sch} and {\tt {\em project}.cmp}
|
||||||
|
\item Caches and backups: {\tt {\em project}.bak}, {\tt {\em project}.000},
|
||||||
|
{\tt {\em project}-cache.lib}
|
||||||
|
\item Postscript: {\tt {\em project}-{\em layer}.g{\em XX}}
|
||||||
|
\item Gerbers: {\tt {\em project}-{\em layer}.g{\em XX}}
|
||||||
|
\item BOMs: {\tt {\em project}.lst}, {\tt {\em project}.cvs}
|
||||||
|
\item Fab outputs: {\tt {\em project}.drl}, {\tt {\em project}.pos}
|
||||||
|
\item And so on: {\tt {\em project}.erc}, {\tt {\em project}.rpt},
|
||||||
|
{\tt {\em project}.wrl}, $\ldots$
|
||||||
|
\end{itemize}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- Project File ------------------------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{Project File}
|
||||||
|
Project settings. Lists of libraries.
|
||||||
|
|
||||||
|
Issues:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Local absolute paths
|
||||||
|
\item Default libraries
|
||||||
|
\item Timestamps $\rightarrow$ commit noise
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
Solution:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Maintain manually
|
||||||
|
\item {\tt purge} script \\
|
||||||
|
\url{wernermisc/bin/purge}
|
||||||
|
\end{itemize}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- Makefile ----------------------------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}[fragile]{Makefile}
|
||||||
|
Issues:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Shortcuts
|
||||||
|
\item Glue tools together
|
||||||
|
\item Avoid mistakes
|
||||||
|
\item Share common procedures
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
Example:
|
||||||
|
\begin{verbatim}
|
||||||
|
front:
|
||||||
|
pcbnew --plot=ps --plot-fill-all-zones --layers=Front \
|
||||||
|
--plot-mirror $(PROJECT).brd
|
||||||
|
lpr $(PROJECT)-Front.ps
|
||||||
|
\end{verbatim}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- KiCad Command-Line Patches ----------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{KiCad Command-Line Patches}
|
||||||
|
Original hack by Werner Almesberger, clean rewrite by Wolfgang Spraul.
|
||||||
|
\begin{itemize}
|
||||||
|
\item Idea: command-line access to main output functions
|
||||||
|
\item eeschema
|
||||||
|
\begin{itemize}
|
||||||
|
\item Visualization: Postscript (and SVG, DXF)
|
||||||
|
\item BOM $\rightarrow$ BOOM
|
||||||
|
\item Netlist, ERC
|
||||||
|
\end{itemize}
|
||||||
|
\item pcbnew
|
||||||
|
\begin{itemize}
|
||||||
|
\item Fabrication: Gerbers, drill (Excellon), component positions
|
||||||
|
\item Visualization and DIY: Postscript
|
||||||
|
\item Attributes: mirror, size, origin, fill zones, $\ldots$
|
||||||
|
\end{itemize}
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\url{eda-tools/kicad-patches}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- Data Sheet Viewer (dsv) -------------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}[fragile]{Data Sheet Viewer (dsv)}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Bookshelf: name and aliases $rightarrow$ PDF or ZIP with PDF
|
||||||
|
\item Download (wget) to local cache
|
||||||
|
\item Hierarchical lookup by name or alias
|
||||||
|
\item Example: \\
|
||||||
|
{\tt dsv avr} $\rightarrow$ ATtiny87 ({\tt doc8265.pdf})
|
||||||
|
$\rightarrow$ xpdf
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
Bookshelf example:
|
||||||
|
|
||||||
|
\begin{verbatim}
|
||||||
|
N: attiny87
|
||||||
|
A: attiny167
|
||||||
|
A: avr
|
||||||
|
D: http://www.atmel.com/Images/doc8265.pdf
|
||||||
|
\end{verbatim}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- Data Sheet Viewer (dsv) -------------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{dsv Motivation}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Make sure everybody uses the same data sheet
|
||||||
|
\begin{itemize}
|
||||||
|
\item Same component
|
||||||
|
\item Same manufacturer
|
||||||
|
\item Same data sheet revision
|
||||||
|
\end{itemize}
|
||||||
|
\item Copyright: can't just check in PDF
|
||||||
|
\item Industrial pragmatism: mail or ``internal'' repository
|
||||||
|
\item Qi-Hardware: send {\tt BOOKSHELF} around
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\url{eda-tools/dsv}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- Schematics Symbol Catalog ----------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{Schematics Symbol Catalog}
|
||||||
|
\begin{itemize}
|
||||||
|
\item For selection, review
|
||||||
|
\item Hierarchical order with alphabetic index
|
||||||
|
\item Short descriptions and data sheet links
|
||||||
|
\item Added value: indicate pin types
|
||||||
|
\item TODO: connect to dsv
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
DRAWING (hierarchy + descr + com libs ---genkicat--> PDF)
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- Footprint Catalog ------------------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{Footprint Catalog}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Likewise, for footprints
|
||||||
|
\item Added value: measurements, pad types
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
DRAWING (hierarchy + descr + com libs ---genkicat--> PDF)
|
||||||
|
|
||||||
|
\url{eda-tools/genkicat}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- Schematics History ------------------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{Schematics History}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Schematics revision history
|
||||||
|
\item {\tt git diff} produces gibberish
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
EXAMPLE
|
||||||
|
|
||||||
|
\url{http://projects.qi-hardware.com/schhist/}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- Schematics History (cont'd) ---------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{Schematics History (cont'd)}
|
||||||
|
How it works:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Walk git revision history
|
||||||
|
\item Check out project whenever schematics change
|
||||||
|
\item Run eeschema to make Postscript
|
||||||
|
\item Convert to PNG (find diffs, with highlighting) and PDF
|
||||||
|
\item Wrap in HTML
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
Issues:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Nasty shell script
|
||||||
|
\item Resource-hungry (partial caching)
|
||||||
|
\item Large schematics get confusing
|
||||||
|
\item Projects spanning multiple repositories
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\url{eda-tools/schhist}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- Layout History ----------------------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{Layout History}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Layout revision history
|
||||||
|
\item To do $\ldots$
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\url{eda-tools/brdhist}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- Gerber Renderer ---------------------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{Gerber Renderer}
|
||||||
|
\begin{itemize}
|
||||||
|
\item ``Photorealistic'' view of PCB
|
||||||
|
\item Combines Gerber and Excellon
|
||||||
|
\item Easy see issues with solder paste, silk screen, solder mask, $\ldots$
|
||||||
|
\item Uses gerbv for rendering
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
EXAMPLE
|
||||||
|
|
||||||
|
\url{eda-tools/prettygerbv}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- BOM Processor -----------------------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{BOM Processor (BOOM)}
|
||||||
|
\begin{itemize}
|
||||||
|
\item BOM $\rightarrow$ select components $\rightarrow$ find supplier
|
||||||
|
$\rightarrow$ shopping list
|
||||||
|
\item Work in progress. Rewrite from Perl to C
|
||||||
|
\begin{itemize}
|
||||||
|
\item Faster
|
||||||
|
\item Less headache with data structures
|
||||||
|
\item Better parsing
|
||||||
|
\end{itemize}
|
||||||
|
\item Snag: Digi-Key spider no longer works
|
||||||
|
\item Future: help with component selection
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\url{eda-tools/b2}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- BOOM Data Flow ----------------------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{BOOM Data Flow}
|
||||||
|
DRAWING
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- Schematics Design Rules -------------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{Schematics Design Rules}
|
||||||
|
...
|
||||||
|
|
||||||
|
URL
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- Libraries ---------------------------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{Libraries}
|
||||||
|
Goals:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Consistent naming
|
||||||
|
\item Known origin of design information
|
||||||
|
\item Documented development process
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
To do:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Improve organization
|
||||||
|
\item Better integrate background information
|
||||||
|
\item Reviews !
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\url{kicad-libs/components}, \url{kicad-libs/modueles}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- Qi-Hardware Workflow ----------------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{Qi-Hardware Workflow}
|
||||||
|
DIAGRAM
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% --- Conclusion --------------------------------------------------------------
|
||||||
|
|
||||||
|
\begin{frame}{Conclusion}
|
||||||
|
\begin{itemize}
|
||||||
|
\item KiCad is a good basis for collaborative projects
|
||||||
|
\item Open design allows extension with scripts
|
||||||
|
\item Workflow is complex and needs careful consideration
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
To do:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Spread the word
|
||||||
|
\item Improve quality of libraries
|
||||||
|
\item Integrate patches into mainline KiCad
|
||||||
|
\item Finish BOOM and write brdhist
|
||||||
|
\end{itemize}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\end{document}
|
@ -4,7 +4,7 @@ http://lists.en.qi-hardware.com/pipermail/discussion/
|
|||||||
2009 85 141 137 157 99 145
|
2009 85 141 137 157 99 145
|
||||||
2010 180 180 263 214 412 218 492 295 260 132 116 174
|
2010 180 180 263 214 412 218 492 295 260 132 116 174
|
||||||
2011 150 155 125 108 71 127 49 106 129 69 71 33
|
2011 150 155 125 108 71 127 49 106 129 69 71 33
|
||||||
2012 39 20 38 36 15
|
2012 39 20 38 36 15 23
|
||||||
|
|
||||||
http://lists.milkymist.org/pipermail/devel-milkymist.org/
|
http://lists.milkymist.org/pipermail/devel-milkymist.org/
|
||||||
|
|
||||||
@ -12,4 +12,4 @@ http://lists.milkymist.org/pipermail/devel-milkymist.org/
|
|||||||
2009 3 8 15 27 33 14 24 14
|
2009 3 8 15 27 33 14 24 14
|
||||||
2010 29 28 36 28 22 25 35 14 27 39 17 12
|
2010 29 28 36 28 22 25 35 14 27 39 17 12
|
||||||
2011 61 43 59 81 17 48 43 35 24 78 116 183
|
2011 61 43 59 81 17 48 43 35 24 78 116 183
|
||||||
2012 52 67 48 30 35
|
2012 52 67 48 30 36 16
|
||||||
|
Loading…
Reference in New Issue
Block a user