<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Esmail Sarhadi</title>
    <description>The latest articles on DEV Community by Esmail Sarhadi (@esmailsarhadi).</description>
    <link>https://dev.to/esmailsarhadi</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1868932%2Fe05516bc-749a-406c-b360-adb352a1fee8.jpeg</url>
      <title>DEV Community: Esmail Sarhadi</title>
      <link>https://dev.to/esmailsarhadi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/esmailsarhadi"/>
    <language>en</language>
    <item>
      <title>🚀 **ESP32 Agent Skills — Let's Turn Our Experiences into Shared Knowledge!**</title>
      <dc:creator>Esmail Sarhadi</dc:creator>
      <pubDate>Mon, 02 Nov 2026 08:20:17 +0000</pubDate>
      <link>https://dev.to/esmailsarhadi/esp32-agent-skills-lets-turn-our-experiences-into-shared-knowledge-2dei</link>
      <guid>https://dev.to/esmailsarhadi/esp32-agent-skills-lets-turn-our-experiences-into-shared-knowledge-2dei</guid>
      <description>&lt;p&gt;🚀 &lt;strong&gt;ESP32 Agent Skills — Let's Turn Our Experiences into Shared Knowledge!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I've been working in the world of &lt;strong&gt;Embedded Systems for around 6 years&lt;/strong&gt;, and during this journey, I've had my fair share of challenges — working with ESP32, wireless communication, industrial protocols, hardware integration, debugging, and those frustrating bugs that sometimes take hours or even days to figure out.&lt;/p&gt;

&lt;p&gt;One thing I've learned along the way:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Some of the most valuable knowledge in embedded engineering doesn't come from documentation. It comes from real-world experience.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Someone has probably already faced the same problem you're struggling with today. Someone else may have spent days debugging an issue that you solved in an hour.&lt;/p&gt;

&lt;p&gt;But too often, those experiences stay scattered across personal projects, forums, GitHub issues, and conversations — and the same problems keep being solved over and over again.&lt;/p&gt;

&lt;p&gt;That's one of the main reasons I started taking &lt;strong&gt;ESP32 Agent Skills&lt;/strong&gt; seriously.&lt;/p&gt;

&lt;p&gt;I'm bringing my 6 years of hands-on experience into this project, combining it with technical research, documentation, practical examples, and automated testing to build a useful engineering knowledge base.&lt;/p&gt;

&lt;p&gt;But here's the thing:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One person's experience is never enough to build something truly powerful.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And that's where I'd love to bring more people into the journey. ❤️&lt;/p&gt;

&lt;p&gt;If you've worked with ESP32, ESP-IDF, Arduino, PlatformIO, or Embedded Systems in general, I'd love to hear from you.&lt;/p&gt;

&lt;p&gt;You don't need to have built a massive industrial project or written thousands of lines of code.&lt;/p&gt;

&lt;p&gt;Maybe you've:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Struggled with a strange Wi-Fi or Bluetooth issue.&lt;/li&gt;
&lt;li&gt;Spent hours figuring out why an ESP32 kept rebooting or triggering a brownout.&lt;/li&gt;
&lt;li&gt;Worked with RS485, Modbus, CAN, or LoRa.&lt;/li&gt;
&lt;li&gt;Made a hardware mistake that taught you an important lesson.&lt;/li&gt;
&lt;li&gt;Found a clever debugging technique or a better implementation.&lt;/li&gt;
&lt;li&gt;Solved a problem that you think other developers might face too.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Every one of these experiences matters.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My goal is to bring these experiences together and turn them into better Skills, more realistic examples, reliable tests, and practical knowledge that developers can actually use in their projects.&lt;/p&gt;

&lt;p&gt;I also want to make this knowledge accessible to AI agents, so they can help developers solve real engineering problems with more context and better technical understanding.&lt;/p&gt;

