Skip to main content

Posts

Showing posts with the label USB

Open source 24-channel USB high-voltage driver

When it comes to automation and control systems, there's often a need for multiple digitally controlled output terminals with high-voltage handling capabilities. Many existing modules are bulky, expensive, or require numerous additional components to function. To address this gap, I've developed a fully open-source, USB-controlled 24-channel high-voltage driver. This device provides precise, flexible control in a compact and user-friendly package. The project is open hardware, released under the CERN-OHL-W license, ensuring transparency from hardware schematics to firmware code. The driver module communicates via USB using a simple virtual COM port, eliminating the need for special drivers and complex setups. Prototype version of the module. At the core of the system are three TPIC6B595 shift registers, each supplying eight open-drain outputs that can handle up to 50V and sink currents of up to 150mA per channel. These registers are daisy-chained to achieve a total of 24 ...

Programmable Music Module

Simtelic Music Module is a user-programmable module that uses RTTTL data to store and play melodies. EL0003 - Programmable music module. RTTTL , which stands for Ring Tone Text Transfer Language , was created to provide a simple, text-based format for sharing ringtones on early mobile phones. Developed by Nokia , it quickly became popular due to its compact size and compatibility with text messaging services. This format allowed users to easily exchange custom melodies without needing specialized software or data connections. RTTTL is a human-readable data format where each ringtone is represented as a sequence of notes, durations, and optional settings. According to Simtelic naming conventions, this module is identified as EL0003 and is available for purchase online. Top view of the EL0003 module. This module is built around a 32-bit MCU, a 2Kbit EEPROM, and a CH340 USB bus conversion chip. It is compatible with the latest Windows and Linux-based PCs. The module is user-fr...

5.1 channel analog audio processor

In this project, we developed a 5.1-channel analog audio processor using PT2322 IC. PT2322 is an inexpensive analog audio processor introduced by Princeton Technology Corporation . It contains 6-channel individual channel attenuators, a 3-way tone control system for front-end speakers, and a 3D audio simulation system.  Assembled 5.1-channel audio processing board. In this design, we combine PT2322 with Arduino Nano and interface it with PC/embedded computing boards through a USB port. Native GTK UI application provides to control all functions of the PT2322 IC. The Arduino Nano can directly plugin to the PT2322 module. There are three push buttons on the panel itself to control the volume and mute the audio. To reduce the cost and minimize the PCB size, we use both SMD and through-hole-type components in this PCB. The dimension of the PCB is 59mm × 60mm. The PCB of this module can directly order from the PCBWay project page . Using the PCBWay service, you can order high-...

Virtual electronic finderscope for the Stellarium

StarPointer is a virtual electronic finderscope for astronomical telescopes. This device works with Stellarium and helps the observer identify objects in the sky.  Prototype version of the StarPointer sensor kit. This unit can be attached to the telescope without modifications and connects with the computer through the USB port. The StarPointer uses a few onboard sensors to determine its angle and position. After obtaining that information, the unit calculates the RA (right ascension ) and DEC (declination) coordinates of the telescope and transfers those details to the Stellarium. The StarPointer builds around the STM32F103C8 microcontroller, ADXL345 3-axis accelerometer , and HMC5883L 3-axis magnetometer . This unit communicates with the PC using the inbuilt USB peripheral of the STM32F103C8 microcontroller. The firmware of the StarPointer is developed using the LibOpenCM3 library and built using GNU ARM Embedded Toolchain . This unit can attach to any astronomical telescope o...

TDA7052A - DIY miniature amplifier

TDA7052A is an audio power amplifier designed for use in low voltage battery-powered equipment. Compare with the popular LM386, TDA7052A is not so popular among DIY electronic enthusiasts.  Final view of the finished amplifier with speaker.   Using the Bridge Tied Load principal, this IC delivers an output power of 1.2W into an 8Ω load with, 6V power supply.   The most striking feature of this amplifier is the minimum external component count. This IC only needs two external capacitors to build a functional audio amplifier.   The gain of the amplifier is fixed internally at 40dB. The amplifier got, short-circuit protection, requires no external heatsinks, and not producing any switch on/off click sound(s).    Although this is an old amplifier IC, it is still available to purchase in many local and online stores. Compare with the other low-power AF power amplifier ICs, TDA7052 is a little expensive in the local market. Although it is costly, I use this IC ...

I2C master mode emulator

I 2 C is a popular data bus to communicate with inter-board peripherals. Today I 2 C based chips and modules are widely available in many categories, including data storage, ADC/DAC, I/O Expanders, sensors, etc. The I 2 C master mode emulator allows communication with I 2 C devices by sending or receiving data to/from the I 2 C bus. To issue the I 2 C commands, the emulator should connect to a PC over the USB port. After initializing the emulator, the PC and directly control the I 2 C slave chip/module. Finished prototype of the I 2 C Terminal This emulator is base on ATmega16A MCU. The USB communication channel is develop using the V-USB firmware. Initially, we develop this emulator to work with 5V I 2 C devices, but later it has extended to work with 3.3V I 2 C devices. The 3.3V design is still under testing, and at the prototyping stage, we found a couple of issues in 3.3V mode.  In 3.3V mode, the required output level is available only if the emulator is in a "ready" sta...

AVR High Voltage Programmer 2

AVR-HV2 is Arduino based high voltage parallel programmer for AVR microcontrollers. This programmer can read, write, and erase both flash memory and EEPROM. Also, this can use to set fuse bits of AVR MCUs. Compare with the previous version of AVR HVPP , this design is based on commonly available components with a simple schematic. In this release driver software is also rewritten to provide cross-platform support. AVR-HV2 shield with Arduino Mega 2560 board. AVR-HV2 programmer is designed as an Arduino Mega shield. Dimensions of the AVR-HV2 are similar to the Arduino Mega board. It can be powered using a power source connected to the Arduino Mega board. The suggested power source for this programmer is a 12V 1A DC power adapter. The control software of this programmer is design to work on both Windows and Linux operating systems. It supports the import and export of memory data in the Intel hex file format. The communication link between the programmer and the control s...

4 Port high power USB hub

In the last couple of years, I tried several powered USB hubs to drive some development boards and USB peripherals. Most of the USB hubs which we can find in the local market are unreliable or not designed to drive more than 500mA of a load. After having a few bad experiences with powered USB hubs, I decided to build a USB hub by myself. I specifically design this hub to drive USB powered development boards and experimental peripherals. The core element of this USB hub is the " FE1.1s " USB 2.0 hub controller. " FE1.1s " is a low cost, 4-port, high-speed USB hub controller, and this chip can easily order by eBay or AliExpress . A prototype version of the USB hub. Apart from FE1.1s features, this USB hub has the following additional features: Switches to on/off and reset individual USB ports. Capability to provide a maximum of 3A of current from each USB port. Power using 9V to 15V DC voltage source. This USB hub uses PIC16F630 MCU and four units...

USB Morse Keyer

USB Morse Keyer is a microcontroller-based auto keyer project with following features: USB / straight key / iambic key inputs. Support for both standalone and USB operating modes. 64-character USB typeahead buffer and 6-character Morse key typeahead buffer. Support 5, 10, 15 WPM. 6-page message memory. 1W Audio output. Audio and PTT output interfaces. 32 character display  Final view of the USB auto keyer. The USB interface of this unit is designed to work with most of the operating systems. It emulates a virtual serial terminal to transfer keystrokes to the keyer. In most of the operating systems, this interface works without installing any additional device drivers. To submit keystrokes user can use any serial terminal software such as PuTTY , Hyper Terminal , Minicom , etc. This keyer is designed to work with 7V to 16V DC input voltage. The most recommended working voltage is 9V. The bottom side of the USB auto keyer. To reduce the dimension of the P...

Simple NTP clock using USB display module

Simple NTP clock is a maintenance-free clock application developed to work on single-board computers like Raspberry Pi , Orange Pi , etc. This clock application uses the Simple Network Time Protocol (SNTP) to get the time and display it on seven segment display which I designed . This application is designed to work on most of the Linux based systems and had minimum dependencies with system libraries and peripherals. I developed this application to work with Allwinner H2 Plus based Orange Pi Zero board, but this can compile for other platforms without doing any modifications on the source code. NTP clock on Orange Pi Zero. To compile this application issue the following commands: make clean make Parameters related to this application are available at config.json file. This file can be used to specify the NTP server, time zone, and display module port. The source code of this project is available at github.com .

