Embedded - Reddit – Telegram
Embedded - Reddit
17 subscribers
1.23K photos
106 videos
1 file
20K links
News and discussion for the Embedded world

Subreddit: https://www.reddit.com/r/embedded
Powered by : @r_channels & @reddit2telegram
Download Telegram
Can a basic project go a long way for resume?

I just received a ton of breadboards, components, wires, and the like. I been wanting to dive into embedded systems for a while now. I do graphics development in c++ making game engines and what not, so I am familiar with low level programming. Today I have been wiring up simple gates and just playing around with the breadboard.

Tomorrow, I plan on hooking up my STM Nucleo-F756ZG and just making a simple project. I am thinking something like a little state machine that has an idle, active, and error state that lights different leds or makes a single one blink differently or something. I'm gonna go all out documenting it, because I tend to document all my projects very well (to my standards at least).

Anyways, I guess I will get to the point. I applied to a very entry level software engineer role that had a strong focus on C but listed other languages like C++, Java, JavaScript, Python, SQL, HTML/CSS, and a couple others. The job is for the defense industry, so I am assuming they would highly prefer C or C++ knowledge (which I have). Like I said, on my resume I currently have a couple games and a fairly large engine project I am actively working on (that is in a usable state). So, would adding this small project I plan on doing be a solid "hey, I'm actively wanting to learn embedded" project? I assume so, but I am not sure if it is too simple or not.

Regardless, I have been having loads of fun building little circuits so far the last two days. It is getting kind of late tonight, so not going to crack into the STM board tonight, but definitely going to dive in tomorrow.

Edit: Oh also, side note, all of my projects I have done are in C++11 - C++23, so this will be my first one in C as well, which could be another bonus. Even though technically the project would be simple enough that C and C++ would pretty much be one in the same if that makes sense.

https://redd.it/1pwovkc
@r_embedded
I got tired of 60 second rebuild cycles on ESP32-P4 so I built this

https://preview.redd.it/3woai2njop9g1.jpg?width=5632&format=pjpg&auto=webp&s=61b0e4d742339b475a22774c8287aee82d6e637d

So this has been bugging me for months. I'm doing a lot of work with the ESP32-P4 (the new RISC-V one), mostly ML stuff and DSP algorithms, and the iteration cycle was killing me.

You know the drill - change one line, wait 45 seconds for idf.py build, flash, monitor, test, realize you forgot something, repeat. I was spending more time waiting than actually coding.

Anyway, I ended up building what I'm calling P4-JIT. Basically it lets you compile C/C++ code on your PC and deploy it to the ESP32 in like 2-3 seconds without touching the firmware. No rebuilding, no flashing, just compile and go.

The way it works is kinda interesting - there's a small firmware that stays on the device (flash it once and forget about it). Then on the host side, you write your algorithm in C or even assembly, the toolchain compiles it to RISC-V, allocates memory on the device, uploads the binary over USB, syncs the cache, and calls it. From Python.

I've been using it for testing quantized neural networks and it's been honestly game-changing. Like I can iterate on an INT8 conv kernel in the time it used to take just to link.

The really useful part for me was testing the ESP32-P4's custom SIMD instructions (the PIE extensions). You can't simulate those in QEMU or Spike because they're not standard RISC-V, so you HAVE to test on real hardware. With P4-JIT I can tweak the assembly, redeploy in 2 seconds, and see results immediately.

Made a video showing the full workflow: https://youtu.be/s5sUW7lRV1E

Repo: https://github.com/BoumedineBillal/esp32-p4-jit

Not trying to spam or anything, just thought some of you might find it useful if you're doing similar work. Happy to answer questions about how it works.

Oh and it's MIT licensed so do whatever you want with it.

https://redd.it/1pwt8lk
@r_embedded
Some for-loops are broken (Run only once) STM32-F103C6T6 - CubeIDE

Hi everyone! I've been learning how to use STM32 MCUs recently, and it's been going smoothly until now. I have some nested for loops, and the outer loops only run the code inside once, as opposed to looping. I'm super confused as to why this is happening, given that some other loops with the same syntax seem to work perfectly fine.

I've tried while loops in the same place, yet the same problem is encountered. It might help to know that the variables initialised by the broken for loops (and before the broken while loop) did not show up in the debugger, while the working loops had their variables appear.

I've tried to format the code as neatly as I can while retaining the whole program (as I suspect it could have something to do with some of the registers being manipulated?) I've commented all points of interest along with labels for which loops are working and which are broken. (Note, the debugger had some weird moments as I've noted in the comments. If you have any ideas about how to fix that, I'd love to hear!)

Here is the link to the program (Scroll to the only while(1) for the fun part!)

https://pastebin.com/K4TMW4KW

Merry (Late) Christmas and happy New Year!

Thank you!

https://redd.it/1pwtup4
@r_embedded
eMMC voltages question

Hi, noob question but I am trying to design my first board with eMMC as the boot memory for an SoC. The designs I saw on the internet used mostly 3.3V for both of the power supply rails for the eMMC and also for the logic. In my case for reasons my SoC IO bank will run on 1.8V, and I just wanted to confirm, whether VCC=3.3V and VCCQ=1.8V would work on startup.

Feel free to roast me for using gpt but it kept saying that this requires some negotiation commands ("voltage switch", "CMD11" ??) for this voltage configuration to work. This is kind of the reason for my concern.

I looked on the eMMC JEDEC specs and nowhere does it mention anything about this, apart from the fact that HS200 and HS400 only work with VCCQ=1.8V. I think this is just hallucinations? https://dn710206.ca.archive.org/0/items/SD-specs/JESD84-B51.pdf



So my assumption is that gpt is hallucinating and that an eMMC 5.0 or 5.1 chip will work by default (on startup with no prior communication) with VCC=3.3V, VCCQ=1.8V, logic signals=1.8V, provided the IC datasheet says it supports this configuration of supply voltages.

Can someone tell me if this assumption is correct?



https://redd.it/1pwumxp
@r_embedded
SD Card module not responding over SPI on ESP32 - Need Help

Hi everyone,

I’m trying to use an SD card module with my ESP32 over SPI, but I keep getting errors when mounting the filesystem. My setup:

ESP32 pins:

MISO → 19

MOSI → 23

SCK → 18

CS → 15

3.3 V → VCC

GND → GND

The SD card module is a cheap one I got from China. There are 10 KΩ resistors in series on MISO, MOSI, CS, and SCK on the module.

SD card: 16 GB, FAT32

Here’s the code I’m using:

#include <stdio.h>
#include "espsystem.h"
#include "esplog.h"
#include "esperr.h"

#include "driver/spicommon.h"
#include "driver/spimaster.h"

#include "sdmmccmd.h"
#include "espvfsfat.h"

#define PINNUMMISO 19
#define PINNUMMOSI 23
#define PINNUMCLK 18
#define PINNUMCS 15

static const char TAG = "SD_CARD";

void app_main(void)
{
esp_err_t ret;

// Use SPI host
sdmmc_host_t host = SDSPI_HOST_DEFAULT();
host.slot = SPI2_HOST; // HSPI
host.max_freq_khz = 100; // start super slow

// SPI bus configuration
spi_bus_config_t bus_cfg = {
.mosi_io_num = PIN_NUM_MOSI,
.miso_io_num = PIN_NUM_MISO,
.sclk_io_num = PIN_NUM_CLK,
.quadwp_io_num = -1,
.quadhd_io_num = -1,
.max_transfer_sz = 8192,
};

ret = spi_bus_initialize(host.slot, &bus_cfg, SPI_DMA_CH_AUTO);
if (ret != ESP_OK) {
ESP_LOGE(TAG, "Failed to initialize SPI bus");
return;
}

// SD SPI device configuration
sdspi_device_config_t slot_config = SDSPI_DEVICE_CONFIG_DEFAULT();
slot_config.gpio_cs = PIN_NUM_CS;
slot_config.host_id = host.slot;

// FAT filesystem mount configuration
esp_vfs_fat_sdmmc_mount_config_t mount_config = {
.format_if_mount_failed = false,
.max_files = 5,
.allocation_unit_size = 4096
};

sdmmc_card_t
card;

ESPLOGI(TAG, "Mounting SD card at 100 kHz...");
ret = esp
vfsfatsdspimount("/sdcard", &host, &slotconfig, &mountconfig, &card);

if (ret != ESP
OK) {
ESPLOGE(TAG, "Failed to mount filesystem (%s)", esperrtoname(ret));
return;
}

ESPLOGI(TAG, "SD card mounted successfully!");
sdmmc
cardprintinfo(stdout, card);

ESPLOGI(TAG, "You can now increase host.maxfreqkhz gradually (e.g., 8MHz, 16MHz, 20MHz) and test again.");
}