&lt;p&gt;📌 &lt;strong&gt;Where the project stands today:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;79 technical Skills&lt;/li&gt;
&lt;li&gt;23 documented field-failure cases&lt;/li&gt;
&lt;li&gt;350 software and structural tests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And this is just the beginning.&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;GitHub Repository:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/Esmail-sarhadi/esp32-agent-skills" rel="noopener noreferrer"&gt;https://github.com/Esmail-sarhadi/esp32-agent-skills&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you have experience in this field, share it in the comments.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It doesn't have to be a complete solution. Even a small debugging story, an unexpected failure, or a practical workaround could help someone else.&lt;/p&gt;

&lt;p&gt;Let's stop keeping all this valuable knowledge to ourselves.&lt;/p&gt;

&lt;p&gt;Let's build something together that other engineers — and even the next generation of AI-powered development tools — can learn from.&lt;/p&gt;

&lt;p&gt;Because sometimes, a small experience shared by one developer can save another developer days of work. 🌱&lt;/p&gt;

&lt;h1&gt;
  
  
  ESP32 #EmbeddedSystems #IoT #ESP_IDF #Arduino #PlatformIO #OpenSource #FirmwareDevelopment #IndustrialAutomation #AI #Engineering
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fczsjjuft2zvsf6q9nu9d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fczsjjuft2zvsf6q9nu9d.png" alt=" " width="800" height="335"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fld5kcqe5aws7mgnlkbne.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fld5kcqe5aws7mgnlkbne.png" alt=" " width="800" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>debugging</category>
      <category>hardware</category>
      <category>iot</category>
      <category>learning</category>
    </item>
    <item>
      <title>🚀 ESP32 Agent Skills — Let's Turn Our Experiences into Shared Knowledge!</title>
      <dc:creator>Esmail Sarhadi</dc:creator>
      <pubDate>Mon, 02 Nov 2026 08:19:01 +0000</pubDate>
      <link>https://dev.to/esmailsarhadi/esp32-agent-skills-lets-turn-our-experiences-into-shared-knowledge-54ml</link>
      <guid>https://dev.to/esmailsarhadi/esp32-agent-skills-lets-turn-our-experiences-into-shared-knowledge-54ml</guid>
      <description>&lt;p&gt;I've been working in the world of &lt;strong&gt;Embedded Systems for around 6 years&lt;/strong&gt;, and during this journey, I've had my fair share of challenges — working with ESP32, wireless communication, industrial protocols, hardware integration, debugging, and those frustrating bugs that sometimes take hours or even days to figure out.&lt;/p&gt;

&lt;p&gt;One thing I've learned along the way:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Some of the most valuable knowledge in embedded engineering doesn't come from documentation. It comes from real-world experience.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Someone has probably already faced the same problem you're struggling with today. Someone else may have spent days debugging an issue that you solved in an hour.&lt;/p&gt;

&lt;p&gt;But too often, those experiences stay scattered across personal projects, forums, GitHub issues, and conversations — and the same problems keep being solved over and over again.&lt;/p&gt;

&lt;p&gt;That's one of the main reasons I started taking &lt;strong&gt;ESP32 Agent Skills&lt;/strong&gt; seriously.&lt;/p&gt;

&lt;p&gt;I'm bringing my 6 years of hands-on experience into this project, combining it with technical research, documentation, practical examples, and automated testing to build a useful engineering knowledge base.&lt;/p&gt;

&lt;p&gt;But here's the thing:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One person's experience is never enough to build something truly powerful.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And that's where I'd love to bring more people into the journey. ❤️&lt;/p&gt;

&lt;p&gt;If you've worked with ESP32, ESP-IDF, Arduino, PlatformIO, or Embedded Systems in general, I'd love to hear from you.&lt;/p&gt;

&lt;p&gt;You don't need to have built a massive industrial project or written thousands of lines of code.&lt;/p&gt;

&lt;p&gt;Maybe you've:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Struggled with a strange Wi-Fi or Bluetooth issue.&lt;/li&gt;
&lt;li&gt;Spent hours figuring out why an ESP32 kept rebooting or triggering a brownout.&lt;/li&gt;
&lt;li&gt;Worked with RS485, Modbus, CAN, or LoRa.&lt;/li&gt;
&lt;li&gt;Made a hardware mistake that taught you an important lesson.&lt;/li&gt;
&lt;li&gt;Found a clever debugging technique or a better implementation.&lt;/li&gt;
&lt;li&gt;Solved a problem that you think other developers might face too.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Every one of these experiences matters.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My goal is to bring these experiences together and turn them into better Skills, more realistic examples, reliable tests, and practical knowledge that developers can actually use in their projects.&lt;/p&gt;

