Skip to content
/ MouDio Public

MouDio: a compact and portable Bluetooth speaker with high-quality components for powerful, clear sound. Moudio is built using four PCBs and laser-cut acrylic grills with 3D printed parts, and it can be easily assembled using the provided instructions.

License

Notifications You must be signed in to change notification settings

Mala2/MouDio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


follow on Twitter

🚨 ⚠ This project is currently still under development ⚠️ 🚨

(https://www.MouDio.net)

Overview

Introducing the fully functional Bluetooth Speaker, featuring modern design and high-performance capabilities. With the choice of ATmega328P or ESP32 microcontroller at its core and compatibility with Arduino & Platformio, this portable speaker offers easy construction, allowing users to quickly and easily set it up, and the high-quality audio ensures that your music will sound great.

The speaker also boasts the Qualcomm® CSR8675 FSC-BT806 and 2x Texas Instruments® TAS5825M amplifiers, providing low distortion and powerful output of 2 x 30 W.

The PCB prototypes have been built and tested, with excellent results. The hardware design is complete, and we are now focusing on the software development. We invite you to explore the shared files for more information on this exciting project.

image

🎨 View on FUSION 360

Features

  • Amplifier - 2x Texas Instruments® TAS5825M Which has low distortion can output 2x 30 W, 2.2 Mode (8-Ω, 24 V, THD+N=1%)

  • Connectivity - The FSC-BT806 Feasycom features Qualcomm® CSR8675 - Bluetooth V5.0 Support HSP, HFP, A2DP, AVRCP, PBAP,MAP,SPP,BLE profile - Coverage up to 15m - 2 microphone inputs - Audio interfaces: I²S/PCM and SPDIF

  • Power - Accept USB C IN Delivery Up to 2.5A Charge Current - USB A OUT Capable of 10W-5V,2A - Low idle power consumption - 7500mAh battery capacity upgradeable to 15000mAh

  • Arduino IDE Programmable Bluetooth-Speaker

Repository Contents

👩‍🚀 3D Files • The Bluetooth-Speaker components in many formats (probably what you are looking for to 3d print)

🔉 Hardware • The internal PCBs files (Gerber, Schematic)

💻 Software • Codes and Libraries for use with the MouDio

📄 Documentation • Datasheets, other references

🎲 Prototype • Evaluation board, Cases, etc.

Block Diagram

The following displays the latest Block Diagram; Things may change, and probably there may be some discrepancy between the schematic and the block diagram.

image

Schematics

The following displays the TOP Main PCB. It contain the Atmega328|ESP32 uC, LED Driver, Haptic Driver, RTC, Touch Sensor (TPR54|48), EEPROM*, Supervisory, Addressable LEDs

image

image image V1

📐 View on FUSION 360

The following displays the BACK Charger PCB.It contain MAX77961 3S Charger, MAX17320 Fuel Gauge, MAX25231ATCA 5V Buck, MAX77503BEWC33 3V3 Buck, 3S Battery.

image

image image

V1

📐 View on FUSION 360

The following displays the BOTTOM Amplifier PCB.It contain the Amplifier - 2x Texas Instruments® TAS5825M and The FSC-BT806 Feasycom Bluetooth Moduel.

image

image image

V1

📐 View on FUSION 360

The following displays the FRONT Speaker PCB.To hold the Speakers and front acrylic grill

image

image image

V1

📐 View on FUSION 360

Working Principal

1. First, I am going to use the TPR54 Touch Sensor Modules to turn ON/OFF the system, if pin [I/O-2] "TAP" it is pressed >2s. This module can send active High signal output to the ATmega328p pin 2 [INT0].

image

2. After waking up, the ATmega328 will send a high signal to turn on the Bluetooth Module BT-806 through pin [8] "Vreg" and the TAS5825 circuitry through pin [A3] "PDN".

🔸 Startup Procedures: [I/O_2] "TAP" pressed for >2s

  • The ATmega328p wakes up upon High signal on pin 2 [INT0].

  • Send a 3V3 high signal to haptic driver to enable the IC.

  •   initialize the LED driver IS31FL3195 to wakeup.
    
  • Turn on the haptic driver as an indication for 1s.

  • Turn on the LED driver to play a motion from left to right as wake up inication.

  • Turn on the LED driver to reflect the current SOC% of the battery with the help of the fuel gauge MAX17320 and check whether the charger is presnt or not set the LEDs accordingly.

  • Send a 3V3 high signal of more than 100ms to Bluetooth Module BT-806 through VREG_IN (PLAY/PAUSE) pin to boot the module, then bring the signal back to low.

  • Once power supplies are stable, bring up PDN of TAS5825 to High and wait 5ms.

  • Set the Amplifier TAS5825 into the HiZ state and enable DSP via the I2C control port.

  • Wait 5ms at least. Then initialize the DSP Coefficient, then set the TAS5825 to Play state.

  •   initialize the charger MAX77961.
    

🔸 Shutdown Procedures: [I/O_2] "TAP" pressed for >2s

  • Configure the Register 0x03h -D[1:0]=10 (Hiz) via the I2C control port and Pull PDN low.

  • Wait at least 6ms (this time depends on the LRCLK rate, digital volume, and digital volume ramp-down rate).

  • Send a 3V3 high signal of more than 100ms to Bluetooth Module BT-806 through VREG_IN (PLAY/PAUSE) pin to turn off the module, then bring the signal back to low.

  • The ATmega328 goes to deep sleep, waiting for the next event.


🔸 Charging Procedures:

  • Once the charge input is present, the MAX77961 will send an interrupter either through INTB, INOKB pins

  • Turn on the haptic driver as an indication for 1s.

  • Display the current SOC% with 4 LEDs with the help of an LED driver as long as the charge input is present. Otherwaise, the ATmega328 goes to deep sleep, waiting for the next event.


3. Once the speaker is ON, the TPR54 is responsible for interacting with Bluetooth Module BT-806 to change the song and volume. (Keep in mind that the TAS5825 can also change just the volume) through TX/RX UART pin between the ATmega328 and Bluetooth Module BT-806 at 115200 rate data. For example: Once the ATmega328 is connected to BT-806, It can send a command to change the volume. For example,

image

And so on. Also, if the BAT SOC% is low, alert the user with an LED blinking and start the Shutdown Procedures once the BAT is too low to operate the system > 15%.

To Do List

♦️ Need help with software part.

1- After making sure the BT806 is OFF through the commands AT+, Turns the BT806 after turning the 3v3. Sending a high signal to Vreg for > 2s upon waking up, then remain Low. (OR MOSFET NETWORK)

2- If the battery is < 15%, shut down the speaker if no charging is present.

✅ 3- If the battery is <35%, set the MAX volume to be less than 70%. In other words, it reduces the volume to not consume more power. TAS5825 has register 0x4c and 0x54 (AGAIN or DIGITAL_VOL) to set that.

4- (after checking the vol range of bt806), send a command AT+SPKVOL and check the volume range of BT806 sent. After that, set the TAS5825 accordingly; that can be done with two registers, either 0x4c and 0x54 (AGAIN or DIGITAL_VOL).

✅ 5- For example, once the user swap to the right (Next Song). The LEDs should indicate that from left to right emotions.

6- If no sounds or connection is established for 30 min, turn off the speaker. Either by checking the current flow from the fuel gauge MAX17320 or the BT-806 is not in play status or the TAS5825 register 0x03 is mute status for more than 30 min.

✅ 7- If the charger is inserted, activate the haptic driver as feedback.

9- If the charger is inserted, increase the volume range to be even higher as more power will be provided. This can be done if the 0x4C register is changed accordingly with the attached and disattached of the charger.

10- Add resetFunc() after touching the middle TAP more than 10s.

11- Get the header file for the TAS5825M to act as Dual stereo 2.2 and output the best sounds. You need PPC3 software and hardware access to test the setup and extract the best DSP settings.

12- Create the initialization code configuring the bq28z610 fuel gauge to work with the Arduino Uno and create a Library, and also create a “control” object for the bq28z610 fuel gauge. This includes configuring the IC’s registers via I2C to set configurations. In addition, looking to expose all features of the target ICs in code so that a user can easily configure those features using variables.

♦️ TO BE CONTINUED

Components

🔷 Speakers

ND65-8 2-1/2" X2

🔷 Tweeters

ND20FA-6 3/4" X2

🔷 Acousta-Stuf Polyfill

Acousta-Stuf Polyfill

🔷 Brass Threaded Metal M3 3mm M3-0.5 Brass Threaded Metal Heat Set Screw Inserts for 3D Printing

Brass Threaded Metal

🔷 Silicone Rubber Mat 60x8x3mm

Silicone Rubber MatX2

Mo's github stats

About

MouDio: a compact and portable Bluetooth speaker with high-quality components for powerful, clear sound. Moudio is built using four PCBs and laser-cut acrylic grills with 3D printed parts, and it can be easily assembled using the provided instructions.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages