Skip to main content

Posts

Showing posts with the label Arduino

Universal HD44780 LCD interface

YALI ( Yet Another LCD Interface ) is an open-source project to provide a universal interface to drive the popular Hitachi HD44780 LCD controller. This module supports 3.3V and 5V MCUs and hardware development platforms, including Arduino, STM32, PIC, and ESP8266. YALI hardware module. The hardware module of this project consists of a 74HCT08 CMOS AND gate and a 74HC595 8-bit serial-in, parallel-out shift register. This module uses the MP1540 step-up converter to power the LCD unit connected to the system. The module has the jumper to select 3.3V or 5V DC power input.  Bottom side of the YALI hardware module. The YALI library is developed using C and is designed to be easily integrated with any C/C++ embedded toolchain. At the initial design stages, this library was successfully tested with all Arduino development boards, NodeMCU , STM32 Blue Pill , etc. The target system must have three digital output lines with 5V or 3.3V logic levels to interface with the YALI module. As m...

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-...

Arduino superheterodyne receiver

In this project, we extend the shortwave superheterodyne receiver we developed a few years ago . Like the previous design, this receiver operates on the traditional superheterodyne principle.  In this upgrade, we enhanced the local oscillator with Si5351 clock generator module and Arduino control circuit. Compared to the old design, this new receiver uses an improved version of an intermediate frequency amplifier with 3 I.F transformers. In this new design, we divide this receiver into several blocks, which include, mixer with a detector, a local oscillator, and an I.F amplifier. The I.F amplifier builds into one PCB. The filter stage, mixer, and detector stages place in another PCB. Prototype version of 455kHz I.F amplifier. In this prototype build, the Si5351 clock generator drives using an Arduino Uno board. With the given sketch, the user can tune and switch the shortwave meter bands using a rotary encoder. The supplied sketch support clock generation from 5205kHz (tuner f...

Arduino telephone caller ID unit

CLI, also known as Caller ID and calling number delivery ( CND ), is a service offered by the telephone service provider to customers to obtain the calling party number and date/time of the call. The service activation and information format of CLI are different from telephone network operator to operator. CLI display unit - minimum test setup In this project, we will create a small Caller ID decoder using Arduino UNO and a custom-made HT9032D module. The core component of the project is the HT9032D, which can decode incoming call ID data over a telephone connection. This IC supports Bell 202 FSK and ITU-T version 2.3 CLI protocol specifications. The HT9032D module we created here base on the application example given in the IC datasheet . In addition to decoding CLI data, this module also can detect ring signal rises over the phone line. Assembled HT9032D module The Arduino UNO is used to process the decoded CLI data stream and manipulate the LCD. In an idle state, the decoder a...

NTP based digital clock panel driver

This project introduces an open-source, ATmega328 based, configurable NTP clock with a 2.3-inch, 7-segment display driver. This clock automatically obtains time from the configured NTP server and updates the date and time of the built-in RTC (real-time clock). If the connection to the NTP server is lost, the clock continues to run using its built-in RTC. Finished NTP clock driver PCB. All the parameters of this clock can configure using its USB base serial terminal. The firmware of this clock supports both static and DHCP addressing modes. Apart from that, parameters such as NTP server address, time-offset, and clock display formats can change through the menu-driven configuration terminal. This clock is designed to drive large common-anode, 7-segment displays. The prototype version is assembled using four individual segments of 7.2V, 2.3-inch, red color displays ( FJS23101BH ). To archive, the necessary high output voltage and the current, the 7-segment display output stage of this ...

μSim: PICmicro instruction simulator

μSim is a lightweight PIC™ CPU and ALU simulator. This simulator supports the PICmicro mid-range instruction set and designed to work on both PC and Arduino platforms. Compare with most of the other emulators, μSim does not provide all MCU features and peripherals. This simulator design as a minimalistic system, and based on the requirements, it can extend with additional peripherals and features. To accomplish this μSim is written with minimum system dependencies and with less complexity. To avoid resource overflows/overruns the source code is carefully organized with a few functions and data types. μSim setup for Arduino and PIC16F84 MCU. Apart from the instruction decoder, this system simulates 1024 words of flash memory, 68 bytes of SRAM, two 8 bit GPIO ports, and register map similar to PIC16F84 MCU. Some of the common MCU peripherals and features such as interrupts, timers, and UART systems are not integrated into this simulator. The main objective of this project is to prov...

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...

Verification module for PT8211 DAC

This quick post is about the verification script which I did to test the PT8211 DAC functionality. This script is designed to work with Arduino boards and, I tested with Arduino Due and Arduino Mega 2560 boards. The script is self-explanatory, and it emulates the I2S interface and communicates with the PT8211 DAC. The output waveform of PT8211 on Arduino Due board. With this script, PT8211 generate sine wave in both channels. The frequency of the waveform is dependent on the clock frequency of the Arduino board. In Due board, PT8211 generates 0.052kHz sine wave on both channels. Connections between PT8211 and Arduino. The test setup is quite straightforward. I2S and power pins of PT8211 need to connect to the Arduino board in the following order: Serial clock ( BCK ) - Pin 22 Channel selector ( WS ) - Pin 23 Data ( DIN ) - Pin 24 VCC - 5V (Mega 2560 board) 3.3V (Due board) GND - GND Left and right channels of the DAC is connected to oscilloscope or frequenc...

Generate DTMF tones only using Arduino

Dual-tone multi-frequency ( DTMF ) is a common signaling system used in telephone networks and other communication devices. It uses a mixture of two sine waves to generate tones which represent ten digits, the letters A to D , and the symbols # and * . While I’m examining other Arduino based DTMF generators I noticed most of the designs are based on Holtek HT9200 DTMF generator IC. After a couple of experiments, I figure out that Arduino itself is capable enough to generate DTMF tones without using any external IC or generator. Prototype assembly of the ladder circuit. The design which I explained in this article is based on R-2R ladder DAC. I did this design using Arduino Uno board and still this library support only for this board. But it can easily extend to other AVR MCU based Arduino boards. Schematic of the DTMF generator. The R-2R ladder is attached to the PORTD of the MCU which is Digital out 0 to 7 in Arduino Uno board. In this design, I used 100 Ω and ...

Arduino interface for TFA9842AJ Power Amplifier

TFA9842AJ is quiet old 7.5W audio power amplifier introduced by NXP . This amplifier IC is no longer produced by NXP, but still, it's available to purchase in many places, which including eBay , AliExpress , Amazon , etc. NXP TFA9842AJ Power amplifier IC. I tested a couple of TFA9842AJ based amplifiers in the last couple of years. The main reason I liked TFA9842AJ is its simple, clean design, wide operating voltage, and high-quality bass-rich audio output. Thanks to it's built-in DC volume control circuit this audio amplifier can easily interface with MCU. In this article, we provide a generic TFA9842AJ module which works with most of Arduino boards, MCUs and SOCs. Schematic of the TFA9842AJ module. As illustrated above, this system consists of LM321 operational amplifier and TFA9842AJ IC. To support both 5V and 3.3V logic inputs we introduce logical level selection jumper ( J2 ) into this design. To control the volume PWM input must apply to the J1 . In this...