anas-sarkez/Arduino_Nano

A USB-C powered Arduino Nano-compatible development board with an ATmega328P microcontroller, three status LEDs, a reset button, and full pin breakout headers

Usage: To import and use the Arduino Nano component in a tscircuit project: 1. Import the component: ```tsx import ArduinoNano from "@tsci/anas-sarkez.Arduino_Nano" ``` 2. Use in a board layout: ```tsx export default () => ( <board> <ArduinoNano /> </board> ) ``` The component includes: - USB-C port - ATmega328P microcontroller - Power LEDs - Reset button - Pin headers - Predefined traces connecting pins You can customize its placement and additional connections as needed within the board layout.

Version
0.0.1
License
unset
Stars
4

index.ts

PCBPCB preview for index.ts
SchematicSchematic preview for index.ts
import { useRedLed } from "@tsci/seveibar.red-led"
import { usePushButton } from "@tsci/seveibar.push-button"
import { useUsbC } from "@tsci/seveibar.smd-usb-c"
import { fp } from "@tscircuit/footprinter"
const LeftPinrowLabels = [
  "TX1",
  "RX0",
  "RESET",
  "GND",
  "D2",
  "D3",
  "D4",
  "D5",
  "D6",
  "D7",
  "D8",
  "D9",
  "D10",
  "D11",
  "D12",
]
const RightPinrowLabels = [
  "VIN",
  "GND",
  "RST",
  "+5V",
  "A0",
  "A1",
  "A2",
  "A3",
  "A4",
  "A5",
  "A6",
  "A7",
  "AREF",
  "3V3",
  "D13",
]

