agentee

Começar aqui

A sua primeira placa

De um diretório vazio a uma placa de duas camadas verificada e roteada e a um pacote de fabrico: especificação da placa, componentes KiCad, um esquema, posicionamento, roteamento e Gerbers.

Este guia constrói uma pequena placa à mão, um comando de cada vez: um header de alimentação de dois pinos, um resistor, um LED verde e um condensador de desacoplamento numa placa JLCPCB de duas camadas. É a mesma sequência que um agente segue, pelo que fazê-la uma vez por si torna muito mais fácil ler o que o seu agente faz depois.

Precisa do agentee no seu PATH e das bibliotecas KiCad instaladas. Veja Instalar se não tiver nenhum dos dois.

Iniciar um projeto

Um projeto é um diretório. Tudo abaixo dele com um sufixo conhecido é carregado.

mkdir blinky && cd blinky
agentee new board blinky
agentee check

O new board escreve blinky.board.toml: um contorno de 50 por 30 mm, o stackup de duas camadas de 1,6 mm da JLCPCB, um tipo de via e quatro classes de rede. A verificação carrega-o e não reporta nada:

0 sims, 0 layouts, 0 schematics, 1 boards, 0 symbols, 0 footprints: 0 errors, 0 warnings

O check termina com 0 quando o projeto está limpo, 1 quando há erros e 2 quando um ficheiro não carrega. Esse código de saída é o que permite a um agente, ou a um CI, repetir o ciclo.

Fazer a placa do tamanho certo

Quatro peças não precisam de 50 por 30 mm. Reduza o contorno:

agentee edit board blinky outline --size 30,18 --corner-radius 1mm

O agentee edit reescreve o TOML por si, mantém quaisquer comentários e executa a verificação no ficheiro que tocou. Não vá muito mais pequeno numa placa tão simples: cada placa carrega a versão agentee vX.Y.Z-HASH na sua serigrafia, e a verificação precisa de uma faixa livre de cerca de 23 por 1,2 mm para a colocar. Numa placa de 20 mm, reporta um erro de watermark e o pacote de fabrico é recusado.

Importar as peças

O agentee lê as bibliotecas do KiCad em vez de distribuir as suas. Pesquise-as e importe um símbolo juntamente com o footprint que deve usar:

agentee search symbol conn_01x02
agentee import symbol Connector_Generic:Conn_01x02 --footprint Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical
agentee import symbol Device:R --footprint Resistor_SMD:R_0603_1608Metric
agentee import symbol Device:LED --footprint LED_SMD:LED_0603_1608Metric
agentee import symbol Device:C --footprint Capacitor_SMD:C_0603_1608Metric
agentee check

Cada palavra de uma pesquisa deve corresponder ao Library:Name. As importações ficam em symbols/ e footprints/ como TOML. A verificação agora tem algo a dizer:

warning: ./footprints/R_0603_1608Metric.fp.toml: R_0603_1608Metric silk: silk lines under the fab minimum width 0.15mm: 2, thinnest 0.12mm

O KiCad desenha a serigrafia a 0,12 mm e a JLCPCB pede 0,15 mm. Abra cada footprint e mude width = 0.12 para 0.15 nos seus gráficos de serigrafia, ou deixe o agente fazê-lo. Esta é a forma normal de trabalho com o agentee: o diagnóstico indica o ficheiro, o item e o número, e a correção é uma única edição.

Escrever o esquema

agentee new schematic blinky

O ponto de partida é apenas um nome. Adicione board = "blinky" por baixo dele, para que o esquema saiba que classes de rede existem. Depois coloque as peças e as redes com um lote de comandos, um por linha:

agentee edit sch - <<'EOF'
add J1 Conn_01x02 PWR --footprint PinHeader_1x02_P2.54mm_Vertical
add R1 R 1k --footprint R_0603_1608Metric
add D1 LED green --footprint LED_0603_1608Metric
add C1 C 100n --footprint C_0603_1608Metric
net VIN J1.1 R1.1 C1.1 --class Power
net LED_A R1.2 D1.A --class Signal
net GND J1.2 D1.K C1.2 --class Ground --style power
EOF

