• Blue Dmod

    11/19/2024 at 08:34 0 comments

    On market there are lots of options for sound card-based data modems, like SignalinkDigirig and lots of DIY and cheap modems. I haven’t seen any Bluetooth based audio data modem apart from Mobilinkd which is unfortunately Bluetooth serial port TNC.

    In order to keep the cost to minimum I got together components I already had just had to order the microcontroller as I didn’t had any small form factor microcontroller. One reason for the project internal looks so crude.

    I’ll be working on a proper PCB design but as I don’t have any experience designing surface mounted level PCB will be looking for some expert help. Might switch SMD to Through hole components.

    Blew is the basic circuit which I had in mind but many changes were made wile making the modem.

    Power:

    Initially, I had planed to use 3.7V BMS to charge the battery and was hoping it would have internal 5V DC boost circuit. but I had to switch to a old power bank BMS circuit with modified USB C board. I had to solder a push button in parallel with BMS push button. Out put had a STSP slider switch to cut off the power to the rest of the circuit.

    Power out from the switch was solder to a PCB patch to serve as Power bus to connect rest of the components power.

    BT002 Bluetooth Module:

    BT002 Bluetooth module is a cheap module with audio in/out and few other controls. I only used +5V, Ground, Mic, Audio Left, Audio Right.

    Microcontroller:

    I had to order a small form factor microcontroller, I went with Chinese Microcontroller “Pro Micro” It can be programmed in Arduino IDE as Arduino Leonardo. I needed only 2 pins 1 as input and 1 as out put, in future I’ll add a 10K Potentiometer to add programable PTT trigger delay. right now it is done while programming the microcontroller.

    *No External LED was used as displayed in the circuit above.

    Relay module:

    I went with relay based PTT for few reasons, not all radios like Transistor/ Mosfet based PTT. Using Relay based PTT make it much simple. I used CW-025 5VDC Relay module.

    Modem to Radio connection:

    To keep all simple I used RJ-45 Port to connect Radio to Modem. It easy to make RJ-45 based cables then using any special connector.

    Audio I/O and PTT:

    For Audio I/O from bluetooth and radio I used following configuration:

    Blutooth Audio Left goes to radio mic via 10uF capacitor.

    -Bluetooth Audio Left goes to Radio mic input via 10uF capacitor.

    -Bluetooth Audio right goes to Pro Micro using Voltage divider via 10uf capaitor.

    -Bluetooh Mic in is connected to Radio’s audio out via 10uF capacitor.

    Pro Micro Code:

    simple code is written in Arduino IDE. Audio level is monitors on analogue input pin. Once the audio level meets the threshold PTT is triggered. I added 1 second delay after the audio goes below threshold before the PTT switched off.

    Code:

    // Blue Dmod //
    // https://uhpowerup.com/ //
    // Author: 2E0UMR //
    // use at your own risk //
    
    const int audioPin = A1;  // Audio input pin
    const int RPin = A3;     // Relay pin
    const int threshold = 200;  // Adjust based on your audio signal
    
    bool RState = false;      // Tracks Relay state
    unsigned long offTimer = 0; // Tracks time to turn off the Relay
    const int offDelay = 1000;  // 3-second delay in milliseconds
    
    void setup() {
      pinMode(RPin, OUTPUT);
      Serial.begin(9600);
    }
    
    void loop() {
      int audioValue = analogRead(audioPin);  // Read audio signal
      Serial.println(audioValue);            // Debugging: Print the value
    
      if (audioValue > threshold) {          // Audio signal exceeds threshold
        digitalWrite(RPin, HIGH);          // Turn Relay on immediately
        RState = true;                     // Update Relay state
        offTimer = 0;                        // Reset off timer
      } else if (RState && offTimer == 0) { // Start the 3-second timer
        offTimer = millis();                 // Record the current time
      }
    
      if (RState && offTimer > 0 && millis() - offTimer >= offDelay) {
        digitalWrite(RPin, LOW);           // Turn Relay off after 3 seconds
        RState = false;                    // Update Relay state
        offTimer = 0;                        // Reset off timer
      }
    }

    I have tested the “Blue...

    Read more »