Back to Basics – Sampling Audio with the ESP32

In this Blog I am giving a little bit of background on how the sampling of analog signals has been implemented in my Arduino audo-tools library. My initial approach was based on the Blog from Ivan Voras using timers and interrupts. But there is a much better way by using the extended ESP32 I2S functionality: You can use this to sample an analog signal (e.g. from a microphone) at very high speeds and I finally Read more…

Stream MP3 Files to A2DP Bluetooth using the ESP8266 Audio Library

The processing of files with the help of the ESP8266Audio is a little bit more involved. However it allows to process different audio file types from different sources. Please consult the project for further details. Streaming of MP3 Files on a SD card The Sketch Here is the Arduino Sketch that you can use with an I2S audio source: #include <SPI.h> #include <SD.h> #include “AudioFileSourceSD.h” #include “AudioGeneratorMP3.h” #include “AudioOutputWithCallback.h” #include “BluetoothA2DPSource.h” #include “AudioTools.h” using namespace Read more…

Bluetooth A2DP – Streaming of Files on a SD card

In my Arduino ESP32-A2DP library I am providing some very simple examples that show how to transform the ESP32 into a A2DP source and transmit sound to a Bluetooth Sink (e.g. some Bluetooth Speakers). I had quite a few questions on how to do this with files, microphones and I2S as input. So I started a small “glue” project which provides some additional audio tools. I plan to provide plenty of additional examples and some Read more…

Bluetooth A2DP – Streaming from an Digital I2S Microphone

In my Arduino ESP32-A2DP library I am providing some very simple examples that show how to transform the ESP32 into a A2DP source and transmit sound to a Bluetooth Sink (e.g. some Bluetooth Speakers). I had quite a few questions on how to do this with files, microphones and I2S as input. So I started a small “glue” project which provides some additional audio tools. I plan to provide plenty of additional examples and some Read more…

Bluetooth A2DP – Streaming from an Analog Microphone

In my Arduino ESP32-A2DP library I am providing some very simple examples that show how to transform the ESP32 into a A2DP source and transmit sound to a Bluetooth Sink (e.g. some Bluetooth Speakers). I had quite some questions on how to do this with files, microphones and I2S as input. So I started a small sister project which provides some additional sound tools. I plan to provide plenty of additional examples for some more Read more…

An Arduino Logic Analyzer for the Raspberry Pico using the PIO

Together with Pulseview, the Raspberry Pico can be turned into a Logic Analyzer. I demonstrated how to build a simple SUMP logic analyzer with my Arduino logic-analyzer library in my last blogs. In this Blog, I demonstrate how to use the PIO which allows much higher capturing speeds. In theory you we might capture up to 125 MHz. This is well above the 2.5 MHz which is achievable with a regular CPU based approach. Arduino Read more…

The Rasperry Pico PIO for my Logical Analzyer: Some Tests

I have a first DRAFT version for the Pico PIO implementation of the PicoCapturePIO capturing class for my Arduino Logic Analyzer Library ready and started to run some tests. The Test Sketch is part of the project and can be found in the examples forlder. I was using a PWM signal with a duty cycle of 60% in order to be able verify the measuring. Here are my results: Capturing in a loop with micros() Read more…

A First Arduino Logic Analyzer for the Raspberry Pico

Together with Pulseview, the Raspberry Pico can be turned into a Logic Analyzer. I demonstrated how to build a simple SUMP logic analyzer with my Arduino logic-analyzer library in my last blog. But we can do better: Here is an first version of an improved Pico implementation which uses both cores: #include “Arduino.h” #include “logic_analyzer.h” #include “pico/multicore.h” using namespace logic_analyzer; int pinStart=START_PIN; int numberOfPins=PIN_COUNT; LogicAnalyzer logicAnalyzer; Capture capture(MAX_FREQ, MAX_FREQ_THRESHOLD); // when the status is changed Read more…

An Arduino Logic Analyzer for the ESP32

Together with Pulseview, the ESP32 can be turned into a Logic Analyzer. I demonstrated how to build a simple SUMP logic analyzer with [my ‘logic-analyzer’ library] in my last blog, (https://github.com/pschatzmann/logic-analyzer). Of cause the described sketch is also working for the ESP32. But we can do better! Here is an improved implementation which uses both cores: #include “Arduino.h” #include “logic_analyzer.h” #include “esp_int_wdt.h” #ifndef LED_BUILTIN #define LED_BUILTIN 13 // pin number is specific to your esp32 Read more…

A flexible Arduino SUMP Logic Analyzer Library

Recently, when I started to research the topic of Logic Analyzers, I found the incredible PulseView Project. However, I did not want to invest in additional hardware but just use one of my favorite microprocessors (ESP32, Raspberry Pico) as capturing device. There are quite a few logic analyzer projects with a similar goal: gillham/logic_analyzer gamblor21/rp2040-logic-analyzer EUA/ESP32_LogicAnalyzer Ebiroll/esp32_sigrok However all of them are geared for one specific architecture and therefore are not portable. I wanted to Read more…