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
PCB
Schematic
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>
)
}