Notification System

This is a simple device that can be used as a Notification System that can be connected to a PC via USB and can command external devices like a buzzer, beacon etc.

My plan was to make a small device that will start a beacon and will activate a buzzer when it receives the command from a PC using usb port.

The device use ATtiny2313 microcontroller from Atmel and is powered from the usb port.
I am using the V-USB driver for the microcontroller and libusb-win32 for the PC program to control the device, both are open source and easy to use.

I have chosen to use a prototyping board (Stripboard) instead of making a nice PCB for the device since I was experimenting a lot for this project so it was easy this way.
The next version of the Notification System will have a nice PCB.

After the device is connected to a PC using an usb cable it can be controlled with a small console program that can also be called from other programs.
This version is designed to work only on Windows but next version will support other operating systems like Linux and Mac.

Here is a small video with the case open where you can see the debug LEDs:.

Here is a small video with the device in action:This is another test after the device was recovered from a building on fire:


I have made the schematics in EAGLE Light Edition wich is FREE.

Download circuit scheme

Components List

Here is the list with the components used in the project:

Nr. Type Code / Description Qty. Datasheet
1 Microcontroller ATtiny2313-20PU 1 PDF
2 DIP Socket with 20pins 1
3 Relay Omron G6D 1 PDF
4 Buzzer 5V 1
5 LED 3mm Red 2mA 2.5 mcd 60gr 1
6 LED 3mm Green 2mA 1.1 mcd 60gr 1
7 LED 3mm Yellow 2mA 1
8 Resistor 68Ω / 0.25W 2
9 Resistor 1kΩ / 0.25W 4
10 Resistor 1.5kΩ / 0.25W 1
11 Resistor 10kΩ / 0.25W 2
12 Jumper 2 pin 1
13 Quartz crystal 12MHz 1
14 Capacitors Ceramic 27pF 2
15 Capacitors 100nF 1
16 Capacitors Electrolytic 4.7nF / 50V 1
17 Push Button 4.3 mm 1
18 Zener Diode Z 3v6 / 0.5W 2
19 Transistor NPN 2N3905 1 PDF
20 Diode 1N4148 1
21 Break away headers 5 pin 2
22 Power jack connector Panel – 2mm 1
23 Power jack connector Cable – 2mm 1
24 USB Connector Female type B 1
25 Stripboard Rounded holes 1
26 Protection Case From an old router 1
27 Beacon Blue – 12V 1
28 Power source 12V DC – 1A 1
29 USB cable A to B male 1
30 Jump wires Various size

Prototype images

Here are some images with the prototype board


The firmware is the code that resides on the microcontroller and is developed in c using AVR Studio 5.
Before building the code be sure to check the optimization level for the c compiler to Optimize for size -Os.
The firmware use Virtual USB port for AVR microcontroller so if you need more info about V-USB check this documentation wiki.

You can download the firmware files from here.

To upload the firmware to the microcontroller I am using USBasp programmer with eXtreme Burner.

Here are some image with the USBasp programmer that I use:

Be sure to set the fuse bit correctly so that the attiny2313 works at 12MHz. I am using 0xEF for low fuse and 0xDF for high fuse.

WARNING! Setting the fuse bits incorrectly can make the microcontroller unusable.

After connecting the device to the PC you must install the libusb drivers manually, you can get the drivers from here.

Controller program

The controller program is made in C language using libusb-win32 library and is compiled with MinGW using Eclipse IDE for C/C++.

You can download the controller from here.

Before building the project be sure in the properties in the MinGW C Linker->Libraries the path is set to lib and in the libraries is added usb.
Also since #include “usbdrv/usbconfig.h” is located into the firmware code you need to add in the GCC C Compiler->Includes the path where “usbdrv/usbconfig.h” is located on your drive.


This project is distributed under the terms of the GNU General Public License (GPL) version 3.

Please read the License.txt for more info.

The project is using V-USB and libusb-win32 so please read read the V-USB license and libusb-win32 license.


This project can be found on github at
where you can contribute to the code, access the last version and submit issues.

Please feel free to contact me if you have any questions regarding this project.

Leave a Reply

Your email address will not be published. Required fields are marked *