And here’s the log I get:

rst:0x1 (POWERON
RESET),boot:0x13 (SPIFASTFLASHBOOT)
...
I (330) SD
CARD: Mounting SD card at 100 kHz...
I (330) sdspitransaction: cmd=52, R1 response: command not supported
I (370) sdspi
transaction: cmd=5, R1 response: command not supported
E (3370) sdmmccommon: sdmmcinitocr: sendopcond (1) returned 0x107
E (3370) vfs
fatsdmmc: sdmmccardinit failed (0x107)
E (3370) SD
CARD: Failed to mount filesystem (ESPERRTIMEOUT)


I’ve tried powering the module with 3.3 V and verified the wiring. The SD card is inserted and Formated to FAT32.

https://redd.it/1pww1uk
@r_embedded
i want make one like this i need help this is mini camera Supports sd card i want know what prices i need to do one like this I see them being sold a lot on websites, but I want to make them myself.
https://redd.it/1pwta5q
@r_embedded
Learn Embedded Systems With Hands-On Tinkering Lab

If anyone here wants to seriously get into Embedded Systems, UNLOX just launched a beginner-friendly program that takes you from basics to advanced — and the best part is the Tinkering Lab access. You actually get to work with real microcontrollers, sensors, protocols, and hardware instead of only watching tutorials.

The course covers Embedded C, STM32/ESP32, UART/SPI/I2C, RTOS basics, debugging, firmware, and real project building. It’s super practical and perfect for students who want hands-on learning plus guidance. DM me for more guidance



https://redd.it/1pwzl52
@r_embedded
How do you program an interface for a memory?

Hi noob here I'm trying to make a simple interface for an old parallel sram and I really don't get on how I should time the signal for the Write enable pin with the data pins and the address pins.i put on write enable before the rest of the pins a cycle of clock later losing time I feel like I am missing something

https://redd.it/1px0zlr
@r_embedded
qron0b: a sleek & low-power binary wristwatch
https://redd.it/1px22je
@r_embedded
ESP32 beginner what should I buy to get started?

Hey everyone,

I want to get started with the ESP32 and embedded programming, but I’m a bit unsure what hardware is actually worth buying at the beginning.

What kind of basic accessories would you recommend right away? (breadboard, sensors, etc.)

I’d like to start with simple projects first and then slowly work my way up.

I’d appreciate hearing about your experiences thanks! 🙌

https://redd.it/1px5ttr
@r_embedded
Clean architecture in rtos

I'm working on a RTOS robot and I've some doubts on the best architecture. I initially use the clean architecture pattern like this:

>firmware/
├── src/
│ ├── domain/ # Entités et règles métier
│ │ ├── entities/ # Ex: RobotState
│ │ ├── repositories/ # Interfaces (ex: RobotRepository)
│ │ └── usecases/ # Cas d'utilisation (ex: SafetyUseCase)
│ ├── application/ # Logique applicative et tâches RTOS
│ │ ├── tasks/ # Tâches RTOS (ex: SafetyTask, SensorTask)
│ │ ├── services/ # Services applicatifs
│ │ └── dto/ # Data Transfer Objects
│ ├── infrastructure/ # Implémentations concrètes
│ │ ├── drivers/ # Pilotes matériels (ex: ADC, CAN)
│ │ ├── protocols/ # Protocoles temps réel (ex: CANopen)
│ │ ├── communication/ # Communication inter-tâches (queues RTOS)
│ │ └── shared_resources/ # Ressources partagées (queues, sémaphores)
│ └── interfaces/ # Interfaces pour le middleware
│ ├── grpc/ # Service gRPC léger
│ └── ros2/ # Bridge ROS 2 (optionnel)
├── include/ # Fichiers d'en-tête communs
├── config/ # Configuration RTOS (ex: FreeRTOSConfig.h)
└── tests/ # Tests spécifiques RTOS
├── unit/ # Tests unitaires
├── integration/ # Tests d'intégration
└── fuzz/ firmware/
├── src/
│ ├── domain/ # Entités et règles métier
│ │ ├── entities/ # Ex: RobotState
│ │ ├── repositories/ # Interfaces (ex: RobotRepository)
│ │ └── usecases/ # Cas d'utilisation (ex: SafetyUseCase)
│ ├── application/ # Logique applicative et tâches RTOS
│ │ ├── tasks/ # Tâches RTOS (ex: SafetyTask, SensorTask)
│ │ ├── services/ # Services applicatifs
│ │ └── dto/ # Data Transfer Objects
│ ├── infrastructure/ # Implémentations concrètes
│ │ ├── drivers/ # Pilotes matériels (ex: ADC, CAN)
│ │ ├── protocols/ # Protocoles temps réel (ex: CANopen)
│ │ ├── communication/ # Communication inter-tâches (queues RTOS)
│ │ └── shared_resources/ # Ressources partagées (queues, sémaphores)
│ └── interfaces/ # Interfaces pour le middleware
│ ├── grpc/ # Service gRPC léger
│ └── ros2/ # Bridge ROS 2 (optionnel)
├── include/ # Fichiers d'en-tête communs
├── config/ # Configuration RTOS (ex: FreeRTOSConfig.h)
└── tests/ # Tests spécifiques RTOS
├── unit/ # Tests unitaires
├── integration/ # Tests d'intégration
└── fuzz/


But I'm not sure it's the best architecture.

Any thoughts ?

https://redd.it/1px72xf
@r_embedded
Advice for writing lib for modules

Hi so im starting to write library for modules is there any suggestion for me im so confused with the doc i just now that i show read protocol page and register page



https://redd.it/1px4mgk
@r_embedded
STM32L432KC CubeMX configuration

Hi all,

I’m fairly new to STM32 and would like to design and manufacture a custom board to play & test with both software & hardware functionality. I started by configuring the MCU in CubeMX.

I don’t have a specific application, but I’d like to start with a relatively simple, low pinout STM32 chip and be able to test most of its features (ADC, DAC, I2C, etc.).

Could you please review the pinout and let me know if anything needs to be changed or if something is missing?

All the free pins (except Power,BOOT,NRESET) will be used as GPIOs (LED, button etc..)

https://preview.redd.it/vgfnejflmt9g1.png?width=846&format=png&auto=webp&s=277c59ee6d0e62181cd176579ee03e8ce09d3fb0




Thank you.

https://redd.it/1pxa70u
@r_embedded
ESP32 Servo Control with Level Shifter and Breadboard Power Supply
https://redd.it/1pxhd9f
@r_embedded
Tiny Robot Gadget for Desk Rohee
https://redd.it/1pxmfh9
@r_embedded
Need assistance

Hi I had been working on uart to bt bridge, what I am facing is that I had configure uart rx as interrupt I had getting a large chunks of data from the another device, what I had facing is that I am not getting whatever data I had received through rx .

below is my code

uint16 head = 0;

uint16 tail = 0;

volatile bool uart_rx_flg = 0;

//this is my uart config for interrupt

uartrxirqtriglevel(UART1, 1);

uartsetirqmask(UART1, UARTRXIRQMASK );

plicsetpriority(IRQ18UART1, IRQPRILEV3);

\
attribute_ram_code_sec_

void uart1_irq_handler(void) {

while (uart_get_rxfifo_num(UART1) > 0) {

if( ( (head + 1) % AT_CMD_BUFFER ) != tail ) // Check for buffer overflow

{

at_cmd_buffer[head\] = uart_read_byte(UART1);

head = (head + 1) % AT_CMD_BUFFER;

}

}

uart_rx_flg = 1;

/*UART_RXBUF_IRQ_STATUS:When the number of rxfifo reaches the set threshold(uart_rx_irq_trig_level), an interrupt is generated, and the interrupt flag is automatically cleared; stated in docs*/

}

}
in main loop calling

