MyGit

atopile/atopile

Fork: 113 Star: 1991 (更新于 2024-12-18 05:56:09)

license: MIT

Language: Python .

Design circuit boards with code! ✨ Get software-like design reuse 🚀, validation, version control and collaboration in hardware; starting with electronics ⚡️

最后发布版本: v0.2.64 ( 2024-09-11 04:35:53)

官方网址 GitHub网址

Shows a black logo in light color mode and a white one in dark color mode.

Version License Build status


Logo atopile

📖 What Is atopile?

atopile is a tool to build electronic circuit boards with code.

🗣️ Join Us On Discord

What's your story in electronics? What would you like us to build? Come talk on discord.

Discord Banner 3

⚡️ato Code Examples

A simple voltage divider

from "generics/resistors.ato" import Resistor
from "generics/interfaces.ato" import Power, Pair

module VDiv: #this name needs to match the name in the ato.yaml config file
    power = new Power
    output = new Pair

    r_top = new Resistor
    r_top.package = "0402"

    r_bottom = new Resistor
    r_bottom.package = "0402"

    power.vcc ~ r_top.p1; r_top.p2 ~ output.io
    output.io ~ r_bottom.p1; r_bottom.p2 ~ power.gnd; power.gnd ~ output.gnd

    v_in: voltage
    v_out: voltage
    i_q: current

    assert v_in * r_bottom.value / (r_top.value + r_bottom.value) within v_out
    assert v_in / (r_bottom.value + r_top.value) within i_q

    v_in = 3.3V +/- 2%
    v_out = 1.8V +/- 5%
    i_q = 1mA +/- 10%

The classic "Blinky" circuit

Define your design with ato code

import RP2040Kit from "rp2040/RP2040Kit.ato" # run `ato install rp2040` to install
import LEDIndicatorRed from "generics/leds.ato"
import LV2842Kit from "lv2842xlvddcr/lv2842kit.ato" # run `ato install lv2842xlvddcr` to install
import USBCConn from "usb-connectors/usb-connectors.ato" # run `ato install usb-connectors` to install

module Blinky:
    micro_controller = new RP2040Kit
    led_indicator = new LEDIndicatorRed
    voltage_regulator = new LV2842Kit
    usb_c_connector = new USBCConn

    usb_c_connector.power ~ voltage_regulator.power_in
    voltage_regulator.power_out ~ micro_controller.power
    micro_controller.gpio13 ~ led_indicator.input
    micro_controller.power.gnd ~ led_indicator.gnd

    led_indicator.v_in = 3.3volt +/-10%

Generate a block diagram from code

Schematics example

Produce schematics for documentation

Schematics example

Discover Full Projects

Checkout out the servo drive project or the swoop motion controller.

🔨 Getting Started

Find our documentation, installation video and getting started video.

atopile is on pypi.org: https://pypi.org/project/atopile/

Installation

atopile is published to pypi.org. We recommend installing into an isolated environment, e.g. with uv:

uv tool install atopile

Or with pipx (requires Python 3.13):

pipx install atopile

❓ Why Atopile?

The objective of atopile is to help push forward these paradigms from the software world to hardware, mainly these points:

  • Intelligent Design Capture: Define hardware specifications like ratios and tolerances in code, enabling precise control and easy reuse of designs.
  • Version Control Integration: Use git to manage design changes, facilitating collaboration and ensuring each iteration is thoroughly reviewed and validated.
  • Continuous Integration (CI): Implement CI to guarantee high-quality, compliant designs with every commit, represented by a green checkmark for assurance.

Describing hardware with code might seem odd at first glance. But once you realize it introduces software development paradigms and toolchains to hardware design, you'll be hooked, just like we've become.

Code can capture the intelligence you put into your work. Imagine configuring not the resistance values of a voltage divider, but its ratio and total resistance, all using physical units and tolerances. You can do this because someone before you described precisely what this module is and described the relationships between the values of the components and the function you care about. Now instead imagine what you can gain from reusing a buck design you can merely configure the target voltage and ripple of. Now imagine installing a servo drive the same way you might numpy.

Version controlling your designs using git means you can deeply validate and review changes a feature at a time, isolated from impacting others' work. It means you can detangle your organisation and collaborate on an unprecedented scale. We can forgo half-baked "releases" in favor of stamping a simple git-hash on our prototypes, providing an anchor off which to associate test data and expectations.

Implementing CI to test our work ensures both high-quality and compliance, all summarised in a green check mark, emboldening teams to target excellence.

🔍 Discover what people build

Browse and submit your modules at packages.atopile.io

最近版本更新:(数据更新于 2024-10-08 01:26:57)

2024-09-11 04:35:53 v0.2.64

2024-08-02 07:50:57 v0.2.63

2024-07-24 13:18:59 v0.2.62

2024-07-23 12:57:04 v0.2.61

2024-07-23 09:03:28 v0.2.60

2024-07-22 13:53:20 v0.2.59

2024-07-20 05:43:22 v0.2.58

2024-07-12 01:11:30 v0.2.57

2024-07-07 00:27:35 v0.2.56

2024-07-03 05:39:37 v0.2.55

主题(topics):

cad, eda, electronics, engineering, tools-and-automation

atopile/atopile同语言 Python最近更新仓库

2024-12-22 09:03:32 ultralytics/ultralytics

2024-12-21 13:26:40 notepad-plus-plus/nppPluginList

2024-12-21 11:42:53 XiaoMi/ha_xiaomi_home

2024-12-21 04:33:22 comfyanonymous/ComfyUI

2024-12-20 18:47:56 home-assistant/core

2024-12-20 15:41:40 jxxghp/MoviePilot