&lt;p&gt;I also want to make this knowledge accessible to AI agents, so they can help developers solve real engineering problems with more context and better technical understanding.&lt;/p&gt;

&lt;p&gt;📌 &lt;strong&gt;Where the project stands today:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;79 technical Skills&lt;/li&gt;
&lt;li&gt;23 documented field-failure cases&lt;/li&gt;
&lt;li&gt;350 software and structural tests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And this is just the beginning.&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;GitHub Repository:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/Esmail-sarhadi/esp32-agent-skills" rel="noopener noreferrer"&gt;https://github.com/Esmail-sarhadi/esp32-agent-skills&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you have experience in this field, share it in the comments.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It doesn't have to be a complete solution. Even a small debugging story, an unexpected failure, or a practical workaround could help someone else.&lt;/p&gt;

&lt;p&gt;Let's stop keeping all this valuable knowledge to ourselves.&lt;/p&gt;

&lt;p&gt;Let's build something together that other engineers — and even the next generation of AI-powered development tools — can learn from.&lt;/p&gt;

&lt;p&gt;Because sometimes, a small experience shared by one developer can save another developer days of work. 🌱&lt;/p&gt;

&lt;h1&gt;
  
  
  ESP32 #EmbeddedSystems #IoT #ESP_IDF #Arduino #PlatformIO #OpenSource #FirmwareDevelopment #IndustrialAutomation #AI #Engineering
&lt;/h1&gt;

</description>
      <category>debugging</category>
      <category>hardware</category>
      <category>iot</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Your AI agent writes ESP32 firmware that compiles. Then it kills the board.</title>
      <dc:creator>Esmail Sarhadi</dc:creator>
      <pubDate>Sat, 31 Oct 2026 12:55:18 +0000</pubDate>
      <link>https://dev.to/esmailsarhadi/your-ai-agent-writes-esp32-firmware-that-compiles-then-it-kills-the-board-1bgd</link>
      <guid>https://dev.to/esmailsarhadi/your-ai-agent-writes-esp32-firmware-that-compiles-then-it-kills-the-board-1bgd</guid>
      <description>&lt;p&gt;I have been building embedded devices since 2016. In the last year I started letting coding agents write the firmware, and the same thing kept happening: the sketch compiled, flashed, and then the board did nothing. Or it booted and the relay never switched. Or it worked on the bench and reset every time the radio came on.&lt;br&gt;
None of those are logic bugs. Every one of them was in the pin map.&lt;br&gt;
Ask any agent for a blink sketch and it will happily write #define LED 2. That is correct on some boards. On an ESP32 it is also a strapping pin that has to be floating at boot. Ask for a relay and you may get GPIO34, which is input-only — it has no output driver at all, so the code runs perfectly and the relay never moves. Ask for GPIO6 and the module will not boot again, because that pin is wired to the SPI flash.&lt;br&gt;
These are facts about the silicon, and the model does not have them. So I wrote them down in a form an agent can actually consume, and put a checker next to it that a human can run.&lt;br&gt;
Four failures, one cause&lt;br&gt;
What gets written&lt;br&gt;
What happens&lt;/p&gt;

&lt;h1&gt;
  
  
  define LED 6
&lt;/h1&gt;

&lt;p&gt;GPIO6 is the SPI flash. The module never boots again.&lt;/p&gt;

&lt;h1&gt;
  
  
  define RELAY 34
&lt;/h1&gt;

&lt;p&gt;GPIO34 is input-only. No error, no output, no relay.&lt;/p&gt;

&lt;h1&gt;
  
  
  define RELAY 12
&lt;/h1&gt;

