<?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: biosshot</title>
    <description>The latest articles on DEV Community by biosshot (@biosshot).</description>
    <link>https://dev.to/biosshot</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%2F4211693%2F904902f1-443d-4395-bb75-b1dade3929e8.jpg</url>
      <title>DEV Community: biosshot</title>
      <link>https://dev.to/biosshot</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/biosshot"/>
    <language>en</language>
    <item>
      <title>pcb</title>
      <dc:creator>biosshot</dc:creator>
      <pubDate>Tue, 27 Oct 2026 22:10:07 +0000</pubDate>
      <link>https://dev.to/biosshot/pcb-4p3i</link>
      <guid>https://dev.to/biosshot/pcb-4p3i</guid>
      <description></description>
    </item>
    <item>
      <title>I built an open-source AI agent for EasyEDA that can design schematics and PCBs</title>
      <dc:creator>biosshot</dc:creator>
      <pubDate>Tue, 27 Oct 2026 22:09:19 +0000</pubDate>
      <link>https://dev.to/biosshot/i-built-an-open-source-ai-agent-for-easyeda-that-can-design-schematics-and-pcbs-1ko2</link>
      <guid>https://dev.to/biosshot/i-built-an-open-source-ai-agent-for-easyeda-that-can-design-schematics-and-pcbs-1ko2</guid>
      <description>&lt;p&gt;Hi! I want to share my open-source project, EasyEDA Copilot. It allows AI agents to create and edit schematics and PCBs directly in EasyEDA Pro.&lt;/p&gt;

&lt;p&gt;I work with both programming and electronics. I studied electronics in college, where we learned to use EasyEDA. I found it much easier to learn than Altium Designer, so I continued using it for my own projects.&lt;/p&gt;

&lt;p&gt;The idea for EasyEDA Copilot came about quite a while ago, even before GPT-6 Astra learned to design PCBs in KiCad. At the time, I wanted to try building my own AI agent and combine two areas I'm interested in: programming and electronics.&lt;/p&gt;

&lt;p&gt;The first version could only edit schematics. Over time, I added more features: schematic creation, component search, automatic component placement, and PCB routing.&lt;/p&gt;

&lt;p&gt;Now EasyEDA Copilot can handle a large part of the design process, and the result is still a normal, editable EasyEDA document.&lt;/p&gt;

&lt;h2&gt;
  
  
  How EasyEDA Copilot Works
&lt;/h2&gt;

&lt;p&gt;The main integration uses MCP.&lt;/p&gt;

&lt;p&gt;The architecture looks roughly like this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;AI agent =&amp;gt; MCP =&amp;gt; specialized algorithms =&amp;gt; EasyEDA&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The MCP server connects to the EasyEDA extension through a local WebSocket. The agent can access information about schematics, components, connections, layers, and other objects.&lt;/p&gt;

&lt;p&gt;A separate Skill can also be built from MCP.&lt;/p&gt;

&lt;p&gt;The main difference between my approach and simply giving AI access to the editor is that the model doesn't have to do all the work itself.&lt;/p&gt;

&lt;p&gt;For example, there's an official &lt;a href="https://github.com/easyeda/easyeda-api-skill" rel="noopener noreferrer"&gt;EasyEDA API Skill&lt;/a&gt; that allows agents to execute JavaScript through the editor's API.&lt;/p&gt;

&lt;p&gt;I took a slightly different approach.&lt;/p&gt;

&lt;p&gt;In EasyEDA Copilot, the model mostly describes what needs to be done. For example, which components should be placed close together, where connectors should go, or which routing rules to use.&lt;/p&gt;

&lt;p&gt;Then regular algorithms do the actual work.&lt;/p&gt;

&lt;p&gt;At the same time, the agent can still execute JavaScript directly in EasyEDA. If it needs to do something unusual or manually fix part of a PCB, it can use the editor's API.&lt;/p&gt;

&lt;p&gt;So the model defines the tasks, but it doesn't have to calculate the coordinates of every component or trace segment itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Component Placement Works
&lt;/h2&gt;

&lt;p&gt;Placement uses a separate algorithm that receives components, connections, board geometry, and constraints.&lt;/p&gt;

&lt;p&gt;The agent describes the requirements using a DSL.&lt;/p&gt;

&lt;p&gt;Here's a small example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;board&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;layers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;top&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;clearance&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.3&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nf"&gt;block&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;MCU&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;U1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;C1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;C2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;mcu&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nf"&gt;block&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;CONNECTORS&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;J1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;J2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;connector&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nf"&gt;edgeMount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;J1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;left&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nf"&gt;edgeMount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;J2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;right&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nf"&gt;veryNear&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;pin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;C1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nf"&gt;pin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;U1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="nf"&gt;veryNear&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;pin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;C2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nf"&gt;pin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;U1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here we define a 40×30 mm board, two groups of components, connector positions, and a requirement to place capacitors close to specific microcontroller pins.&lt;/p&gt;

&lt;p&gt;The algorithm then finds a suitable placement on its own.&lt;/p&gt;

&lt;p&gt;GPU acceleration is used to speed up placement calculations. Many operations can run in parallel, which is especially useful when working with a large number of components.&lt;/p&gt;

&lt;p&gt;The algorithm also takes into account component dimensions, overlaps, electrical connections, mechanical constraints, and placement rules.&lt;/p&gt;

&lt;p&gt;After the calculations, the agent can inspect a preview, change the constraints, or apply the placement in EasyEDA.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  How PCB Routing Works
&lt;/h2&gt;