USB seven segment display module

This project is about an open source, USB based, 10 digit seven segment display unit. This unit is specifically designed to work with POS systems and banking applications. Initially, this system is developed to work with PC based systems, and later it was modified to work with other platforms and applications. Final view of the USB seven segment display module To simplify the communication interface this unit is designed to emulate a COM port in the host terminal. Because of this feature, this module can work with many systems without having any additional device driver(s). To extend the scope of this unit, it also comes with an option to switch between " direct mode " and " API mode ". In " direct mode " application or host device can directly send characters to the display unit over the emulated serial communication channel. The " API mode " is intended to provide more extensive features with this unit. All the " API mode ...

BMP180 based USB atmospheric pressure monitor

We initially developed this USB atmospheric pressure monitor to study some operating characteristics of Bosch BMP180 sensor . BMP180 is a low-cost sensor for measuring barometric pressure and temperature. According to the datasheet this sensor can use to measure pressure ranging between 300hPa to 1100hPa . This sensor is introduced a couple of years back but still, it is popular due to lower cost and simplicity of its interface. BMP180 based sensor module We did this unit to test the BMP180 sensor more accurately and to study its behaviors. This unit is based on PIC18F2550 microcontroller and the main reason to select this MCU is because of its built-in USB 2.0 interface. BMP180 sensor monitor application To display sensor calibration data and it’s readings we did small windows application. This application display and plot temperature and pressure readings captured from the BMP180 sensor. This unit is programmed to work as a USB HID device and no special device drive...

HC-06 Bluetooth module programmer

HC-06 is a quite popular slave mode Bluetooth module designed for wireless serial communication. This module can pair with PC, mobile phone or with any master mode Bluetooth peripheral. HC-06 Bluetooth module This simple .net framework based application can use to modify the following parameters of the HC-06 Bluetooth module: Bluetooth display name Pair password BAUD rate Parity check type HC-06 Bluetooth module programmer This application communicates with the HC-06 module through COM port. To emulate the COM port using any Windows compatible USB to Serial converter . While at the testing we try the following modules with this application: FTDI FT232 USB to Serial module CH340 USB to Serial module CP2102 USB to Serial module This application is developed using .net framework 4.5 and Visual Studio 2012. All source code and compiled binaries are available to download at https://github.com/dilshan/hc6-config . This application and its source code are distrib...

Enable WebRTC on QtWebEngine for Raspberry Pi 3

WebRTC is a web technology to enable peer to peer communication in real-time. It mainly uses to create video conferencing and chat applications using web browsers. In this post, we describe how to enable this technology in QtWebEngine on Raspberry Pi 3 platform. QtWebEngine is an embedded browser component which comes with the Qt framework . This component is based on Google Chromium browser and it supports most of the Chromium features including WebRTC. In PC, WebRTC applications run smoothly on QtWebEngine component. But in Raspberry Pi platform situation is different and none of the WebRTC application is work with the QtWebEngine. The only thing which we can see is a black box in an HTML5 video tag area. At the time of writing this problem exists in Qt version 5.6, 5.7 and 5.8.

CoCA Emerge + Tech - Musical plants project

CoCA "Emerge + Tech" - Musical plants is an electronics, software and plants base exhibit we developed for Cinnamon Colomboscope 2016 exhibition. This installation will feature a touch-sensitive sensor that will generate a soothing sound from each plant. By interacting with individual plants, the audience can create musical compositions. The sensor unit of this project consists of 14 high sensitive, configurable level detectors and USB interface. In this sensor unit, we use Samsung's KA2284 as an amplifier, level detector, and PIC18F4550 8-bit MCU as data multiplexer and USB I/O controller. PC817 optoisolators are used to interface between analog front-end and digital data processor. In this design, both analog and digital circuits are physically and electronically isolated to minimize the noises and interferences. In this design, we use KA2284 because it is commonly available in the local market (in Sri Lanka) and costs less than 0.1 USD. To reduce the interfer...

USB curve tracer for NPN transistors

