SwagBadge2021 Status, blog and timeline
Status: Week of 2020-11-01
The PCBs arrived on Sunday. What a lovely surprise! Yay! ... Except they have some bad wiring which was missed despite a bunch of review. Boo!
What happened? On the OLEDs, VCC and Ground pins were swapped. When OLEDs are soldered in this causes a direct short from Lolin32-Lite VCC and Ground which heats up the Lolin32-Lite regulator and then nothing much works. @jon tried patching (swapping) the OLED pin pads and this appears to work, so we can rescue this set of boards if we have to, but doing so to every single board doubles our build time and introduces another round of handling and potential error.
Fortunately! Our past selves knew that hardware is hard to get perfectly right first time and we allowed enough time - and budget - to do another round of PCB ordering with whatever fixes we need to squeeze in.
Status: Week of 2020-10-25
Now that we have all the Lolin32 microprocessors, we need to put a fresh copy of micropython on there (this means we know what version is on every badge, and that there's no malware on board). We also need to put our software on there (the Aiko framework and the Swagbadge code). It would be more efficient to do everything at once, but Jon and Andy agreed it would be sensible to pay a bit more time up front double-handling the ESP32s and flash micropython (MP) now, and then handle them all again later when the rest of the software is ready.
- This lets us test if the Lolins are functional, nice and early, when we have time to do something about it.
- It'll save us some time later on when we'll be hitting the deadline prior to shipping.
We need 300 badges. Jon allowed for a 10% failure rate. So we have 330. They take about 5 minutes each to flash. It's a big job!
So far Jon has flashed MP to 35 Lolins successfully, plus one failure. This is about 10% of the total number with only a single failure, so already it's paid dividends in giving us some confidence that the hardware is (mostly) good. But the failure is also really interesting!
The bad one has been reworked at the factory, but unsuccessfully. You can see two solder bridges on the bottom pads. A solder bridge is where two components or circuits are joined together by solder, where they shouldn't be. A pad is the bit on the component used to connect the component to the board, via solder.
This is very interesting because it shows two things. First, they obviously do some form of quality control at the factory, otherwise they wouldn't have detected that this board needed rework in the first place. That's reassuring! Second, after the rework was done, it went in the "good" pile and was shipped to a customer, even though it still didn't work. That's bad! After taking the photo, Jon touched the bridges with a soldering iron (which removed the excess solder and "de-bridged" the circuit) and now the Lolin works fine. (They were so close to fixing it, but didn't quite get there. Strange.) Odd ones like these get set aside and kept as spares. They won't go into the general pool to go on a SwagBadge.
The PCBs have left Shenzhen and are finally enroute. We've nearly DDOS'd the DHL tracking page by obsessively clicking refresh, but they're meant to arrive in our hands (and hearts) by the end of next week. Then begins the long labour of love:
- Testing the boards
- Soldering on all the components (switches, screens, microcontroller)
- Retesting once they're assembled
SAO thoughts continue to evolve, with ideas ranging from madcap to enlightened genius turning up.
- Game controller
- Googly eye jiggler
Andrew has been turning his keen eyed skills into developing some of his ideas and you can get a sense of his works-in-progress on his PancakeLegend SAO git.
On the software side, Andy has been driving most of the work on the framework, exploring a lot of ways forwards so that the badges have the greatest utility to the most people... within the constraints of the footprint of an embedded style of device. Our set of tasks in the coming months encompasses:
- Stand up a wireless AP for wifi config if the device can't find anything to connect to on boot
- Give the devices the capacity to upgrade their framework upon request (this lets us continue to work on the framework in the years to come, without everyone having to learn how to manually do it themselves)
- A services framework in Aiko to allow devices to discover each other, and do so securely without exposing network traffic to the casual or malicious onlooker, or even to expose enough metadata about the traffic that who/when are communication could be inferred.
- A discussion around key signing: let people set up their own keys or revoke and update keys, or exchange keys to people who have made their own dagbadge.
- Code to support adding SAOs to any of the spots on the board without having to reconfigure a whole bunch of pin assignments.
- A variety of example applications and documentation to let people copy and embellish to bring their own magnificent ideas to life.
Our ideas for the community continue to grow and we hope to be able to invite you all to join us in early November:
- We're planning on setting up a gitter (or equivalent) attached to a consolidated git repo that contains all the hardware schematics, the framework and sample applications.
- Get y'all involved!
- Have an idea to build an SAO but don't know how? We'll hook you up with people who know how to build a SAO and are enthusiastic about seeing your idea become a reality.
- Know how to build SAOs but aren't sure what would be good? We'll find you some people who have ideas.
- Want to write neat software to make the badge do something?
- Built a badge/have a badge from another event and looking for a community to help you understand and extend it?
- Let's all stay connected, help each other out, and grow our expertise! It is, after all, the very essence of open hardware!
... We do have dreams of carrying these extensible badges forward to the years to come. They have so much potential as gaming devices, as communication devices, as environment sensors, as lolly rockets, and as carriers for heaps of shiny blinking leds!
2048 grams of OLEDs arrived. The PCBs are being fabricated, their soldermask is going on and we expect they'll be finished construction by the time this post goes to air, and will hopefully be sent to shipping early next week.
Since we sent the PCBs to the factory to be made, we've learned more about capacitive touch components and realise that we could have done a better job with what's on the board. It turns out it takes more than a week to learn everything there is to know about a new kind of component! Nonetheless, what we have provided will still work just great for plenty of purposes.
Because technology doesn't operate in a culture-free vacuum, we had a chat amongst the team about where we chose to have the PCBs fabricated. The factory of choice this time was JLC which we've used before. Here's a tour of their factory! Jon and Andy have visited it and others like it in person a few years ago, lucky enough to have attended a maker's tour of factories in Shenzhen. There's a series of videos on the tour to get a taste of what they saw.
Think building your own PCB is too hard? Think again! If you plan on building a custom SAO you'll want to learn how. The internet provides once again, with a video on how to build your own, but we plan to gather up some good resources as part of building out the Swagbadge so you can refer back to it in the future.
On the software front, we've been fixing bugs in the framework, discussing security around how people can get two or more badges communicating (or just an MQTT client talking to a badge), and our hopes and dreams for getting software and hardware interoperating in a modular way, thereby reducing the barriers that would otherwise stop people having fun with it.
Phew! The OLED screens are enroute as are the Lolin ESP32 microprocessors. The Chinese national holiday added a delay that had us all nervously refreshing the shipment tracking page. The PCB design is being finalised today and we expect to send that order off tomorrow. We hope this will give us a narrow window for a second run if they come back faulty in some way and still meet our overall shipping deadline.
This week has mostly been about making sure we had the design and components and layout on the PCB solid to meet our goals of something that would
- be useful right at the start without any additional components
- be elegant to look at
- function as a badge
- have the SAO extension points are in useful locations and pointing in useful directions.
- have space to include the important logos for the conference!
If you'd like to hear more about the PCB design, one of our team, the delightful Jon Oxer, runs a livestream most Sunday mornings. His latest episode talks about the swagbadge from about 34 minutes in.
On the software front, we're starting to think about what we want the badge to support from the moment you switch it on. (Including how you'll be able to configure it for your network). In coming weeks we'll talk about how you, our community, can get involved in the software side as well as the hardware side.
Project approved and announced ... #swagbadge hardware design underway ... #swagbadge major parts ordered ... #dagbadge BoM not yet finalized ... Core team (mostly) assembled and ready to start building the community ... SAO hardware community development not yet commenced (but ideas are brewing) ... #swagbadge firmware development is still flying under-the-radar !
Note: Whilst the #swagbadge major parts have been ordered (330x ESP32 microcontrollers and 660x OLED screens), we are already sweating on shipping delays !
Recommendations for those who can't wait to get started
- Play with microPython on-line: Select peripheral "I2C LCD", choose demo "I2C LCD" and press "Run script"
- Play with microPython on Unix: See section "The Unix version"
- Read up on SAO hardware add-ons: How to extend the #swagbadge using a 6 pin (2x3) connector with power, I2C bus and 2x GPIO pins
Blog and timeline
- 2020-10-04: #swagbadge project public announcement
- 2020-09-24: Preparing for initial public announcement
- 2020-09-17: GitHub repository: #swagbadge hardware created
- 2020-09-11: Assembling core OHMC team ... getting the band back together
- 2020-09-10: #swagbadge project green light ... we're good to go ! Trying not to spill the beans ?
- 2020-09-07: #swagbadge project proposal (goals, timeline and costs) sent to LCA2021
- 2020-08-26: #swagbadge project conception
- 2020-05-06: LCA2021 in Canberra "postponed" to 2022 and rebooted as on-line and world-wide for 2021 ... finally made it to Antarctica !
- 2018-01-22: LCA2021 GitHub repository: Aiko Engine for microPython incept date