&lt;p&gt;GPIO12 high at reset selects 1.8 V flash. The board stays dark.&lt;br&gt;
analogRead(2) + Wi-Fi&lt;br&gt;
GPIO2 is on ADC2. The reading is garbage once the radio is up.&lt;br&gt;
A compiler cannot catch these. A unit test cannot catch these. They only show up when there is a board on the desk.&lt;br&gt;
The checker&lt;br&gt;
$ python tools/pincheck.py --soc esp32 --assign "12=relay1,34=button,6=status_led"&lt;/p&gt;

&lt;p&gt;ESP32 (classic, WROOM-32 / WROVER) - 3 pin(s) checked&lt;/p&gt;

&lt;p&gt;GPIO6   ERROR  status_led     GPIO6 is connected to the SPI flash, using it bricks the module&lt;br&gt;
  GPIO12  WARN   relay1         GPIO12 is a strapping pin and must be LOW at boot on 3.3 V flash&lt;br&gt;
                                modules, HIGH selects 1.8 V and the board will not boot; make sure&lt;br&gt;
                                'relay1' cannot hold it there at reset&lt;br&gt;
  GPIO34  WARN   button         GPIO34 is input-only: it cannot drive an output and has no internal&lt;br&gt;
                                pull-up or pull-down, add an external resistor for 'button'&lt;br&gt;
  GPIO12  INFO   relay1         GPIO12 is on ADC2, analogRead() returns garbage while Wi-Fi is active&lt;/p&gt;

&lt;p&gt;1 error(s), 2 warning(s), 1 note(s)&lt;br&gt;
It exits non-zero on an error, so it drops into CI or a pre-flash hook without any glue code. --json gives the same findings as data.&lt;br&gt;
It covers esp32, esp32s3 and esp32c3, and it is deliberately conservative: only constraints that are unambiguous across every module variant are encoded. Board-specific quirks — the on-board LED on GPIO2, the USB bridge on GPIO1/GPIO3 — are left out, because a checker that cries wolf gets switched off after the second false alarm.&lt;br&gt;
The other three&lt;br&gt;
The pin map was the first failure, not the only one. The repo now ships four checkers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;partition_check.py — does this partition table fit the flash, are the app slots aligned to 64 KB, are there really two equal OTA slots.&lt;/li&gt;
&lt;li&gt;power_budget.py — turn a duty cycle into battery life, and name the term that dominates so you know what to fix.&lt;/li&gt;
&lt;li&gt;panic_decode.py — turn a Guru Meditation dump into the exact addr2line command, with the frames in the order the CPU printed them.
The power one is the one I use most:
$ python tools/power_budget.py --battery 3000 --wakes-per-hour 12 --wake-ms 2000&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;duty cycle      0.67%&lt;br&gt;
  average current 0.677 mA&lt;br&gt;
  battery life    184.7 days (4433.9 hours)&lt;/p&gt;

&lt;p&gt;where the charge goes&lt;br&gt;
    idle      0.467 mA   69.0%&lt;br&gt;
    tx        0.200 mA   29.6%&lt;br&gt;
    sleep     0.010 mA    1.5%&lt;/p&gt;

&lt;p&gt;dominant term: idle (69.0%), fix that one first&lt;br&gt;
Six days of "it should last a year" arguments, solved by one number.&lt;br&gt;
Installing the skills&lt;br&gt;
The skills/ directory follows the Agent Skills layout, so an agent loads a skill only when the task touches that area:&lt;br&gt;
cp -r skills/* ~/.claude/skills/&lt;br&gt;
Six skills today: pin safety, power and boot, I2C, partitions and OTA, FreeRTOS, and Modbus over RS485. Each one is written as rules with the reasoning attached, not as a list of facts, because an agent that knows why GPIO12 is dangerous will also be careful with a pin I did not think to list.&lt;br&gt;
What I am not claiming&lt;br&gt;
This does not make an agent correct. It removes one class of error — the class that costs a day because nothing is logged and the board just sits there. The rest is still engineering.&lt;br&gt;
MIT licensed, no dependencies, 30 tests, CI on every push: github.com/Esmail-sarhadi/esp32-agent-skills&lt;br&gt;
If you have a board on your desk and a pin you are not sure about, run the checker against it and tell me if it is wrong. That is the only way a database like this stays useful.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>esp32</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
