Bluetooth Net Monitor v2

This post only goes over the new stuff in the network monitor, I’d recommend having a look at the original post first.

  • New PCB design
    The new PCB is now an almost single board design, just a separate board for the USB connector. The old monitor had a small main board which connected to the LCD and Bluetooth modules. This new board has everything soldered straight on.
  • Revamped microcontroller code
    Refactored a lot of the microcontroller code, reduced RAM usage and improved performance a little bit.
  • New router program
    The router program is now completely written in C! Uses much less CPU time than the old shell script.
  • New host program
    Written in C# .NET and uses LibUsbDotNet. It’s still in early development, but at the moment allows uploading images (takes around 2.5 – 3 seconds to upload), drawing stuff (mouse click and drag) and controlling the display brightness.
  • Other new features
    New efficient binary protocol instead of a text protocol.
    Added a temperature sensor since there was a lot of room left on the PCB, however this turned out to be a bit useless for measuring the room temperature because of the heat dissipated by nearby parts, mainly the Bluetooth module.
    Included USBaspLoader bootloader to allow easy firmware updating over USB, slightly modified to suit the monitor.

Sources available at GitHub


Skip to comment form

    • Florin on November 13, 2013 at 9:20 am
    • Reply

    Hi Zak,

    First of all, thanks for sharing this project!
    I was hoping to take some inspiration from your Bluetooth Antenna design so I studied the Eagle files you’ve published. I couldn’t find the actual pcb antenna in your brd file, all I could find is the tkeepout and bkeepout areas where the antenna should be (I’ve enabled all layers). Is there any trick to show the antenna trace?


    1. Hey, the antenna is part of the Bluetooth module –

        • Florin on November 14, 2013 at 9:44 pm
        • Reply

        Uh, indeed…

    • BlueTooth on February 28, 2014 at 1:00 am
    • Reply

    This new version, do I have to redo the programming I done from the old set up?

    1. Do you mean the microcontroller firmware? If so, then yes, that needs to be updated to the new firmware.

    • Jorge on March 20, 2014 at 6:10 pm
    • Reply

    That’s exactly what i’m looking for… but i’m not handy with electronics and soldering… don’t u sold as kit? or pre assembled?

    1. Sent you an email 🙂

        • Martin on August 28, 2014 at 4:31 am
        • Reply

        Hi, I’d also be interested in a pre built kit, are you able to do that?

        1. Yup, email sent.

            • PeperKakaHUus on December 10, 2014 at 8:22 pm

            Would be interested in a kit too, greatings from germany

  1. Hello Zak !

    I am using the same HC-05 module for my project and I have a simple question : I am using the RST (11) and PIO11 (34) pins, connected to two microcontroller outputs (ATMEGA328P), for controlling reset and AT commands, respectively.

    Is there any point in using pullup or pulldown resistors (e.g. 10K) on these pins, or are they useless ? How about decoupling capacitors ?

    1. Hey,
      The RST pin already has an internal pull-up to 1.8V, so I don’t think it’s 3.3V compatible. For this one the 328 pin should be configured as an open-drain output so it’s only either output LOW or input with no pull-up.
      PIO11 can be driven by a normal HIGH/LOW output (3.3V only), don’t need to bother with pull-ups/downs.
      Add a 100n decoupling cap just to be sure.

      1. Thanks a lot for the detailed info ! I will remove the pullup/pulldowns to save a few cents 🙂
        It seems that the RESET pin works with 3.3V output but I’d rather not push it anymore.

      2. I suppose that this is the code for RESET :

        void HC05::powerOn(void) {

        // open-drain configuration (

        clearBit(BT_RST_DDR,BT_RST); // set RST as input
        clearBit(BT_RST_PORT,BT_RST); // no pullup resistor

        void HC05::powerOff(void) {

        setBit(BT_RST_DDR,BT_RST); // set RST as output
        clearBit(BT_RST_PORT,BT_RST); // set output low

        1. Yup, looks like it should work.

    • Jason on February 9, 2015 at 8:26 pm
    • Reply

    Hello there. I stumbled across your project, and have always thought something like this would be useful. I was wondering as others have asked – is this for sale? What would it cost to get a pre-assembled unit? Thanks!

    1. Sent an email 🙂

Leave a Reply

Your email address will not be published.

Are you human? *