&lt;p&gt;Routing uses a similar approach.&lt;/p&gt;

&lt;p&gt;The agent describes the rules: trace widths, clearances, layers, vias, differential pairs, and other requirements.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;drc&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;trackWidthMm&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;clearanceMm&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.15&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nf"&gt;powerNet&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;+5V&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;trackWidthMm&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;allowedLayers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;OUTER&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nf"&gt;diffPair&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;USB&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;positive&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;USB_DP&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;negative&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;USB_DM&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;trackWidthMm&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;gapMm&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;maxSkewMm&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nf"&gt;plane&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;net&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;GND&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;layers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;BOTTOM&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nf"&gt;runAll&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, we define general routing rules, a separate trace width for power, a USB differential pair, and a ground plane on the bottom layer.&lt;/p&gt;

&lt;p&gt;The current implementation uses KiCad Routing Tools. I wrote an integration that passes board data from EasyEDA to the router, runs the routing process, and then brings the result back into the editor.&lt;/p&gt;

&lt;p&gt;After that, the agent can check for remaining unrouted connections and run EasyEDA's built-in DRC.&lt;/p&gt;

&lt;p&gt;There's also a checkpoint system. The document state is saved before changes are applied. If something goes wrong while applying the result, the previous version can be restored.&lt;/p&gt;

&lt;p&gt;Of course, routing isn't perfect yet. Complex boards require multiple attempts or manual fixes.&lt;/p&gt;

&lt;p&gt;I'm currently developing my own routing algorithm. The main goals are to increase speed and improve routing completion rates on complex boards.&lt;/p&gt;

&lt;h2&gt;
  
  
  Project Examples
&lt;/h2&gt;

&lt;h3&gt;
  
  
  STM32 CAN AND RS485
&lt;/h3&gt;

&lt;p&gt;One example is an STM32 board with CAN and RS-485 interfaces.&lt;/p&gt;

&lt;p&gt;I used EasyEDA Copilot to work on both the schematic and PCB in this project.&lt;/p&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%2Fsvyd48a9c3hlasdowx41.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%2Fsvyd48a9c3hlasdowx41.png" alt="Finished PCB" width="800" height="545"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;h3&gt;
  
  
  5A USB-PD Trigger
&lt;/h3&gt;

&lt;p&gt;Another example is a USB-PD trigger designed for up to 5 A.&lt;/p&gt;

&lt;p&gt;It has a completed schematic and a fully routed PCB.&lt;/p&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%2Fj7k7uttpm5au768lzrwr.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%2Fj7k7uttpm5au768lzrwr.png" alt="Schematic" width="800" height="567"&gt;&lt;/a&gt;&lt;/p&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%2Fz4n80o6gssnrpgnkzgt0.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%2Fz4n80o6gssnrpgnkzgt0.png" alt="PCB" width="800" height="508"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Other Projects
&lt;/h3&gt;

&lt;p&gt;I've also tried EasyEDA Copilot on other schematics and PCBs.&lt;/p&gt;

&lt;p&gt;For example, I have a project for a portable single-channel oscilloscope with a target bandwidth of 200 MHz. So far, only the schematic is ready.&lt;/p&gt;

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

&lt;p&gt;The repository also contains examples of an ESP32-C3 controller, a four-layer MIMXRT1011 board, and a 2 GHz RF amplifier.&lt;/p&gt;

&lt;p&gt;You can see them in the &lt;a href="https://github.com/biosshot/easyeda-copilot" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  SPICE Simulation
&lt;/h2&gt;

&lt;p&gt;Besides PCB design, EasyEDA Copilot can also run SPICE simulations using ngspice.&lt;/p&gt;

&lt;p&gt;For this, I've put together a library of around 40,000 components.&lt;/p&gt;

&lt;p&gt;For example, you can ask the agent to design an input stage for a trigger. It can select components, calculate values, build the circuit, and run a simulation.&lt;/p&gt;

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

&lt;p&gt;This allows you to check how a circuit behaves before building the actual device.&lt;/p&gt;

&lt;p&gt;Of course, a simulation doesn't guarantee that the real circuit will behave exactly the same way. The results depend on component models and simulation conditions.&lt;/p&gt;

&lt;p&gt;For now, SPICE is available through the original built-in interface of EasyEDA Copilot. Most of the project's development is now focused on MCP.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;I'm continuing to work on my own PCB router.&lt;/p&gt;

&lt;p&gt;I also plan to add PCB analysis tools: Signal Integrity (SI), Power Integrity (PI), and thermal analysis.&lt;/p&gt;

&lt;p&gt;I'd like the agent to be able not only to create schematics and PCBs, but also to run engineering calculations, find problems, and fix them.&lt;/p&gt;

&lt;p&gt;But these features are still under development.&lt;/p&gt;

&lt;h2&gt;
  
  
  Source Code
&lt;/h2&gt;

&lt;p&gt;EasyEDA Copilot is an open-source project licensed under MIT.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/biosshot/easyeda-copilot" rel="noopener noreferrer"&gt;https://github.com/biosshot/easyeda-copilot&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To use it, you need EasyEDA Pro Desktop, Node.js, and an MCP client such as Claude Code or Codex.&lt;/p&gt;

&lt;p&gt;The repository contains installation instructions, documentation, and project examples.&lt;/p&gt;

&lt;p&gt;I'd be happy to hear feedback, especially from people who work with electronics and have tried automating the design process.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>schematic</category>
      <category>pcb</category>
      <category>electronics</category>
    </item>
  </channel>
</rss>
