•  


GitHub - atopile/atopile: Design circuit boards with code! ? Get software-like design reuse ??, validation, version control and collaboration in hardware; starting with electronics ??
Skip to content

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

License

Notifications You must be signed in to change notification settings

atopile/atopile

Folders and files

Name Name
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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


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.3
V
 +
/
-
 2
%

    v_out
 =
 1.8
V
 +
/
-
 5
%

    i_q
 =
 1
mA
 +
/
-
 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.3
volt
 +
/
-
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/

Most Basic Installation

atopile requires python3.11 or later, which you can install using your package manager or from python.org .

Then just pipx install atopile and you're good to go!

? 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

- "漢字路" 한글한자자동변환 서비스는 교육부 고전문헌국역지원사업의 지원으로 구축되었습니다.
- "漢字路" 한글한자자동변환 서비스는 전통문화연구회 "울산대학교한국어처리연구실 옥철영(IT융합전공)교수팀"에서 개발한 한글한자자동변환기를 바탕하여 지속적으로 공동 연구 개발하고 있는 서비스입니다.
- 현재 고유명사(인명, 지명등)을 비롯한 여러 변환오류가 있으며 이를 해결하고자 많은 연구 개발을 진행하고자 하고 있습니다. 이를 인지하시고 다른 곳에서 인용시 한자 변환 결과를 한번 더 검토하시고 사용해 주시기 바랍니다.
- 변환오류 및 건의,문의사항은 juntong@juntong.or.kr로 메일로 보내주시면 감사하겠습니다. .
Copyright ⓒ 2020 By '전통문화연구회(傳統文化硏究會)' All Rights reserved.
 한국   대만   중국   일본