The story behind this project
In the past decade, we have utilized our superpowers to address various issues all around the world, whether it be creating tools to assist people with disabilities, traversing the depths of the ocean with exploration robots, spanning across rivers and swamps with environmental sensor networks, or harvesting energy from every corner of the Earth, sometimes connecting with satellites in distant skies. But now is the time for us to turn around and craft tools for ourselves. And good tools are the foundation for creating great projects.
During my student days, my backpack always contained a bunch of tools: a multimeter, a programmer, a USB to UART converter, a power adapter, and a variety of modules, accompanied by a prototype board for continuous programming and research, whether I was in a dormitory, on the campus, or somewhere in a lab. I often envied my IT friends who had nothing but a sleek and simple laptop. Even after graduation, the situation didn't change much; I still carried a small toolbox with items like a logic analyzer, a JLink programmer, adapters, etc. I believe that many people all over the world face similar challenges as I did, and it's time for me to solve this problem.
HACKADAY project goals
After several months of iterations, the project's vision has materialized into what you see in the project's images. My goal is to create a compact device that can fit into a pocket and operate independently without the need for a laptop. In real-world scenarios, such as working with robot circuits, car systems, or indoor sensor networks, it's not always feasible to carry a laptop around. The device's small size and standalone functionality will make it convenient and everyone's favorite pocket companion. For instance, I can read and explore the Canbus network of a hotel even while traveling!
When returning to the laptop, it should seamlessly integrate with the laptop to fully leverage its inherent capabilities. In the past, we've had "multi-functional" devices like Bus Pirate, JTAGulator, FT2232, etc. However, these devices always required accompanying schematics and pinout diagrams, which proved to be quite inconvenient. I don't want to spend additional time browsing the web and searching for this information before plugging the dupont cables into the device. That's why with Felini, the pin map for connecting the wires will appear directly on the screen, making the process much smoother and hassle-free.
Compared to the initial ideas, Felini has been simplified to be more budget-friendly. The Felini project aims not only at engineers but also at being a user-friendly tool for students. Some common features like DAPLink, Logic analyzer, signal generator, USB to UART/I2C, which do not require external hardware, in the future, when the USB control command stack is completed, can be fully deployed on any affordable esp32 kit available on the market. For the full version of Felini, everything is open-source, from PCB fabrication, SMT component assembly, to enclosure fabrication, all can be done at JLCPCB. Therefore, anyone passionate about electronics can create their own version.
This project is also 100% open source, from a different perspective, as it can directly load firmware through the USB port without requiring any additional hardware, FELINI can be used as a development kit, compatible with both esp-idf and Arduino, allowing students to learn and innovate on an open-source platform. With some minor customizations, such as removing the 2.54mm connector, FELINI can become a wearable MHI or a smartwatch with accelerometers and a display. It can also serve as a health monitoring device for the elderly or a handheld terminal device. It all depends on your abilities. With a cost of only around $50, FELINI is likely a suitable device for many people.
Specs & features
So what can Felini do? Felini was created after three trial versions, striking a balance between cost and complexity, while possessing the following technical specifications and features.
Specs:
Operating voltage | 3.3 - 21V |
Battery | 200mAh |
USB | USB2.0, PD2.0, 3.0, PPS |
Power output | 3.3 - 21V (using PPS) |
Button | Power button, Encoder button |
Operating System | FreeRTOS |
Display | LCD TFT 240*280 Capacitive Touch |
CPU | ESP32S3 240Mz dual-core |
Memory | 8MB PSRAM, 32MB Flash QSPI |
Connectivity | BLE/ WIFI 2.4ghz |
CAN 2.0 | |
RS485 | |
I2C, SPI, UART | |
JTAG, PWM, 1Wire | |
USB 2.0 |
Features:
- Intuitive touch display screen
- Flexible pinout interface
- Power Delivery capability and USB communication via Type C port
- Touchscreen with value fine-tuning through an encoder
- Wide power source compatibility ranging from 3-21V, with automatic seamless switching between pin and USB power
- Standalone operation without the need for a laptop
- Independent 3.3V power supply without requiring a power cable
- The visual interface of pinout mapping for each application
- Audible alerts through a buzzer
- Wireless connectivity via BLE/Wifi.
Detailed design goals and applications
In terms of aspirations, I want to maximize the hardware capabilities of Felini for embedded applications and achieve performance equivalent to the devices Felini replaces. This will cater to most of my testing needs, and I hope it does the same for you. Here's what I've come up with as a preliminary set of design objectives.
These objectives are fully met by the current prototype:
- DAP Link supports debugging for most ARM core microcontroller series.
- Standard USB UART/RS485 bridge.
- Quick address scanning tool for I2C bus, version checking.
- Servo control with angle adjustment through an encoder for servo testing purposes.
- Control of WS2812, RGB, 1903, 9803, and 6803 LED strips.
- Observation and measurement of analog voltage within the range of 0-3300V at GPIO pins.
- USB to CAN 2.0
- Frequency pulse counting.
- Time measurement for delay, such as the interval between two key presses or measuring code execution time.
- Voltage measurement within the 0-21V range through XT30-UM when the power supply feature is not activated.
- Power supply/charging via the XT30U-M port.
- Insulated casing.
- Use as a development kit for students introducing embedded programming.
The following objectives will be developed in the future:
- Develop a command-line interface to control Felini through a laptop, BLE, or Wifi.
- Applications will function as real apps in the form of executable files, allowing you to install or update them via USB or Bluetooth.
The hardware and 3D models, as well as the device's casing, can be downloaded here.
The software and instructions will be updated later. Time is quite tight; I want to focus on completing the features first. Afterward, I will clean up and annotate the code snippets before sharing them with the community.