Um lote é uma carga e uma verificação no fim, pelo que os estados intermédios incompletos nunca são assinalados. Os pinos são REF.PIN, por número ou por um nome de pino único: D1.A é o ânodo, e a saída confirma para que número foi resolvido.

added J1 (Conn_01x02)
added R1 (R)
added D1 (LED)
added C1 (C)
VIN now joins J1.1, R1.1, C1.1
LED_A now joins R1.2, D1.2
GND now joins J1.2, D1.1, C1.2
warning: /home/you/blinky/blinky.sch.toml: blinky part R1: body overlaps D1 (parts[2])
0 errors, 1 warnings in the files this touched

add coloca cada peça à direita da última, e o LED ficou sobre o resistor. Mova-o, e o condensador enquanto está lá, e depois veja:

agentee edit sch blinky move D1 25.4,0 --rotation 90
agentee edit sch blinky move C1 12.7,10.16
agentee render sch:blinky -o sch.png

O esquema do blinky tal como o agentee o representa

Não desenhou um fio. Um esquema lista as redes como pinos, e o agentee faz o roteamento dos fios na grelha de 1,27 mm quando os desenha. Cada rede tem uma class; uma rede deixada em Default é um aviso, porque a classe decide a largura das pistas, o espaçamento e as vias na placa.

Colocar as peças

agentee new layout blinky

Adicione board = "blinky" e schematic = "blinky" ao inicializador. A verificação agora falha, o que é correto:

error: ./blinky.pcb.toml: blinky footprints: C1 is not placed

Coloque tudo de uma vez:

agentee place blinky

place coloca conetores nas bordas, mantém os passivos perto do que ligam, refina o resultado e move qualquer etiqueta de referência que agora sobreponha algo. Imprime um relatório JSON e escreve at e rotation numa entrada [[footprints]] por peça. É um arranque rápido: numa placa real, vê-se o resultado, move-se o que importa à mão, marca-se locked = true e coloca-se o resto novamente.

Fazer o roteamento

A verificação agora lista cada ligação que falta:

error: ./blinky.pcb.toml: blinky net VIN: [unrouted] 2 unrouted: J1.1 | R1.1 | C1.1 are not joined

Dê à massa uma área de cobre em ambas as camadas, ligue os pads de massa a ela e faça o roteamento das outras duas redes:

agentee edit pcb blinky zone GND --layers F.Cu,B.Cu
agentee tie blinky
agentee route blinky --nets 'VIN,LED_A'
agentee check

tie coloca um pino curto e uma via ao lado de cada pad SMD de uma rede que tenha uma área, que é a forma como os pads de massa e de alimentação devem chegar ao plano. route faz o roteamento das redes indicadas numa grelha, mantendo a largura e o espaçamento de cada classe, e acrescenta [[tracks]] e [[vias]] ordinários ao layout. São seus para editar depois.

0 sims, 1 layouts, 1 schematics, 1 boards, 4 symbols, 4 footprints: 0 errors, 0 warnings
agentee render pcb:blinky -o pcb.png

O layout do blinky com o roteamento feito

Escrever o pacote de fabrico

agentee fab pcb:blinky -o fab/

fab recusa enquanto o layout tiver erros. Sem erros, escreve os Gerbers de cada camada, o ficheiro de furação, uma BOM e um ficheiro de colocação nas colunas da JLCPCB, a lista de redes IPC-D-356, os desenhos de montagem, as notas de fabrico e blinky-gerbers.zip para carregar.

O que fez

Cada passo foi o mesmo ciclo: uma edição, verificação, visualização. Nada mantinha estado fora dos ficheiros, pelo que pode parar a qualquer momento, abrir o diretório no git, ou entregá-lo a um agente com a skill e pedir-lhe para adicionar um diodo de polaridade inversa.

A seguir:

Melhorar este guia · Markdown para agentes