
Bluetooth daq digital submodule
PatrickAJoseph/bluetooth-daq
A simple low-speed Bluetooth enabled DAQ

A simple low-speed Bluetooth enabled DAQ
Analog submodule is an open-source printed circuit board by PatrickAJoseph, from the PatrickAJoseph/bluetooth-daq repository on GitHub. It is a 2-layer board of 191.8 × 140.3 mm with 214 parts on 159 nets, routed with 1,722 tracks and 251 vias.
It is built around the TL084, DAC101C081CIMK and TLV9002IDR-MS, with the TLV9004IDR-MS, CD4051BE and AMS1117-5.0 among its other parts. Its parts include 132 resistors, 51 capacitors, 14 ICs, 11 connectors and 4 transistors.
A simple low-speed Bluetooth enabled DAQ consisting of HV/LV voltage, current measurement, LV analog I/O, resistance measurement, UART, I2C & SPI communication interfaces and a high speed ADC combining multiple functionalities within one device. The device can be operated through a mobile/PC application via Bluetooth or through RS-485 interface. 16 devices can be connected to the RS-485 interface.
Reduce the number of induvidual electronic test equipment required for electronic hardware/software development.
Combine commonly used electronic test functions within a single device
Enable versatile interface to the device (RS485, Bluetooth, Web) and test automation support to reduce effort of manual testing.
.png)
The device provides 2 high voltage analog inputs with a range of +/- 50V and maximum input frequency of 200 Hz. The high voltage analog input front end attenuates the input voltage signal and adds bias to meet voltage level requirements of the sigma-delta ADC inputs.
The device provides 2 current inputs with common mode voltage upto +/- 50V and a range of +/- 3A. The voltage drop across the current measurement terminal is 0.1V/A.
The device provides 8 channel +/- 15V low voltage analog inputs. Maximum input frequency per channel is set to 200 Hz.
The device provides 2 channel resistance measurement feature. The supported resistance measurement range is 1 ohm to 1 MOhm.
The device provides 2 single ended high speed analog signal acquisition channels with sampling frequency of 200 kSPS per channel, limiting the combined input signal frequency to 10kHz.
The device provides 2 thermistor temperature measurement channels. The reference voltage for the thermistor interface is 3.3V and reference resistance is 10k. The device comes with a calibration table for a 10K NTC. If user uses any other NTC, then, the calibration table for thermistor has to be manually entered by the user via software.
The heart of most of the analog to digital conversions is carried out by a 24-bit sigma-delta ADC (ADS131M02: https://www.ti.com/lit/ds/symlink/ads131m02.pdf?ts=1769953054375&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FADS131M02).
The input to each channel of the ADC is multiplexed with the help of analog multiplexer (CD4051: https://www.ti.com/lit/ds/symlink/cd4051b.pdf)
The device provides 8 analog outputs with range +/- 10V. Since a sample and hold circuit is used at the output stage, the output current limit is 1mA and so an external buffer must be used. The DAC used in the solution is DAC101C081 (https://www.ti.com/product/DAC101C081)
The device uses a 1 MBit SRAM to store samples acquired from various modules such as high speed ADC, digital inputs, digital output patterns etc. The SRAM used is 23LCV1024 (https://ww1.microchip.com/downloads/en/DeviceDoc/25156A.pdf)
The device provides 16 digital inputs and digital outputs. The digital inputs are read by the MCU through a 74HC165 shift register (https://www.ti.com/lit/ds/symlink/sn74hc165.pdf) and the digital outputs are transferred through 74HC595 shift register (https://www.ti.com/lit/ds/symlink/sn74hc595.pdf).
The digital inputs have a range of +/- 3.3V in order to provided reverse voltage protection. The digital outputs have a current limit of 5mA per channel.
There are three indicator LEDs, 1 green, 1 red and 1 yellow. The green LED indicates status of any ongoing communication between host and the device. The red LED indicates any error which has occured in the device. The yello LED indicates that a firmware upgrade is going on the device.
The microcontroller used in the device is CC2340R52 (https://www.ti.com/product/CC2340R5/part-details/CC2340R52E0RGER) which is an ARM Cortex-M0+ MCU with 512 KB FLASH and 36 KB RAM.
The device provides an SPI, I2C and a UART interface which can be used by the user to transfer bytes to external devices under test.

The software uses FreeRTOS operating system. This is required by the TI Bluetooth Stack and also for multithreading purposes.
The following SoC peripheral drivers are required by the product.
| Driver | Description |
|---|---|
| ADC | Required by the high speed analog input module |
| SPI | Required for accessing the shift registers and the external SRAM memory |
| I2C | Required to control DAC IC on the board |
| UART | Required for interaction with host PC through RS-485 interface |
| GPIO | Required by all other drivers |
| Driver | Purpose |
|---|---|
| ADS131M02 | Controls the 24-bit Sigma-Delta ADC. Performs common operations such as setting ADC PGA gain, calibration, sample acquisition etc. |
| SN75HC595 | Write data to the digital outputs through shift registers |
| SN75HC165 | Read data from the SOPI shift registers |
| DAC101C081 | Required for controlling the external 10-bit for setting the desired output voltage. Also, supports calibration. |
| 23LCV1024 | Controls the external SRAM IC. Provides read and write APIs for the external memory |
The device supports over the air firmware upgrade through the TI Simplelink Connect application for Mobile (https://www.bing.com/search?q=TI+Simplelink+connect&cvid=ed73fef019854968bf1f31853ef2398b&gs_lcrp=EgRlZGdlKgYIABBFGDkyBggAEEUYOTIGCAEQABhAMgYIAhAAGEAyBggDEAAYQDIGCAQQABhAMgYIBRAAGEAyBggGEAAYQNIBCDMyNjZqMGo5qAIIsAIB&FORM=ANAB01&PC=U531). Firmware upgrade over Bluetooth is only supported for mobile phones and not for laptop.
The device uses the Texas Instruments Bluetooth stack. This stack is required for Bluetooth over the air firmware upgrade and also serves as an interface between the mobile/PC and the device.
The SSCP (Simple System Control Protocol) is the transport protocol which is used by the device to interact with the host via serial interface or Bluetooth. Each interface requires a seperate SSCP responder stack instance. For more details about the SSCP protocol refer to the following Git repository: https://github.com/PatrickAJoseph/simple-system-control-protocol.
This software component defines the register callback functions, register definitions related to the application for the SSCP stack.
This software components receives bytes from the interface (serial/Bluetooth) and sends the received byets to the SSCP stack for processing.
Validates the configuration provided by the user. Also, stores and loads device settings in non-volatile storage.
Acquires samples from the high speed acquisition ADC channels and stores conversion results in the external SRAM. Users can then read back the samples stored in the SRAM.
Used to control the digital inputs and the digital outputs of the device through the shift registers as described in the hardware section. Supports setting, clearing, toggling each DO pin and reading state of DI pins.
Controls calibration of each high voltage analog input channel, current channel, resistance measurement channel, thermistor temperature measurement channel and analog output channel. Acquires samples from the analog input channels, performs filtering and then adds calibration parameters to provide processed results. Manages the multiplexing of different analog inputs to the input channels of the sigma-delta converter through the multiplexer.
The external SRAM handler is an abstraction component for the external SRAM driver. Responsible for reading and writing data application defined memory regions in the external SRAM memory via the SPI interface.
Used to handle received communication interface commands (such as transmit, receive commands) for UART, I2C and SPI protocols. Can handle multiple byte transfer for all interfaces and stores received bytes in the external SRAM for post processing.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 32 | 10k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R3, R4, R10, R16, R17, R22, R23, R42, R103, R104, R107, R108, R109, R110, R130, R131 +16 |
| 30 | 2.2k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R5, R11, R12, R18, R19, R24, R25, R50, R51, R52, R101, R102, R126, R127, R128, R129 +14 |
| 22 | 1u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C4, C10, C13, C16, C21, C26, C28, C29, C31, C33, C34, C35, C36, C37, C38, C39 +6 |
| 16 | 33k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R26, R27, R28, R29, R30, R31, R32, R33, R58, R59, R60, R61, R62, R63, R64, R65 |
| 16 | 39k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R34, R35, R36, R37, R38, R39, R40, R41, R66, R67, R68, R69, R70, R71, R72, R73 |
| 15 | 100n | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C5, C8, C11, C14, C17, C22, C24, C25, C30, C32, C42, C44, C49, C50, C51 |
| 12 | 220k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R1, R2, R7, R8, R14, R15, R20, R21, R90, R91, R124, R125 |
| 8 | 100 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R116, R117, R118, R119, R120, R121, R122, R123 |
| 8 | 10u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C1, C3, C6, C9, C12, C15, C20, C27 |
| 8 | 1k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R94, R95, R96, R97, R112, R113, R114, R115 |
| 5 | CD4051B | CD4051BM96:D16 | U2, U3, U4, U5, U10 |
| 4 | BSS138 | Package_TO_SOT_SMD:SOT-23 | Q1, Q2, Q3, Q4 |
| 3 | 22 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R98, R99, R100 |
| 2 | 0.1 | Resistor_SMD:R_2512_6332Metric_Pad1.40x3.35mm_HandSolder | R13, R200 |
| 2 | 10n | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C18, C19 |
| 2 | 3.3n | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C46, C47 |
| 2 | 47k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R92, R93 |
| 2 | HSADC in | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J10, J11 |
| 2 | LM6171D | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U9, U100 |
| 2 | TL084 | Package_SO:SOIC-14_3.9x8.7mm_P1.27mm | U11, U12 |
| 1 | 1.2k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R105 |
| 1 | 10k | Potentiometer_THT:Potentiometer_Bourns_3266Y_Vertical | RV1 |
| 1 | 220n | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C23 |
| 1 | 22u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C2 |
| 1 | 330 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R111 |
| 1 | 6.8k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R106 |
| 1 | ADS131M02IPWR | Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm | U7 |
| 1 | AMS1117-5.0 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U1 |
| 1 | AOUT | Connector_PinHeader_2.54mm:PinHeader_2x04_P2.54mm_Vertical | J8 |
| 1 | ASV-xxxMHz | Oscillator:Oscillator_SMD_Abracon_ASV-4Pin_7.0x5.1mm | X1 |
| 1 | CIN1 | Connector_Phoenix_MC_HighVoltage:PhoenixContact_MCV_1,5_2-G-5.08_1x02_P5.08mm_Vertical | J3 |
| 1 | CIN2 | Connector_Phoenix_MC_HighVoltage:PhoenixContact_MCV_1,5_2-G-5.08_1x02_P5.08mm_Vertical | J4 |
| 1 | DAC101C081CIMK | Package_TO_SOT_SMD:SOT-23-6 | U8 |
| 1 | HVIN1 | Connector_Phoenix_MC_HighVoltage:PhoenixContact_MCV_1,5_2-G-5.08_1x02_P5.08mm_Vertical | J1 |
| 1 | HVIN2 | Connector_Phoenix_MC_HighVoltage:PhoenixContact_MCV_1,5_2-G-5.08_1x02_P5.08mm_Vertical | J2 |
| 1 | LVIN+ | Connector_PinHeader_2.54mm:PinHeader_2x04_P2.54mm_Vertical | J5 |
| 1 | LVIN- | Connector_PinHeader_2.54mm:PinHeader_2x04_P2.54mm_Vertical | J6 |
| 1 | MCU I/F | Connector_PinHeader_2.54mm:PinHeader_2x10_P2.54mm_Vertical | J9 |
| 1 | RES_THERM | Connector_PinHeader_2.54mm:PinHeader_2x04_P2.54mm_Vertical | J7 |
| 1 | TLV9002IDR | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U13 |
| 1 | TLV9004IDR | Package_SO:SOIC-14_3.9x8.7mm_P1.27mm | U6 |
It measures 191.8 × 140.3 mm and has 2 copper layers, 1.6 mm thick.
214 parts, built around the TL084, DAC101C081CIMK, TLV9002IDR-MS and TLV9004IDR-MS. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the PatrickAJoseph/bluetooth-daq repository on GitHub, at the commit this page was made from: the board is hardware/analog_submodule/analog_submodule/analog_submodule.kicad_pcb and its schematic hardware/analog_submodule/analog_submodule/analog_submodule.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask PatrickAJoseph before reusing the design.

PatrickAJoseph/bluetooth-daq
A simple low-speed Bluetooth enabled DAQ

AdamC19/Electronic_Load_HW
Hardware files for my multi-channel electronic load

FulongLi/AIPE-PCB-Agent
AIPE-PCB-Agent is the PCB design automation of the AIPE power-electronics ecosystem. Python generators turn a requirement file set (specification, insulation table, components, interfaces, floorplan and routing inputs)…

TheTesla/lightbarriersync
Robust light barrier with snychronized carrierer wave receiver

balazsbencs/ardor
This is a DIY multieffects project with a Raspberry Pi and and Codec Zero and a Raspberry Pi Display 2. With Full NAM A2 support.

akshat-kumar10/MSMP0_PCB
A PCB for an MSMP0 board that features a Modbus Transceiver & Analog Front-End (AFE) for Sensors

broskifoo/resistive-sensor-signal-conditioning-pcb
PCB Design Project 1

hdsjulian/sparkles
This repo theoretically contains everything to build, assemble and run the sparkling forests light installation.
