Arduino and Matlab scope project

Oscilloscope is quite a universal instrument which I would recommend to invest first. Normal bench scope does the job pretty well. I am not a big fan of DIY scopes that are built of microcontroller and LCD or interfaced to PC via the serial interface. You will never get decent sampling and functionality with low-end parts. But in other hand, building such scope can be fun and be a good choice for student projects. prem_ranjan shares his Arduino-based scope project, where he outputs waveform to MATLAB plots. The investment into this project is minimal. O course you could capture signal directly to Arduino analog pin, but op-amp based signal conditioning could make life easier. In the end, here are few features of this scope:

Continue reading

Who May Seek For Spy Earpiece?

A spy earpiece is a secret gadget that came into our lives not so long ago. Still, it got trendy among various types of people because of its universal character and the ability to be used in various situations. Right now, we would like to name all types of people who may want to implement a spy earpiece in a certain way. Executives Get Immediate Help The first group of people is businesspersons. They have to talk a lot, making speeches and presentations in front of their partners, colleagues, and even clients. Every new day can bring a new speech or presentation, and it can appear too hard to remember everything, and every detail cannot be kept in mind. In this case, a spy earpiece is an excellent way to get immediate help, being prompted by the forgotten word and figure. The invisible character of the device makes it irreplaceable.

Continue reading

Multichannel ADC using DMA on STM32

Previously we have tried to do a single conversion of one ADC channel. We were waiting for the ADC result in a loop, which isn’t an effective way of using processor resources. It is better to trigger a conversion and wait for the conversion to complete the interrupt. This way, a processor can do other tasks rather than wait for ADC conversion to complete. This time we will go through another example to set up more than one channel and read ADC values using interrupt service routine. How does multichannel ADC conversion works? If we need to convert several channels continuously, we need to set up Sequence registers (ADC_SQRx). There are three sequence registers: ADC_SQR1, ADC_SQR2, and ADC_SQR3 where we can set up a maximum of 16 channels in any order. Conversion sequence starts with SQ1[4:0] settings in ADC_SQR3 register. Bits [4:0] hold the number of ADC channels.

Continue reading

Use fixed integer types to enhance portability

If you have programmed anything with C, you should be familiar with common data types like char, unsigned char, int, unsigned int, long int, long long int, etc. It is tough to tell by the looks of the type how many bytes this variable takes on memory and how it looks in a different system. For instance, in 8-bit AVR-GCC compiler, int is a 16-bit type, while in ARM-GCC, int is 32-bit. So int size is dependent on platform, compiler, and runtime libraries. And switching between systems may trick you if you are not careful enough. You can always check the size of the variable by using sizeof() function. What to do if you need your code to be portable between different systems. Some great libraries could work on any system, including 8-bit, 16-bit, 32-bit, or 64-bit. To avoid this annoying problem, the ISO C99 standard introduced portable data types that are defined in stdint.h header file. If you open this header file of your default compiler tool-set you will find how things are organized. First of all, it checks…

Continue reading

Resetting Arduino via serial line

Usually, Arduino boards are reset by using additional DTR line of the serial interface. This becomes a problem when USB-UART adapter doesn’t support DDR line. And you probably read many cases where one or another particular cable won’t work for programming but can be used for simple serial data transfers. Ralph thought that there should be another solution that would allow using any serial cable for programming. He thought that TXD and RXD lines are always available since they are used for data receive and transmission. So why not to use one of those to reset the microcontroller. With three additional discrete, he created a simple circuit that would stand between RXD data line and RST pin. This is simply an RC circuit that would discharge cap during some time. So when data line works in regular operation – RSTin isn’t affected due to slow cap discharge. But when the RST signal is held down for a longer time – the cap is discharged, and then the RST signal is sent. Since he’s done modifications, he also had to make…

Continue reading

Half duplex UART from single AVR pin

Smaller microcontrollers like Attiny84 microcontrollers don’t have UART interfaces, and you may not need them in many cases. But if you want a USART option, you will need to use software USART library or write your own routines. You can find many great software USART libraries for that purpose. As a rule, you will have to use two pins to establish communication. But if you are tight on I/Os, you can cheat a little and make it work from a single pin. Ralph has been experimenting with the simple but intelligent circuit, which allows performing half duplex UART communications with other systems. The whole trick lies in a small schematic made of diode, transistor and resistor. Diode is only for making one way TX signal path from MCU to other device. The resistor is only for limiting base current. All is left a transistor which works as a key. We need to remember that when the serial line is inactive, it stays in the high state. So when microcontroller transmits data, TX on the right keeps transistor open. Thus if…

Continue reading