const ChipPinLabels = {
  pin1: ["D3"],
  pin2: ["D4"],
  pin3: ["GND"],
  pin4: ["VCC"],
  pin5: ["A6"],
  pin6: ["A7"],
  pin7: ["A0"],
  pin8: ["A1"],
  pin9: ["A2"],
  pin10: ["A3"],
  pin11: ["A4"],
  pin12: ["A5"],
  pin13: ["D13"],
  pin14: ["D12"],
  pin15: ["D11"],
  pin16: ["D10"],
  pin17: ["D9"],
  pin18: ["D8"],
  pin19: ["RESET"],
  pin20: ["GND"],
  pin21: ["VIN"],
  pin22: ["D7"],
  pin23: ["D6"],
  pin24: ["D5"],
  pin25: ["D4"],
  pin26: ["D3"],
  pin27: ["D2"],
  pin28: ["D1", "TX"],
  pin29: ["D0", "RX"],
  pin30: ["RESET"],
  pin31: ["GND"],
  pin32: ["VCC"],
} as const
export default () => {
  const USBC = useUsbC("USBC")
  const Button = usePushButton("SW1")
  const RedLed = useRedLed("LED")

  return (
    <board height="43.18mm" width="18.54mm" autorouter="auto-cloud" >
      {/* USB-C port for power and communication */}
      <USBC pcbY={-16.5} />

      {/* Microcontroller (ATmega328P or similar) */}
      <chip
        manufacturerPartNumber="ATmega328P"
        name="U1"
        pinLabels={ChipPinLabels}
        schX={0}
        schY={8}
        pcbX={0}
        pcbY={-8}
        footprint="qfp32"
      />

      {/* Power LED indicator */}
      <RedLed
        name="led1"
        neg="net.GND"
        pcbY={13}
        pcbX={-5}
        schX={-15}
        schY={-6}
        pcbRotation={90}
        schRotation={"90deg"}
      />
      <RedLed
        name="led2"
        neg="net.GND"
        pcbY={13}
        pcbX={0}
        schX={-15}
        schY={-3}
        pcbRotation={90}
        schRotation={"90deg"}
      />
      <RedLed
        name="led3"
        neg="net.GND"
        pcbY={13}
        pcbX={5}
        schX={-15}
        schY={0}
        pcbRotation={90}
        schRotation={"90deg"}
      />
      {/* Reset button */}
      <Button pcbY={2} pin2=".R1 > .pos" pin3="net.VBUS" schX={-4} schY={0} />

      {/* Resistor (typically used in Arduino Nano for current limiting) */}
      <resistor
        name="R1"
        footprint="0603"
        resistance="1k"
        pcbY={8}
        pcbX={5}
        schX={-7}
        schY={-4}
        pcbRotation={90}
        supplierPartNumbers={{
          jlcpcb: ["C22548"],
        }}
      />
          <resistor
        name="R2"
        footprint="0603"
        resistance="1k"
        pcbY={8}
        pcbX={0}
        schX={-7}
        schY={-4}
        pcbRotation={90}
        supplierPartNumbers={{
          jlcpcb: ["C22548"],
        }}
      />
    <resistor
        name="R3"
        footprint="0603"
        resistance="1k"
        pcbY={8}
        pcbX={-5}
        schX={-7}
        schY={-4}
        pcbRotation={90}
        supplierPartNumbers={{
          jlcpcb: ["C22548"],
        }}
      />
      <platedhole
        name="top_left"
        pcbX={8}
        pcbY={20}
        holeDiameter={1.78}
        shape="circle"
        outerDiameter={1.88}
      />
      <platedhole
        name="top_right"
        pcbX={-8}
        pcbY={20}
        holeDiameter={1.78}
        shape="circle"
        outerDiameter={1.88}
      />
      <platedhole
        name="bottom_left"
        pcbX={8}
        pcbY={-20}
        holeDiameter={1.78}
        shape="circle"
        outerDiameter={1.88}
      />
      <platedhole
        name="bottom_right"
        pcbX={-8}
        pcbY={-20}
        holeDiameter={1.78}
        shape="circle"
        outerDiameter={1.88}
      />

      {/* Pin headers for I/O */}
      <pinheader
        pinCount={15}
        pinLabels={RightPinrowLabels}
        facingDirection="right"
        schX={-7}
        schY={8}
        pcbX={8}
        pcbY={0}
        pcbRotation={270}
        name="JP_right"
        footprint="pinrow15_p2.54mm"
      />
      <pinheader
        pinCount={15}
        pinLabels={LeftPinrowLabels}
        facingDirection="left"
        schX={7}
        schY={8}
        pcbX={-8}
        pcbY={0}
        pcbRotation={270}
        name="JP_left"
        footprint="pinrow15_p2.54mm"
      />
      <pinheader
        pinCount={3}
        name="top"
        pcbY={20.5}
        pcbX={0}
        schX={6}
        schY={-5}
        footprint="pinrow3"
      />
      <pinheader
        pinCount={3}
        name="top2"
        pcbY={18.5}
        pcbX={0}
        schX={4}
        schY={-5}
        footprint="pinrow3"
      />

      {/* Traces to create Arduino Nano */}
      {/* <trace from=".JP_left .10" to=".U1 .pin25" /> */}
      <trace from=".JP_left .11" to=".U1 .pin26" />
      <trace from=".JP_left .12" to=".U1 .pin27" />
      <trace from=".JP_left .14" to=".U1 .pin30" />
      <trace from=".JP_left .5" to=".U1 .pin17" />
      <trace from=".JP_left .15" to=".U1 .pin28" />
      <trace from=".JP_right .1" to=".U1 .pin21" />
      <trace from=".JP_right .2" to=".U1 .pin20" />
      <trace from=".JP_right .3" to=".U1 .pin19" />
      <trace from=".JP_right .4" to=".U1 .pin4" />
      <trace from=".JP_right .5" to=".U1 .pin32" />
      <trace from=".JP_right .6" to=".U1 .pin31" />
      <trace from=".JP_right .7" to=".U1 .pin5" />
      <trace from=".JP_left .9" to=".U1 .pin24" />
      <trace from=".JP_right .8" to=".U1 .pin6" />
      <trace from=".JP_right .9" to=".U1 .pin7" />
      <trace from=".JP_left .4" to=".U1 .pin16" />
      <trace from=".JP_right .10" to=".U1 .pin8" />
      <trace from=".JP_right .11" to=".U1 .pin9" />
      <trace from=".JP_right .12" to=".U1 .pin10" />
      <trace from=".JP_right .13" to=".U1 .pin11" />
      <trace from=".JP_left .2" to=".U1 .pin14" />
      <trace from=".JP_left .13" to=".U1 .pin3" /> 
      <trace from=".JP_left .1" to=".U1 .pin13" />
      <trace from=".JP_left .6" to=".U1 .pin18" />
      <trace from=".JP_right .14" to=".U1 .pin12" />
     <trace from=".JP_left .8" to=".U1 .pin23" />
     <trace from=".JP_left .7" to=".U1 .pin22" />
     <trace from=".JP_left .3" to=".U1 .pin15" />
    </board>
  )
}