void serial_rx_handler(void) {

if(!uartrxflg)return;

else

{

uint08 tmp_buffer[TMP_BUFFER_SIZE\];

uint16 len = 0;

while (tail != head && len < TMP_BUFFER_SIZE) {

tmp_buffer[len++\] = at_cmd_buffer[tail\];

tail = (tail + 1) % AT_CMD_BUFFER;

}

if(len > 0)

{

if (app_spp_handle > 0 )

{

btp_spp_sendData(app_spp_handle, nullptr, 0, tmp_buffer, len);

}

else if (g_connHandle != 0/* && idx > 0*/)

{

blc_gatt_pushHandleValueNotify(g_connHandle, SPP_SERVER_TO_CLIENT_DP_H, (void * ) tmp_buffer, len);

}

else

{

//for the parsing of at cmds

}

}

if(tail == head)uart_rx_flg = 0;

last_rx_tick = 0;

}

}let me know where I am getting wrong ,

Thx

https://redd.it/1pxnc07
@r_embedded
Planning the long game: A roadmap into Embedded Robotics for grad school and beyond?

I'm a second-year student majoring in Robotics/Mechatronics Engineering at a top tech university in Vietnam. Right now, my program is pretty heavy on the mechanical side, but I really want to get deeper into electronics and computer science. Down the line, I'm thinking about a Master's in Electrical Engineering (EE) or Mechatronics & IT, focusing on using AI in robotics and automation.

While looking into different paths, I got really interested in embedded systems and IoT for robotics. It seems like a great fit because it mixes hardware and software, and you still need to understand the mechanical side to make things work properly. I'd love to learn more and build a career in this direction.

The thing is, my uni only has a couple of basic electrical courses (mostly about components and equipment). There aren't many options to dive deeper into electronics or embedded programming here, so I'd really appreciate some advice from people in the field.

Could you give me some guidance on:

* What fundamental topics should I focus on learning on my own? (e.g., microcontrollers, digital/analog circuits, communication protocols, maybe RTOS?)
* What programming languages and tools are must-knows? (I've heard C/C++ is key, but what about Python, Linux, or PCB design tools?)
* Any good starter projects or resources to help me build a hands-on portfolio?

Also, it would be awesome if you could suggest some universities known for their strong programs in this area. I'm hoping to plan ahead, with the goal of pursuing a combined Master's/PhD while working on side projects before jumping into the industry.

Any tips, personal experiences, or resource recommendations would be a huge help. Thanks so much!


https://redd.it/1pxo2ru
@r_embedded
Legality and Code Libraries?

I'm working on an STM32 project. I've also been trying to stay away from Arduino hardware and software for learning purposes, and due to the recent Qualcomm take over

Right now the project needs a small LCD display to display some text. I've seen a lot of info saying to use a pre-built library from GitHub. Problem is it's converted from an Arduino based library...

I'm confused on if I can use this code and what limitations there could be? Would changes in the Arduino TOS affect a library converted from their own, and an old GPL license, last updated 7 years ago? (The code in question) https://github.com/SayidHosseini/STM32LiquidCrystal

Legally, what should I worry about or consider here?

https://redd.it/1pxwb1d
@r_embedded
Sensor not working when ethernet is connected in STM32

Hey peeps, I am a fresher who got placed as an embedded engineer. I did my bachelors in Computer Science Engineering. So I am new to the embedded world. As a part of my training I and a friend is working in a project where we seem to be stuck because of ethernet/RJ45.
The project is about using a gesture sensor to detect gestures and map it to a certain action. So whenever that gesture is performed associated action will take place.
The issue: We were able to detect gestures and print what gesture was being detected, but to move forward we needed to use ethernet/LWIP. So in normal case, when I hold 1 finger it prints "count 1" and when its 2 fingers it prints "count 2" and so on. We keep polling to see if there is gesture and so as long as we show the gesture the output keeps getting printed. Now if we connect the ethernet cable to the board this stops working, like the output sometimes only prints the gesture that we are showing otherwise it prints the default value(which is shown when no gesture is detected).

Board I am using: STM32 nucleo F207ZG
Sensor l am using: Grove Smart IR Gesture Sensor V1.1 PAJ7660 (https://wiki.seeedstudio.com/grove_gesture_paj7660/)
Output is being shown in PUTTY.
Link to github: https://github.com/txr-academy/GestLink

https://redd.it/1pxxrtr
@r_embedded