Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
OnBoard – A New Grants Program to Fund $100 in PCB Costs for Teenagers (hackclub.com)
72 points by zachlatta on June 13, 2023 | hide | past | favorite | 18 comments


If you qualify for this, or know someone that would - kicad is a great tool to learn, and probably the defacto standard for designing pcb's now that EAGLE has been discontinued.

But, I want to give a shoutout to easyeda.com. You can export straight to jlcpcb and it has parts integration with their preferred supplier lcsc.com so that you can do turnkey assembled boards from jlcpcb. It gets really interesting once you start designing with smaller surface mount components that might be too hard to solder at home.


I haven't used EasyEDA, but I've seen many schematics built in EasyEDA and I'm not impressed.

Rather than having a carefully hand-built symbols library, EasyEDA seems to have just autogenerated symbols, where the pins are all in order from 1 to n. This is not good for schematic readability & fails to teach folks good schematic layout conventions.

Poor schematic quality could be because EasyEDA is mostly used by noobs, but I think it's worth it for even noobs to use KiCad. It's not too hard to export the files JLCPCB needs.


I Found easyeda very clunky. Chinese error messages everywhere.

And you cannot export your designs.

I still used it for a project, because the integration with jlcpcb is so smooth.


The effect of holding a circuit board that you designed in your hands is priceless and inspirational.


I took a basics electronics course in high school and designed a simple power supply, and this is absolutely true.

Getting code to compile is cool, but building something physical is special.


I'm writing a series of articles on designing a microcontroller board (with an ATmega328P) from scratch [1]. It's a totally different experience from just breadboarding.

Some people are making NFC business cards, USB Hubs, and even smartwatches!

[1] https://github.com/hackclub/hackclub/pull/1852


Nice, have you thought about doing the same but with a RP2040? JLCPCB have it as an extended part now, so you can have it done with their pcb assembly service. The memory adds another $0.50-$1, so overall it might be ~$1 or $2 more, but I know 328Ps were(are?) hard to come by during the chip shortage.

One of the huge advantages is having the builtin bootloader and USB phy and being able to run with micropython vs having to do stuff in C.

IIRC most of the 328P based boards typically use a separate WCH chip for USB.


I don't quite get the appeal of chips without WiFi or Bluetooth these days. I can't think of anything I want to do that wouldn't be cooler with connectivity.

