Huffman-coded Audio


Posted on Feb 7, 2014

This project uses a magnetic reed switch, a NerdKit, and set of computer speakers to frighten unsuspecting visitors at the door. In covering constructing this project, we get a chance to go over some pretty neat engineering concepts: digital audio, data compression using Huffman codes, and outputing audio via PWM with analog filtering. To detect whether the door was opened or closed,


Huffman-coded Audio
Click here to download the full size of the above Circuit.

we used a magnetic reed switch, like the kind used in wired alarm systems. This one from Amazon illustrates the basic concept. One part has a magnet, and would be mounted on the moving door or window. The other part has a magnetic-field-sensitive switch, and this one has three screw terminals for the switch contacts. For the switch we purchased, we wired the "COM" common terminal to ground on our breadboard, and connected the "NC" normally closed terminal to our microcontroller pin PC5 (ATmega328P pin #28). For our part, this meant that the switch was closed (connected) when the magnet was nearby. As we discussed in our Digital Calipers DRO video, we can use the microcontroller`s built-in pull-up resistors to easily read from a switch or button with no extra components. As explained in the video, for variable-length codes, we generate a tree of binary ones and zeros corresponding to a sequence of bits, and each "leaf" of the tree corresponds to a symbol being output from the decoder. By visualizing this as a tree, we automatically enforce the constraint that no complete code for a symbol is the contained within the beginning of the code for a different symbol. Huffman coding is the specific way to generate this tree in an optimal way. By optimal, we mean that if we know ahead of time the probability distribution of all of the different symbols occuring in our information stream (and assume them to be independent), we...




Leave Comment

characters left:

Related Circuits

  • New Circuits

    .

     


    Popular Circuits

    VFO stabilization with 2N4416
    Thermally Operated Direction Detector
    Arduino LED blinking with variable speed
    Infrared detector circuit using PID20
    Adjustable High/Low Frequency Sine wave generator
    Preamp Protection
    Emitter-coupled differential amplifier



    Top