Curve tracer is an electronic test instrument to analyze the characteristics of transistors and other discrete semiconductors. In this post we construct USB base curve tracer to analyze properties of NPN transistors. This curve tracer is build around Microchip's PIC18F4550 MCU and it use simple Windows based GUI application to plot captured data of a transistor. In this design PIC18F4550 MCU is used to establish USB connectivity, perform voltage readings and control current/voltage flow into the test subject. To minimize the cost and to make it simple, we use R2R ladder circuit to generate discrete collector-emitter voltage levels for the transistor on test. In each scan session collector-emitter voltage level get increase from 0V to 7.5V in 256 steps. In this design, "tracer" scans the transistor for 7 base current levels which are in between 7µA to 60µA. In viewer application collector-emitter voltage levels are plotted on x-axis and collector current is plotted o...

Automatic monitor brightness controller

This is an automatic "monitor brightness controller" based on environmental light conditions. This system uses a USB port base sensor unit to measure the light level and control monitor brightness accordingly. We design this system to reduce eye stress by matching the monitor brightness with environmental lighting. The sensor unit of this system is built around PIC18F2550 8-bit microcontroller. To measure the light level we use LDR with MCU's inbuilt ADC. The control software of this unit is design to work with Microsoft Windows operating systems and it uses Windows API's DDC/CI related functions to control the monitors/display devices. The firmware of USB sensor use 50-point boxcar filter to get the average readout from the ADC and that value is passed to PC over USB HID interface. Thanks to this HID interface this system may not need any special device driver, and it can use in any compatible PC with a minimum amount of configuration changes. A prototype v...

ZFM-20 fingerprint capture library

ZFM-20 is an optical fingerprint sensor module series developed by Zhiantec . Resolution of these fingerprint modules are 256×288 pixels and depending on the module it can be accessible over UART or USB interfaces. Other than capturing fingerprints this module has inbuilt DSP to process and verify captured fingerprints. This ZFM-20 fingerprint library is developed to capture and retrieve fingerprint images from the above sensor module. The main purpose of this library is to use ZFM-20 sensor with PC as a low-cost fingerprint capture unit and because of that, in-module fingerprint processing and verification functions are not implemented in this library. ZFM-20 fingerprint sensor test setup with CH340G serial to USB converter. ZFM20-LIB is x86 native shared library and it's implemented using Lazarus / FPC . This library is developed to use with most of the programming languages which including C , C++ , Delphi , FPC , Microsoft .net framework based languages, etc. Objec...

USB to 3.3V - 5V serial TTL adapter

This post is about experimental USB to 3.3V/5V serial TTL adapter which we build recently to work with both 5V and 3.3V MCUs. This project is mainly based on CH340G seral-USB chip. CH340G is cheap and commonly available serial-USB convert IC and now it's commonly found on Chinese versions of Arduino development boards. FTDI's FT232 is another possible alternative for this kind of project, but we drop it because of its famous device driver base chip locking issues . Also, compare with FT232, CH340G is cheap, commonly available and simple to construct with a minimum number of components. In this module, we incorporate a 5V/3.3V voltage selector switch to avoid interface matching issues due to different voltage levels of mainboard/MCU and serial TTL adapter. A prototype version of CH340 USB to serial adapter. In prototyping stages, we use CH340G with breadboard by using SO-16 to DIP16 adapter and supplied PCB is also based on using the same adapter. Except for CH340G ...

FlashProg - USB serial flash memory programmer

FlashProg is USB base flash memory programmer to work with 3.3V serial flash memory devices. This programmer is specifically design to read, program and configure 25x series, serial flash memory devices which are commonly used to store BIOS in PC mainboards. Originally we design this project to read and program BIOS of Foxconn G31MXP mainboard. Our version of G31MXP contains Macronix MX25L8005 8M-Bit serial flash memory and we use this programmer to load some of our custom BIOS to this serial memory. MX25L8005 SPI flash memory on Foxconn G31MXP mainboard FlashProg programmer is built around Atmel ATmega8A microcontroller with standard through-hole type components and it support for both 32 bit and 64 bit Windows and Linux operating systems. All the compiled binaries for both the platforms are available at project home page at flashprog.sourceforge.net . This programmer use very few components and it can be easily constructed on breadboard or on PCB. Both EAGLE and PDF...