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…

ESP32-A2DP Arduino Library – New Release

Today I published the new 1.2.0 Release of my ESP32-A2DP Library. It contains the following improvements: Metadata support with the help of a callback function – Thanks to JohnyMielony AVRC command support thanks to PeterPark Improved init_bluetooth checks, in case bluedroid was already initialized elsewhere – Thanks to Antonis Katzourakis No auto reconnect after clean disconnect – Thanks to Bajczi Levente The data is rescaled to when written to the internal DAC – Thanks to Read more…

jupyterlab-viewer-3d for Jupyterlab 3.x Kernel Released

About a year ago I was publishing a Jupyterlab plugin to view 3d files. That’s a quite useful functionality for my Openscad Kernel. Quite some time ago however it stopped from working because it was not compatible with the latest versions of the Jupyterlab kernel any more. So I thought it is about time to upgrade the plugin to support the latest 3.x kernel and add it back to my docker deployment. Today I managed Read more…

Installing “pico-arduino” with CMake

I finally could tick off the final to-do for my Pico-Arduino project: It is not necessary any more to install the project in advance. The project can now be treated as library and you can just pull it automatically from github with the help e.g. of a cmake fetchcontent. Here is a simple example: cmake_minimum_required(VERSION 3.19.2) set(CMAKE_C_STANDARD 11) set(CMAKE_CXX_STANDARD 17) include(FetchContent) FetchContent_Declare( arduino GIT_REPOSITORY https://github.com/pschatzmann/pico-arduino.git GIT_TAG main) FetchContent_MakeAvailable(arduino) project(use_as_library) add_executable(use_as_library use_as_library.cpp) # Pull in our Read more…

Machine Learning on the Rasperry Pico

Microcontrollers are not suitable to develop and train machine learning models. The resources are just not sufficient for this, but it is possible to use and deploy pre-trained models! I have added a simplified Tensorflow hallo world example where the model has been trained on the sin function, to my Pico-Arduino framework. The solution consists of only 3 implementation files: tf_hallo_world.cpp contains the Arduino sketch tf_hallo_world_model.h contains the (binary) trained model. CMakeLists.txt is used to Read more…