Skip to content

Commit

Permalink
Merge branch 'main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
Mochi-iOS authored Aug 27, 2024
2 parents f51d1cf + b755527 commit ab9a238
Show file tree
Hide file tree
Showing 1,549 changed files with 4,202,249 additions and 61 deletions.
5 changes: 4 additions & 1 deletion .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
## Submission Checklist:

<!--To check the checkboxes, simply replace the empty space in the brackets with a captial X, like this: [ ] becomes [X]-->

- [ ] I am a current high school, middle school, or home schooled student.
- [ ] I am 18 or under
- [ ] I have filled out the [verification form](https://airtable.com/app4Bs8Tjwvk5qcD4/pagxECjJZOgvKVnLd/form)
Expand All @@ -15,9 +17,10 @@
- [ ] If outside the US I've checked that I can afford the customs charges in my country (which isn't covered by the grant)

- [ ] (Optional) This project is from a tutorial[^1].
- [ ] (Optional) This project is for [the Trail](https://trail.hackclub.com/).
- [ ] (Optional) This project is for OnBoard Live[^2].
- [ ] (Optional) I'm in a FIRST (FRC, FTC, FLL, etc.) team. The number is: ____

[^1]: Projects from a tutorial are 100% fine! We just want to ask so we can count how people are using tutorials.
[^2]: OnBoard Live is a special version of OnBoard where you can earn more money for designing advanced boards. Check out the #onboard-live channel on [our Slack](https://hackclub.com/slack/?event=onboard)!

<!-- -Submission- -->
24 changes: 24 additions & 0 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Invalid label: If there are changes in /projects AND other top-level directories.
Invalid:
- all:
- changed-files:
- 'projects/**'
- '!projects/**'

# Submission label: Apply when there are changes ONLY within /projects.
Submission:
- all:
- changed-files:
- 'projects/**'
- any:
- changed-files:
- '!*/**'

# Dev label: Apply when there are changes ONLY outside /projects.
Dev:
- all:
- changed-files:
- '*'
- any:
- changed-files:
- '!projects/**'
45 changes: 45 additions & 0 deletions .github/workflows/organize.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Cleanup Pull Requests
on: pull_request_target

jobs:
stalled-tickets:
runs-on: ubuntu-latest
permissions:
pull-requests: write
issues: write
actions: write
steps:
- name: Close Stale Issues
uses: actions/[email protected]
with:
stale-pr-message: >
Hi, if you need any assistance, please don't hesitate to ask here or in #electronics on Slack. This pull request is being marked as 'Stalled' for now and will be closed in 3 days if there is no activity.
close-pr-message: >
This pull request has been inactive for some time and has therefore been closed. Feel free to create a new one when you're ready.
# The number of days old an issue or a pull request can be before marking it stale. Set to -1 to never mark issues or pull requests as stale automatically.
days-before-issue-stale: 30
days-before-pr-stale: 7
# The number of days to wait to close an issue or a pull request after it being marked stale. Set to -1 to never close stale issues or pull requests.
days-before-close: 3
# The number of days to wait to close an issue after it being marked stale. Set to -1 to never close stale issues. Override "days-before-close" option regarding only the issues.
days-before-issue-close: -1
# The label to apply when an issue is stale.
stale-issue-label: "Stalled"
# The labels that mean an issue is exempt from being marked stale. Separate multiple labels with commas (eg. "label1,label2").
exempt-issue-labels: "Dev"
exempt-pr-labels: "Dev"
# The label to apply when a pull request is stale.
stale-pr-label: "Stalled"
# Only pull requests with at least one of these labels are checked if stale. Defaults to `` (disabled) and can be a comma-separated list of labels. Override "any-of-labels" option regarding only the pull requests.
any-of-pr-labels: "Submission"
# include-only-assigned: true
labeler:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
- uses: actions/labeler@v5
with:
sync-labels: true
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
.vscode
req_check.sh
.DS_Store
.DS_Store
.idea
31 changes: 21 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ _If you get stuck on these tutorials, or want more example projects to learn fro

### 3. Upload to a Vendor and Take a Screenshot

Upload your Gerber files to JLCPCB.com and add them to you cart. JLCPCB is the default PCB manufacturer, but you can shop around [^5] if there's a specific one you want to use [^6]. Once completed, take a screenshot with all the final costs and shipping!
Upload your Gerber files to [JLCPCB.com](https://jlcpcb.com/) and add them to your cart. JLCPCB is the default PCB manufacturer, but you can shop around [^5] if there's a specific one you want to use [^6]. Ensure you complete the checkout process by entering your address and selecting a shipping method. Once completed, take a screenshot with all the final costs and shipping!
> If you're curious what all the settings are about or how to order for assembly, check out our [`ordering_from_JLCPCB.md`](./docs/ordering_from_JLCPCB.md) doc!
> To avoid excess shipping fees or customs, check out [`the Shipping Tips`](./community/shipping.md) doc!
Expand Down Expand Up @@ -96,16 +96,27 @@ With your README filled out, head over to add files to begin uploading your Gerb

In all, you should have the following files under your project folder:
- [ ] `README.md`: A filled out [`TEMPLATE.md`](./projects/!Template/TEMPLATE.md?plain=1), renamed to `README.md`
- [ ] `cart.png`: A screenshot of your order details
- [ ] `cart.png`: A [screenshot](./docs/images/ordering/cart.png) of your order details
- [ ] `gerber.zip`: This should be the file that you send off to the vendor.
- [ ] `schematic.pdf`: Export the schematic from your EDA program as a PDF.
- Go to "File > Export > PDF" in EasyEDA's Schematic tab for this.
- Go to "File > Export > PDF" **in EasyEDA's Schematic tab** for this.
- [ ] `src/`: Make a folder called `src` and Whatever format your designer outputs should be included.
- For EasyEDA, you need to File > Export > EasyEDA two JSON files - one from the schematic tab and one from the PCB tab. <img src="https://github.com/hackclub/OnBoard/assets/32671690/9f63f922-3009-4c40-af0c-b6239cf2074f" width=500/>
- Or `name.kicad_pro`, `name_kicad_sch`, and `name.kicad_pcb` for KiCAD
- Or `design.json`, `design.sch`, `design.brd`, etc.
- For EasyEDA, you need to File > Export > EasyEDA two JSON files - one from the schematic tab and one from the PCB tab.

<p align="center">
<img src="https://github.com/hackclub/OnBoard/assets/32671690/9f63f922-3009-4c40-af0c-b6239cf2074f" width=500/>
</p>

- *Optionally*, for EasyEDA STD, export a 3D Model as `.obj` as save it to the `/src` folder
- Using **KiCad**? See [KiCad for Beginners](docs/KiCad_Beginner_Guide.md) for instructions on how to submit.
- Or `design.json`, `design.sch`, `design.brd`, etc for other PCB Editors.

Ensure your file names are exactly the same as above.

Your PR should have a structure like this:

![ix7t2nJ](https://github.com/hackclub/OnBoard/assets/28641114/5f8bac7f-4a91-4e2c-be67-c002025307e0)

Make sure your file names are exactly the same as above.
If you have all the above, you're done with this step!

### 6. Create a PR!
Expand All @@ -124,18 +135,18 @@ Once you submit your PR, it needs two approvals:
- One verifying your high school enrollment documents, from HCB.
- Another one from the engineering team, checking that your design follows the grant requirements.

These reviews typically take 24-48 business hours if everything is correct. Then we merge your PR!
These reviews typically take 24-48 business hours, and if everything is correct, we'll merge your pull request!

After your PR gets merged, it takes up to 24 business hours for you to receive an email from HCB with a virtual credit card. Make sure to check your spam folder. Then, you can order your board!

### 8. Ship it!

Post photos of your board in [`#onboard`](https://hackclub.slack.com/archives/C056AMWSFKJ)! We can't wait to see what you make!
Post photos of your board in [`#electronics`](https://hackclub.slack.com/archives/C056AMWSFKJ)! We can't wait to see what you make!

![John sharing PCB](docs/images/directions/john-sharing-pcb.png)

## Example Projects

- [PCB Business Card with NFC](https://jams.hackclub.com/jam/hacker-card)
- [PCB Business Card with NFC, "Hackercard"](https://jams.hackclub.com/jam/hacker-card)
- [Build a USB Hub](https://jams.hackclub.com/batch/usb-hub)
- [Make a Digital Level](https://jams.hackclub.com/batch/sparkletilt-pcb)
9 changes: 5 additions & 4 deletions community/TIPS.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
# OnBoard Tips
# OnBoard Tips - By The Students

Here are a few tips to make your OnBoard experience as smooth as possible! A collection of tips from OnBoard participants!

Here are a few tips to make your OnBoard experience as smooth as possible!

---

1. When HQ gives you your credit card and you pay for your PCB, make sure to select a coupon at checkout! This way you will have more money to build more PCBs in the future.
1. When recieving your grant and you're ready to pay for your PCB, make sure to select a coupon at checkout! This way you will have more money to build more PCBs in the future.
2. Try to buy multiple designs at the same time to save on shipping!
3. Don't forget to submit your invoice/receipt to Hack Club bank after paying!!!!
4. Select the "assemble" option when ordering! This way everything will come assembled.
5. Use Lead-free HASL!
6. When ordering, you may get an alert that some parts "unselected". This can be ignored.
6. When ordering, you may get an alert that some parts "unselected". This usually can be ignored.
7. You can design as many boards as you want, as long as the total cost doesn't go over $100.
8. While generating your gerber files in EasyEDA, always chose the One-Click Order option to get a $8 discount. It's more efficient and hassle free, generating and submitting the BOM, Pick&Place, and Gerber files automatically. [More information ℹ️.](https://support.jlcpcb.com/article/217-special-offer-get-8-off-coupon-once-a-month-for-easyeda-project)
10 changes: 6 additions & 4 deletions community/shipping.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
# Shipping Tips

How to minimize your PCB shipping costs so you can make the most out of your OnBoard grant.
If you have any general tips or info for your country, please let us know.
How to minimize your PCB shipping costs so you can make the most out of your OnBoard grant. If you have any general tips or info for your country, please create a issue and let us know.

## General

- Sometimes selecting a thinner PCB (going from 1.6mm to 1.0mm) can make shipping cheaper by reducing the board weight. Try different options and see if the cost increase of the PCB and decrease of shipping cancel out.
- Choose the **"Global Direct Standard Line"** if available. While this shipping method is although rare to get, it can be very cost-effective and usually has no customs fees. One downside is that this shipping method is the slowest of them all and will often will take 2 weeks to arrive.

- Sometimes selecting a **thinner PCB** (going from 1.6mm to 1.0mm) can make shipping cheaper by reducing the board weight. Try different options and see if the cost increase of the PCB and decrease of shipping cancel out. Alternatively, some manufacturers charge extra for thicknesses other than 1.6mm - if your assembly is costing more than expected, this could be the reason.

- If your board allows it, removing or replacing heavy assembled components can help reduce shipping costs.

## United States

- From JLCPCB, use Global Direct Standard Line for the cheapest shipping, although it might take a week or two to arrive.
- For small boards, when you don't want assembly, OSHPark could be cheaper. Their boards are more expensive but shipping is free.

## India
Expand Down
15 changes: 0 additions & 15 deletions community/tips-by-the-students.md

This file was deleted.

81 changes: 81 additions & 0 deletions docs/KiCad_Beginner_Guide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
## Tagline
Have you already shipped a couple PCBs and want to challange yourself and use something a little more.. ***"pro"***; [KiCad](https://www.kicad.org/) is here for you! KiCad is another PCB CAD software like EasyEDA but with a ton more features and tools to perfect your craft.

## KiCad Installation
KiCad is available on Windows, Linux and MacOS and is a downloadable software rather than something that runs in your browser like EasyEDA. Download it [here](https://www.kicad.org/download/), selecting your operating system and download location.

## Prerequisites
### Plugins (Optional)
You might also want to install these two plugins the plugin manager that I find really useful,

<p align="center">
<img src="images/kicad/plugins.png" alt="Fabrication Toolkit & FreeRouting plugin"/>
</p>

#### EasyEDA2KiCad (Optional)
One small setback to using KiCad is you have to fetch all the symbols,footprints and models yourself rather than EasyEDA automatically finding and importing them for you to use. Not to worry though, some smart group (Wokwi) decided to make a script to port these files to KiCad; [EasyEDA2KiCad](https://github.com/uPesy/easyeda2kicad.py).

You'll need to have Python installed and functional, perferably the latest version, then you can install it with `pip install easyeda2kicad`.

To confirm it was install correct, simply type `easyeda2kicad` in your terminal.

#### Linking Paths
Ensure KICad knows where EasyEDA2KiCad is downloading the files to, follow this [guide](https://github.com/uPesy/easyeda2kicad.py?tab=readme-ov-file#-add-libraries-in-kicad) on how to set that up.

***Windows Troubleshooting***<br>

---
You might have to [tinker around](https://graycode.ie/blog/how-to-add-python-pip-to-path/) with system path variables if you're on Windows. Ask around on the Slack for assistance.

**Linux Troubleshooting**<br>

---

If you're on Linux and getting a `Externally Managed Enviornment` error when using `pip install`, you might want to try out [PipX](https://github.com/pypa/pipx).

### Introduction
After launching KiCad and launching it, you should be greeted by a menu similar to this,
![KiCad Menu](images/kicad/menu.png)
You can start by creating a project by pressing File > New Project and giving it a name and save location. That'll create 3 files, the `.kicad_pro` project file, a `kicad.sch` which contains your electrical schematic and `.kicad.pcb` which is your PCB layout similar to EasyEDA's `pcb.json` file.

<br>

<p align="center">
<img src="images/kicad/files.png" alt="KiCad Project Files"/>
</p>

You can open your `.kicad_sch` file, this will be the first file you'll be using. Looks a little scary eh? Don't be concerned, it just has a lot more features than EasyEDA but has all the simple tools that you're used to still there.

You can place basic components like resistors, capacitors and diodes using KiCad's built-in symbol library. This is good for when you're just starting you're project and you want to quickly iterate your design without fine-tuned values of components. Add a resistor, press `ESC` then double click on it and give it a `Value`,
<p align="center">
<img src="images/kicad/resistor.png" alt="Resistor_Value" width=60%/>
</p>
Try this out with a few other symbols and then connect them together with the "Add Wire" tool on the right of the screen,
<p align="left" class="resistor">
<img src="images/kicad/add_wire.png" alt="Adding a wire" width=20%/>
</p>
<style>
.resistor{
padding-left: 80px
}
</style>

#### Tip
Use [**Labels**](https://www.baldengineer.com/kicad-bus-labels-and-global-labels.html) and [**Power Symbols**](https://klc.kicad.org/symbol/s7/s7.1/). These are very underused in beginner KiCad projects and while they don't serve much functional perpose they make is so much easier to review and understand your design.

## Tutorial: The Hackercard Jam
We'll start the tutorial by making a simple NFC PCB using the [Hackcard Jam](https://jams.hackclub.com/jam/hacker-card) by Maggie. This tutorial assumes you've already completed this jam but with EasyEDA.

We can start by importing the necessary parts into KiCad's Symbol and Footprint librarys by using the following EasyEDA2KiCad command in a terminal,
```bash
easyeda2kicad --lcsc_id C710403 --full
```
*replace "C710403" with the actual LCSC part number found on either [JLCPCB Parts](https://jlcpcb.com/partdetail/NxpSemicon-NT3H2111W0FHKH/C710403) or [LCSC](https://www.lcsc.com/product-detail/RFID-ICs_NXP-Semicon-NT3H2111W0FHKH_C710403.html)*

Next, in KiCad, press Place, Symbol and enter the LCSC part number for the part. Do this for every component in the jam. For the antenna this may be a little more tricky, first place the `Antenna_Loop` symbol from KiCad's default library. Lastly, to get the footprint, download the provided `.kicad_mod` [footprint file](docs/images/kicad/25X48MM_NFC_ANTENNA.kicad_mod), then in the KiCad main menu, click footprint editor, open the kicard_mod file and then File > Save As and save it to your easyeda2kicad folder.

Return to your schematic and double-click on the antenna. Next, click the three-books icon and search for the footprint named 25X48MM_NFC_ANTENNA. You should see it appear, displaying the correct antenna footprint. It should look something like this:
![Completed_Schematic](images/kicad/schematic.png)

## Submitting Your KiCad Project
Take a look at [Submitting To KiCad](/submitting-kicad.md) for instructions on how to submit your files.
1 change: 1 addition & 0 deletions docs/design_resources.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Never designed a PCB before? You're in the right place! The OnBoard community ha
- GreatScott!:
- [Electronic Basics #14: Capacitors](https://www.youtube.com/watch?v=otQGdPLyF3w&list=PLAROrg3NQn7cyu01HpOv5BWo217XWBZu0&index=42)
- [Electronic Basics #16: Resistors](https://www.youtube.com/watch?v=7w5I-KbJ1Sg&list=PLAROrg3NQn7cyu01HpOv5BWo217XWBZu0&index=40)
- ElectroBOOM: [Electronics](https://youtube.com/playlist?list=PLr_CZLgMkHeXc_45uIgYutY0m6fqmI5du&si=WIVFAfIjkPKWoWJn)


## PCB Tutorials
Expand Down
Loading

0 comments on commit ab9a238

Please sign in to comment.