Mostly what I do now is just make a carrier board for a USB-C ESP32 module. Yeah, I could probably do it myself (If I copied the reference design exactly for the RF stuff, and wasn't hand soldering QFNs!), but it becomes kind of a chore after the first time.

Maybe it's different if you're really good at soldering, I've heard it described as meditative for some, but I'm usually ready for a nap after that much precision work!


I wouldn't want a USB-based Picoprobe debugger or logic analyzer to depend on (or even use?) wireless connectivity. And for a low-latency game controller adapter which translates between wired NES/SNES, N64/GC, and/or USB protocols, converting a regular controller to a Bluetooth controller is quite an invasive change which requires adding batteries to the device, and increases input latency/unreliability when you're using a wireless connection, so many adapters don't bother with networking.

In terms of whether WiFi or Bluetooth is a wise idea (as opposed to being cool or useful), I find that wireless/networked protocols are easier to get wrong than simpler configuration. I have a video scaler (GBS-Control) which exposes a network-based interface over the ESP8266's Wi-Fi adapter. The IP address it picks up in my LAN is random, and though you can visit gbscontrol.local to resolve the URL using mDNS, this is unsupported on older versions of Android. And in certain video modes, the video circuitry interferes with the wireless signal, causing network requests to stall indefinitely.

In my observation, networking is especially prone to race conditions. If I toggle my power strip and power on both the ESP8266 and my router at the same time, the ESP8266 boots before the router, fails to connect to the router (remembered by PersWiFiManager), and decides to expose its own access point and never reconnect to the existing router afterwards. Worst of all, the web server used runs networking code in the yield() callback, leading it to handle network requests in the middle of I2C communication call stacks and possibly overflow the stack. It's also known to corrupt heap memory when concurrent HTTP requests occur (https://github.com/me-no-dev/ESPAsyncWebServer/issues/324 was closed by a bot without a solution). I found an concurrency footgun where the server allows HTTP callbacks to ask the server to reply with a SPIFFS file handle, but you can reopen and write to the file in subsequent code after the HTTP callback finishes, but before the server finishes streaming data from the file handle. This results in corrupted data being sent to the HTTP client.

I also heard that the Pinecil V2 released with a Bluetooth Low Energy compatible microcontroller, but the wireless-enabled firmware apparently malfunctions on certain irons and causes them to fail to boot (https://github.com/Ralim/IronOS/issues/1661), though this may be fixed over time.


Pinecil is one of the few things I'm kind of Meh on the Bluetooth part, once they added USB-PD and safety auto shutoff, it seems like there's not much to add that wouldn't cost money or size.

I wouldn't mind a wireless logic analyzer, if it had good battery life. Being able to use it on a tablet easily while charging without dongles so you had a second screen could be cool.

For a game controller adapter, I'd definitely prefer Bluetooth, because the performance is good enough for a casual gamer and it's pretty convenient. It doesn't necessarily even have to involve batteries, BLE is still useful with wired power, if your device doesn't have a lot of ports and you've got more spare chargers than spare hubs.

Android should have supported mDNS like, 10 years ago, but slowly we are getting to a saner place.

Network programming definitely is 10x harder than non-network programming. It absolutely will screw up and ruin your day if you don't assume all packets can be lost, all connections can be dropped, IP addresses can change, MACs can change, there can be 500ms of latency for no reason, you can get requests from multiple devices, connections can be closed uncleanly, devices can show up in any order, other devices can mysteriously forget connection info, IP conflicts absolutely will happen if you have manual static IPs and aren't really careful, there will be random code in frameworks to hammer flash memory caching credentials on every boot in Arduino, etc. But hey, it's still easier than soldering and 0603!

A lot of problems for anything remotely hobby level can be solved with heavy handed locks though. Like, don't touch the filesystem except under a lock, and use the same lock for everything, and hold the lock for the whole HTTP request, and only try to get more clever in specific places that need it. It might really suck and be slow, but at least it might be correct.

Network is a lot of hassle but it's also a lot of potential. Especially for configuration and debugging where it's ok if it's not 100% reliable, and for things that inherently tolerate a bit of loss, like telemetry.


Depends on use case, for me at least, I have used RP2040s as secondary microcontrollers for something like a CM4, where I want something that is closer to real time, or if it is a control loop.


Yes absolutely! I love the RP2040 and have used dev boards for several projects.

My goal with this intro is to make something hand-solderable though, which is why I'm using QFP32, 0805, etc. In addition, this is Arduino Nano compatible to ease the transition. I'm using a CH340N for USB. An unfortunate consequence of this is that you need another MCU board to flash the bootloader first.

TBH ATmega328Ps are surprisingly expensive ($2.x) for their functionality.

Especially with the smartwatch, we are considering using an ESP32 WROOM/MINI module and will write about that too, eventually.


You should look at atiny10s too, they have a 6 pin and through hole version and you can use them without a crystal.

I have thought about making a design for one and doing a series where we make an assembler in python, where it's an exercise in writing a parser to output the binary assembly for use in a simple micro like the atiny. They have limited registers and instruction set, so would be a good way to help people understand what is happening.


Very cool initiative, i have developed inkscape extension for making creative pcb art, you might be interested in: https://github.com/badgeek/svg2shenzhen its a combination of inskacpe and kicad, so everything is open source


This is really cool! This would have been amazing when I was a teenager. The donate link is https://bank.hackclub.com/donations/start/hq


Every $100 donated directly funds a PCB project by a teenager!

Please donate to this link for the money to go into the OnBoard fund directly: https://bank.hackclub.com/donations/start/onboard


I hope it includes shipping


luckily, the slowest shipping option from jlcpcb are both affordable and reasonable. It will just take a few weeks to come.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: