\begin{tikzpicture}

%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% My Customized Styles
%%

[x=0.2in,y=0.2in]
\tikzset{% Environment Config
    font=\small,
    open socket/.style = {
        circle,
        fill = lightgray,
        draw = lightgray,
        inner sep = 1pt
    },
    filled socket/.style = {
        circle,
        fill = black,
        draw = lightgray,
        inner sep = 1pt
    },
    strip/.style = {
        opacity = 0.1,
        line cap = round,
        line join = round,
        line width = 6pt
    },
    wire/.style = {
        decorate,
        decoration = {
            random steps,
            amplitude = 2pt,
            segment length = 0.2in
        },
        line cap = round,
        line join = round,
        line width = 2pt
    }
}

\ctikzset{bipoles/length=0.4in} % Controls bipoles scale

%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% My Customized Components
%%

\newcommand{\speaker}[2]{% #1 = name from to[generic,n=#1], #2 = rotation angle
    \draw[thick,rotate=#2]
        (#1) +(.3,.375) -- +(1.05,1.125) -- +(1.05,-1.125) -- +(.3,-.375);
}

% You can create an smart objet like Henri Menke in this post:
% --> http://www.texample.net/tikz/examples/4-bit-counter/
% Variables: 1: Position 2: Lines.
\def\BREADBOARD(#1)#2{%
    \begin{scope}[shift={(#1)}]
        \foreach \y [evaluate = \y as \line using int(abs(\y))]
                 in {-1,-2,-3,...,-#2}{%% draw breadboard sections

            % draw bus and breadboard grid sockets
            \foreach \lab/\x in {
                    l-/-9.5, lg/-8.5,       % power strips on left side
                    A/-5.5, B/-4.5, C/-3.5, D/-2.5, E/-1.5, % left side
                    F/1.5, G/2.5, H/3.5, I/4.5, J/5.5,     % right side
                    r+/8.5, rg/9.5         % power strips on right side
            } {
                \coordinate [open socket] (\lab\line) at (\x, \y);
            }

            % draw row connectivity for board proper
            \begin{scope} [% these paths should not interfere with anything else
                on background layer
            ]
                \draw [strip,gray]
                    (A\line.west) -- (E\line.east)
                    (F\line.west) -- (J\line.east);
            \end{scope}

            % draw line numbers off to the left
            \node [left of = l-\line,text=gray] {\line};
            \node [right of = rg\line,text=gray] {\line};
        }

        % draw bus connection lines
        \begin{scope} [% these paths should not interfere with anything else
            on background layer
        ]
            \draw [strip,red]  (l-1.north) -- (l-#2.south);
            \draw [strip,blue] (lg1.north) -- (lg#2.south);
        
            \draw [strip,red]  (r+1.north) -- (r+#2.south);
            \draw [strip,blue] (rg1.north) -- (rg#2.south);
        \end{scope}

        % label breadboard columns (top/bottom)
        \foreach \lab/\x in {
                A/-5.5, B/-4.5, C/-3.5, D/-2.5, E/-1.5, % left side
                F/1.5, G/2.5, H/3.5, I/4.5, J/5.5      % right side
        } {
            \node [above of = \lab1] {\lab};
            \node [below of = \lab#2] {\lab};
        }

        % label buses (top)
        \node [above of=l-1,red] {\shortstack{\tiny{V$_{-}$}\\\Large{${+}$}}};
        \node [above of=lg1,blue] {\shortstack{\tiny{GND$_{}$}\\\Large{${-}$}}};
        \node [above of=r+1,red] {\shortstack{\tiny{V$_{+}$}\\\Large{${+}$}}};
        \node [above of=rg1,blue] {\shortstack{\tiny{GND$_{}$}\\\Large{${-}$}}};

        % label buses (bottom)
        \node [below of=l-#2,red] {\shortstack{\Large{${+}$}\\\tiny{V$_{-}$}}};
        \node [below of=lg#2,blue] {\shortstack{\Large{${-}$}\\\tiny{GND$_{}$}}};
        \node [below of=r+#2,red] {\shortstack{\Large{${+}$}\\\tiny{V$_{+}$}}};
        \node [below of=rg#2,blue] {\shortstack{\Large{${-}$}\\\tiny{GND$_{}$}}};
    \end{scope}
}

%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% Schematic: drawing the breadboard and place the parts
%%

% Place the Breadboard in position
\BREADBOARD(0,0){29};
\draw[red,wire] (l-28) to[short,*-*] (r+28);
\draw[blue,wire] (lg29) to[short,*-*] (rg29);

% Power Supply (Vcc)
\draw (l-10) ++(-6,0) coordinate (VCC) to[V=$\mathsf{V_{CC}}$,i_=$\mathsf{I_{CC}}$,*-*] ++(0,-10) coordinate (GND);
\draw[red,wire] (VCC) to[short,*-*] (l-10);
\draw[blue,wire] (GND) to[short,*-*] (lg20);

% Place the IC's in position
\node[dip8,pin spacing=0.2in,rotate=-90] (U1) at (0,-5.5) {\MakeUppercase{U1:NE555}};
\draw (U1.p1) to[short,-*] (E4); \draw[blue,wire] (A4) to[short,*-*] (lg4);
\draw (U1.p2) to[short,-*] (E5);
\draw (U1.p3) to[short,-*] (E6);
\draw (U1.p4) to[short,-*] (E7); \draw[red,wire] (A7) to[short,*-*] (l-7);
\draw (U1.p5) to[short,-*] (F7);
\draw (U1.p6) to[short,-*] (F6);
\draw (U1.p7) to[short,-*] (F5);
\draw (U1.p8) to[short,-*] (F4); \draw[red,wire] (J4) to[short,*-*] (r+4);

\node[dip8,pin spacing=0.2in,rotate=-90] (U2) at (0,-15.5) {\MakeUppercase{U2:NE555}};
\draw (U2.p1) to[short,-*] (E14); \draw[blue,wire] (A14) to[short,*-*] (lg14);
\draw (U2.p2) to[short,-*] (E15);
\draw (U2.p3) to[short,-*] (E16);
\draw (U2.p4) to[short,-*] (E17); \draw[red,wire] (A17) to[short,*-*] (l-17);
\draw (U2.p5) to[short,-*] (F17);
\draw (U2.p6) to[short,-*] (F16);
\draw (U2.p7) to[short,-*] (F15);
\draw (U2.p8) to[short,-*] (F14); \draw[red,wire] (J14) to[short,*-*] (r+14);

% Start conecting (U1)
\draw[violet,wire] (H1) to[short,*-*] (H6);
\draw[violet,wire] (E1) to[short,*-*] (F1);
\draw[violet,wire] (D5) to[short,*-*] (D1);

% Start conecting (U2)
\draw[violet,wire] (E11) to[short,*-*] (F11);
\draw[violet,wire] (H11) to[short,*-*] (H16);
\draw[violet,wire] (D15) to[short,*-*] (D11);

% Start inter-conecting (U1-U2-Speaker)
\draw[green,wire] (D6) to[short,*-*] (D9);
\draw[green,wire] (I9) to[short,*-*] (I17);
\draw[green,wire] (D16) to[short,*-*] (D19);

% Place parts (U1)
\draw (I5) to[D,l_=D1:IN4148,*-*] (I1);
\draw (G5) to[R,l^=R2:68k\si{\ohm},*-*] (G1);
\draw (J5) to[R,l_=R1:68k\si{\ohm},*-*] (r+5);
\draw (A5) to[eC,l^=C1:10\si{\mu}F,*-*] (lg5);
\draw (J7) to[eC,l_=C2:0.01nF,*-*] (rg7);
\draw (F9) to[R,l^=R5:10k\si{\ohm},*-*] (E9);

% Place parts (U2)
\draw (G15) to[R,l^=R4:68k\si{\ohm},*-*] (G11);
\draw (J15) to[R,l_=R3:68k\si{\ohm},*-*] (r+15);
\draw (A15) to[eC,l^=C3:100nF,*-*] (lg15);
\draw (F19) to[pC,l^=C4:100\si{\mu}F,*-*] (E19);

% Place parts (E1)
\draw[green,wire] (I21) to[short,*-*] (I23);
\draw (G19) to[pR,n=Rx,l_=Rx,*-*] (G23);
\draw (Rx.wiper) to[short,-*] (H21);
\draw (lg23) to[generic,n=E1,l=E1:8\si{\ohm},fill=green!50,*-*] (F23);
\speaker{E1}{-90}

%%
%%
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\end{tikzpicture}

%Local variables:
% coding: utf-8
% mode: text
% mode: rst
% End:
% vim: fileencoding=utf-8 filetype=tex :
