http://www.openhardwareconf.org/api.php?action=feedcontributions&user=AndyGelme&feedformat=atomOpen Hardware Miniconf - User contributions [en]2024-03-28T13:10:53ZUser contributionsMediaWiki 1.30.0http://www.openhardwareconf.org/index.php?title=MediaWiki:Sidebar&diff=1391MediaWiki:Sidebar2021-09-12T03:09:32Z<p>AndyGelme: </p>
<hr />
<div><br />
* navigation<br />
** mainpage|Home<br />
** OHMC2022|Open Hardware Miniconf 2022 (SAO:FPGA)<br />
** OHMC2021|Open Hardware Miniconf 2021 (SwagBadge)<br />
** OHMC2020|Open Hardware Miniconf 2020 (DingoCar)<br />
** OHMC2019|Open Hardware Miniconf 2019 (DonkeyCar)<br />
** OHMC2018|Open Hardware Miniconf 2018 (LoliBot)<br />
** OHC2017|Open Hardware Miniconf 2017 (IoTuz)<br />
** OHC2016|Open Hardware Miniconf 2016 (ESPlant)<br />
** OHC2015|Open Hardware Miniconf 2015 (SimpleBot)<br />
** AMC2014|Arduino Miniconf 2014 (ArduPhone)<br />
** AMC2013|Arduino Miniconf 2013 (HackCNC)<br />
** AMC2012|Arduino Miniconf 2012 (Pebble V2)<br />
** AMC2011|Arduino Miniconf 2011 (MobSenDat)<br />
** AMC2010|Arduino Miniconf 2010 (Pebble V1)<br />
** recentchanges-url|recentchanges<br />
** helppage|help<br />
* SEARCH<br />
* TOOLBOX<br />
* LANGUAGES</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=MediaWiki:Sidebar&diff=1390MediaWiki:Sidebar2021-09-12T03:09:03Z<p>AndyGelme: </p>
<hr />
<div><br />
* navigation<br />
** mainpage|Home<br />
** OHMC2022|Open Hardware Miniconf 2022 (FPGA SAO)<br />
** OHMC2021|Open Hardware Miniconf 2021 (SwagBadge)<br />
** OHMC2020|Open Hardware Miniconf 2020 (DingoCar)<br />
** OHMC2019|Open Hardware Miniconf 2019 (DonkeyCar)<br />
** OHMC2018|Open Hardware Miniconf 2018 (LoliBot)<br />
** OHC2017|Open Hardware Miniconf 2017 (IoTuz)<br />
** OHC2016|Open Hardware Miniconf 2016 (ESPlant)<br />
** OHC2015|Open Hardware Miniconf 2015 (SimpleBot)<br />
** AMC2014|Arduino Miniconf 2014 (ArduPhone)<br />
** AMC2013|Arduino Miniconf 2013 (HackCNC)<br />
** AMC2012|Arduino Miniconf 2012 (Pebble V2)<br />
** AMC2011|Arduino Miniconf 2011 (MobSenDat)<br />
** AMC2010|Arduino Miniconf 2010 (Pebble V1)<br />
** recentchanges-url|recentchanges<br />
** helppage|help<br />
* SEARCH<br />
* TOOLBOX<br />
* LANGUAGES</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=MediaWiki:Sidebar&diff=1389MediaWiki:Sidebar2021-09-12T03:00:37Z<p>AndyGelme: </p>
<hr />
<div><br />
* navigation<br />
** mainpage|Home<br />
** OHMC2022|Open Hardware Miniconf 2022<br />
** OHMC2021|Open Hardware Miniconf 2021<br />
** OHMC2020|Open Hardware Miniconf 2020<br />
** OHMC2019|Open Hardware Miniconf 2019<br />
** OHMC2018|Open Hardware Miniconf 2018<br />
** OHC2017|Open Hardware Miniconf 2017<br />
** OHC2016|Open Hardware Miniconf 2016<br />
** OHC2015|Open Hardware Miniconf 2015<br />
** AMC2014|Arduino Miniconf 2014<br />
** AMC2013|Arduino Miniconf 2013<br />
** AMC2012|Arduino Miniconf 2012<br />
** AMC2011|Arduino Miniconf 2011<br />
** AMC2010|Arduino Miniconf 2010<br />
** recentchanges-url|recentchanges<br />
** helppage|help<br />
* SEARCH<br />
* TOOLBOX<br />
* LANGUAGES</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=MediaWiki:Sidebar&diff=1388MediaWiki:Sidebar2021-09-12T03:00:07Z<p>AndyGelme: </p>
<hr />
<div><br />
* navigation<br />
** mainpage|Home<br />
** OHMC2022|Open Hardware Miniconf 2022<br />
** OHMC2021|Open Hardware Miniconf 2021 and Swagbadge2021|Swag Badge 2021<br />
** OHMC2020|Open Hardware Miniconf 2020<br />
** OHMC2019|Open Hardware Miniconf 2019<br />
** OHMC2018|Open Hardware Miniconf 2018<br />
** OHC2017|Open Hardware Miniconf 2017<br />
** OHC2016|Open Hardware Miniconf 2016<br />
** OHC2015|Open Hardware Miniconf 2015<br />
** AMC2014|Arduino Miniconf 2014<br />
** AMC2013|Arduino Miniconf 2013<br />
** AMC2012|Arduino Miniconf 2012<br />
** AMC2011|Arduino Miniconf 2011<br />
** AMC2010|Arduino Miniconf 2010<br />
** recentchanges-url|recentchanges<br />
** helppage|help<br />
* SEARCH<br />
* TOOLBOX<br />
* LANGUAGES</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=Swagbadge2021_Newcomers&diff=1369Swagbadge2021 Newcomers2021-02-06T05:34:46Z<p>AndyGelme: /* Electronic circuits */</p>
<hr />
<div>= Swagbadge for newcomers to electronics =<br />
<br />
Welcome! ๐<br />
<br />
This guide is for everyone who likes the sound of what the swagbadge can do, or have an interest in learning about some hardware and electronics but just doesn't know where to start, or wants to learn as part of a community. We are here for you! This guide is intended to help you learn, through the development of the [[Swagbadge2021|Swagbadge]] or [[Swagbadge2021_Dagbadge|Dagbadge]]. It (will) have lots of pointers out to resources on the internet you can use for further reference and learning.<br />
<br />
Contents:<br />
* What is a Swagbadge or a Dagbadge?<br />
* The components on the badge<br />
* Some electronics fundamentals<br />
* Software makes the hardware go<br />
* The Aiko framework<br />
* Applications<br />
* All about SAO - Simple Add Ons<br />
<br />
----<br />
<br />
== What is a Swagbadge or a Dagbadge? ==<br />
<br />
A swagbadge is the officially branded, fully pre-assembled electronic badge provided to early registrants to LCA 2021. Designed to work alongside the standard paper badge normally provided to participants, it provides a talking point, an access to hardware and electronics, and their corresponding software, and is extensible both now and into the future.<br />
<br />
For those who can't get hold of a swagbadge (you registered too late to LCA 2021, you're attending LCA but don't live in Australia, or you're just interested in the process and want to be part of our wider community), there's the dagbadge. This is a list of parts that you acquire yourself (without the LCA branding), designed to be readily obtained from your local or online electronic store. You need to assemble it yourself. <br />
<br />
== The components on the badge ==<br />
<br />
The swagbadge contains:<br />
* a PCB<br />
* a Lolin32 ESP32 microprocessor<br />
* two OLED screens<br />
* two switches<br />
* two capacitive touch slider controls<br />
* four SAO headers<br />
<br />
For the list of parts on a dagbadge, see [[Swagbadge2021_Dagbadge|Dagbadge BOM]], but it is essentially the same, but with a breadboard instead of a PCB.<br />
<br />
What do all those elements mean?<br />
<br />
Imagine that the badge is a creature.<br />
* the '''Lolin32 ESP32 microprocessor''' is the brain. It is a tiny computer, designed for embedded/IoT applications, of a type called a [https://www.espressif.com/en/products/socs/esp32/overview ESP32], manufactured to the Lolin32 standard (first built by the WEMOS company but frequently copied). It has:<br />
** Wifi<br />
** Bluetooth<br />
** 4Mb (?) of flash memory<br />
** Low power consumption for long life when battery powered<br />
** Powered by microUSB - USB, but is capable of handling an external battery if you know how to connect it.<br />
* the '''PCB''' is a Printed Circuit Board. It is combination skeleton and nervous system. Like a skeleton, it holds the other parts in place. Like the nervous system, it contains circuitry printed on it to let the microprocessor (the brain) communicate with all its senses, and talk to other devices.<br />
* the two '''OLED screens''' are like inverse eyes. They are tiny computer screens, supporting black and white text, pixel and lines display, at a resolution of 128x64 (?). We have provided two so you can use them as one super wide screen, or as two separate screens.<br />
* the two '''switches''' are underneath the screens on the swagbadge. Push the screen and it pushes the switch. The software can read the hardware to detect which switch is being pressed, and whether it's a single press or a long press.<br />
* the two '''capacitive touch slider controls''' are sensors. As you move your finger up and down the lines, the software can read the hardware to find out (roughly) where your finger is on which slider. They're called "capacitive" because that is the mechanism by which the component works: it uses the capacitance in the circuit, affected by your finger, to tell where you're touching. Your smartphone's screen operates via [https://www.allaboutcircuits.com/technical-articles/introduction-to-capacitive-touch-sensing/ capacitive touch.].<br />
* the four '''SAO headers''' are Simple Add On headers, which let you extend the capability of your badge with other components and boards using the [https://hackaday.com/2019/03/20/introducing-the-shitty-add-on-v1-69bis-standard SAO standard] - there'll be a dedicated Swagbadge SAO wiki page soon(tm).<br />
<br />
== Some electronics fundamentals ==<br />
<br />
* Extra pins on the board.<br />
* Do not immerse in water/tea<br />
* ... I'm sure I had more to add here.<br />
<br />
== Software makes the hardware go ==<br />
<br />
The hardware on its own is inert. It doesn't do anything without something to read the sensors, or display information on the screen. So what drives the badge?<br />
<br />
* Operating system: the Swagbadge uses [http://micropython.org/ MicroPython], a special version of the Python programming language designed for use on small internet of things/embedded devices, just like the badge.<br />
* A framework. This is Aiko for MicroPython, written by Andy Gelme of the Open Hardware team. It provides a whole bunch of convenience functions for writing to the screens, or reading the value of switches. It's also designed to make communicating to a badge over a network a lot easier by providing access to the badge's capabilities via sending simple messages to the badge via an MQTT server. We are using a dedicated MQTT server for the badges, based in Australia so it's nice and fast!<br />
* Applications. Written in MicroPython, these are programs to make your badge do things! Several are provided, to demonstrate some capabilities to help you learn how to use the badge and copy as required to make your own code work.<br />
<br />
== The Aiko Framework ==<br />
<br />
== Applications ==<br />
<br />
== All about SAOs: Simple Add Ons ==<br />
<br />
The swagbadge came with several SAO protoboards. Our SAO prototyping boards come with standard sized holes in them to make it easier to mount components such as LEDs if you didn't have a custom SAO from Tindie or that you'd built yourself, and they have labelling on them so you can see which holes are for power or ground or are connected to the GPIO pin (this being the pin that controls a component).<br />
<br />
Why use a protoboard instead of wiring things directly onto the badge?<br />
* You can remove the board, if you want to reposition your SAO, or swap it for something else<br />
* It's an easier base for adding multiple components<br />
<br />
=== Electronic circuits ===<br />
<br />
Itching to add some blinky lights to a SAO ... by whipping out that soldering iron and getting to work ? Let's first talk about [https://en.wikipedia.org/wiki/Electronic_circuit circuitry].<br />
<br />
It is very difficult to think about, design, repair or discuss something unless you have a clear picture (model) in your mind. This is especially true of electronics, because without tools (a simple LED, multimeter, oscilloscope, logic analyzer or scanning tunneling microscope) we just can't see electrons. Knowing how the electrons flow through circuits within your SwagBadge is one of the crucial keys to understanding. Fortunately, you can approach this problem in simple steps ... well, ''"simple"'' if you have good guidance. [https://spectrum.chat/lca2021-swagbadge/hardware?tab=posts Please feel free to ask the OHMC team on the SwagBadge Spectrum forum] !<br />
<br />
''<ToDo: Start with high-level diagram before diving in deeper !>''<br />
<br />
Let's dive in the deep end by briefly checking out a '''''[https://en.wikipedia.org/wiki/Schematic schematic diagram] (pictured below)'''''. There are lots of unfamiliar symbols and terminology, but in essence it is like a map. A map that shows what components exist in the circuit and how they are connected together, from which we can determine how electricity (electrons) flows to encode data and changes to that data.<br />
<br />
''Note: The [https://en.wikipedia.org/wiki/Voltage_regulator voltage regulator] discussed soon is in the top-middle of the diagram with a part labelled '''U4: ME6211'''''<br />
<br />
[[File:Lolin32_lite_schematic.gif|480px]]<br />
<br />
In order for components to work, they need a power source (typically for the SwagBadge that's a USB cable providing 5 volts [https://en.wikipedia.org/wiki/Direct_current direct-current]), they need a [https://en.wikipedia.org/wiki/Ground_(electricity) ground] (also on the board), and the components sit between the power and the ground. But you can't just plug in any old component into any old power source. Things can go wrong:<br />
* Too much power for a component can fry it and let out the [https://en.wikipedia.org/wiki/Magic_smoke magic smoke].<br />
* Not enough power and your component just won't work. In an attempt to get enough power, it may even fry your badge's power source - if it's powered via USB to your laptop, this may mean doing Bad Things to your USB port or your laptop.<br />
<br />
Whilst the USB cable provides 5 volts (and an optional LiPo battery provides around 3.7 volts), everything (including the SAOs) beyond the USB cable and voltage regulator is '''powered by 3.3 volts'''. Many of the components may be damaged by exposing them to greater than 3.6 volts (3.3 volt rating plus 10%). It is also very important to not accidentally swap power and ground (connect ground to the power lines and the power to the ground lines), which may also damage components.<br />
<br />
The role of the voltage regulator is to reduce the power supply voltage (from 5 volts) to the 3.3 volts required by the SwagBadge circuitry and components. Looking closely at the schematic diagram at '''''U4: ME6211''''' (top, middle), you can see that the inputs are <VBUS> (USB cable power), <VBAT> (LiPo battery power) and <GND> (the ground) ... and that the outputs are <+3V3> (3.3 volts) and <GND> (not strictly an output, but for the sake of modularity, let's pretend). Throughout the schematic, many components have an "arrow" pointing towards <+3V3>, which simply means "connected to", in this schematic diagram the arrow does not indicate "flow of elections" or anything like that.<br />
<br />
You can think of electronics components as analogous to software functions ... there are input(s), output(s) and some shenanigans occur in-between ! This is great, because you can largely forget about the whole SwagBadge circuit and focus on just the SAO connector's inputs and outputs, e.g 3.3V power, ground, I2C (clock and data pins) and two General Purpose Input / Output (GPIO) pins. Too easy !<br />
<br />
'''Getting the power requirements right'''<br />
<br />
# Work out what the power consumption requirements are for your components, for both voltage and current<br />
# If it's more than what your power source provides, you'd better get a bigger power source/battery and hook up the power to that, and not to the badge<br />
# If it's less than what your power source provides, you'll need some resistors* to reduce the load going through your components<br />
<br />
Note: Using resistors works for [https://www.power-and-beyond.com/introduction-to-electronic-compontents-active-vs-passive-components-a-893768/ passive components, however some active components] may need a different approach to limiting current through them<br />
<br />
'''It's just maths'''<br />
<br />
[https://learn.sparkfun.com/tutorials/voltage-current-resistance-and-ohms-law/all Ohm's Law] is our guide. V = I x R. Voltage (V) = Current in amps (I) x Resistance in ohms (R).<br />
<br />
'''We know our badge gives you 3.3V'''<br />
<br />
You can determine the current requirements of your components by looking at their data sheets. Some will have a maximum current rating (you must stay below this !) and a recommended current rating (what you're aiming to meet). <br />
<br />
Quick example:<br />
* Let's say you have an eThingy that has a recommended current rating of 20 milliamps<br />
* Voltage off the badge is 3.3V<br />
* We use Ohm's Law to calculate the resistance (R = V / I), in our case, V = 3.3, I = 0.02 ... so R = 3.3 / 0.02 = 165<br />
* We need to use a 165 ohm resistor<br />
<br />
Note: Often the eThingy will have a voltage potential across them too, reducing the voltage potential across the resistor in the calculation above. See LEDs below<br />
<br />
Usually, the resistor can be placed on either side of the component ... either between power and the component ... or the ground and the component. In either case, the resistor is limiting the current flow just fine. However, to keep things simple and consistent, it is recommended to make the "ground" our shared base for everything and achieve this by putting the current limiting resistor between power and the component.<br />
<br />
'''LEDs are special, because they do not act like pure resistors'''<br />
<br />
LEDs have complicated behavior that affects our use of Ohm's Law, so we have to do a bit more to get the values right. For LEDs, the important thing is the voltage drop across the LED. This can also be known as the forward voltage.<br />
* LEDs have static resistance and our circuit will still obey R = V / I, but let's adjust for how we calculate the current limiting requirements for an LED as follows: Required resistor = (Power voltage - LED voltage drop) / Desired maximum current<br />
<br />
Quick example:<br />
* If you have a ''red'' LED with a voltage drop/forward voltage of 2V, and maximum current requirement of 20 mA (milliamps)<br />
* Power voltage on the badge is 3.3V<br />
* R = (3.3 - 2) / .02 = 65<br />
* We need a 65 ohm resistor<br />
* A 65 ohm resistor will provide maximum brightness and larger resistor values, e.g 1,000 ohms will limit the current further and delivery a dimmer LED experience<br />
<br />
Note: Different colour LEDs will have different forward voltage drops. For a given colour, e.g red, there will be a small range of forward voltage drops, e.g 1.7V to 2.0V.<br />
<br />
'''More about resistors'''<br />
<br />
Resistors come in certain set values. If you can't get the exact value you need, just use the next highest one (don't go lower, or your resistor won't do the job and you'll fry your electronics). You can [https://www.electronics-tutorials.ws/resistor/res_3.html join them together in series] if you want to create a larger resistance (works just like a single resistor of the equivalent value). You can [https://www.electronics-tutorials.ws/resistor/res_4.html join them together in parallel] if you want to create a smaller resistance (also works just like a single resistor of the equivalent value).<br />
<br />
[https://www.electronics-tutorials.ws/resistor/res_1.html Everything you wanted to know about resistors, but were afraid to ask !]<br />
<br />
'''Series vs parallel'''<br />
<br />
Up until now, this tutorial has assumed you've just been powering a single thing. But what if you want to do multiple? More lights are better lights, after all! There's two different ways to connect components together: in series, or in parallel.<br />
; series: they're chained together, one after the other on a single loop from power, through the components and onto ground.<br />
; parallel: there's multiple circuits, each one connected separately to the battery</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=Swagbadge2021_Newcomers&diff=1368Swagbadge2021 Newcomers2021-02-06T05:33:58Z<p>AndyGelme: /* Electronic circuits */</p>
<hr />
<div>= Swagbadge for newcomers to electronics =<br />
<br />
Welcome! ๐<br />
<br />
This guide is for everyone who likes the sound of what the swagbadge can do, or have an interest in learning about some hardware and electronics but just doesn't know where to start, or wants to learn as part of a community. We are here for you! This guide is intended to help you learn, through the development of the [[Swagbadge2021|Swagbadge]] or [[Swagbadge2021_Dagbadge|Dagbadge]]. It (will) have lots of pointers out to resources on the internet you can use for further reference and learning.<br />
<br />
Contents:<br />
* What is a Swagbadge or a Dagbadge?<br />
* The components on the badge<br />
* Some electronics fundamentals<br />
* Software makes the hardware go<br />
* The Aiko framework<br />
* Applications<br />
* All about SAO - Simple Add Ons<br />
<br />
----<br />
<br />
== What is a Swagbadge or a Dagbadge? ==<br />
<br />
A swagbadge is the officially branded, fully pre-assembled electronic badge provided to early registrants to LCA 2021. Designed to work alongside the standard paper badge normally provided to participants, it provides a talking point, an access to hardware and electronics, and their corresponding software, and is extensible both now and into the future.<br />
<br />
For those who can't get hold of a swagbadge (you registered too late to LCA 2021, you're attending LCA but don't live in Australia, or you're just interested in the process and want to be part of our wider community), there's the dagbadge. This is a list of parts that you acquire yourself (without the LCA branding), designed to be readily obtained from your local or online electronic store. You need to assemble it yourself. <br />
<br />
== The components on the badge ==<br />
<br />
The swagbadge contains:<br />
* a PCB<br />
* a Lolin32 ESP32 microprocessor<br />
* two OLED screens<br />
* two switches<br />
* two capacitive touch slider controls<br />
* four SAO headers<br />
<br />
For the list of parts on a dagbadge, see [[Swagbadge2021_Dagbadge|Dagbadge BOM]], but it is essentially the same, but with a breadboard instead of a PCB.<br />
<br />
What do all those elements mean?<br />
<br />
Imagine that the badge is a creature.<br />
* the '''Lolin32 ESP32 microprocessor''' is the brain. It is a tiny computer, designed for embedded/IoT applications, of a type called a [https://www.espressif.com/en/products/socs/esp32/overview ESP32], manufactured to the Lolin32 standard (first built by the WEMOS company but frequently copied). It has:<br />
** Wifi<br />
** Bluetooth<br />
** 4Mb (?) of flash memory<br />
** Low power consumption for long life when battery powered<br />
** Powered by microUSB - USB, but is capable of handling an external battery if you know how to connect it.<br />
* the '''PCB''' is a Printed Circuit Board. It is combination skeleton and nervous system. Like a skeleton, it holds the other parts in place. Like the nervous system, it contains circuitry printed on it to let the microprocessor (the brain) communicate with all its senses, and talk to other devices.<br />
* the two '''OLED screens''' are like inverse eyes. They are tiny computer screens, supporting black and white text, pixel and lines display, at a resolution of 128x64 (?). We have provided two so you can use them as one super wide screen, or as two separate screens.<br />
* the two '''switches''' are underneath the screens on the swagbadge. Push the screen and it pushes the switch. The software can read the hardware to detect which switch is being pressed, and whether it's a single press or a long press.<br />
* the two '''capacitive touch slider controls''' are sensors. As you move your finger up and down the lines, the software can read the hardware to find out (roughly) where your finger is on which slider. They're called "capacitive" because that is the mechanism by which the component works: it uses the capacitance in the circuit, affected by your finger, to tell where you're touching. Your smartphone's screen operates via [https://www.allaboutcircuits.com/technical-articles/introduction-to-capacitive-touch-sensing/ capacitive touch.].<br />
* the four '''SAO headers''' are Simple Add On headers, which let you extend the capability of your badge with other components and boards using the [https://hackaday.com/2019/03/20/introducing-the-shitty-add-on-v1-69bis-standard SAO standard] - there'll be a dedicated Swagbadge SAO wiki page soon(tm).<br />
<br />
== Some electronics fundamentals ==<br />
<br />
* Extra pins on the board.<br />
* Do not immerse in water/tea<br />
* ... I'm sure I had more to add here.<br />
<br />
== Software makes the hardware go ==<br />
<br />
The hardware on its own is inert. It doesn't do anything without something to read the sensors, or display information on the screen. So what drives the badge?<br />
<br />
* Operating system: the Swagbadge uses [http://micropython.org/ MicroPython], a special version of the Python programming language designed for use on small internet of things/embedded devices, just like the badge.<br />
* A framework. This is Aiko for MicroPython, written by Andy Gelme of the Open Hardware team. It provides a whole bunch of convenience functions for writing to the screens, or reading the value of switches. It's also designed to make communicating to a badge over a network a lot easier by providing access to the badge's capabilities via sending simple messages to the badge via an MQTT server. We are using a dedicated MQTT server for the badges, based in Australia so it's nice and fast!<br />
* Applications. Written in MicroPython, these are programs to make your badge do things! Several are provided, to demonstrate some capabilities to help you learn how to use the badge and copy as required to make your own code work.<br />
<br />
== The Aiko Framework ==<br />
<br />
== Applications ==<br />
<br />
== All about SAOs: Simple Add Ons ==<br />
<br />
The swagbadge came with several SAO protoboards. Our SAO prototyping boards come with standard sized holes in them to make it easier to mount components such as LEDs if you didn't have a custom SAO from Tindie or that you'd built yourself, and they have labelling on them so you can see which holes are for power or ground or are connected to the GPIO pin (this being the pin that controls a component).<br />
<br />
Why use a protoboard instead of wiring things directly onto the badge?<br />
* You can remove the board, if you want to reposition your SAO, or swap it for something else<br />
* It's an easier base for adding multiple components<br />
<br />
=== Electronic circuits ===<br />
<br />
Itching to add some blinky lights to a SAO ... by whipping out that soldering iron and getting to work ? Let's first talk about [https://en.wikipedia.org/wiki/Electronic_circuit circuitry].<br />
<br />
It is very difficult to think about, design, repair or discuss something unless you have a clear picture (model) in your mind. This is especially true of electronics, because without tools (a simple LED, multimeter, oscilloscope, logic analyzer or scanning tunneling microscope) we just can't see electrons. Knowing how the electrons flow through circuits within your SwagBadge is one of the crucial keys to understanding. Fortunately, you can approach this problem in simple steps ... well, ''"simple"'' if you have good guidance. [https://spectrum.chat/lca2021-swagbadge/hardware?tab=posts Please feel free to ask the OHMC team on the SwagBadge Spectrum forum] !<br />
<br />
''<ToDo: Start with high-level diagram before diving in deeper !>''<br />
<br />
Let's dive in the deep end by briefly checking out a '''''[https://en.wikipedia.org/wiki/Schematic schematic diagram] (pictured below)'''''. There are lots of unfamiliar symbols and terminology, but in essence it is like a map. A map that shows what components exist in the circuit and how they are connected together, from which we can determine how electricity (electrons) flows to encode data and changes to that data.<br />
<br />
''Note: The [https://en.wikipedia.org/wiki/Voltage_regulator voltage regulator] discussed soon is in the top-middle of the diagram with a part labelled '''U4: ME6211'''''<br />
<br />
[[File:Lolin32_lite_schematic.gif|480px]]<br />
<br />
In order for components to work, they need a power source (typically for the SwagBadge that's a USB cable providing 5 volts [https://en.wikipedia.org/wiki/Direct_current direct-current]), they need a [https://en.wikipedia.org/wiki/Ground_(electricity) ground] (also on the board), and the components sit between the power and the ground. But you can't just plug in any old component into any old power source. Things can go wrong:<br />
* Too much power for a component can fry it and let out the [https://en.wikipedia.org/wiki/Magic_smoke magic smoke].<br />
* Not enough power and your component just won't work. In an attempt to get enough power, it may even fry your badge's power source - if it's powered via USB to your laptop, this may mean doing Bad Things to your USB port or your laptop.<br />
<br />
Whilst the USB cable provides 5 volts (and an optional LiPo battery provides around 3.7 volts), everything (including the SAOs) beyond the USB cable and voltage regulator is '''powered by 3.3 volts'''. Many of the components may be damaged by exposing them to greater than 3.6 volts (3.3 volt rating plus 10%). It is also very important to not accidentally swap power and ground (connect ground to the power lines and the power to the ground lines), which may also damage components.<br />
<br />
The role of the voltage regulator is to reduce the power supply voltage (from 5 volts) to the 3.3 volts required by the SwagBadge circuitry and components. Looking closely at the schematic diagram at '''''U4: ME6211''''' (top, middle), you can see that the inputs are <VBUS> (USB cable power), <VBAT> (LiPo battery power) and <GND> (the ground) ... and that the outputs are <+3V3> (3.3 volts) and <GND> (not strictly an output, but for the sake of modularity, let's pretend). Throughout the schematic, many components have an "arrow" pointing towards <+3V3>, which simply means "connected to", in this schematic diagram the arrow does not indicate "flow of elections" or anything like that.<br />
<br />
You can think of electronics components as analogous to software functions ... there are input(s), output(s) and some shenanigans occur in-between ! This is great, because you can largely forget about the whole SwagBadge circuit and focus on just the SAO connector's inputs and outputs, e.g 3.3V power, ground, I2C (clock and data pins) and two General Purpose Input / Output (GPIO) pins. Too easy !<br />
<br />
'''Getting the power requirements right'''<br />
<br />
# Work out what the power consumption requirements are for your components, for both voltage and current<br />
# If it's more than what your power source provides, you'd better get a bigger power source/battery and hook up the power to that, and not to the badge<br />
# If it's less than what your power source provides, you'll need some resistors* to reduce the load going through your components<br />
<br />
Note: Using resistors works for [https://www.power-and-beyond.com/introduction-to-electronic-compontents-active-vs-passive-components-a-893768/ passive components, however some active components] may need a different approach to limiting current through them<br />
<br />
'''It's just maths'''<br />
<br />
[https://learn.sparkfun.com/tutorials/voltage-current-resistance-and-ohms-law/all Ohm's Law] is our guide. V = I x R. Voltage (V) = Current in amps (I) x Resistance in ohms (R).<br />
<br />
'''We know our badge gives you 3.3V'''<br />
<br />
You can determine the current requirements of your components by looking at their data sheets. Some will have a maximum current rating (you must stay below this !) and a recommended current rating (what you're aiming to meet). <br />
<br />
Quick example:<br />
* Let's say you have an eThingy that has a recommended current rating of 20 milliamps<br />
* Voltage off the badge is 3.3V<br />
* We use Ohm's Law to calculate the resistance (R = V / I), in our case, V = 3.3, I = 0.02 ... so R = 3.3 / 0.02 = 165<br />
* We need to use a 165 ohm resistor<br />
<br />
Note: Often the eThingy will have a voltage potential across them too, reducing the voltage potential across the resistor in the calculation above. See LEDs below<br />
<br />
Usually, the resistor can be placed on either side of the component ... either between power and the component ... or the ground and the component. In either case, the resistor is limiting the current flow just fine. However, to keep things simple and consistent, it is recommended to make the "ground" our shared base for everything and achieve this by putting the current limiting resistor between power and the component.<br />
<br />
'''LEDs are special, because they do not act like pure resistors'''<br />
<br />
LEDs have complicated behavior that affects our use of Ohm's Law, so we have to do a bit more to get the values right. For LEDs, the important thing is the voltage drop across the LED. This can also be known as the forward voltage.<br />
* LEDs have static resistance and our circuit will still obey R = V / I, but let's adjust for how we calculate the current limiting requirements for an LED as follows: Required resistor = (Power voltage - LED voltage drop) / Desired maximum current<br />
<br />
Quick example:<br />
* If you have a ''red'' LED with a voltage drop/forward voltage of 2V, and maximum current requirement of 20 mA (milliamps)<br />
* Power voltage on the badge is 3.3V<br />
* R = (3.3 - 2) / .02 = 65<br />
* We need a 65 ohm resistor<br />
* A 65 ohm resistor will provide maximum brightness and larger resistor values, e.g 1,000 ohms will limit the current further and delivery a dimmer LED experience<br />
<br />
Note: Different colour LEDs will have different forward voltage drops. For a given colour, e.g red, there will be a small range of forward voltage drops, e.g 1.7V to 2.0V.<br />
<br />
'''More about resistors'''<br />
<br />
Resistors come in certain set values. If you can't get the exact value you need, just use the next highest one (don't go lower, or your resistor won't do the job and you'll fry your electronics). You can [https://www.electronics-tutorials.ws/resistor/res_3.html join them together in series] if you want to create a larger resistance (works just like a single resistor of the same value). You can [https://www.electronics-tutorials.ws/resistor/res_4.html join them together in parallel] if you want to create a smaller resistance (also works just like a single resistor of the same value).<br />
<br />
[https://www.electronics-tutorials.ws/resistor/res_1.html Everything you wanted to know about resistors, but were afraid to ask !]<br />
<br />
'''Series vs parallel'''<br />
<br />
Up until now, this tutorial has assumed you've just been powering a single thing. But what if you want to do multiple? More lights are better lights, after all! There's two different ways to connect components together: in series, or in parallel.<br />
; series: they're chained together, one after the other on a single loop from power, through the components and onto ground.<br />
; parallel: there's multiple circuits, each one connected separately to the battery</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=Swagbadge2021_Newcomers&diff=1367Swagbadge2021 Newcomers2021-02-06T05:33:23Z<p>AndyGelme: /* Electronic circuits */</p>
<hr />
<div>= Swagbadge for newcomers to electronics =<br />
<br />
Welcome! ๐<br />
<br />
This guide is for everyone who likes the sound of what the swagbadge can do, or have an interest in learning about some hardware and electronics but just doesn't know where to start, or wants to learn as part of a community. We are here for you! This guide is intended to help you learn, through the development of the [[Swagbadge2021|Swagbadge]] or [[Swagbadge2021_Dagbadge|Dagbadge]]. It (will) have lots of pointers out to resources on the internet you can use for further reference and learning.<br />
<br />
Contents:<br />
* What is a Swagbadge or a Dagbadge?<br />
* The components on the badge<br />
* Some electronics fundamentals<br />
* Software makes the hardware go<br />
* The Aiko framework<br />
* Applications<br />
* All about SAO - Simple Add Ons<br />
<br />
----<br />
<br />
== What is a Swagbadge or a Dagbadge? ==<br />
<br />
A swagbadge is the officially branded, fully pre-assembled electronic badge provided to early registrants to LCA 2021. Designed to work alongside the standard paper badge normally provided to participants, it provides a talking point, an access to hardware and electronics, and their corresponding software, and is extensible both now and into the future.<br />
<br />
For those who can't get hold of a swagbadge (you registered too late to LCA 2021, you're attending LCA but don't live in Australia, or you're just interested in the process and want to be part of our wider community), there's the dagbadge. This is a list of parts that you acquire yourself (without the LCA branding), designed to be readily obtained from your local or online electronic store. You need to assemble it yourself. <br />
<br />
== The components on the badge ==<br />
<br />
The swagbadge contains:<br />
* a PCB<br />
* a Lolin32 ESP32 microprocessor<br />
* two OLED screens<br />
* two switches<br />
* two capacitive touch slider controls<br />
* four SAO headers<br />
<br />
For the list of parts on a dagbadge, see [[Swagbadge2021_Dagbadge|Dagbadge BOM]], but it is essentially the same, but with a breadboard instead of a PCB.<br />
<br />
What do all those elements mean?<br />
<br />
Imagine that the badge is a creature.<br />
* the '''Lolin32 ESP32 microprocessor''' is the brain. It is a tiny computer, designed for embedded/IoT applications, of a type called a [https://www.espressif.com/en/products/socs/esp32/overview ESP32], manufactured to the Lolin32 standard (first built by the WEMOS company but frequently copied). It has:<br />
** Wifi<br />
** Bluetooth<br />
** 4Mb (?) of flash memory<br />
** Low power consumption for long life when battery powered<br />
** Powered by microUSB - USB, but is capable of handling an external battery if you know how to connect it.<br />
* the '''PCB''' is a Printed Circuit Board. It is combination skeleton and nervous system. Like a skeleton, it holds the other parts in place. Like the nervous system, it contains circuitry printed on it to let the microprocessor (the brain) communicate with all its senses, and talk to other devices.<br />
* the two '''OLED screens''' are like inverse eyes. They are tiny computer screens, supporting black and white text, pixel and lines display, at a resolution of 128x64 (?). We have provided two so you can use them as one super wide screen, or as two separate screens.<br />
* the two '''switches''' are underneath the screens on the swagbadge. Push the screen and it pushes the switch. The software can read the hardware to detect which switch is being pressed, and whether it's a single press or a long press.<br />
* the two '''capacitive touch slider controls''' are sensors. As you move your finger up and down the lines, the software can read the hardware to find out (roughly) where your finger is on which slider. They're called "capacitive" because that is the mechanism by which the component works: it uses the capacitance in the circuit, affected by your finger, to tell where you're touching. Your smartphone's screen operates via [https://www.allaboutcircuits.com/technical-articles/introduction-to-capacitive-touch-sensing/ capacitive touch.].<br />
* the four '''SAO headers''' are Simple Add On headers, which let you extend the capability of your badge with other components and boards using the [https://hackaday.com/2019/03/20/introducing-the-shitty-add-on-v1-69bis-standard SAO standard] - there'll be a dedicated Swagbadge SAO wiki page soon(tm).<br />
<br />
== Some electronics fundamentals ==<br />
<br />
* Extra pins on the board.<br />
* Do not immerse in water/tea<br />
* ... I'm sure I had more to add here.<br />
<br />
== Software makes the hardware go ==<br />
<br />
The hardware on its own is inert. It doesn't do anything without something to read the sensors, or display information on the screen. So what drives the badge?<br />
<br />
* Operating system: the Swagbadge uses [http://micropython.org/ MicroPython], a special version of the Python programming language designed for use on small internet of things/embedded devices, just like the badge.<br />
* A framework. This is Aiko for MicroPython, written by Andy Gelme of the Open Hardware team. It provides a whole bunch of convenience functions for writing to the screens, or reading the value of switches. It's also designed to make communicating to a badge over a network a lot easier by providing access to the badge's capabilities via sending simple messages to the badge via an MQTT server. We are using a dedicated MQTT server for the badges, based in Australia so it's nice and fast!<br />
* Applications. Written in MicroPython, these are programs to make your badge do things! Several are provided, to demonstrate some capabilities to help you learn how to use the badge and copy as required to make your own code work.<br />
<br />
== The Aiko Framework ==<br />
<br />
== Applications ==<br />
<br />
== All about SAOs: Simple Add Ons ==<br />
<br />
The swagbadge came with several SAO protoboards. Our SAO prototyping boards come with standard sized holes in them to make it easier to mount components such as LEDs if you didn't have a custom SAO from Tindie or that you'd built yourself, and they have labelling on them so you can see which holes are for power or ground or are connected to the GPIO pin (this being the pin that controls a component).<br />
<br />
Why use a protoboard instead of wiring things directly onto the badge?<br />
* You can remove the board, if you want to reposition your SAO, or swap it for something else<br />
* It's an easier base for adding multiple components<br />
<br />
=== Electronic circuits ===<br />
<br />
Itching to add some blinky lights to a SAO ... by whipping out that soldering iron and getting to work ? Let's first talk about [https://en.wikipedia.org/wiki/Electronic_circuit circuitry].<br />
<br />
It is very difficult to think about, design, repair or discuss something unless you have a clear picture (model) in your mind. This is especially true of electronics, because without tools (a simple LED, multimeter, oscilloscope, logic analyzer or scanning tunneling microscope) we just can't see electrons. Knowing how the electrons flow through circuits within your SwagBadge is one of the crucial keys to understanding. Fortunately, you can approach this problem in simple steps ... well, ''"simple"'' if you have good guidance. [https://spectrum.chat/lca2021-swagbadge/hardware?tab=posts Please feel free to ask the OHMC team on the SwagBadge Spectrum forum] !<br />
<br />
''<ToDo: Start with high-level diagram before diving in deeper !>''<br />
<br />
Let's dive in the deep end by briefly checking out a '''''[https://en.wikipedia.org/wiki/Schematic schematic diagram] (pictured below)'''''. There are lots of unfamiliar symbols and terminology, but in essence it is like a map. A map that shows what components exist in the circuit and how they are connected together, from which we can determine how electricity (electrons) flows to encode data and changes to that data.<br />
<br />
''Note: The [https://en.wikipedia.org/wiki/Voltage_regulator voltage regulator] discussed soon is in the top-middle of the diagram with a part labelled '''U4: ME6211'''''<br />
<br />
[[File:Lolin32_lite_schematic.gif|480px]]<br />
<br />
In order for components to work, they need a power source (typically for the SwagBadge that's a USB cable providing 5 volts [https://en.wikipedia.org/wiki/Direct_current direct-current]), they need a [https://en.wikipedia.org/wiki/Ground_(electricity) ground] (also on the board), and the components sit between the power and the ground. But you can't just plug in any old component into any old power source. Things can go wrong:<br />
* Too much power for a component can fry it and let out the [https://en.wikipedia.org/wiki/Magic_smoke magic smoke].<br />
* Not enough power and your component just won't work. In an attempt to get enough power, it may even fry your badge's power source - if it's powered via USB to your laptop, this may mean doing Bad Things to your USB port or your laptop.<br />
<br />
Whilst the USB cable provides 5 volts (and an optional LiPo battery provides around 3.7 volts), everything (including the SAOs) beyond the USB cable and voltage regulator is '''powered by 3.3 volts'''. Many of the components may be damaged by exposing them to greater than 3.6 volts (3.3 volt rating plus 10%). It is also very important to not accidentally swap power and ground (connect ground to the power lines and the power to the ground lines), which may also damage components.<br />
<br />
The role of the voltage regulator is to reduce the power supply voltage (from 5 volts) to the 3.3 volts required by the SwagBadge circuitry and components. Looking closely at the schematic diagram at '''''U4: ME6211''''' (top, middle), you can see that the inputs are <VBUS> (USB cable power), <VBAT> (LiPo battery power) and <GND> (the ground) ... and that the outputs are <+3V3> (3.3 volts) and <GND> (not strictly an output, but for the sake of modularity, let's pretend). Throughout the schematic, many components have an "arrow" pointing towards <+3V3>, which simply means "connected to", in this schematic diagram the arrow does not indicate "flow of elections" or anything like that.<br />
<br />
You can think of electronics components as analogous to software functions ... there are input(s), output(s) and some shenanigans occur in-between ! This is great, because you can largely forget about the whole SwagBadge circuit and focus on just the SAO connector's inputs and outputs, e.g 3.3V power, ground, I2C (clock and data pins) and two General Purpose Input / Output (GPIO) pins. Too easy !<br />
<br />
'''Getting the power requirements right'''<br />
<br />
# Work out what the power consumption requirements are for your components, for both voltage and current<br />
# If it's more than what your power source provides, you'd better get a bigger power source/battery and hook up the power to that, and not to the badge<br />
# If it's less than what your power source provides, you'll need some resistors* to reduce the load going through your components<br />
<br />
Note: Using resistors works for [https://www.power-and-beyond.com/introduction-to-electronic-compontents-active-vs-passive-components-a-893768/ passive components, however some active components] may need a different approach to limiting current through them<br />
<br />
'''It's just maths'''<br />
<br />
[https://learn.sparkfun.com/tutorials/voltage-current-resistance-and-ohms-law/all Ohm's Law] is our guide. V = I x R. Voltage (V) = Current in amps (I) x Resistance in ohms (R).<br />
<br />
'''We know our badge gives you 3.3V'''<br />
<br />
You can determine the current requirements of your components by looking at their data sheets. Some will have a maximum current rating (you must stay below this !) and a recommended current rating (what you're aiming to meet). <br />
<br />
Quick example:<br />
* Let's say you have an eThingy that has a recommended current rating of 20 milliamps<br />
* Voltage off the badge is 3.3V<br />
* We use Ohm's Law to calculate the resistance (R = V / I), in our case, V = 3.3, I = 0.02 ... so R = 3.3 / 0.02 = 165<br />
* We need to use a 165 ohm resistor<br />
<br />
Note: Often the eThingy will have a voltage potential across them too, reducing the voltage potential across the resistor in the calculation above. See LEDs below<br />
<br />
Usually, the resistor can be placed on either side of the component ... either between power and the component ... or the ground and the component. In either case, the resistor is limiting the current flow just fine. However, to keep things simple and consistent, it is recommended to make the "ground" our shared base for everything and achieve this by putting the current limiting resistor between power and the component.<br />
<br />
'''LEDs are special, because they do not act like pure resistors'''<br />
<br />
LEDs have complicated behavior that affects our use of Ohm's Law, so we have to do a bit more to get the values right. For LEDs, the important thing is the voltage drop across the LED. This can also be known as the forward voltage.<br />
* LEDs have static resistance and our circuit will still obey R = V / I, but let's adjust for how we calculate the current limiting requirements for an LED as follows: Required resistor = (Power voltage - LED voltage drop) / Desired maximum current<br />
<br />
Quick example:<br />
* If you have a ''red'' LED with a voltage drop/forward voltage of 2V, and maximum current requirement of 20 mA (milliamps)<br />
* Power voltage on the badge is 3.3V<br />
* R = (3.3 - 2) / .02 = 65<br />
* We need a 65 ohm resistor<br />
* A 65 ohm resistor will provide maximum brightness and larger resistor values, e.g 1,000 ohms will limit the current further and delivery a dimmer LED experience<br />
<br />
Note: Different colour LEDs will have different forward voltage drops. For a given colour, e.g red, there will be a small range of forward voltage drops, e.g 1.7V to 2.0V.<br />
<br />
'''More about resistors'''<br />
<br />
Resistors come in certain set values. If you can't get the exact value you need, just use the next highest one (don't go lower, or your resistor won't do the job and you'll fry your electronics). You can [https://www.electronics-tutorials.ws/resistor/res_3.html join them together in series] if you want to create a larger resistance (works just like a single resistor or the same value). You can [https://www.electronics-tutorials.ws/resistor/res_4.html join them together in parallel] if you want to create a smaller resistance (also works just like a single resistor of the same value).<br />
<br />
[https://www.electronics-tutorials.ws/resistor/res_1.html Everything you wanted to know about resistors, but were afraid to ask !]<br />
<br />
'''Series vs parallel'''<br />
<br />
Up until now, this tutorial has assumed you've just been powering a single thing. But what if you want to do multiple? More lights are better lights, after all! There's two different ways to connect components together: in series, or in parallel.<br />
; series: they're chained together, one after the other on a single loop from power, through the components and onto ground.<br />
; parallel: there's multiple circuits, each one connected separately to the battery</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=Swagbadge2021_Newcomers&diff=1366Swagbadge2021 Newcomers2021-02-06T05:30:37Z<p>AndyGelme: /* Electronic circuits */</p>
<hr />
<div>= Swagbadge for newcomers to electronics =<br />
<br />
Welcome! ๐<br />
<br />
This guide is for everyone who likes the sound of what the swagbadge can do, or have an interest in learning about some hardware and electronics but just doesn't know where to start, or wants to learn as part of a community. We are here for you! This guide is intended to help you learn, through the development of the [[Swagbadge2021|Swagbadge]] or [[Swagbadge2021_Dagbadge|Dagbadge]]. It (will) have lots of pointers out to resources on the internet you can use for further reference and learning.<br />
<br />
Contents:<br />
* What is a Swagbadge or a Dagbadge?<br />
* The components on the badge<br />
* Some electronics fundamentals<br />
* Software makes the hardware go<br />
* The Aiko framework<br />
* Applications<br />
* All about SAO - Simple Add Ons<br />
<br />
----<br />
<br />
== What is a Swagbadge or a Dagbadge? ==<br />
<br />
A swagbadge is the officially branded, fully pre-assembled electronic badge provided to early registrants to LCA 2021. Designed to work alongside the standard paper badge normally provided to participants, it provides a talking point, an access to hardware and electronics, and their corresponding software, and is extensible both now and into the future.<br />
<br />
For those who can't get hold of a swagbadge (you registered too late to LCA 2021, you're attending LCA but don't live in Australia, or you're just interested in the process and want to be part of our wider community), there's the dagbadge. This is a list of parts that you acquire yourself (without the LCA branding), designed to be readily obtained from your local or online electronic store. You need to assemble it yourself. <br />
<br />
== The components on the badge ==<br />
<br />
The swagbadge contains:<br />
* a PCB<br />
* a Lolin32 ESP32 microprocessor<br />
* two OLED screens<br />
* two switches<br />
* two capacitive touch slider controls<br />
* four SAO headers<br />
<br />
For the list of parts on a dagbadge, see [[Swagbadge2021_Dagbadge|Dagbadge BOM]], but it is essentially the same, but with a breadboard instead of a PCB.<br />
<br />
What do all those elements mean?<br />
<br />
Imagine that the badge is a creature.<br />
* the '''Lolin32 ESP32 microprocessor''' is the brain. It is a tiny computer, designed for embedded/IoT applications, of a type called a [https://www.espressif.com/en/products/socs/esp32/overview ESP32], manufactured to the Lolin32 standard (first built by the WEMOS company but frequently copied). It has:<br />
** Wifi<br />
** Bluetooth<br />
** 4Mb (?) of flash memory<br />
** Low power consumption for long life when battery powered<br />
** Powered by microUSB - USB, but is capable of handling an external battery if you know how to connect it.<br />
* the '''PCB''' is a Printed Circuit Board. It is combination skeleton and nervous system. Like a skeleton, it holds the other parts in place. Like the nervous system, it contains circuitry printed on it to let the microprocessor (the brain) communicate with all its senses, and talk to other devices.<br />
* the two '''OLED screens''' are like inverse eyes. They are tiny computer screens, supporting black and white text, pixel and lines display, at a resolution of 128x64 (?). We have provided two so you can use them as one super wide screen, or as two separate screens.<br />
* the two '''switches''' are underneath the screens on the swagbadge. Push the screen and it pushes the switch. The software can read the hardware to detect which switch is being pressed, and whether it's a single press or a long press.<br />
* the two '''capacitive touch slider controls''' are sensors. As you move your finger up and down the lines, the software can read the hardware to find out (roughly) where your finger is on which slider. They're called "capacitive" because that is the mechanism by which the component works: it uses the capacitance in the circuit, affected by your finger, to tell where you're touching. Your smartphone's screen operates via [https://www.allaboutcircuits.com/technical-articles/introduction-to-capacitive-touch-sensing/ capacitive touch.].<br />
* the four '''SAO headers''' are Simple Add On headers, which let you extend the capability of your badge with other components and boards using the [https://hackaday.com/2019/03/20/introducing-the-shitty-add-on-v1-69bis-standard SAO standard] - there'll be a dedicated Swagbadge SAO wiki page soon(tm).<br />
<br />
== Some electronics fundamentals ==<br />
<br />
* Extra pins on the board.<br />
* Do not immerse in water/tea<br />
* ... I'm sure I had more to add here.<br />
<br />
== Software makes the hardware go ==<br />
<br />
The hardware on its own is inert. It doesn't do anything without something to read the sensors, or display information on the screen. So what drives the badge?<br />
<br />
* Operating system: the Swagbadge uses [http://micropython.org/ MicroPython], a special version of the Python programming language designed for use on small internet of things/embedded devices, just like the badge.<br />
* A framework. This is Aiko for MicroPython, written by Andy Gelme of the Open Hardware team. It provides a whole bunch of convenience functions for writing to the screens, or reading the value of switches. It's also designed to make communicating to a badge over a network a lot easier by providing access to the badge's capabilities via sending simple messages to the badge via an MQTT server. We are using a dedicated MQTT server for the badges, based in Australia so it's nice and fast!<br />
* Applications. Written in MicroPython, these are programs to make your badge do things! Several are provided, to demonstrate some capabilities to help you learn how to use the badge and copy as required to make your own code work.<br />
<br />
== The Aiko Framework ==<br />
<br />
== Applications ==<br />
<br />
== All about SAOs: Simple Add Ons ==<br />
<br />
The swagbadge came with several SAO protoboards. Our SAO prototyping boards come with standard sized holes in them to make it easier to mount components such as LEDs if you didn't have a custom SAO from Tindie or that you'd built yourself, and they have labelling on them so you can see which holes are for power or ground or are connected to the GPIO pin (this being the pin that controls a component).<br />
<br />
Why use a protoboard instead of wiring things directly onto the badge?<br />
* You can remove the board, if you want to reposition your SAO, or swap it for something else<br />
* It's an easier base for adding multiple components<br />
<br />
=== Electronic circuits ===<br />
<br />
Itching to add some blinky lights to a SAO ... by whipping out that soldering iron and getting to work ? Let's first talk about [https://en.wikipedia.org/wiki/Electronic_circuit circuitry].<br />
<br />
It is very difficult to think about, design, repair or discuss something unless you have a clear picture (model) in your mind. This is especially true of electronics, because without tools (a simple LED, multimeter, oscilloscope, logic analyzer or scanning tunneling microscope) we just can't see electrons. Knowing how the electrons flow through circuits within your SwagBadge is one of the crucial keys to understanding. Fortunately, you can approach this problem in simple steps ... well, ''"simple"'' if you have good guidance. [https://spectrum.chat/lca2021-swagbadge/hardware?tab=posts Please feel free to ask the OHMC team on the SwagBadge Spectrum forum] !<br />
<br />
''<ToDo: Start with high-level diagram before diving in deeper !>''<br />
<br />
Let's dive in the deep end by briefly checking out a '''''[https://en.wikipedia.org/wiki/Schematic schematic diagram] (pictured below)'''''. There are lots of unfamiliar symbols and terminology, but in essence it is like a map. A map that shows what components exist in the circuit and how they are connected together, from which we can determine how electricity (electrons) flows to encode data and changes to that data.<br />
<br />
''Note: The [https://en.wikipedia.org/wiki/Voltage_regulator voltage regulator] discussed soon is in the top-middle of the diagram with a part labelled '''U4: ME6211'''''<br />
<br />
[[File:Lolin32_lite_schematic.gif|480px]]<br />
<br />
In order for components to work, they need a power source (typically for the SwagBadge that's a USB cable providing 5 volts [https://en.wikipedia.org/wiki/Direct_current direct-current]), they need a [https://en.wikipedia.org/wiki/Ground_(electricity) ground] (also on the board), and the components sit between the power and the ground. But you can't just plug in any old component into any old power source. Things can go wrong:<br />
* Too much power for a component can fry it and let out the [https://en.wikipedia.org/wiki/Magic_smoke magic smoke].<br />
* Not enough power and your component just won't work. In an attempt to get enough power, it may even fry your badge's power source - if it's powered via USB to your laptop, this may mean doing Bad Things to your USB port or your laptop.<br />
<br />
Whilst the USB cable provides 5 volts (and an optional LiPo battery provides around 3.7 volts), everything (including the SAOs) beyond the USB cable and voltage regulator is '''powered by 3.3 volts'''. Many of the components may be damaged by exposing them to greater than 3.6 volts (3.3 volt rating plus 10%). It is also very important to not accidentally swap power and ground (connect ground to the power lines and the power to the ground lines), which may also damage components.<br />
<br />
The role of the voltage regulator is to reduce the power supply voltage (from 5 volts) to the 3.3 volts required by the SwagBadge circuitry and components. Looking closely at the schematic diagram at '''''U4: ME6211''''' (top, middle), you can see that the inputs are <VBUS> (USB cable power), <VBAT> (LiPo battery power) and <GND> (the ground) ... and that the outputs are <+3V3> (3.3 volts) and <GND> (not strictly an output, but for the sake of modularity, let's pretend). Throughout the schematic, many components have an "arrow" pointing towards <+3V3>, which simply means "connected to", in this schematic diagram the arrow does not indicate "flow of elections" or anything like that.<br />
<br />
You can think of electronics components as analogous to software functions ... there are input(s), output(s) and some shenanigans occur in-between ! This is great, because you can largely forget about the whole SwagBadge circuit and focus on just the SAO connector's inputs and outputs, e.g 3.3V power, ground, I2C (clock and data pins) and two General Purpose Input / Output (GPIO) pins. Too easy !<br />
<br />
'''Getting the power requirements right'''<br />
<br />
# Work out what the power consumption requirements are for your components, for both voltage and current<br />
# If it's more than what your power source provides, you'd better get a bigger power source/battery and hook up the power to that, and not to the badge<br />
# If it's less than what your power source provides, you'll need some resistors* to reduce the load going through your components<br />
<br />
Note: Using resistors works for [https://www.power-and-beyond.com/introduction-to-electronic-compontents-active-vs-passive-components-a-893768/ passive components, however some active components] may need a different approach to limiting current through them<br />
<br />
'''It's just maths'''<br />
<br />
[https://learn.sparkfun.com/tutorials/voltage-current-resistance-and-ohms-law/all Ohm's Law] is our guide. V = I x R. Voltage (V) = Current in amps (I) x Resistance in ohms (R).<br />
<br />
'''We know our badge gives you 3.3V'''<br />
<br />
You can determine the current requirements of your components by looking at their data sheets. Some will have a maximum current rating (you must stay below this !) and a recommended current rating (what you're aiming to meet). <br />
<br />
Quick example:<br />
* Let's say you have an eThingy that has a recommended current rating of 20 milliamps<br />
* Voltage off the badge is 3.3V<br />
* We use Ohm's Law to calculate the resistance (R = V / I), in our case, V = 3.3, I = 0.02 ... so R = 3.3 / 0.02 = 165<br />
* We need to use a 165 ohm resistor<br />
<br />
Note: Often the eThingy will have a voltage potential across them too, reducing the voltage potential across the resistor in the calculation above. See LEDs below<br />
<br />
Usually, the resistor can be placed on either side of the component ... either between power and the component ... or the ground and the component. In either case, the resistor is limiting the current flow just fine. However, to keep things simple and consistent, it is recommended to make the "ground" our shared base for everything and achieve this by putting the current limiting resistor between power and the component.<br />
<br />
'''LEDs are special, because they do not act like pure resistors'''<br />
<br />
LEDs have complicated behavior that affects our use of Ohm's Law, so we have to do a bit more to get the values right. For LEDs, the important thing is the voltage drop across the LED. This can also be known as the forward voltage.<br />
* It's still R = V / I, but allowing for how we calculate the voltage requirements for an LED: Required resistor = (battery source voltage - LED voltage drop) / desired current<br />
<br />
Quick example:<br />
* If you have a ''red'' LED with a voltage drop/forward voltage of 2V, and maximum current requirement of 20 mA (milliamps)<br />
* Power voltage on the badge is 3.3V<br />
* R = (3.3 - 2) / .02 = 65<br />
* We need a 65 ohm resistor<br />
* A 65 ohm resistor will provide maximum brightness and larger resistor values, e.g 1,000 ohms will limit the current further and delivery a dimmer LED experience<br />
<br />
Note: Different colour LEDs will have different forward voltage drops. For a given colour, e.g red, there will be a small range of forward voltage drops, e.g 1.7V to 2.0V.<br />
<br />
'''More about resistors'''<br />
<br />
Resistors come in certain set values. If you can't get the exact value you need, just use the next highest one (don't go lower, or your resistor won't do the job and you'll fry your electronics). You can [https://www.electronics-tutorials.ws/resistor/res_3.html join them together in series] if you want to create a larger resistance (works just like a single resistor or the same value). You can [https://www.electronics-tutorials.ws/resistor/res_4.html join them together in parallel] if you want to create a smaller resistance (also works just like a single resistor of the same value).<br />
<br />
[https://www.electronics-tutorials.ws/resistor/res_1.html Everything you wanted to know about resistors, but were afraid to ask !]<br />
<br />
'''Series vs parallel'''<br />
<br />
Up until now, this tutorial has assumed you've just been powering a single thing. But what if you want to do multiple? More lights are better lights, after all! There's two different ways to connect components together: in series, or in parallel.<br />
; series: they're chained together, one after the other on a single loop from power, through the components and onto ground.<br />
; parallel: there's multiple circuits, each one connected separately to the battery</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=Swagbadge2021_Newcomers&diff=1365Swagbadge2021 Newcomers2021-02-06T05:26:17Z<p>AndyGelme: /* Electronic circuits */</p>
<hr />
<div>= Swagbadge for newcomers to electronics =<br />
<br />
Welcome! ๐<br />
<br />
This guide is for everyone who likes the sound of what the swagbadge can do, or have an interest in learning about some hardware and electronics but just doesn't know where to start, or wants to learn as part of a community. We are here for you! This guide is intended to help you learn, through the development of the [[Swagbadge2021|Swagbadge]] or [[Swagbadge2021_Dagbadge|Dagbadge]]. It (will) have lots of pointers out to resources on the internet you can use for further reference and learning.<br />
<br />
Contents:<br />
* What is a Swagbadge or a Dagbadge?<br />
* The components on the badge<br />
* Some electronics fundamentals<br />
* Software makes the hardware go<br />
* The Aiko framework<br />
* Applications<br />
* All about SAO - Simple Add Ons<br />
<br />
----<br />
<br />
== What is a Swagbadge or a Dagbadge? ==<br />
<br />
A swagbadge is the officially branded, fully pre-assembled electronic badge provided to early registrants to LCA 2021. Designed to work alongside the standard paper badge normally provided to participants, it provides a talking point, an access to hardware and electronics, and their corresponding software, and is extensible both now and into the future.<br />
<br />
For those who can't get hold of a swagbadge (you registered too late to LCA 2021, you're attending LCA but don't live in Australia, or you're just interested in the process and want to be part of our wider community), there's the dagbadge. This is a list of parts that you acquire yourself (without the LCA branding), designed to be readily obtained from your local or online electronic store. You need to assemble it yourself. <br />
<br />
== The components on the badge ==<br />
<br />
The swagbadge contains:<br />
* a PCB<br />
* a Lolin32 ESP32 microprocessor<br />
* two OLED screens<br />
* two switches<br />
* two capacitive touch slider controls<br />
* four SAO headers<br />
<br />
For the list of parts on a dagbadge, see [[Swagbadge2021_Dagbadge|Dagbadge BOM]], but it is essentially the same, but with a breadboard instead of a PCB.<br />
<br />
What do all those elements mean?<br />
<br />
Imagine that the badge is a creature.<br />
* the '''Lolin32 ESP32 microprocessor''' is the brain. It is a tiny computer, designed for embedded/IoT applications, of a type called a [https://www.espressif.com/en/products/socs/esp32/overview ESP32], manufactured to the Lolin32 standard (first built by the WEMOS company but frequently copied). It has:<br />
** Wifi<br />
** Bluetooth<br />
** 4Mb (?) of flash memory<br />
** Low power consumption for long life when battery powered<br />
** Powered by microUSB - USB, but is capable of handling an external battery if you know how to connect it.<br />
* the '''PCB''' is a Printed Circuit Board. It is combination skeleton and nervous system. Like a skeleton, it holds the other parts in place. Like the nervous system, it contains circuitry printed on it to let the microprocessor (the brain) communicate with all its senses, and talk to other devices.<br />
* the two '''OLED screens''' are like inverse eyes. They are tiny computer screens, supporting black and white text, pixel and lines display, at a resolution of 128x64 (?). We have provided two so you can use them as one super wide screen, or as two separate screens.<br />
* the two '''switches''' are underneath the screens on the swagbadge. Push the screen and it pushes the switch. The software can read the hardware to detect which switch is being pressed, and whether it's a single press or a long press.<br />
* the two '''capacitive touch slider controls''' are sensors. As you move your finger up and down the lines, the software can read the hardware to find out (roughly) where your finger is on which slider. They're called "capacitive" because that is the mechanism by which the component works: it uses the capacitance in the circuit, affected by your finger, to tell where you're touching. Your smartphone's screen operates via [https://www.allaboutcircuits.com/technical-articles/introduction-to-capacitive-touch-sensing/ capacitive touch.].<br />
* the four '''SAO headers''' are Simple Add On headers, which let you extend the capability of your badge with other components and boards using the [https://hackaday.com/2019/03/20/introducing-the-shitty-add-on-v1-69bis-standard SAO standard] - there'll be a dedicated Swagbadge SAO wiki page soon(tm).<br />
<br />
== Some electronics fundamentals ==<br />
<br />
* Extra pins on the board.<br />
* Do not immerse in water/tea<br />
* ... I'm sure I had more to add here.<br />
<br />
== Software makes the hardware go ==<br />
<br />
The hardware on its own is inert. It doesn't do anything without something to read the sensors, or display information on the screen. So what drives the badge?<br />
<br />
* Operating system: the Swagbadge uses [http://micropython.org/ MicroPython], a special version of the Python programming language designed for use on small internet of things/embedded devices, just like the badge.<br />
* A framework. This is Aiko for MicroPython, written by Andy Gelme of the Open Hardware team. It provides a whole bunch of convenience functions for writing to the screens, or reading the value of switches. It's also designed to make communicating to a badge over a network a lot easier by providing access to the badge's capabilities via sending simple messages to the badge via an MQTT server. We are using a dedicated MQTT server for the badges, based in Australia so it's nice and fast!<br />
* Applications. Written in MicroPython, these are programs to make your badge do things! Several are provided, to demonstrate some capabilities to help you learn how to use the badge and copy as required to make your own code work.<br />
<br />
== The Aiko Framework ==<br />
<br />
== Applications ==<br />
<br />
== All about SAOs: Simple Add Ons ==<br />
<br />
The swagbadge came with several SAO protoboards. Our SAO prototyping boards come with standard sized holes in them to make it easier to mount components such as LEDs if you didn't have a custom SAO from Tindie or that you'd built yourself, and they have labelling on them so you can see which holes are for power or ground or are connected to the GPIO pin (this being the pin that controls a component).<br />
<br />
Why use a protoboard instead of wiring things directly onto the badge?<br />
* You can remove the board, if you want to reposition your SAO, or swap it for something else<br />
* It's an easier base for adding multiple components<br />
<br />
=== Electronic circuits ===<br />
<br />
Itching to add some blinky lights to a SAO ... by whipping out that soldering iron and getting to work ? Let's first talk about [https://en.wikipedia.org/wiki/Electronic_circuit circuitry].<br />
<br />
It is very difficult to think about, design, repair or discuss something unless you have a clear picture (model) in your mind. This is especially true of electronics, because without tools (a simple LED, multimeter, oscilloscope, logic analyzer or scanning tunneling microscope) we just can't see electrons. Knowing how the electrons flow through circuits within your SwagBadge is one of the crucial keys to understanding. Fortunately, you can approach this problem in simple steps ... well, ''"simple"'' if you have good guidance. [https://spectrum.chat/lca2021-swagbadge/hardware?tab=posts Please feel free to ask the OHMC team on the SwagBadge Spectrum forum] !<br />
<br />
''<ToDo: Start with high-level diagram before diving in deeper !>''<br />
<br />
Let's dive in the deep end by briefly checking out a '''''[https://en.wikipedia.org/wiki/Schematic schematic diagram] (pictured below)'''''. There are lots of unfamiliar symbols and terminology, but in essence it is like a map. A map that shows what components exist in the circuit and how they are connected together, from which we can determine how electricity (electrons) flows to encode data and changes to that data.<br />
<br />
''Note: The [https://en.wikipedia.org/wiki/Voltage_regulator voltage regulator] discussed soon is in the top-middle of the diagram with a part labelled '''U4: ME6211'''''<br />
<br />
[[File:Lolin32_lite_schematic.gif|480px]]<br />
<br />
In order for components to work, they need a power source (typically for the SwagBadge that's a USB cable providing 5 volts [https://en.wikipedia.org/wiki/Direct_current direct-current]), they need a [https://en.wikipedia.org/wiki/Ground_(electricity) ground] (also on the board), and the components sit between the power and the ground. But you can't just plug in any old component into any old power source. Things can go wrong:<br />
* Too much power for a component can fry it and let out the [https://en.wikipedia.org/wiki/Magic_smoke magic smoke].<br />
* Not enough power and your component just won't work. In an attempt to get enough power, it may even fry your badge's power source - if it's powered via USB to your laptop, this may mean doing Bad Things to your USB port or your laptop.<br />
<br />
Whilst the USB cable provides 5 volts (and an optional LiPo battery provides around 3.7 volts), everything (including the SAOs) beyond the USB cable and voltage regulator is '''powered by 3.3 volts'''. Many of the components may be damaged by exposing them to greater than 3.6 volts (3.3 volt rating plus 10%). It is also very important to not accidentally swap power and ground (connect ground to the power lines and the power to the ground lines), which may also damage components.<br />
<br />
The role of the voltage regulator is to reduce the power supply voltage (from 5 volts) to the 3.3 volts required by the SwagBadge circuitry and components. Looking closely at the schematic diagram at '''''U4: ME6211''''' (top, middle), you can see that the inputs are <VBUS> (USB cable power), <VBAT> (LiPo battery power) and <GND> (the ground) ... and that the outputs are <+3V3> (3.3 volts) and <GND> (not strictly an output, but for the sake of modularity, let's pretend). Throughout the schematic, many components have an "arrow" pointing towards <+3V3>, which simply means "connected to", in this schematic diagram the arrow does not indicate "flow of elections" or anything like that.<br />
<br />
You can think of electronics components as analogous to software functions ... there are input(s), output(s) and some shenanigans occur in-between ! This is great, because you can largely forget about the whole SwagBadge circuit and focus on just the SAO connector's inputs and outputs, e.g 3.3V power, ground, I2C (clock and data pins) and two General Purpose Input / Output (GPIO) pins. Too easy !<br />
<br />
'''Getting the power requirements right'''<br />
<br />
# Work out what the power consumption requirements are for your components, for both voltage and current<br />
# If it's more than what your power source provides, you'd better get a bigger power source/battery and hook up the power to that, and not to the badge<br />
# If it's less than what your power source provides, you'll need some resistors* to reduce the load going through your components<br />
<br />
Note: Using resistors works for [https://www.power-and-beyond.com/introduction-to-electronic-compontents-active-vs-passive-components-a-893768/ passive components, however some active components] may need a different approach to limiting current through them<br />
<br />
'''It's just maths'''<br />
<br />
[https://learn.sparkfun.com/tutorials/voltage-current-resistance-and-ohms-law/all Ohm's Law] is our guide. V = I x R. Voltage (V) = Current in amps (I) x Resistance in ohms (R).<br />
<br />
'''We know our badge gives you 3.3V'''<br />
<br />
You can determine the current requirements of your components by looking at their data sheets. Some will have a maximum current rating (you must stay below this !) and a recommended current rating (what you're aiming to meet). <br />
<br />
Quick example:<br />
* Let's say you have an eThingy that has a recommended current rating of 20 milliamps<br />
* Voltage off the badge is 3.3V<br />
* We use Ohm's Law to calculate the resistance (R = V / I), in our case, V = 3.3, I = 0.02 ... so R = 3.3 / 0.02 = 165<br />
* We need to use a 165 ohm resistor<br />
<br />
Note: Often the eThingy will have a voltage potential across them too, reducing the voltage potential across the resistor in the calculation above. See LEDs below<br />
<br />
Usually, the resistor can be placed on either side of the component ... either between power and the component ... or the ground and the component. In either case, the resistor is limiting the current flow just fine.<br />
<br />
'''LEDs are special, because they do not act like pure resistors'''<br />
<br />
LEDs have complicated behavior that affects our use of Ohm's Law, so we have to do a bit more to get the values right. For LEDs, the important thing is the voltage drop across the LED. This can also be known as the forward voltage.<br />
* It's still R = V / I, but allowing for how we calculate the voltage requirements for an LED: Required resistor = (battery source voltage - LED voltage drop) / desired current<br />
<br />
Quick example:<br />
* If you have a ''red'' LED with a voltage drop/forward voltage of 2V, and maximum current requirement of 20 mA (milliamps)<br />
* Power voltage on the badge is 3.3V<br />
* R = (3.3 - 2) / .02 = 65<br />
* We need a 65 ohm resistor<br />
* A 65 ohm resistor will provide maximum brightness and larger resistor values, e.g 1,000 ohms will limit the current further and delivery a dimmer LED experience<br />
<br />
Note: Different colour LEDs will have different forward voltage drops. For a given colour, e.g red, there will be a small range of forward voltage drops, e.g 1.7V to 2.0V.<br />
<br />
'''More about resistors'''<br />
<br />
Resistors come in certain set values. If you can't get the exact value you need, just use the next highest one (don't go lower, or your resistor won't do the job and you'll fry your electronics). You can [https://www.electronics-tutorials.ws/resistor/res_3.html join them together in series] if you want to create a larger resistance (works just like a single resistor or the same value). You can [https://www.electronics-tutorials.ws/resistor/res_4.html join them together in parallel] if you want to create a smaller resistance (also works just like a single resistor of the same value).<br />
<br />
[https://www.electronics-tutorials.ws/resistor/res_1.html Everything you wanted to know about resistors, but were afraid to ask !]<br />
<br />
'''Series vs parallel'''<br />
<br />
Up until now, this tutorial has assumed you've just been powering a single thing. But what if you want to do multiple? More lights are better lights, after all! There's two different ways to connect components together: in series, or in parallel.<br />
; series: they're chained together, one after the other on a single loop from power, through the components and onto ground.<br />
; parallel: there's multiple circuits, each one connected separately to the battery</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=Swagbadge2021_Newcomers&diff=1364Swagbadge2021 Newcomers2021-02-06T05:25:36Z<p>AndyGelme: /* Electronic circuits */</p>
<hr />
<div>= Swagbadge for newcomers to electronics =<br />
<br />
Welcome! ๐<br />
<br />
This guide is for everyone who likes the sound of what the swagbadge can do, or have an interest in learning about some hardware and electronics but just doesn't know where to start, or wants to learn as part of a community. We are here for you! This guide is intended to help you learn, through the development of the [[Swagbadge2021|Swagbadge]] or [[Swagbadge2021_Dagbadge|Dagbadge]]. It (will) have lots of pointers out to resources on the internet you can use for further reference and learning.<br />
<br />
Contents:<br />
* What is a Swagbadge or a Dagbadge?<br />
* The components on the badge<br />
* Some electronics fundamentals<br />
* Software makes the hardware go<br />
* The Aiko framework<br />
* Applications<br />
* All about SAO - Simple Add Ons<br />
<br />
----<br />
<br />
== What is a Swagbadge or a Dagbadge? ==<br />
<br />
A swagbadge is the officially branded, fully pre-assembled electronic badge provided to early registrants to LCA 2021. Designed to work alongside the standard paper badge normally provided to participants, it provides a talking point, an access to hardware and electronics, and their corresponding software, and is extensible both now and into the future.<br />
<br />
For those who can't get hold of a swagbadge (you registered too late to LCA 2021, you're attending LCA but don't live in Australia, or you're just interested in the process and want to be part of our wider community), there's the dagbadge. This is a list of parts that you acquire yourself (without the LCA branding), designed to be readily obtained from your local or online electronic store. You need to assemble it yourself. <br />
<br />
== The components on the badge ==<br />
<br />
The swagbadge contains:<br />
* a PCB<br />
* a Lolin32 ESP32 microprocessor<br />
* two OLED screens<br />
* two switches<br />
* two capacitive touch slider controls<br />
* four SAO headers<br />
<br />
For the list of parts on a dagbadge, see [[Swagbadge2021_Dagbadge|Dagbadge BOM]], but it is essentially the same, but with a breadboard instead of a PCB.<br />
<br />
What do all those elements mean?<br />
<br />
Imagine that the badge is a creature.<br />
* the '''Lolin32 ESP32 microprocessor''' is the brain. It is a tiny computer, designed for embedded/IoT applications, of a type called a [https://www.espressif.com/en/products/socs/esp32/overview ESP32], manufactured to the Lolin32 standard (first built by the WEMOS company but frequently copied). It has:<br />
** Wifi<br />
** Bluetooth<br />
** 4Mb (?) of flash memory<br />
** Low power consumption for long life when battery powered<br />
** Powered by microUSB - USB, but is capable of handling an external battery if you know how to connect it.<br />
* the '''PCB''' is a Printed Circuit Board. It is combination skeleton and nervous system. Like a skeleton, it holds the other parts in place. Like the nervous system, it contains circuitry printed on it to let the microprocessor (the brain) communicate with all its senses, and talk to other devices.<br />
* the two '''OLED screens''' are like inverse eyes. They are tiny computer screens, supporting black and white text, pixel and lines display, at a resolution of 128x64 (?). We have provided two so you can use them as one super wide screen, or as two separate screens.<br />
* the two '''switches''' are underneath the screens on the swagbadge. Push the screen and it pushes the switch. The software can read the hardware to detect which switch is being pressed, and whether it's a single press or a long press.<br />
* the two '''capacitive touch slider controls''' are sensors. As you move your finger up and down the lines, the software can read the hardware to find out (roughly) where your finger is on which slider. They're called "capacitive" because that is the mechanism by which the component works: it uses the capacitance in the circuit, affected by your finger, to tell where you're touching. Your smartphone's screen operates via [https://www.allaboutcircuits.com/technical-articles/introduction-to-capacitive-touch-sensing/ capacitive touch.].<br />
* the four '''SAO headers''' are Simple Add On headers, which let you extend the capability of your badge with other components and boards using the [https://hackaday.com/2019/03/20/introducing-the-shitty-add-on-v1-69bis-standard SAO standard] - there'll be a dedicated Swagbadge SAO wiki page soon(tm).<br />
<br />
== Some electronics fundamentals ==<br />
<br />
* Extra pins on the board.<br />
* Do not immerse in water/tea<br />
* ... I'm sure I had more to add here.<br />
<br />
== Software makes the hardware go ==<br />
<br />
The hardware on its own is inert. It doesn't do anything without something to read the sensors, or display information on the screen. So what drives the badge?<br />
<br />
* Operating system: the Swagbadge uses [http://micropython.org/ MicroPython], a special version of the Python programming language designed for use on small internet of things/embedded devices, just like the badge.<br />
* A framework. This is Aiko for MicroPython, written by Andy Gelme of the Open Hardware team. It provides a whole bunch of convenience functions for writing to the screens, or reading the value of switches. It's also designed to make communicating to a badge over a network a lot easier by providing access to the badge's capabilities via sending simple messages to the badge via an MQTT server. We are using a dedicated MQTT server for the badges, based in Australia so it's nice and fast!<br />
* Applications. Written in MicroPython, these are programs to make your badge do things! Several are provided, to demonstrate some capabilities to help you learn how to use the badge and copy as required to make your own code work.<br />
<br />
== The Aiko Framework ==<br />
<br />
== Applications ==<br />
<br />
== All about SAOs: Simple Add Ons ==<br />
<br />
The swagbadge came with several SAO protoboards. Our SAO prototyping boards come with standard sized holes in them to make it easier to mount components such as LEDs if you didn't have a custom SAO from Tindie or that you'd built yourself, and they have labelling on them so you can see which holes are for power or ground or are connected to the GPIO pin (this being the pin that controls a component).<br />
<br />
Why use a protoboard instead of wiring things directly onto the badge?<br />
* You can remove the board, if you want to reposition your SAO, or swap it for something else<br />
* It's an easier base for adding multiple components<br />
<br />
=== Electronic circuits ===<br />
<br />
Itching to add some blinky lights to a SAO ... by whipping out that soldering iron and getting to work ? Let's first talk about [https://en.wikipedia.org/wiki/Electronic_circuit circuitry].<br />
<br />
It is very difficult to think about, design, repair or discuss something unless you have a clear picture (model) in your mind. This is especially true of electronics, because without tools (a simple LED, multimeter, oscilloscope, logic analyzer or scanning tunneling microscope) we just can't see electrons. Knowing how the electrons flow through circuits within your SwagBadge is one of the crucial keys to understanding. Fortunately, you can approach this problem in simple steps ... well, ''"simple"'' if you have good guidance. [https://spectrum.chat/lca2021-swagbadge/hardware?tab=posts Please feel free to ask the OHMC team on the SwagBadge Spectrum forum] !<br />
<br />
''<ToDo: Start with high-level diagram before diving in deeper !>''<br />
<br />
Let's dive in the deep end by briefly checking out a '''''[https://en.wikipedia.org/wiki/Schematic schematic diagram] (pictured below)'''''. There are lots of unfamiliar symbols and terminology, but in essence it is like a map. A map that shows what components exist in the circuit and how they are connected together, from which we can determine how electricity (electrons) flows to encode data and changes to that data.<br />
<br />
''Note: The [https://en.wikipedia.org/wiki/Voltage_regulator voltage regulator] discussed soon is in the top-middle of the diagram with a part labelled '''U4: ME6211'''''<br />
<br />
[[File:Lolin32_lite_schematic.gif|480px]]<br />
<br />
In order for components to work, they need a power source (typically for the SwagBadge that's a USB cable providing 5 volts [https://en.wikipedia.org/wiki/Direct_current direct-current]), they need a [https://en.wikipedia.org/wiki/Ground_(electricity) ground] (also on the board), and the component(s) sits between the power and the ground. But you can't just plug in any old component into any old power source. Things can go wrong:<br />
* Too much power for a component can fry it and let out the [https://en.wikipedia.org/wiki/Magic_smoke magic smoke].<br />
* Not enough power and your component just won't work. In an attempt to get enough power, it may even fry your badge's power source - if it's powered via USB to your laptop, this may mean doing Bad Things to your USB port or your laptop.<br />
<br />
Whilst the USB cable provides 5 volts (and an optional LiPo battery provides around 3.7 volts), everything (including the SAOs) beyond the USB cable and voltage regulator is '''powered by 3.3 volts'''. Many of the components may be damaged by exposing them to greater than 3.6 volts (3.3 volt rating plus 10%). It is also very important to not accidentally swap power and ground (connect ground to the power lines and the power to the ground lines), which may also damage components.<br />
<br />
The role of the voltage regulator is to reduce the power supply voltage (from 5 volts) to the 3.3 volts required by the SwagBadge circuitry and components. Looking closely at the schematic diagram at '''''U4: ME6211''''' (top, middle), you can see that the inputs are <VBUS> (USB cable power), <VBAT> (LiPo battery power) and <GND> (the ground) ... and that the outputs are <+3V3> (3.3 volts) and <GND> (not strictly an output, but for the sake of modularity, let's pretend). Throughout the schematic, many components have an "arrow" pointing towards <+3V3>, which simply means "connected to", in this schematic diagram the arrow does not indicate "flow of elections" or anything like that.<br />
<br />
You can think of electronics components as analogous to software functions ... there are input(s), output(s) and some shenanigans occur in-between ! This is great, because you can largely forget about the whole SwagBadge circuit and focus on just the SAO connector's inputs and outputs, e.g 3.3V power, ground, I2C (clock and data pins) and two General Purpose Input / Output (GPIO) pins. Too easy !<br />
<br />
'''Getting the power requirements right'''<br />
<br />
# Work out what the power consumption requirements are for your components, for both voltage and current<br />
# If it's more than what your power source provides, you'd better get a bigger power source/battery and hook up the power to that, and not to the badge<br />
# If it's less than what your power source provides, you'll need some resistors* to reduce the load going through your components<br />
<br />
Note: Using resistors works for [https://www.power-and-beyond.com/introduction-to-electronic-compontents-active-vs-passive-components-a-893768/ passive components, however some active components] may need a different approach to limiting current through them<br />
<br />
'''It's just maths'''<br />
<br />
[https://learn.sparkfun.com/tutorials/voltage-current-resistance-and-ohms-law/all Ohm's Law] is our guide. V = I x R. Voltage (V) = Current in amps (I) x Resistance in ohms (R).<br />
<br />
'''We know our badge gives you 3.3V'''<br />
<br />
You can determine the current requirements of your components by looking at their data sheets. Some will have a maximum current rating (you must stay below this !) and a recommended current rating (what you're aiming to meet). <br />
<br />
Quick example:<br />
* Let's say you have an eThingy that has a recommended current rating of 20 milliamps<br />
* Voltage off the badge is 3.3V<br />
* We use Ohm's Law to calculate the resistance (R = V / I), in our case, V = 3.3, I = 0.02 ... so R = 3.3 / 0.02 = 165<br />
* We need to use a 165 ohm resistor<br />
<br />
Note: Often the eThingy will have a voltage potential across them too, reducing the voltage potential across the resistor in the calculation above. See LEDs below<br />
<br />
Usually, the resistor can be placed on either side of the component ... either between power and the component ... or the ground and the component. In either case, the resistor is limiting the current flow just fine.<br />
<br />
'''LEDs are special, because they do not act like pure resistors'''<br />
<br />
LEDs have complicated behavior that affects our use of Ohm's Law, so we have to do a bit more to get the values right. For LEDs, the important thing is the voltage drop across the LED. This can also be known as the forward voltage.<br />
* It's still R = V / I, but allowing for how we calculate the voltage requirements for an LED: Required resistor = (battery source voltage - LED voltage drop) / desired current<br />
<br />
Quick example:<br />
* If you have a ''red'' LED with a voltage drop/forward voltage of 2V, and maximum current requirement of 20 mA (milliamps)<br />
* Power voltage on the badge is 3.3V<br />
* R = (3.3 - 2) / .02 = 65<br />
* We need a 65 ohm resistor<br />
* A 65 ohm resistor will provide maximum brightness and larger resistor values, e.g 1,000 ohms will limit the current further and delivery a dimmer LED experience<br />
<br />
Note: Different colour LEDs will have different forward voltage drops. For a given colour, e.g red, there will be a small range of forward voltage drops, e.g 1.7V to 2.0V.<br />
<br />
'''More about resistors'''<br />
<br />
Resistors come in certain set values. If you can't get the exact value you need, just use the next highest one (don't go lower, or your resistor won't do the job and you'll fry your electronics). You can [https://www.electronics-tutorials.ws/resistor/res_3.html join them together in series] if you want to create a larger resistance (works just like a single resistor or the same value). You can [https://www.electronics-tutorials.ws/resistor/res_4.html join them together in parallel] if you want to create a smaller resistance (also works just like a single resistor of the same value).<br />
<br />
[https://www.electronics-tutorials.ws/resistor/res_1.html Everything you wanted to know about resistors, but were afraid to ask !]<br />
<br />
'''Series vs parallel'''<br />
<br />
Up until now, this tutorial has assumed you've just been powering a single thing. But what if you want to do multiple? More lights are better lights, after all! There's two different ways to connect components together: in series, or in parallel.<br />
; series: they're chained together, one after the other on a single loop from power, through the components and onto ground.<br />
; parallel: there's multiple circuits, each one connected separately to the battery</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=Swagbadge2021_Newcomers&diff=1363Swagbadge2021 Newcomers2021-02-06T05:24:53Z<p>AndyGelme: /* Electronic circuits */</p>
<hr />
<div>= Swagbadge for newcomers to electronics =<br />
<br />
Welcome! ๐<br />
<br />
This guide is for everyone who likes the sound of what the swagbadge can do, or have an interest in learning about some hardware and electronics but just doesn't know where to start, or wants to learn as part of a community. We are here for you! This guide is intended to help you learn, through the development of the [[Swagbadge2021|Swagbadge]] or [[Swagbadge2021_Dagbadge|Dagbadge]]. It (will) have lots of pointers out to resources on the internet you can use for further reference and learning.<br />
<br />
Contents:<br />
* What is a Swagbadge or a Dagbadge?<br />
* The components on the badge<br />
* Some electronics fundamentals<br />
* Software makes the hardware go<br />
* The Aiko framework<br />
* Applications<br />
* All about SAO - Simple Add Ons<br />
<br />
----<br />
<br />
== What is a Swagbadge or a Dagbadge? ==<br />
<br />
A swagbadge is the officially branded, fully pre-assembled electronic badge provided to early registrants to LCA 2021. Designed to work alongside the standard paper badge normally provided to participants, it provides a talking point, an access to hardware and electronics, and their corresponding software, and is extensible both now and into the future.<br />
<br />
For those who can't get hold of a swagbadge (you registered too late to LCA 2021, you're attending LCA but don't live in Australia, or you're just interested in the process and want to be part of our wider community), there's the dagbadge. This is a list of parts that you acquire yourself (without the LCA branding), designed to be readily obtained from your local or online electronic store. You need to assemble it yourself. <br />
<br />
== The components on the badge ==<br />
<br />
The swagbadge contains:<br />
* a PCB<br />
* a Lolin32 ESP32 microprocessor<br />
* two OLED screens<br />
* two switches<br />
* two capacitive touch slider controls<br />
* four SAO headers<br />
<br />
For the list of parts on a dagbadge, see [[Swagbadge2021_Dagbadge|Dagbadge BOM]], but it is essentially the same, but with a breadboard instead of a PCB.<br />
<br />
What do all those elements mean?<br />
<br />
Imagine that the badge is a creature.<br />
* the '''Lolin32 ESP32 microprocessor''' is the brain. It is a tiny computer, designed for embedded/IoT applications, of a type called a [https://www.espressif.com/en/products/socs/esp32/overview ESP32], manufactured to the Lolin32 standard (first built by the WEMOS company but frequently copied). It has:<br />
** Wifi<br />
** Bluetooth<br />
** 4Mb (?) of flash memory<br />
** Low power consumption for long life when battery powered<br />
** Powered by microUSB - USB, but is capable of handling an external battery if you know how to connect it.<br />
* the '''PCB''' is a Printed Circuit Board. It is combination skeleton and nervous system. Like a skeleton, it holds the other parts in place. Like the nervous system, it contains circuitry printed on it to let the microprocessor (the brain) communicate with all its senses, and talk to other devices.<br />
* the two '''OLED screens''' are like inverse eyes. They are tiny computer screens, supporting black and white text, pixel and lines display, at a resolution of 128x64 (?). We have provided two so you can use them as one super wide screen, or as two separate screens.<br />
* the two '''switches''' are underneath the screens on the swagbadge. Push the screen and it pushes the switch. The software can read the hardware to detect which switch is being pressed, and whether it's a single press or a long press.<br />
* the two '''capacitive touch slider controls''' are sensors. As you move your finger up and down the lines, the software can read the hardware to find out (roughly) where your finger is on which slider. They're called "capacitive" because that is the mechanism by which the component works: it uses the capacitance in the circuit, affected by your finger, to tell where you're touching. Your smartphone's screen operates via [https://www.allaboutcircuits.com/technical-articles/introduction-to-capacitive-touch-sensing/ capacitive touch.].<br />
* the four '''SAO headers''' are Simple Add On headers, which let you extend the capability of your badge with other components and boards using the [https://hackaday.com/2019/03/20/introducing-the-shitty-add-on-v1-69bis-standard SAO standard] - there'll be a dedicated Swagbadge SAO wiki page soon(tm).<br />
<br />
== Some electronics fundamentals ==<br />
<br />
* Extra pins on the board.<br />
* Do not immerse in water/tea<br />
* ... I'm sure I had more to add here.<br />
<br />
== Software makes the hardware go ==<br />
<br />
The hardware on its own is inert. It doesn't do anything without something to read the sensors, or display information on the screen. So what drives the badge?<br />
<br />
* Operating system: the Swagbadge uses [http://micropython.org/ MicroPython], a special version of the Python programming language designed for use on small internet of things/embedded devices, just like the badge.<br />
* A framework. This is Aiko for MicroPython, written by Andy Gelme of the Open Hardware team. It provides a whole bunch of convenience functions for writing to the screens, or reading the value of switches. It's also designed to make communicating to a badge over a network a lot easier by providing access to the badge's capabilities via sending simple messages to the badge via an MQTT server. We are using a dedicated MQTT server for the badges, based in Australia so it's nice and fast!<br />
* Applications. Written in MicroPython, these are programs to make your badge do things! Several are provided, to demonstrate some capabilities to help you learn how to use the badge and copy as required to make your own code work.<br />
<br />
== The Aiko Framework ==<br />
<br />
== Applications ==<br />
<br />
== All about SAOs: Simple Add Ons ==<br />
<br />
The swagbadge came with several SAO protoboards. Our SAO prototyping boards come with standard sized holes in them to make it easier to mount components such as LEDs if you didn't have a custom SAO from Tindie or that you'd built yourself, and they have labelling on them so you can see which holes are for power or ground or are connected to the GPIO pin (this being the pin that controls a component).<br />
<br />
Why use a protoboard instead of wiring things directly onto the badge?<br />
* You can remove the board, if you want to reposition your SAO, or swap it for something else<br />
* It's an easier base for adding multiple components<br />
<br />
=== Electronic circuits ===<br />
<br />
Itching to add some blinky lights to a SAO ... by whipping out that soldering iron and getting to work ? Let's first talk about [https://en.wikipedia.org/wiki/Electronic_circuit circuitry].<br />
<br />
It is very difficult to think about, design, repair or discuss something unless you have a clear picture (model) in your mind. This is especially true of electronics, because without tools (a simple LED, multimeter, oscilloscope, logic analyzer or scanning tunneling microscope) we just can't see electrons. Knowing how the electrons flow through circuits within your SwagBadge is one of the crucial keys to understanding. Fortunately, you can approach this problem in simple steps ... well, ''"simple"'' if you have good guidance. [https://spectrum.chat/lca2021-swagbadge/hardware?tab=posts Please feel free to ask the OHMC team on the SwagBadge Spectrum forum] !<br />
<br />
''<ToDo: Start with high-level diagram before diving in deeper !>''<br />
<br />
Let's dive in the deep end by briefly checking out a '''''[https://en.wikipedia.org/wiki/Schematic schematic diagram] (pictured below)'''''. There are lots of unfamiliar symbols and terminology, but in essence it is like a map. A map that shows what components exist in the circuit and how they are connected together, from which we can determine how electricity (electrons) flows to encode data and changes to that data.<br />
<br />
''Note: The [https://en.wikipedia.org/wiki/Voltage_regulator voltage regulator] discussed soon is in the top-middle of the diagram with a part labelled '''U4: ME6211'''''<br />
<br />
[[File:Lolin32_lite_schematic.gif|480px]]<br />
<br />
In order for components to work, they need a power source (typically for the SwagBadge that's a USB cable providing 5 volts [https://en.wikipedia.org/wiki/Direct_current direct-current]), they need a [https://en.wikipedia.org/wiki/Ground_(electricity) ground] (also on the board), and the component(s) sits between the power and the ground. But you can't just plug in any old component into any old power source. Things can go wrong:<br />
* Too much power for a component can fry it and let out the [https://en.wikipedia.org/wiki/Magic_smoke magic smoke].<br />
* Not enough power and your component just won't work. In an attempt to get enough power, it may even fry your badge's power source - if it's powered via USB to your laptop, this may mean doing Bad Things to your USB port or your laptop.<br />
<br />
You can think of electronics components as analogous to software functions ... there are input(s), output(s) and some shenanigans occur in-between ! This is great, because you can largely forget about the whole SwagBadge circuit and focus on just the SAO connector's inputs and outputs, e.g 3.3V power, ground, I2C (clock and data pins) and two General Purpose Input / Output (GPIO) pins. Too easy !<br />
<br />
Whilst the USB cable provides 5 volts (and an optional LiPo battery provides around 3.7 volts), everything (including the SAOs) beyond the USB cable and voltage regulator is '''powered by 3.3 volts'''. Many of the components may be damaged by exposing them to greater than 3.6 volts (3.3 volt rating plus 10%). It is also very important to not accidentally swap power and ground (connect ground to the power lines and the power to the ground lines), which may also damage components.<br />
<br />
The role of the voltage regulator is to reduce the power supply voltage (from 5 volts) to the 3.3 volts required by the SwagBadge circuitry and components. Looking closely at the schematic diagram at '''''U4: ME6211''''' (top, middle), you can see that the inputs are <VBUS> (USB cable power), <VBAT> (LiPo battery power) and <GND> (the ground) ... and that the outputs are <+3V3> (3.3 volts) and <GND> (not strictly an output, but for the sake of modularity, let's pretend). Throughout the schematic, many components have an "arrow" pointing towards <+3V3>, which simply means "connected to", in this schematic diagram the arrow does not indicate "flow of elections" or anything like that.<br />
<br />
'''Getting the power requirements right'''<br />
<br />
# Work out what the power consumption requirements are for your components, for both voltage and current<br />
# If it's more than what your power source provides, you'd better get a bigger power source/battery and hook up the power to that, and not to the badge<br />
# If it's less than what your power source provides, you'll need some resistors* to reduce the load going through your components<br />
<br />
Note: Using resistors works for [https://www.power-and-beyond.com/introduction-to-electronic-compontents-active-vs-passive-components-a-893768/ passive components, however some active components] may need a different approach to limiting current through them<br />
<br />
'''It's just maths'''<br />
<br />
[https://learn.sparkfun.com/tutorials/voltage-current-resistance-and-ohms-law/all Ohm's Law] is our guide. V = I x R. Voltage (V) = Current in amps (I) x Resistance in ohms (R).<br />
<br />
'''We know our badge gives you 3.3V'''<br />
<br />
You can determine the current requirements of your components by looking at their data sheets. Some will have a maximum current rating (you must stay below this !) and a recommended current rating (what you're aiming to meet). <br />
<br />
Quick example:<br />
* Let's say you have an eThingy that has a recommended current rating of 20 milliamps<br />
* Voltage off the badge is 3.3V<br />
* We use Ohm's Law to calculate the resistance (R = V / I), in our case, V = 3.3, I = 0.02 ... so R = 3.3 / 0.02 = 165<br />
* We need to use a 165 ohm resistor<br />
<br />
Note: Often the eThingy will have a voltage potential across them too, reducing the voltage potential across the resistor in the calculation above. See LEDs below<br />
<br />
Usually, the resistor can be placed on either side of the component ... either between power and the component ... or the ground and the component. In either case, the resistor is limiting the current flow just fine.<br />
<br />
'''LEDs are special, because they do not act like pure resistors'''<br />
<br />
LEDs have complicated behavior that affects our use of Ohm's Law, so we have to do a bit more to get the values right. For LEDs, the important thing is the voltage drop across the LED. This can also be known as the forward voltage.<br />
* It's still R = V / I, but allowing for how we calculate the voltage requirements for an LED: Required resistor = (battery source voltage - LED voltage drop) / desired current<br />
<br />
Quick example:<br />
* If you have a ''red'' LED with a voltage drop/forward voltage of 2V, and maximum current requirement of 20 mA (milliamps)<br />
* Power voltage on the badge is 3.3V<br />
* R = (3.3 - 2) / .02 = 65<br />
* We need a 65 ohm resistor<br />
* A 65 ohm resistor will provide maximum brightness and larger resistor values, e.g 1,000 ohms will limit the current further and delivery a dimmer LED experience<br />
<br />
Note: Different colour LEDs will have different forward voltage drops. For a given colour, e.g red, there will be a small range of forward voltage drops, e.g 1.7V to 2.0V.<br />
<br />
'''More about resistors'''<br />
<br />
Resistors come in certain set values. If you can't get the exact value you need, just use the next highest one (don't go lower, or your resistor won't do the job and you'll fry your electronics). You can [https://www.electronics-tutorials.ws/resistor/res_3.html join them together in series] if you want to create a larger resistance (works just like a single resistor or the same value). You can [https://www.electronics-tutorials.ws/resistor/res_4.html join them together in parallel] if you want to create a smaller resistance (also works just like a single resistor of the same value).<br />
<br />
[https://www.electronics-tutorials.ws/resistor/res_1.html Everything you wanted to know about resistors, but were afraid to ask !]<br />
<br />
'''Series vs parallel'''<br />
<br />
Up until now, this tutorial has assumed you've just been powering a single thing. But what if you want to do multiple? More lights are better lights, after all! There's two different ways to connect components together: in series, or in parallel.<br />
; series: they're chained together, one after the other on a single loop from power, through the components and onto ground.<br />
; parallel: there's multiple circuits, each one connected separately to the battery</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=Swagbadge2021_Newcomers&diff=1362Swagbadge2021 Newcomers2021-02-06T05:11:44Z<p>AndyGelme: /* Electronic circuits */</p>
<hr />
<div>= Swagbadge for newcomers to electronics =<br />
<br />
Welcome! ๐<br />
<br />
This guide is for everyone who likes the sound of what the swagbadge can do, or have an interest in learning about some hardware and electronics but just doesn't know where to start, or wants to learn as part of a community. We are here for you! This guide is intended to help you learn, through the development of the [[Swagbadge2021|Swagbadge]] or [[Swagbadge2021_Dagbadge|Dagbadge]]. It (will) have lots of pointers out to resources on the internet you can use for further reference and learning.<br />
<br />
Contents:<br />
* What is a Swagbadge or a Dagbadge?<br />
* The components on the badge<br />
* Some electronics fundamentals<br />
* Software makes the hardware go<br />
* The Aiko framework<br />
* Applications<br />
* All about SAO - Simple Add Ons<br />
<br />
----<br />
<br />
== What is a Swagbadge or a Dagbadge? ==<br />
<br />
A swagbadge is the officially branded, fully pre-assembled electronic badge provided to early registrants to LCA 2021. Designed to work alongside the standard paper badge normally provided to participants, it provides a talking point, an access to hardware and electronics, and their corresponding software, and is extensible both now and into the future.<br />
<br />
For those who can't get hold of a swagbadge (you registered too late to LCA 2021, you're attending LCA but don't live in Australia, or you're just interested in the process and want to be part of our wider community), there's the dagbadge. This is a list of parts that you acquire yourself (without the LCA branding), designed to be readily obtained from your local or online electronic store. You need to assemble it yourself. <br />
<br />
== The components on the badge ==<br />
<br />
The swagbadge contains:<br />
* a PCB<br />
* a Lolin32 ESP32 microprocessor<br />
* two OLED screens<br />
* two switches<br />
* two capacitive touch slider controls<br />
* four SAO headers<br />
<br />
For the list of parts on a dagbadge, see [[Swagbadge2021_Dagbadge|Dagbadge BOM]], but it is essentially the same, but with a breadboard instead of a PCB.<br />
<br />
What do all those elements mean?<br />
<br />
Imagine that the badge is a creature.<br />
* the '''Lolin32 ESP32 microprocessor''' is the brain. It is a tiny computer, designed for embedded/IoT applications, of a type called a [https://www.espressif.com/en/products/socs/esp32/overview ESP32], manufactured to the Lolin32 standard (first built by the WEMOS company but frequently copied). It has:<br />
** Wifi<br />
** Bluetooth<br />
** 4Mb (?) of flash memory<br />
** Low power consumption for long life when battery powered<br />
** Powered by microUSB - USB, but is capable of handling an external battery if you know how to connect it.<br />
* the '''PCB''' is a Printed Circuit Board. It is combination skeleton and nervous system. Like a skeleton, it holds the other parts in place. Like the nervous system, it contains circuitry printed on it to let the microprocessor (the brain) communicate with all its senses, and talk to other devices.<br />
* the two '''OLED screens''' are like inverse eyes. They are tiny computer screens, supporting black and white text, pixel and lines display, at a resolution of 128x64 (?). We have provided two so you can use them as one super wide screen, or as two separate screens.<br />
* the two '''switches''' are underneath the screens on the swagbadge. Push the screen and it pushes the switch. The software can read the hardware to detect which switch is being pressed, and whether it's a single press or a long press.<br />
* the two '''capacitive touch slider controls''' are sensors. As you move your finger up and down the lines, the software can read the hardware to find out (roughly) where your finger is on which slider. They're called "capacitive" because that is the mechanism by which the component works: it uses the capacitance in the circuit, affected by your finger, to tell where you're touching. Your smartphone's screen operates via [https://www.allaboutcircuits.com/technical-articles/introduction-to-capacitive-touch-sensing/ capacitive touch.].<br />
* the four '''SAO headers''' are Simple Add On headers, which let you extend the capability of your badge with other components and boards using the [https://hackaday.com/2019/03/20/introducing-the-shitty-add-on-v1-69bis-standard SAO standard] - there'll be a dedicated Swagbadge SAO wiki page soon(tm).<br />
<br />
== Some electronics fundamentals ==<br />
<br />
* Extra pins on the board.<br />
* Do not immerse in water/tea<br />
* ... I'm sure I had more to add here.<br />
<br />
== Software makes the hardware go ==<br />
<br />
The hardware on its own is inert. It doesn't do anything without something to read the sensors, or display information on the screen. So what drives the badge?<br />
<br />
* Operating system: the Swagbadge uses [http://micropython.org/ MicroPython], a special version of the Python programming language designed for use on small internet of things/embedded devices, just like the badge.<br />
* A framework. This is Aiko for MicroPython, written by Andy Gelme of the Open Hardware team. It provides a whole bunch of convenience functions for writing to the screens, or reading the value of switches. It's also designed to make communicating to a badge over a network a lot easier by providing access to the badge's capabilities via sending simple messages to the badge via an MQTT server. We are using a dedicated MQTT server for the badges, based in Australia so it's nice and fast!<br />
* Applications. Written in MicroPython, these are programs to make your badge do things! Several are provided, to demonstrate some capabilities to help you learn how to use the badge and copy as required to make your own code work.<br />
<br />
== The Aiko Framework ==<br />
<br />
== Applications ==<br />
<br />
== All about SAOs: Simple Add Ons ==<br />
<br />
The swagbadge came with several SAO protoboards. Our SAO prototyping boards come with standard sized holes in them to make it easier to mount components such as LEDs if you didn't have a custom SAO from Tindie or that you'd built yourself, and they have labelling on them so you can see which holes are for power or ground or are connected to the GPIO pin (this being the pin that controls a component).<br />
<br />
Why use a protoboard instead of wiring things directly onto the badge?<br />
* You can remove the board, if you want to reposition your SAO, or swap it for something else<br />
* It's an easier base for adding multiple components<br />
<br />
=== Electronic circuits ===<br />
<br />
Itching to add some blinky lights to a SAO ... by whipping out that soldering iron and getting to work ? Let's first talk about [https://en.wikipedia.org/wiki/Electronic_circuit circuitry].<br />
<br />
It is very difficult to think about, design, repair or discuss something unless you have a clear picture (model) in your mind. This is especially true of electronics, because without tools (a simple LED, multimeter, oscilloscope, logic analyzer or scanning tunneling microscope) we just can't see electrons. Knowing how the electrons flow through circuits within your SwagBadge is one of the crucial keys to understanding. Fortunately, you can approach this problem in simple steps ... well, ''"simple"'' if you have good guidance. [https://spectrum.chat/lca2021-swagbadge/hardware?tab=posts Please feel free to ask the OHMC team on the SwagBadge Spectrum forum] !<br />
<br />
''<ToDo: Start with high-level diagram before diving in deeper !>''<br />
<br />
Let's dive in the deep end by briefly checking out a '''''[https://en.wikipedia.org/wiki/Schematic schematic diagram] (pictured below)'''''. There are lots of unfamiliar symbols and terminology, but in essence it is like a map. A map that shows what components exist in the circuit and how they are connected together, from which we can determine how electricity (electrons) flows to encode data and changes to that data.<br />
<br />
''Note: The [https://en.wikipedia.org/wiki/Voltage_regulator voltage regulator] discussed soon is in the top-middle of the diagram with a part labelled '''U4: ME6211'''''<br />
<br />
[[File:Lolin32_lite_schematic.gif|480px]]<br />
<br />
In order for components to work, they need a power source (typically for the SwagBadge that's a USB cable providing 5 volts [https://en.wikipedia.org/wiki/Direct_current direct-current]), they need a [https://en.wikipedia.org/wiki/Ground_(electricity) ground] (also on the board), and the component(s) sits between the power and the ground. But you can't just plug in any old component into any old power source. Things can go wrong:<br />
* Too much power for a component can fry it and let out the [https://en.wikipedia.org/wiki/Magic_smoke magic smoke].<br />
* Not enough power and your component just won't work. In an attempt to get enough power, it may even fry your badge's power source - if it's powered via USB to your laptop, this may mean doing Bad Things to your USB port or your laptop.<br />
<br />
You can think of electronics components as analogous to software functions ... there are input(s), output(s) and some shenanigans occur in-between !<br />
<br />
Whilst the USB cable provides 5 volts (and an optional LiPo battery provides around 3.7 volts), everything (including the SAOs) beyond the USB cable and voltage regulator is '''powered by 3.3 volts'''. Many of the components may be damaged by exposing them to greater than 3.6 volts (3.3 volt rating plus 10%). It is also very important to not accidentally swap power and ground (connect ground to the power lines and the power to the ground lines), which may also damage components.<br />
<br />
The role of the voltage regulator is to reduce the power supply voltage (from 5 volts) to the 3.3 volts required by the SwagBadge circuitry and components. Looking closely at the schematic diagram at '''''U4: ME6211''''' (top, middle), you can see that the inputs are <VBUS> (USB cable power), <VBAT> (LiPo battery power) and <GND> (the ground) ... and that the outputs are <+3V3> (3.3 volts) and <GND> (not strictly an output, but for the sake of modularity, let's pretend). Throughout the schematic, many components have an "arrow" pointing towards <+3V3>, which simply means "connected to", in this schematic diagram the arrow does not indicate "flow of elections" or anything like that.<br />
<br />
'''Getting the power requirements right'''<br />
<br />
# Work out what the power consumption requirements are for your components, for both voltage and current<br />
# If it's more than what your power source provides, you'd better get a bigger power source/battery and hook up the power to that, and not to the badge<br />
# If it's less than what your power source provides, you'll need some resistors* to reduce the load going through your components<br />
<br />
Note: Using resistors works for [https://www.power-and-beyond.com/introduction-to-electronic-compontents-active-vs-passive-components-a-893768/ passive components, however some active components] may need a different approach to limiting current through them<br />
<br />
'''It's just maths'''<br />
<br />
[https://learn.sparkfun.com/tutorials/voltage-current-resistance-and-ohms-law/all Ohm's Law] is our guide. V = I x R. Voltage (V) = Current in amps (I) x Resistance in ohms (R).<br />
<br />
'''We know our badge gives you 3.3V'''<br />
<br />
You can determine the current requirements of your components by looking at their data sheets. Some will have a maximum current rating (you must stay below this !) and a recommended current rating (what you're aiming to meet). <br />
<br />
Quick example:<br />
* Let's say you have an eThingy that has a recommended current rating of 20 milliamps<br />
* Voltage off the badge is 3.3V<br />
* We use Ohm's Law to calculate the resistance (R = V / I), in our case, V = 3.3, I = 0.02 ... so R = 3.3 / 0.02 = 165<br />
* We need to use a 165 ohm resistor<br />
<br />
Note: Often the eThingy will have a voltage potential across them too, reducing the voltage potential across the resistor in the calculation above. See LEDs below<br />
<br />
Usually, the resistor can be placed on either side of the component ... either between power and the component ... or the ground and the component. In either case, the resistor is limiting the current flow just fine.<br />
<br />
'''LEDs are special, because they do not act like pure resistors'''<br />
<br />
LEDs have complicated behavior that affects our use of Ohm's Law, so we have to do a bit more to get the values right. For LEDs, the important thing is the voltage drop across the LED. This can also be known as the forward voltage.<br />
* It's still R = V / I, but allowing for how we calculate the voltage requirements for an LED: Required resistor = (battery source voltage - LED voltage drop) / desired current<br />
<br />
Quick example:<br />
* If you have a ''red'' LED with a voltage drop/forward voltage of 2V, and maximum current requirement of 20 mA (milliamps)<br />
* Power voltage on the badge is 3.3V<br />
* R = (3.3 - 2) / .02 = 65<br />
* We need a 65 ohm resistor<br />
* A 65 ohm resistor will provide maximum brightness and larger resistor values, e.g 1,000 ohms will limit the current further and delivery a dimmer LED experience<br />
<br />
Note: Different colour LEDs will have different forward voltage drops. For a given colour, e.g red, there will be a small range of forward voltage drops, e.g 1.7V to 2.0V.<br />
<br />
'''More about resistors'''<br />
<br />
Resistors come in certain set values. If you can't get the exact value you need, just use the next highest one (don't go lower, or your resistor won't do the job and you'll fry your electronics). You can [https://www.electronics-tutorials.ws/resistor/res_3.html join them together in series] if you want to create a larger resistance (works just like a single resistor or the same value). You can [https://www.electronics-tutorials.ws/resistor/res_4.html join them together in parallel] if you want to create a smaller resistance (also works just like a single resistor of the same value).<br />
<br />
[https://www.electronics-tutorials.ws/resistor/res_1.html Everything you wanted to know about resistors, but were afraid to ask !]<br />
<br />
'''Series vs parallel'''<br />
<br />
Up until now, this tutorial has assumed you've just been powering a single thing. But what if you want to do multiple? More lights are better lights, after all! There's two different ways to connect components together: in series, or in parallel.<br />
; series: they're chained together, one after the other on a single loop from power, through the components and onto ground.<br />
; parallel: there's multiple circuits, each one connected separately to the battery</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=Swagbadge2021_Newcomers&diff=1361Swagbadge2021 Newcomers2021-02-06T04:40:47Z<p>AndyGelme: Electronics circuits: Review, corrections (3.3V) and updates</p>
<hr />
<div>= Swagbadge for newcomers to electronics =<br />
<br />
Welcome! ๐<br />
<br />
This guide is for everyone who likes the sound of what the swagbadge can do, or have an interest in learning about some hardware and electronics but just doesn't know where to start, or wants to learn as part of a community. We are here for you! This guide is intended to help you learn, through the development of the [[Swagbadge2021|Swagbadge]] or [[Swagbadge2021_Dagbadge|Dagbadge]]. It (will) have lots of pointers out to resources on the internet you can use for further reference and learning.<br />
<br />
Contents:<br />
* What is a Swagbadge or a Dagbadge?<br />
* The components on the badge<br />
* Some electronics fundamentals<br />
* Software makes the hardware go<br />
* The Aiko framework<br />
* Applications<br />
* All about SAO - Simple Add Ons<br />
<br />
----<br />
<br />
== What is a Swagbadge or a Dagbadge? ==<br />
<br />
A swagbadge is the officially branded, fully pre-assembled electronic badge provided to early registrants to LCA 2021. Designed to work alongside the standard paper badge normally provided to participants, it provides a talking point, an access to hardware and electronics, and their corresponding software, and is extensible both now and into the future.<br />
<br />
For those who can't get hold of a swagbadge (you registered too late to LCA 2021, you're attending LCA but don't live in Australia, or you're just interested in the process and want to be part of our wider community), there's the dagbadge. This is a list of parts that you acquire yourself (without the LCA branding), designed to be readily obtained from your local or online electronic store. You need to assemble it yourself. <br />
<br />
== The components on the badge ==<br />
<br />
The swagbadge contains:<br />
* a PCB<br />
* a Lolin32 ESP32 microprocessor<br />
* two OLED screens<br />
* two switches<br />
* two capacitive touch slider controls<br />
* four SAO headers<br />
<br />
For the list of parts on a dagbadge, see [[Swagbadge2021_Dagbadge|Dagbadge BOM]], but it is essentially the same, but with a breadboard instead of a PCB.<br />
<br />
What do all those elements mean?<br />
<br />
Imagine that the badge is a creature.<br />
* the '''Lolin32 ESP32 microprocessor''' is the brain. It is a tiny computer, designed for embedded/IoT applications, of a type called a [https://www.espressif.com/en/products/socs/esp32/overview ESP32], manufactured to the Lolin32 standard (first built by the WEMOS company but frequently copied). It has:<br />
** Wifi<br />
** Bluetooth<br />
** 4Mb (?) of flash memory<br />
** Low power consumption for long life when battery powered<br />
** Powered by microUSB - USB, but is capable of handling an external battery if you know how to connect it.<br />
* the '''PCB''' is a Printed Circuit Board. It is combination skeleton and nervous system. Like a skeleton, it holds the other parts in place. Like the nervous system, it contains circuitry printed on it to let the microprocessor (the brain) communicate with all its senses, and talk to other devices.<br />
* the two '''OLED screens''' are like inverse eyes. They are tiny computer screens, supporting black and white text, pixel and lines display, at a resolution of 128x64 (?). We have provided two so you can use them as one super wide screen, or as two separate screens.<br />
* the two '''switches''' are underneath the screens on the swagbadge. Push the screen and it pushes the switch. The software can read the hardware to detect which switch is being pressed, and whether it's a single press or a long press.<br />
* the two '''capacitive touch slider controls''' are sensors. As you move your finger up and down the lines, the software can read the hardware to find out (roughly) where your finger is on which slider. They're called "capacitive" because that is the mechanism by which the component works: it uses the capacitance in the circuit, affected by your finger, to tell where you're touching. Your smartphone's screen operates via [https://www.allaboutcircuits.com/technical-articles/introduction-to-capacitive-touch-sensing/ capacitive touch.].<br />
* the four '''SAO headers''' are Simple Add On headers, which let you extend the capability of your badge with other components and boards using the [https://hackaday.com/2019/03/20/introducing-the-shitty-add-on-v1-69bis-standard SAO standard] - there'll be a dedicated Swagbadge SAO wiki page soon(tm).<br />
<br />
== Some electronics fundamentals ==<br />
<br />
* Extra pins on the board.<br />
* Do not immerse in water/tea<br />
* ... I'm sure I had more to add here.<br />
<br />
== Software makes the hardware go ==<br />
<br />
The hardware on its own is inert. It doesn't do anything without something to read the sensors, or display information on the screen. So what drives the badge?<br />
<br />
* Operating system: the Swagbadge uses [http://micropython.org/ MicroPython], a special version of the Python programming language designed for use on small internet of things/embedded devices, just like the badge.<br />
* A framework. This is Aiko for MicroPython, written by Andy Gelme of the Open Hardware team. It provides a whole bunch of convenience functions for writing to the screens, or reading the value of switches. It's also designed to make communicating to a badge over a network a lot easier by providing access to the badge's capabilities via sending simple messages to the badge via an MQTT server. We are using a dedicated MQTT server for the badges, based in Australia so it's nice and fast!<br />
* Applications. Written in MicroPython, these are programs to make your badge do things! Several are provided, to demonstrate some capabilities to help you learn how to use the badge and copy as required to make your own code work.<br />
<br />
== The Aiko Framework ==<br />
<br />
== Applications ==<br />
<br />
== All about SAOs: Simple Add Ons ==<br />
<br />
The swagbadge came with several SAO protoboards. Our SAO prototyping boards come with standard sized holes in them to make it easier to mount components such as LEDs if you didn't have a custom SAO from Tindie or that you'd built yourself, and they have labelling on them so you can see which holes are for power or ground or are connected to the GPIO pin (this being the pin that controls a component).<br />
<br />
Why use a protoboard instead of wiring things directly onto the badge?<br />
* You can remove the board, if you want to reposition your SAO, or swap it for something else<br />
* It's an easier base for adding multiple components<br />
<br />
=== Electronic circuits ===<br />
<br />
Itching to add some blinky lights to a SAO ... by whipping out that soldering iron and getting to work ? Let's first talk about [https://en.wikipedia.org/wiki/Electronic_circuit circuitry].<br />
<br />
It is very difficult to think about, design, repair or discuss something unless you have a clear picture (model) in your mind. This is especially true of electronics, because without tools (a simple LED, multimeter, oscilloscope, logic analyzer or scanning tunneling microscope) we just can't see electrons. Knowing how the electrons flow through circuits within your SwagBadge is one of the crucial keys to understanding. Fortunately, you can approach this problem in simple steps ... well, ''"simple"'' if you have good guidance. [https://spectrum.chat/lca2021-swagbadge/hardware?tab=posts Please feel free to ask the OHMC team on the SwagBadge Spectrum forum] !<br />
<br />
''<ToDo: Start with high-level diagram before diving in deeper !>''<br />
<br />
Let's dive in the deep end by briefly checking out a '''''[https://en.wikipedia.org/wiki/Schematic schematic diagram] (pictured below)'''''. There are lots of unfamiliar symbols and terminology, but in essence it is like a map. A map that shows what components exist in the circuit and how they are connected together, from which we can determine how electricity (electrons) flows to encode data and changes to that data.<br />
<br />
''Note: The [https://en.wikipedia.org/wiki/Voltage_regulator voltage regulator] discussed soon is in the top-middle of the diagram with a part labelled '''U4: ME6211'''''<br />
<br />
[[File:Lolin32_lite_schematic.gif|480px]]<br />
<br />
In order for components to work, they need a power source (typically for the SwagBadge that's a USB cable providing 5 volts [https://en.wikipedia.org/wiki/Direct_current direct-current]), they need a [https://en.wikipedia.org/wiki/Ground_(electricity) ground] (also on the board), and the component(s) sits between the power and the ground. But you can't just plug in any old component into any old power source. Things can go wrong:<br />
* Too much power for a component can fry it and let out the [https://en.wikipedia.org/wiki/Magic_smoke magic smoke].<br />
* Not enough power and your component just won't work. In an attempt to get enough power, it may even fry your badge's power source - if it's powered via USB to your laptop, this may mean doing Bad Things to your USB port or your laptop.<br />
<br />
You can think of electronics components as analogous to software functions ... there are input(s), output(s) and some shenanigans occur in-between !<br />
<br />
Whilst the USB cable provides 5 volts (and an optional LiPo battery provides around 3.7 volts), everything (including the SAOs) beyond the USB cable and voltage regulator is '''powered by 3.3 volts'''. Many of the components may be damaged by exposing them to greater than 3.6 volts (3.3 volt rating plus 10%). It is also very important to not accidentally swap power and ground (connect ground to the power lines and the power to the ground lines), which may also damage components.<br />
<br />
The role of the voltage regulator is to reduce the power supply voltage (from 5 volts) to the 3.3 volts required by the SwagBadge circuitry and components. Looking closely at the schematic diagram at '''''U4: ME6211''''' (top, middle), you can see that the inputs are <VBUS> (USB cable power), <VBAT> (LiPo battery power) and <GND> (the ground) ... and that the outputs are <+3V3> (3.3 volts) and <GND> (not strictly an output, but for the sake of modularity, let's pretend). Throughout the schematic, many components have an "arrow" pointing towards <+3V3>, which simply means "connected to", in this schematic diagram the arrow does not indicate "flow of elections" or anything like that.<br />
<br />
'''Getting the power requirements right'''<br />
<br />
# Work out what the power consumption requirements are for your components, for both voltage and current<br />
# If it's more than what your power source provides, you'd better get a bigger power source/battery and hook up the power to that, and not to the badge<br />
# If it's less than what your power source provides, you'll need some resistors* to reduce the load going through your components<br />
<br />
Note: Using resistors works for [https://www.power-and-beyond.com/introduction-to-electronic-compontents-active-vs-passive-components-a-893768/ passive components, however some active components] may need a different approach to limiting current through them<br />
<br />
'''It's just maths'''<br />
<br />
[https://learn.sparkfun.com/tutorials/voltage-current-resistance-and-ohms-law/all Ohm's Law] is our guide. V = I x R. Voltage (V) = Current in amps (I) x Resistance in ohms (R).<br />
<br />
'''We know our badge gives you 3.3V'''<br />
<br />
You can determine the current requirements of your components by looking at their data sheets. Some will have a maximum current rating (you must stay below this !) and a recommended current rating (what you're aiming to meet). <br />
<br />
Quick example:<br />
* Let's say you have an eThingy that has a recommended current rating of 20 milliamps<br />
* Voltage off the badge is 3.3V<br />
* We use Ohm's Law to calculate the resistance (R = V / I), in our case, V = 3.3, I = 0.02 ... so R = 3.3 / 0.02 = 165<br />
* We need to use a 165 ohm resistor<br />
<br />
Note: Often the eThingy will have a voltage potential across them too, reducing the voltage potential across the resistor in the calculation above. See LEDs below<br />
<br />
Usually, the resistor can be placed on either side of the component ... either between power and the component ... or the ground and the component. In either case, the resistor is limiting the current flow just fine.<br />
<br />
'''LEDs are special, because they are active (not passive) components'''<br />
<br />
LEDs have a twist that affects our use of Ohm's Law, so we have to do a bit more to get the values right. For LEDs the important thing is the voltage drop across the LED. This can also be known as the forward voltage.<br />
* It's still R = V / I, but allowing for how we calculate the voltage requirements for a led: R = (battery source voltage - LED voltage drop) / current<br />
<br />
Quick example:<br />
* If you have a ''red'' LED with a voltage drop/forward voltage of 2V, and maximum current requirement of 20 mA (milliamps)<br />
* Voltage off the badge is 5V<br />
* R = (3.3 - 2) / .02 = 65<br />
* We need a 65 ohm resistor<br />
* A 65 ohm resistor will provide maximum brightness, larger resistor values, e.g 1,000 ohms will limit the current further and delivery a dimmer LED experience<br />
<br />
Note: Different colour LEDs will have different forward voltage drops. For a given colour, e.g red, there will be a small range of forward voltage drops, e.g 1.7V to 2.0V.<br />
<br />
'''More about resistors'''<br />
<br />
Resistors come in certain set values. If you can't get the exact value you need, just use the next highest one (don't go lower, or your resistor won't do the job and you'll fry your electronics). You can [https://www.electronics-tutorials.ws/resistor/res_3.html join them together in series] if you want to create a larger resistance (works just like a single resistor or the same value). You can [https://www.electronics-tutorials.ws/resistor/res_4.html join them together in parallel] if you want to create a smaller resistance (also works just like a single resistor of the same value).<br />
<br />
[https://www.electronics-tutorials.ws/resistor/res_1.html Everything you wanted to know about resistors, but were afraid to ask !]<br />
<br />
'''Series vs parallel'''<br />
<br />
Up until now, this tutorial has assumed you've just been powering a single thing. But what if you want to do multiple? More lights are better lights, after all! There's two different ways to connect components together: in series, or in parallel.<br />
; series: they're chained together, one after the other on a single loop from power, through the components and onto ground.<br />
; parallel: there's multiple circuits, each one connected separately to the battery</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=File:Lolin32_lite_schematic.gif&diff=1360File:Lolin32 lite schematic.gif2021-02-06T03:10:02Z<p>AndyGelme: ESP32 development board: Lolin32 Lite schematic</p>
<hr />
<div>ESP32 development board: Lolin32 Lite schematic</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=Swagbadge2021_SoftwareDev&diff=1351Swagbadge2021 SoftwareDev2021-01-25T04:05:01Z<p>AndyGelme: /* Directory structure */</p>
<hr />
<div>{{DISPLAYTITLE:Badge Software Development}}<br />
<br />
Want to write your own programs to run on your badge? This page gives a brief overview of the software architecture, an example of a program, and a reference guide on how to access the hardware.<br />
<br />
<div style="float:right"><br />
__TOC__ <br />
</div><br />
<br />
== Background ==<br />
The badge runs [https://micropython.org MicroPython] (written by [http://dpgeorge.net/ Damien George] from Melbourne!) and has the [https://github.com/geekscape/aiko_engine_mp Aiko framework] (written by OHMC's [https://twitter.com/geekscape Andy Gelme]) loaded on it.<br />
<br />
MicroPython gives you libraries to access the ESP32 microprocessor functionality. Things like: reading and writing to specific pins on the processor or performing operating system functions such as accessing the file system).<br />
<br />
Aiko gives you convenience libraries for driving the badge hardware like the OLED screens, as well as running threads to keep your badge connected to wifi, a connection to the MQTT server, the emergency-stop function to prevent runaway code, and an automatic upgrade function so we can ship upgrades to your device without you having to wrangle git.<br />
<br />
== Sample code ==<br />
<br />
This code writes "Hello world" to one screen, while displaying the status of the wifi, MQTT connection, button presses and slider status on the left hand screen.<br />
<br />
It demonstrates how to use the Aiko event loop to periodically poll for hardware state, as well as how to access some of the features of the badge.<br />
<br />
You can find more example code in the '''examples''' directory of the [https://github.com/geekscape/aiko_engine_mp/tree/master/examples Aiko repository] on github.<br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="overflow:auto;"><br />
<div style="font-weight:bold;line-height:1.6;">Example code: use "expand" to view</div><br />
<div class="mw-collapsible-content"><br />
<nowiki><br />
# examples/helloworld.py<br />
#<br />
# Writes a message to the oled and displays some state info<br />
#<br />
# Usage<br />
# ~~~~~<br />
# import examples.helloworld as helloworld<br />
# from examples.helloworld import run<br />
# run()<br />
#<br />
<br />
from machine import Pin, TouchPad<br />
import aiko.event as event<br />
import aiko.oled as oled<br />
<br />
title = "Hello!"<br />
<br />
import configuration.main<br />
<br />
<br />
# Buttons: underneath the screens<br />
button_right = Pin(17, Pin.IN, Pin.PULL_UP)<br />
button_left = Pin(16, Pin.IN, Pin.PULL_UP)<br />
<br />
# Clean out the whole line that was there before<br />
# Write some new text and show it<br />
def oled_write_line(oled_target, x, y, text):<br />
oled_target.fill_rect(0,y,oled.width, oled.font_size, oled.bg)<br />
oled_target.text(text, x, y)<br />
oled_target.show()<br />
<br />
def status():<br />
sliders = touch_slider_handler()<br />
oledL = oled.oleds[0]<br />
oledR = oled.oleds[1]<br />
oled.write_line(oledR, 1, 10, "Hello world!")<br />
oled_write_line(oledL, 1, 10, "Wifi: "+str(net.is_connected()))<br />
oled_write_line(oledL, 1, 20, "MQTT: "+str(mqtt.is_connected()))<br />
oled_write_line(oledL, 1, 30, " "+str(int(not(buttonL.value())))+" Button "+str(int(not(buttonR.value()))))<br />
<br />
<br />
# Check on the status of the badge hardware and display that every 500ms <br />
def run():<br />
oled.oleds_clear(oled.bg)<br />
oled.set_title(title)<br />
event.add_timer_handler(status, 500)<br />
try:<br />
event.loop()<br />
finally:<br />
event.remove_timer_handler(statusbar)<br />
</nowiki><br />
</div></div><br />
<br />
== Architecture of a Swagbadge application ==<br />
<br />
An application runs when the Aiko framework is also running, so you can rely on having all the badge services available.<br />
<br />
An application is designed to be triggered when the badge is rebooted (either via pushing the button on the back, or via using ^D in the repl). The badge knows which application to run by the state of the <code>configuration\main.py</code> file.<br />
<br />
The framework will call your application's '''initialise()''' function. The framework is running an event loop, so the initialise function is the place to add in event handlers to respond to actions you take on the badge.<br />
<br />
{{Note|Note: Refreshing the OLEDs is reasonably intense on the microprocessor. If you have too many event loops triggering too often and/or too much screen activity, you can starve the badge of resources. This can produce wifi dropouts, or non-responsiveness. If you have a lot of screen activity, consider using a buffer or recording state and just doing a screen update periodically}}<br />
<br />
<br />
== Software reference ==<br />
<br />
=== MicroPython environment ===<br />
<br />
[https://micropython.org MicroPython docs]<br />
<br />
==== Special files ====<br />
<br />
There are two special files which are run automatically by MicroPython if they exist on the filesystem: <code>boot.py</code> and <code>main.py</code>.<br />
<br />
* '''boot.py''': This file is run first on power up/reset. We don't modify it from what MicroPython ships with, but it's important to know it exists (and not to delete it), and is interesting to look into it to see what it does.<br />
* '''main.py''': This is run after boot.py so if you want something to automatically happen on boot/reset, this is where to put it. We use this to start up the Aiko framework, initialise the hardware (such as the network and mqtt) and start up any application that is configured inside <code>configuration/main.py</code><br />
<br />
==== Directory structure ====<br />
<br />
What's on the processor? Where does it live?<br />
<br />
* <code>main.py</code>, <code>boot.py</code> - files run on bootup<br />
* <code>lib</code> - code in here is aiko framework code and automatically in the micropython 'path'.<br />
** <code>aiko</code> - the aiko framework<br />
* <code>applications</code> - collection of programs, one of which is configured to run automatically on bootup. Each application must have an initialise() function<br />
* <code>configuration</code> - control the behavior of Aiko by changing the "settings", e.g configuration/main.py specifies which application to run<br />
* <code>examples</code> - sample code!<br />
<br />
You can't edit the files directly on the processor (there's no editing tooling): you edit a copy of it on your computer, then use mpfshell to <code>put</code> it onto the badge.<br />
<br />
For micropython purposes, you can use the <code>import</code> statement to import anything in the <code>lib</code> directory without prefacing it with "lib", anything else is imported from root.<br />
For example:<br />
* to import lib/aiko/net.py, you would use <code>import aiko.net</code><br />
* to import examples/showcase.py, you would use <code>import examples.showcase</code><br />
<br />
Because the aiko configuration files are, themselves, just python, you can also do <code>import configuration.main.settings</code> where the file is in /configuration/main.py but it contains a datastructure called 'settings'.<br />
<br />
=== MQTT ===<br />
<br />
See [[Swagbadge2021_MQTT]]<br />
<br />
<br />
== Software development ==<br />
<br />
=== Aiko ===<br />
The Aiko Engine is what runs after boot (FreeRTOS, then microPython). Aiko provides a framework for developing applications, by providing higher level abstractions over the basic hardware, events, messaging and other conveniences. Basically, a lot of house keeping that you'd end up writing yourself. After boot, there are two background threads, one looking after Wi-Fi connectivity and the other looking after MQTT connectivity. <br />
There are also three event handlers: MQTT keep-alive, firmware upgrader and the work-in-progress SwagBadge application handler.<br />
<br />
<pre><br />
>>> aiko.event.event_list.print()<br />
<function swagbadge_handler at 0x3ffe6c70> every 5000 next 23099<br />
<function upgrade_handler at 0x3ffedfa0> every 5000 next 23099<br />
<function mqtt_ping_handler at 0x3ffe9820> every 60000 next 73672<br />
</pre><br />
That last handler, which every 5 seconds is updating the title bar "LCA2021" <--> "SwagBadge" (see https://github.com/geekscape/aiko_engine_mp/blob/master/applications/swagbadge.py ).<br />
<br />
You can stop a handler, like this (this will stop the top bar status updater):<br />
<pre><br />
>>> import applications.swagbadge<br />
>>> aiko.event.remove_timer_handler(application.swagbadge_handler)<br />
</pre><br />
<br />
<br />
=== Testing code ===<br />
<br />
First write your code on your computer, and make sure it compiles ( python -m py_compile code.py )<br />
<br />
Then, you can go in repl and use paste mode (^E). It only works if you paste a few lines at a time. End your paste with ^D and then if you pasted a function, call the function:<br />
<pre><br />
>>> ^E<br />
paste mode; Ctrl-C to cancel, Ctrl-D to finish<br />
=== PASTE_YOUR_CODE_HERE<br />
=== ^D<br />
>>><br />
</pre><br />
<br />
=== Pushing new code ===<br />
Occasionally you might find that the updated source code that you just used the mpfshell "put" command to transfer isn't properly stored on the ESP32 microPython flash filesystem. After rebooting, you might see unexpected errors. A simple way to check is to use the mpfshell "cat" command to check that the file was completely transferred. <br />
<br />
The safest way to update code is to perform a reboot after transferring all the files. Doing a soft-reboot using Control-D doesn't take long, i.e it is faster and easier than doing a hard-reboot with the reset button. The good thing about a reboot (microPython interpreter restart) is that there is no confusion about the complete state of your system, i.e what references have been held onto from your older source code that might still be running in a thread or as an event handler (via the Aiko Engine framework).<br />
<br />
You can also delete all running modules:<br />
<pre><br />
import sys<br />
sys.modules.clear() <br />
</pre><br />
<br />
More details in https://spectrum.chat/lca2021-swagbadge/software/safe-software-updates~ba541e3c-d8a2-41a8-ac47-71d87696de2d<br />
<br />
=== Replacing the swagbadge application with your own ===<br />
<br />
Edit configuration/main.py and set "application": "application/yourcode"<br />
<br />
=== Reboot to shell / Force runaway code to stop ===<br />
<br />
It's possible to write code that will leave your badge unresponsive. Rebooting just reruns the same bad code. What to do?<br />
<br />
* Place a finger on each of the bottom slider pads, either side of the microprocessor. <br />
* Trigger a restart by using the button on the back of the badge, or Ctrl-D in repl (if you can get into repl)<br />
<br />
The badge will restart but not autorun any code, just drop you back at the repl prompt. From there you can <code>put</code> bugfixed code back onto the device.<br />
<br />
See https://github.com/geekscape/aiko_engine_mp/blob/a5b5593d37509df64a3dcb4cdc3d13a411152d82/main.py#L20<br />
<br />
<br />
== Hardware reference ==<br />
<br />
=== OLED screens ===<br />
<br />
==== via MQTT ====<br />
<br />
* '''(oled:clear)''' : clears both screens<br />
* '''(oled:log Hello World!)''' : writes a message along the bottom of the screens, scrolling up whatever is there out of the way<br />
* '''(oled:pixel x y)''' : lights a pixel at that spot<br />
* '''(oled:text x y This is a test!)''' : Puts some text at the position x,y. It will be displayed over the top of whatever's there.<br />
<br />
==== via API ====<br />
<br />
On the badge, by default the two oleds work as a single long screen, with text split across both of them. You can access a specific oled and use the underlying functions to write to them<br />
<br />
Library<br />
* '''from aiko import oled''' # make the oled functions available for use within your code<br />
<br />
Globals<br />
* '''[] oled.oleds''' # an array of oleds, letting you address them separately if you choose<br />
* '''int oled.fg/oled.bg''' # get/set fg and bg colours (0 or 1)<br />
* '''int oled.font_size''' # helpful to work out how much space a line of text will take up<br />
* '''boolean oled.lock_title''' # true/false. True means the display always shows the title. False means it'll be wiped once the display is cleared.<br />
<br />
Functions<br />
* '''oled.initialise()''' # uses configuration.oled.settings by default, normally already invoked by the base swagbadge handler<br />
* '''oled.oleds_clear(colour)''' # pass in oled.bg or oled.fg for easy set. Wipes the display<br />
* '''oled.log(text)''' # scroll up text to insert a new line at the bottom of the display<br />
* '''oled.text(text, x, y, colour)''' # add text at the position x,y in the colour specified. Note: does not clear the contents at this spot first.<br />
* '''oled.oleds_show()''' # refresh the display with the latest text/image additions<br />
* '''oled.set_title(text)''' # set the title text<br />
* '''oled.write_title()''' # write the title text<br />
<br />
==== Oled image push and I2C speed ====<br />
<br />
- example #1: https://github.com/geekscape/aiko_engine_mp/blob/master/examples/oled_image.py<br />
<br />
- example #2: https://github.com/geekscape/aiko_engine_mp/blob/master/examples/oled_benchmark.py<br />
<br />
The 2nd example gets a speed of 21fps per screen (or about 10fps for both screens).<br />
<br />
Using C++ code (see https://github.com/geekscape/aiko_engine_mp/commit/a22b3099584c9978807e08adf752f3082af65875 ) you get at least 61fps per screen (if you do assembly: 86fps, and with crazy I2C noacks hacks, you can get 150fps: https://bitbanksoftware.blogspot.com/2018/05/fast-ssd1306-oled-drawing-with-i2c-bit.html ).<br />
<br />
Back to python, if you increase the CPU speed with machine.freq(240000000) , you'll get 26fps per screen, and if you replace the image pixel pushes by a full back or full white push, you get 29fps, which seems to be an upper limit of the python oled code. A better end to end C++ driver could give a lot more speed.<br />
<br />
=== Screen buttons ===<br />
<br />
If you push (gently!) on the screens, you'll discover they double as buttons: there's a small switch under each OLED that is pressed when you push down on the screen.<br />
<br />
{{Note|'''Warning''': Push on the '''middle''' of the screen, not the edge. This will minimise the risk of bending... and breaking... the screen.}}<br />
<br />
The left screen button is pin 16. The right screen button is pin 17.<br />
<br />
==== via API ====<br />
<br />
<pre><br />
from machine import Pin<br />
<br />
button_left = Pin(16, Pin.IN, Pin.PULL_UP)<br />
button_right = Pin(17, Pin.IN, Pin.PULL_UP)<br />
<br />
pressed = not(button_left.value())<br />
</pre><br />
<br />
The button sends "1" when it's ''not'' being pressed, and "0" when it is. This is counterintuitive to most of us, so I recommend inverting the value when reading it.<br />
<br />
=== Sliders ===<br />
<br />
The sliders operate via capacitive touch. You can use them to detect if someone has their finger on the circular pads at either end (which let you treat them like buttons), or you can detect the position of the finger along the slider by checking the relative values as the capacitance changes.<br />
<br />
The left slider is on pins 12 (bottom) and 15 (top), right slider is on pins 14 (bottom) and 27 (top).<br />
<br />
More info from MicroPython about [http://docs.micropython.org/en/latest/esp32/quickref.html?highlight=touchpad#capacitive-touch capacitive touch].<br />
<br />
<pre><br />
from machine import Pin, TouchPad<br />
import aiko.common<br />
<br />
bottom_left = TouchPad(Pin(12))<br />
top_left = TouchPad(Pin(15))<br />
bottom_right = TouchPad(Pin(14))<br />
top_right = TouchPad(Pin(27))<br />
<br />
# is this button pressed?<br />
# the commons library returns true/false<br />
pressed_bottom_left = common.touch_pins_check([bottom_left])<br />
<br />
# check where we are along the slider<br />
# the 'read' functions return an integer of the 'strength' of the <br />
# capacitance. As you move your finger between the endpoints, <br />
#the relative value of the difference between them will change.<br />
slider_left = bottom_left.read() - bottom_left.read()<br />
</pre><br />
<br />
Micropython functions<br />
* '''touchpad.read()''' - gives you the current value of the sensor. It will be large when not touched (over 1000) and smaller when touched.<br />
Aiko functions<br />
* '''common.touch_pins_check(touchpad_array)''' - Returns true if ''all'' the touchpad sensors listed are being touched, false otherwise.<br />
<br />
=== SAOs (simple addons) ===<br />
<br />
Information about [[Swagbadge2021_SAO|hardware]]</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=Swagbadge2021_SAO&diff=1349Swagbadge2021 SAO2021-01-25T00:36:16Z<p>AndyGelme: Added Tux SAO touch solder blob hack !</p>
<hr />
<div>== SAO for Swagbadge 2021 ==<br />
<br />
=== What is an SAO? ===<br />
<br />
An SAO is a Simple Add On. Originally designed in three seconds on the back of a napkin, the idea was to produce a community driven "standard" of a set of pins to extend a badge board, so you could bling up your electronic badge more easily.<br />
<br />
Hackaday is the home of the [https://hackaday.io/project/52950-shitty-add-ons SAO], and covers its history, including its colourfully named past, and has samples of other SAO badge boards.<br />
<br />
It comes with 6 pins: power (3V), GND, SDA, SCL, GPIO1, GPIO2.<br />
<br />
Want to know more? [https://youtu.be/G2fHKRONc6U]<br />
<br />
=== What can/can't be done with an SAO on Swagbadge/Dagbadge? ===<br />
<br />
'''What's good?'''<br />
<br />
Blinky leds! Motors to power... things (like Lego)! Edge-lit acrylics! Hook it up to some wearables. Attach it to some sensors to read environmental conditions, or your heart rate. Add in some touch sensitive panels and have it play music.<br />
<br />
'''Limitations/considerations'''<br />
<br />
* It's powered by 3V: heavy power-usage components will need an additional power source. (such as servos which commonly operate around 6 volts)<br />
* Consider the stability of your SAO and where you want to attach it to the LCA badge. What on the underlying badge might you be covering up? How will you stabilise it so it won't fall off? Does it need extra stability in order to support clicky/touchy buttons?<br />
<br />
=== Make your own SAO! ===<br />
<br />
'''Go Basic'''<br />
<br />
So long as you can make good electrical connections, this doesn't have to be fancy. Some cardstock with copper tape or wires will work just fine to power up some blinky leds!<br />
<br />
The swagbadge package came with some prototyping boards (the square ones) to let you more easily hook up your own components to the badge. Expect some docs here soon on how to just hook up an LED for the simplest possible SAO.<br />
<br />
'''Tux SAO'''<br />
<br />
The Tux SAO can just be popped on the board for aesthetics. But if you'd like to make it reactive... the [https://github.com/geekscape/aiko_engine_mp/blob/master/examples/snoot_boop.py snoot_boop example code] has instructions on how to modify the badge in the comments, along with the sample code to show how you use it.<br />
<br />
[[File:Tux_sao_touch_hack.jpg|640px]]<br />
<br />
'''Level up'''<br />
<br />
Design your own PCB and have it printed and shipped out to you, full of sparkly bling and inbuilt goodness.<br />
<br />
=== Community SAO list ===<br />
<br />
Built a SAO? Interested in sharing it with other attendees? We'd love to feature it here.<br />
<br />
In the meanwhile, here's some that people have built for previous conferences on [https://www.tindie.com/search/?q=SAO+badge Tindie]</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=File:Tux_sao_touch_hack.jpg&diff=1348File:Tux sao touch hack.jpg2021-01-25T00:33:48Z<p>AndyGelme: Before and after pictures of the Tux SAO with the touch solder blob hack !</p>
<hr />
<div>Before and after pictures of the Tux SAO with the touch solder blob hack !</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=SwagBadge2021&diff=1249SwagBadge20212020-12-21T08:08:34Z<p>AndyGelme: </p>
<hr />
<div>= Swagbadge for [https://lca2021.linux.org.au LCA2021]: Welcome! =<br />
<br />
โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; <br/><br/><br />
<span style="font-size:larger"><br />
&nbsp;&nbsp; The Open Hardware Miniconf is ON for 2021! [https://linux.conf.au/programme/miniconfs/open-hardware/ Submit your talk proposals today]. Deadline <del>is Dec 18th</del> has been extended !</span><br />
<br/><br/><br />
โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; โญ &nbsp;&nbsp; <br />
<br />
== Status, About us, Contact us ==<br />
* '''[[SwagBadge2021 Status, blog and timeline]]: Read for regular project updates and history'''<br />
* [https://twitter.com/swagbadge2021 Twitter @swagbadge]: Follow for project notifications. HashTags: ''#swagbadge, #lca2021''<br />
* [https://diyodemag.com/columns/swagbadge_dagbadge_badge_ohmc_linux_conference DIYODE magazine issue 41, December 2020 article] on the Swagbadge<br />
<br />
== Getting started ==<br />
* [https://spectrum.chat/lca2021-swagbadge SwagBadge Spectrum chat]: Chat system where the SwagBadge team hang out to help you with your badge<br />
* [[Swagbadge2021_Newcomers|Newcomers guide]]: Read our guide if you haven't done much hardware before and need more fundamentals before diving in<br />
* [[Swagbadge2021_GettingStarted|Getting started guide: Swagbadge]]: Your Swagbadge has arrived. What next?<br />
* [[Swagbadge2021_Dagbadge|Dagbadge]]: How to build and make your own!<br />
* [[SwagBadge2021 FAQ]]: Frequently Asked Questions<br />
<br />
== Resources ==<br />
* [https://github.com/CCHS-Melbourne/Swag-Badge GitHub repository: #swagbadge hardware]<br />
* [https://github.com/geekscape/aiko_engine_mp GitHub repository: Aiko Engine for microPython]: Not yet updated for #swagbadge<br />
<br />
<br />
== Announcements ==<br />
<br />
'''Today (2020-10-04), we are publicly announcing the [https://lca2021.linux.org.au LCA2021] #swagbadge project''' and beginning the process of opening up our hardware and software development processes. The next couple of weeks will be a bit of a spectator sport whilst we put in place mechanisms for technical collaboration and contributions. We warmly welcome you to join in, get an early start on LCA2021 and enjoy the ride ! '''We'll be listening for questions and feedback sent to [https://twitter.com/swagbadge2021 Twitter @swagbadge]'''<br />
<br />
Note: Whilst this project is supported by [https://lca2021.linux.org.au LCA2021], the OHMC team are not an official part of the LCA2021 organizing committee. Of course, we'll be in close communication with them. Also, this project will be covered by a [https://lca2021.linux.org.au/attend/code-of-conduct Code Of Conduct] (perhaps with some hardware hacking caveats). The OHMC team supports and encourages inclusion and diversity in hardware / software hacking, please help us do better !<br />
<br />
<br />
[[File:Swag badge render 2020-09-30.jpg|360px|LCA2021 swag badge 3D render 2020-09-30]] Recent 3D render 2020-09-30<br />
<br />
<br />
----<br />
<br />
=== LCA2021 #swagbadge announcement ===<br />
<br />
A limited number of '''LCA2021 Swag Badge''' electronic badges will be produced for the [https://lca2021.linux.org.au on-line LCA2021] conference, which will be distributed to conference attendees. The LCA2021 Swag Badge is being specially developed and tailored for the conference.<br />
<br />
* ''Note 0: This is just our current understanding of how the LCA2021 #swagbadge will be made available ... and is subject to change by LCA2021 organizing committee''<br />
* ''Note 1: The #swagbadge will be only available to Australian participants, due to the cost and delay of shipping internationally''<br />
* ''Note 2: If you are outside of Australia or miss out on a #swagbadge, then you might want to seriously consider acquiring a [[Swagbadge2021_Dagbadge|Dagbadge]]''<br />
* ''Note 3: The Open Hardware Miniconf is ON! [https://linux.conf.au/programme/miniconfs/open-hardware/ Submit your talk proposals today]. Deadline is Dec 18th.''<br />
<br />
<br />
No ordinary conference badge, this one is full of extensible, open hardware, ready to be loaded up with whatever software and custom hardware add-ons takes your fancy !<br />
<br />
The Open Hardware Mini-Conference (OHMC) team are putting together a badge that will be:<br />
<br />
* Approachable for newcomers, e.g runs Python and doesn't require any special IDE (for embedded device development)<br />
* Custom-designed, super slick PCB<br />
* Powered by an ESP32 which gives you Wi-Fi and Bluetooth connectivity<br />
* Not one, but two delightful OLED screens <br />
* ... which double as pressable buttons<br />
* Ready for development with the latest [http://micropython.org microPython] installed<br />
* Supported by an open-sourced embedded network framework, the [https://github.com/geekscape/aiko_engine_mp Aiko Engine for microPython]<br />
* With a number of [[Swagbadge2021_SAO|SAO connectors]] so you can extend and add on your own hardware components<br />
<br />
We aim to post the #swagbadges prior to Christmas so they will be available before [https://lca2021.linux.org.au on-line LCA2021] begins.<br />
<br />
But wait, there's more ! In the spirit of LCA, we want the capabilities of the badge to be truly open. We'll be following up with more information about how you can join in to build out ideas for doing wonderful, magnificent, incredible... stuff ... '''<your idea here>''' ... using the [[Swagbadge2021_SAO|SAO connectors]]. <br />
<br />
Follow along and join in with the OHMC team as we prepare, plan, design and build your badges. We'll be posting regular updates here on this Wiki.<br />
<br />
<br />
[[File:Swag badge mechanical 2020-09-30.jpg|360px|LCA2021 swag badge mechanical layout 2020-09-30]] Mechanical layout 2020-09-30<br />
<br />
<br />
[[Swagbadge2021 Backstory]]</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=SwagBadge2021_Status,_blog_and_timeline&diff=1236SwagBadge2021 Status, blog and timeline2020-12-06T22:59:50Z<p>AndyGelme: /* Status: Week of 2020-11-30 */</p>
<hr />
<div>=== Status: Week of 2020-11-30 ===<br />
<br />
'''If you'd like to present at the LCA2021 Open Hardware MiniConference, [https://linux.conf.au/programme/miniconfs/open-hardware please make a submission].''' We're aiming to address a range of topics and skill levels (newcomer to advanced). '''Submissions close on 2020-12-18.'''<br />
<br />
[[File:diyodecover.jpg|240px|right|Cover of Diyode Magazine Issue 41: December 2020]] We're very excited to have [https://diyodemag.com/columns/swagbadge_dagbadge_badge_ohmc_linux_conference our article] included in the December 2020 issue of [https://diyodemag.com Diyode Magazine]. Australia's magazine for makers, hardware hackers and electronic enthusiasts, we're delighted to see Swagbadge in there alongside other incredible projects ([https://diyodemag.com/features/arduino_mega_walking_traffic_crossing_lights_project see page 51]). We're hoping it'll bring more people to LCA, to the OHMC and get them excited about open hardware in general. Maybe it'll help increase memberships at your local HackerSpace too ! The article provides a reasonable overview of the project with some background and some technical details we haven't covered here yet ... so, worth a read.<br />
<br />
There was even more excitement with the [https://lca2021.linux.org.au/news/keynote-limor-fried announcement of Limor Fried as an LCA2021 keynote speaker] !<br />
<br />
On the badge front, the hardware is nearly all ready. Screens, switches and microcontrollers have been attached to 300 boards, and the excess headers trimmed off. We'll be gathering them together in one place soon, so we can flash the latest firmware and test that all the hardware works as expected by hooking each and every one up to a test rig.<br />
<br />
Snipping off so many excess pin lengths results in a lot of blisters (Thank you Andrew and John for your sacrifice!): [[File:Pins.jpg|240px|A workbench covered with hundreds of tiny metal pins: excess length that has been snipped off by hand]]<br />
<br />
This week sees us push the firmware to be a Minimum Viable Release, so that everyone's initial Out Of The Box experience is good. So this means we need to:<br />
* Make it easy for everyone to connect their SwagBadge to their Wi-Fi router<br />
* Getting the badges capable of self-updating to the latest firmware<br />
* Prepare individual encryption keys so the badges can communicate securely<br />
* Providing a couple of applications to run initially so the capabilities can be displayed<br />
<br />
We'll also be writing up documentation so everyone can get a feel for the care and feeding of their badge and how they can extend it for themselves.<br />
<br />
Are you excited and want to start chatting about it, or start assembling your own [[Swagbadge2021_Dagbadge|Dagbadge]]? Our [https://groups.google.com/u/2/g/open-hardware-conf/about Open Hardware Google Groups] mailing list is happy to have you: come say hi!<br />
<br />
=== Status: Week of 2020-11-15 ===<br />
<br />
The amended PCBs arrive and they're all in top working order. So we split up all the components among the team to pre-assemble and test them so you don't have to:<br />
* Erase and flash the Lolin32s with MicroPython<br />
* Solder the headers on the Lolin32s, and solder these to the PCBs<br />
* Snip off the excess headers<br />
* Solder the OLEDs and switches to the PCBs<br />
It takes around 10 minutes to assemble and test each of the 300 Swagbadges.<br />
<br />
<br />
Check out our twitter [https://twitter.com/swagbadge2021 @swagbadge2021] for a preview peek at a special SAO that will come with your badge too!<br />
<br />
On the firmware, we had to deal with an unexpected Wi-Fi networking issue. It appears that our event loop code was consuming the processor and not allowing sufficient time for handling Wi-Fi, which in turn caused networking unreliability ... sometimes ! Fortunately, that issue has been fixed and at the same time a fairly extensive rewrite of the underlying Wi-Fi / MQTT connection, failure handling and re-connection threads occurred. Now we can get back to completing the out-of-the-box Wi-Fi client configuration functionality.<br />
<br />
Our Open Hardware MiniConference was accepted, so you can expect more great sessions during LCA2021 too. We'll definitely be making time for discussion and exploration of the Swagbadge, as well as talks proposed BY YOU for the Open Hardware MiniConference, and a community-building session so we can make OHMC even better than ever!<br />
<br />
We have some other exciting news, but you'll just have to wait til December for that. Soon, SOON!<br />
<br />
<br />
=== Status: Week of 2020-11-01 ===<br />
<br />
The PCBs arrived on Sunday. What a lovely surprise! Yay!<br />
... Except they have some bad wiring which was missed despite a bunch of review. Boo!<br />
<br />
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.<br />
<br />
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.<br />
<br />
The SwagBadges are all owned by Linux Australia, and we are talking with them about the best way to reuse them and potentially recover some costs.<br />
<br />
Our set of documentation is steadily being built out. We know we need:<br />
* A quickstart set of instructions for every SwagBadge recipient, for getting going once they get their package in the post<br />
* How to extend a SwagBadge, via software and hardware<br />
* Troubleshooting!<br />
* Where to get help (from us, and the wider maker community)<br />
* List of materials and build instructions for the Dagbadge<br />
* Newcomers' guide to electronics<br />
<br />
=== Status: Week of 2020-10-25 ===<br />
<br />
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. <br />
<br />
Why?<br />
<br />
# This lets us test if the Lolins are functional, nice and early, when we have time to do something about it.<br />
# It'll save us some time later on when we'll be hitting the deadline prior to shipping.<br />
<br />
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!<br />
<br />
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!<br />
<br />
This is a healthy Lolin: [[File:healthylolin.png|240px|Image of a healthy lolin with clean circuitry]]<br />
<br />
This is the damaged one: [[File:unhealthylolin.png|240px|Image of a dodgy lolin with semi-repaired blobby circuitry]]<br />
<br />
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.<br />
<br />
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.<br />
<br />
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:<br />
* Testing the boards<br />
* Soldering on all the components (switches, screens, microcontroller)<br />
* Retesting once they're assembled<br />
<br />
SAO thoughts continue to evolve, with ideas ranging from madcap to enlightened genius turning up.<br />
* Theremin<br />
* Game controller<br />
* Googly eye jiggler<br />
* Tux<br />
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 [https://github.com/PancakeLegend/SwagBadge-SAOs PancakeLegend SAO git].<br />
<br />
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:<br />
* Stand up a wireless AP for wifi config if the device can't find anything to connect to on boot<br />
* 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)<br />
* 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.<br />
* 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.<br />
* Code to support adding SAOs to any of the spots on the board without having to reconfigure a whole bunch of pin assignments.<br />
* A variety of example applications and documentation to let people copy and embellish to bring their own magnificent ideas to life.<br />
<br />
Our ideas for the community continue to grow and we hope to be able to invite you all to join us in early November:<br />
* 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.<br />
* Get y'all involved!<br />
* 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.<br />
* Know how to build SAOs but aren't sure what would be good? We'll find you some people who have ideas.<br />
* Want to write neat software to make the badge do something? <br />
* Built a badge/have a badge from another event and looking for a community to help you understand and extend it?<br />
* Let's all stay connected, help each other out, and grow our expertise! It is, after all, the very essence of open hardware!<br />
<br />
... 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! <br />
<br />
=== Status: 2020-10-18 ===<br />
<br />
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.<br />
<br />
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.<br />
<br />
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 [https://jlcpcb.com/ JLC] which we've used before. Here's a [https://www.youtube.com/watch?v=ljOoGyCso8s 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 [https://www.youtube.com/playlist?list=PLIizEY7AraGyh6Y7KdNGXxRuXXwz9m8ta series of videos] on the tour to get a taste of what they saw.<br />
<br />
Think building your own PCB is too hard? Think again! If you plan on building a custom [[Swagbadge2021_SAO|SAO]] you'll want to learn how. The internet provides once again, with a [https://www.youtube.com/watch?v=BVhWh3AsXQs&list=PLy2022BX6EspFAKBCgRuEuzapuz_4aJCn 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.<br />
<br />
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.<br />
<br />
=== Status: 2020-10-11 ===<br />
<br />
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.<br />
<br />
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<br />
* be useful right at the start without any additional components<br />
* be elegant to look at<br />
* function as a badge<br />
* have the [[Swagbadge2021_SAO|SAO]] extension points are in useful locations and pointing in useful directions.<br />
* have space to include the important logos for the conference!<br />
<br />
[[File:badge_front.jpg|240px|LCA2021 swag badge front side 2020-10-08]] [[File:badge_back.jpg|240px|LCA2021 swag badge back side 2020-10-08]]<br />
<br />
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 [https://www.youtube.com/watch?v=d02arsbvVF8&t=2062 latest episode talks] about the swagbadge from about 34 minutes in.<br />
<br />
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.<br />
<br />
<br />
=== Status: 2020-10-04 ===<br />
<br />
Project approved and announced ... [https://github.com/CCHS-Melbourne/Swag-Badge #swagbadge hardware design] underway ... #swagbadge major parts ordered ... #dagbadge [https://en.wikipedia.org/wiki/Bill_of_materials BoM] not yet finalized ... Core team (mostly) assembled and ready to start building the community ... [https://hackaday.com/2019/03/20/introducing-the-shitty-add-on-v1-69bis-standard SAO] hardware community development not yet commenced (but ideas are brewing) ... #swagbadge firmware development is still flying under-the-radar !<br />
<br />
Note: Whilst the #swagbadge major parts have been ordered (330x ESP32 microcontrollers and 660x OLED screens), we are already sweating on shipping delays !<br />
<br />
<br />
[[File:Swag badge render 2020-09-30.jpg|240px|LCA2021 swag badge 3D render 2020-09-30]] Recent 3D render 2020-09-30<br />
<br />
<br />
=== Recommendations for those who can't wait to get started ===<br />
* Play with [http://micropython.org/unicorn microPython on-line]: Select peripheral "I2C LCD", choose demo "I2C LCD" and press "Run script"<br />
* Play with [https://github.com/micropython/micropython microPython on Unix]: See section "The Unix version"<br />
* Read up on [https://hackaday.com/2019/03/20/introducing-the-shitty-add-on-v1-69bis-standard SAO hardware add-ons]: How to extend the #swagbadge using a 6 pin (2x3) connector with power, [https://en.wikipedia.org/wiki/I%C2%B2C I2C bus] and 2x [https://en.wikipedia.org/wiki/General-purpose_input/output GPIO pins]<br />
<br />
<br />
[[File:0.96-inch-Blue-I2c-IIC-Serial-128x64-Oled-LCD-LED-Display-Module-5a.jpg|200px|0.96" OLED screen]] <br />
[[File:Lolin32.jpg|70px|ESP32 Lolin32]] <br />
[[File:Lolin32 pinout.jpg|360px|ESP32 Lolin32 pin-out]] <br />
<br />
<br />
=== Origin Story Timeline ===<br />
<br />
* 2020-10-04: #swagbadge project public announcement<br />
* 2020-09-24: Preparing for initial public announcement<br />
* 2020-09-17: [https://github.com/CCHS-Melbourne/Swag-Badge GitHub repository: #swagbadge hardware] created<br />
* 2020-09-11: Assembling core OHMC team ... getting the band back together<br />
* 2020-09-10: #swagbadge project green light ... we're good to go ! [https://twitter.com/linuxconfau/status/1304009218521853953 Trying not to spill the beans ?]<br />
* 2020-09-07: #swagbadge project proposal (goals, timeline and costs) sent to LCA2021<br />
* 2020-08-26: #swagbadge project conception<br />
* 2020-05-06: [https://linux.org.au/linux-australia-community-update-lca2021-information LCA2021 in Canberra "postponed" to 2022 and rebooted as on-line and world-wide for 2021] ... finally made it to Antarctica !<br />
* 2018-01-22: LCA2021 [https://github.com/geekscape/aiko_engine_mp GitHub repository: Aiko Engine for microPython] incept date<br />
<br />
[[File:Swag_badge_render_2020_09-02.png|200px|LCA2021 swag badge very first render 2020-09-02]]LCA2021 swag badge very first render 2020-09-02</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=SwagBadge2021_Status,_blog_and_timeline&diff=1235SwagBadge2021 Status, blog and timeline2020-12-06T22:58:38Z<p>AndyGelme: </p>
<hr />
<div>=== Status: Week of 2020-11-30 ===<br />
<br />
'''If you'd like to present at the LCA2021 Open Hardware MiniConference, [https://linux.conf.au/programme/miniconfs/open-hardware please make a submission].''' We're aiming to address a range of topics and skill levels (newcomer to advanced). '''Submissions close on 2020-12-18.'''<br />
<br />
[[File:diyodecover.jpg|240px|right|Cover of Diyode Magazine Issue 41: December 2020]] We're very excited to have [https://diyodemag.com/columns/swagbadge_dagbadge_badge_ohmc_linux_conference our article] included in the December 2020 issue of [https://diyodemag.com Diyode Magazine]. Australia's magazine for makers, hardware hackers and electronic enthusiasts, we're delighted to see Swagbadge in there alongside other incredible projects ([https://diyodemag.com/features/arduino_mega_walking_traffic_crossing_lights_project see page 51]). We're hoping it'll bring more people to LCA, to the OHMC and get them excited about open hardware in general. Maybe it'll help increase memberships at your local HackerSpace too ! The article provides a reasonable overview of the project with some background and some technical details we haven't covered here yet ... so, worth a read.<br />
<br />
There was even more excitement with the [https://lca2021.linux.org.au/news/keynote-limor-fried announcement of Limor Fried as an LCA2021 keynote speaker] !<br />
<br />
On the badge front, the hardware is nearly all ready. Screens, switches and microcontrollers have been attached to 300 boards, and the excess headers trimmed off. We'll be gathering them together in one place soon, so we can flash the latest firmware and test that all the hardware works as expected by hooking each and every one up to a test rig.<br />
<br />
Snipping off so many excess pin lengths results in a lot of blisters (Thank you Andrew and John for your sacrifice!): [[File:Pins.jpg|240px|A workbench covered with hundreds of tiny metal pins: excess length that has been snipped off by hand]]<br />
<br />
This week sees us push the firmware to be a Minimum Viable Release, so that everyone's initial Out Of The Box experience is good. So this means we need to:<br />
* Make it easy for everyone to connected their SwagBadge to their Wi-Fi router<br />
* Getting the badges able to self-update to the latest firmware<br />
* Prepare some individual encryption keys so the badges can communicate securely<br />
* Providing a couple of applications to run initially so the capabilities can be displayed<br />
<br />
We'll also be writing up documentation so everyone can get a feel for the care and feeding of their badge and how they can extend it for themselves.<br />
<br />
Are you excited and want to start chatting about it, or start assembling your own [[Swagbadge2021_Dagbadge|Dagbadge]]? Our [https://groups.google.com/u/2/g/open-hardware-conf/about Open Hardware Google Groups] mailing list is happy to have you: come say hi!<br />
<br />
=== Status: Week of 2020-11-15 ===<br />
<br />
The amended PCBs arrive and they're all in top working order. So we split up all the components among the team to pre-assemble and test them so you don't have to:<br />
* Erase and flash the Lolin32s with MicroPython<br />
* Solder the headers on the Lolin32s, and solder these to the PCBs<br />
* Snip off the excess headers<br />
* Solder the OLEDs and switches to the PCBs<br />
It takes around 10 minutes to assemble and test each of the 300 Swagbadges.<br />
<br />
<br />
Check out our twitter [https://twitter.com/swagbadge2021 @swagbadge2021] for a preview peek at a special SAO that will come with your badge too!<br />
<br />
On the firmware, we had to deal with an unexpected Wi-Fi networking issue. It appears that our event loop code was consuming the processor and not allowing sufficient time for handling Wi-Fi, which in turn caused networking unreliability ... sometimes ! Fortunately, that issue has been fixed and at the same time a fairly extensive rewrite of the underlying Wi-Fi / MQTT connection, failure handling and re-connection threads occurred. Now we can get back to completing the out-of-the-box Wi-Fi client configuration functionality.<br />
<br />
Our Open Hardware MiniConference was accepted, so you can expect more great sessions during LCA2021 too. We'll definitely be making time for discussion and exploration of the Swagbadge, as well as talks proposed BY YOU for the Open Hardware MiniConference, and a community-building session so we can make OHMC even better than ever!<br />
<br />
We have some other exciting news, but you'll just have to wait til December for that. Soon, SOON!<br />
<br />
<br />
=== Status: Week of 2020-11-01 ===<br />
<br />
The PCBs arrived on Sunday. What a lovely surprise! Yay!<br />
... Except they have some bad wiring which was missed despite a bunch of review. Boo!<br />
<br />
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.<br />
<br />
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.<br />
<br />
The SwagBadges are all owned by Linux Australia, and we are talking with them about the best way to reuse them and potentially recover some costs.<br />
<br />
Our set of documentation is steadily being built out. We know we need:<br />
* A quickstart set of instructions for every SwagBadge recipient, for getting going once they get their package in the post<br />
* How to extend a SwagBadge, via software and hardware<br />
* Troubleshooting!<br />
* Where to get help (from us, and the wider maker community)<br />
* List of materials and build instructions for the Dagbadge<br />
* Newcomers' guide to electronics<br />
<br />
=== Status: Week of 2020-10-25 ===<br />
<br />
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. <br />
<br />
Why?<br />
<br />
# This lets us test if the Lolins are functional, nice and early, when we have time to do something about it.<br />
# It'll save us some time later on when we'll be hitting the deadline prior to shipping.<br />
<br />
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!<br />
<br />
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!<br />
<br />
This is a healthy Lolin: [[File:healthylolin.png|240px|Image of a healthy lolin with clean circuitry]]<br />
<br />
This is the damaged one: [[File:unhealthylolin.png|240px|Image of a dodgy lolin with semi-repaired blobby circuitry]]<br />
<br />
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.<br />
<br />
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.<br />
<br />
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:<br />
* Testing the boards<br />
* Soldering on all the components (switches, screens, microcontroller)<br />
* Retesting once they're assembled<br />
<br />
SAO thoughts continue to evolve, with ideas ranging from madcap to enlightened genius turning up.<br />
* Theremin<br />
* Game controller<br />
* Googly eye jiggler<br />
* Tux<br />
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 [https://github.com/PancakeLegend/SwagBadge-SAOs PancakeLegend SAO git].<br />
<br />
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:<br />
* Stand up a wireless AP for wifi config if the device can't find anything to connect to on boot<br />
* 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)<br />
* 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.<br />
* 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.<br />
* Code to support adding SAOs to any of the spots on the board without having to reconfigure a whole bunch of pin assignments.<br />
* A variety of example applications and documentation to let people copy and embellish to bring their own magnificent ideas to life.<br />
<br />
Our ideas for the community continue to grow and we hope to be able to invite you all to join us in early November:<br />
* 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.<br />
* Get y'all involved!<br />
* 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.<br />
* Know how to build SAOs but aren't sure what would be good? We'll find you some people who have ideas.<br />
* Want to write neat software to make the badge do something? <br />
* Built a badge/have a badge from another event and looking for a community to help you understand and extend it?<br />
* Let's all stay connected, help each other out, and grow our expertise! It is, after all, the very essence of open hardware!<br />
<br />
... 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! <br />
<br />
=== Status: 2020-10-18 ===<br />
<br />
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.<br />
<br />
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.<br />
<br />
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 [https://jlcpcb.com/ JLC] which we've used before. Here's a [https://www.youtube.com/watch?v=ljOoGyCso8s 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 [https://www.youtube.com/playlist?list=PLIizEY7AraGyh6Y7KdNGXxRuXXwz9m8ta series of videos] on the tour to get a taste of what they saw.<br />
<br />
Think building your own PCB is too hard? Think again! If you plan on building a custom [[Swagbadge2021_SAO|SAO]] you'll want to learn how. The internet provides once again, with a [https://www.youtube.com/watch?v=BVhWh3AsXQs&list=PLy2022BX6EspFAKBCgRuEuzapuz_4aJCn 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.<br />
<br />
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.<br />
<br />
=== Status: 2020-10-11 ===<br />
<br />
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.<br />
<br />
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<br />
* be useful right at the start without any additional components<br />
* be elegant to look at<br />
* function as a badge<br />
* have the [[Swagbadge2021_SAO|SAO]] extension points are in useful locations and pointing in useful directions.<br />
* have space to include the important logos for the conference!<br />
<br />
[[File:badge_front.jpg|240px|LCA2021 swag badge front side 2020-10-08]] [[File:badge_back.jpg|240px|LCA2021 swag badge back side 2020-10-08]]<br />
<br />
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 [https://www.youtube.com/watch?v=d02arsbvVF8&t=2062 latest episode talks] about the swagbadge from about 34 minutes in.<br />
<br />
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.<br />
<br />
<br />
=== Status: 2020-10-04 ===<br />
<br />
Project approved and announced ... [https://github.com/CCHS-Melbourne/Swag-Badge #swagbadge hardware design] underway ... #swagbadge major parts ordered ... #dagbadge [https://en.wikipedia.org/wiki/Bill_of_materials BoM] not yet finalized ... Core team (mostly) assembled and ready to start building the community ... [https://hackaday.com/2019/03/20/introducing-the-shitty-add-on-v1-69bis-standard SAO] hardware community development not yet commenced (but ideas are brewing) ... #swagbadge firmware development is still flying under-the-radar !<br />
<br />
Note: Whilst the #swagbadge major parts have been ordered (330x ESP32 microcontrollers and 660x OLED screens), we are already sweating on shipping delays !<br />
<br />
<br />
[[File:Swag badge render 2020-09-30.jpg|240px|LCA2021 swag badge 3D render 2020-09-30]] Recent 3D render 2020-09-30<br />
<br />
<br />
=== Recommendations for those who can't wait to get started ===<br />
* Play with [http://micropython.org/unicorn microPython on-line]: Select peripheral "I2C LCD", choose demo "I2C LCD" and press "Run script"<br />
* Play with [https://github.com/micropython/micropython microPython on Unix]: See section "The Unix version"<br />
* Read up on [https://hackaday.com/2019/03/20/introducing-the-shitty-add-on-v1-69bis-standard SAO hardware add-ons]: How to extend the #swagbadge using a 6 pin (2x3) connector with power, [https://en.wikipedia.org/wiki/I%C2%B2C I2C bus] and 2x [https://en.wikipedia.org/wiki/General-purpose_input/output GPIO pins]<br />
<br />
<br />
[[File:0.96-inch-Blue-I2c-IIC-Serial-128x64-Oled-LCD-LED-Display-Module-5a.jpg|200px|0.96" OLED screen]] <br />
[[File:Lolin32.jpg|70px|ESP32 Lolin32]] <br />
[[File:Lolin32 pinout.jpg|360px|ESP32 Lolin32 pin-out]] <br />
<br />
<br />
=== Origin Story Timeline ===<br />
<br />
* 2020-10-04: #swagbadge project public announcement<br />
* 2020-09-24: Preparing for initial public announcement<br />
* 2020-09-17: [https://github.com/CCHS-Melbourne/Swag-Badge GitHub repository: #swagbadge hardware] created<br />
* 2020-09-11: Assembling core OHMC team ... getting the band back together<br />
* 2020-09-10: #swagbadge project green light ... we're good to go ! [https://twitter.com/linuxconfau/status/1304009218521853953 Trying not to spill the beans ?]<br />
* 2020-09-07: #swagbadge project proposal (goals, timeline and costs) sent to LCA2021<br />
* 2020-08-26: #swagbadge project conception<br />
* 2020-05-06: [https://linux.org.au/linux-australia-community-update-lca2021-information LCA2021 in Canberra "postponed" to 2022 and rebooted as on-line and world-wide for 2021] ... finally made it to Antarctica !<br />
* 2018-01-22: LCA2021 [https://github.com/geekscape/aiko_engine_mp GitHub repository: Aiko Engine for microPython] incept date<br />
<br />
[[File:Swag_badge_render_2020_09-02.png|200px|LCA2021 swag badge very first render 2020-09-02]]LCA2021 swag badge very first render 2020-09-02</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=SwagBadge2021_Status,_blog_and_timeline&diff=1233SwagBadge2021 Status, blog and timeline2020-12-06T08:12:38Z<p>AndyGelme: /* Status: Week of 2020-11-30 */</p>
<hr />
<div>=== Status: Week of 2020-11-30 ===<br />
<br />
'''If you'd like to present at the LCA2021 Open Hardware MiniConference, [https://linux.conf.au/programme/miniconfs/open-hardware please make a submission].''' We're aiming to address a range of topics and skill levels (newcomer to advanced). '''Submissions close on 2020-12-18.'''<br />
<br />
[[File:diyodecover.jpg|240px|right|Cover of Diyode Magazine Issue 41: December 2020]] We're very excited to have [https://diyodemag.com/columns/swagbadge_dagbadge_badge_ohmc_linux_conference our article] included in the December 2020 issue of [https://diyodemag.com Diyode Magazine]. Australia's magazine for makers, hardware hackers and electronic enthusiasts, we're delighted to see Swagbadge in there alongside other incredible projects ([https://diyodemag.com/features/arduino_mega_walking_traffic_crossing_lights_project see page 51]). We're hoping it'll bring more people to LCA, to the OHMC and get them excited about open hardware in general. Maybe it'll help increase memberships at your local HackerSpace too ! The article provides a reasonable overview of the project with some background and some technical details we haven't covered here yet ... so, worth a read.<br />
<br />
There was even more excitement with the [https://lca2021.linux.org.au/news/keynote-limor-fried announcement of Limor Fried as an LCA2021 keynote speaker] !<br />
<br />
On the badge front, the hardware is nearly all ready. Screens, switches and microprocessor computers have been attached to 300 boards, and the excess headers trimmed off. We'll be gathering them together in one place soon, so we can flash the latest firmware and test that all the hardware works as expected by hooking each and every one up to a test rig.<br />
<br />
Snipping off so many excess pin lengths results in a lot of blisters (Thank you Andrew and John for your sacrifice!): [[File:Pins.jpg|240px|A workbench covered with hundreds of tiny metal pins: excess length that has been snipped off by hand]]<br />
<br />
This week sees us push the firmware to be a Minimum Viable Release, so that everyone's initial Out Of The Box experience is good. So this means we need to:<br />
* Make it easy for everyone to connected their SwagBadge to their Wi-Fi router<br />
* Getting the badges able to self-update to the latest firmware<br />
* Prepare some individual encryption keys so the badges can communicate securely<br />
* Providing a couple of applications to run initially so the capabilities can be displayed<br />
<br />
We'll also be writing up documentation so everyone can get a feel for the care and feeding of their badge and how they can extend it for themselves.<br />
<br />
Are you excited and want to start chatting about it, or start assembling your own [[Swagbadge2021_Dagbadge|Dagbadge]]? Our [https://groups.google.com/u/2/g/open-hardware-conf/about Open Hardware Google Groups] mailing list is happy to have you: come say hi!<br />
<br />
=== Status: Week of 2020-11-15 ===<br />
<br />
The amended PCBs arrive and they're all in top working order. So we split up all the components among the team to pre-assemble and test them so you don't have to:<br />
* Erase and flash the Lolin32s with MicroPython<br />
* Solder the headers on the Lolin32s, and solder these to the PCBs<br />
* Snip off the excess headers<br />
* Solder the OLEDs and switches to the PCBs<br />
It takes around 10 minutes to assemble and test each of the 300 Swagbadges.<br />
<br />
<br />
Check out our twitter [https://twitter.com/swagbadge2021 @swagbadge2021] for a preview peek at a special SAO that will come with your badge too!<br />
<br />
On the firmware, we had to deal with an unexpected Wi-Fi networking issue. It appears that our event loop code was consuming the processor and not allowing sufficient time for handling Wi-Fi, which in turn caused networking unreliability ... sometimes ! Fortunately, that issue has been fixed and at the same time a fairly extensive rewrite of the underlying Wi-Fi / MQTT connection, failure handling and re-connection threads occurred. Now we can get back to completing the out-of-the-box Wi-Fi client configuration functionality.<br />
<br />
Our Open Hardware MiniConference was accepted, so you can expect more great sessions during LCA2021 too. We'll definitely be making time for discussion and exploration of the Swagbadge, as well as talks proposed BY YOU for the Open Hardware MiniConference, and a community-building session so we can make OHMC even better than ever!<br />
<br />
We have some other exciting news, but you'll just have to wait til December for that. Soon, SOON!<br />
<br />
<br />
=== Status: Week of 2020-11-01 ===<br />
<br />
The PCBs arrived on Sunday. What a lovely surprise! Yay!<br />
... Except they have some bad wiring which was missed despite a bunch of review. Boo!<br />
<br />
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.<br />
<br />
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.<br />
<br />
The SwagBadges are all owned by Linux Australia, and we are talking with them about the best way to reuse them and potentially recover some costs.<br />
<br />
Our set of documentation is steadily being built out. We know we need:<br />
* A quickstart set of instructions for every SwagBadge recipient, for getting going once they get their package in the post<br />
* How to extend a SwagBadge, via software and hardware<br />
* Troubleshooting!<br />
* Where to get help (from us, and the wider maker community)<br />
* List of materials and build instructions for the Dagbadge<br />
* Newcomers' guide to electronics<br />
<br />
=== Status: Week of 2020-10-25 ===<br />
<br />
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. <br />
<br />
Why?<br />
<br />
# This lets us test if the Lolins are functional, nice and early, when we have time to do something about it.<br />
# It'll save us some time later on when we'll be hitting the deadline prior to shipping.<br />
<br />
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!<br />
<br />
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!<br />
<br />
This is a healthy Lolin: [[File:healthylolin.png|240px|Image of a healthy lolin with clean circuitry]]<br />
<br />
This is the damaged one: [[File:unhealthylolin.png|240px|Image of a dodgy lolin with semi-repaired blobby circuitry]]<br />
<br />
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.<br />
<br />
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.<br />
<br />
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:<br />
* Testing the boards<br />
* Soldering on all the components (switches, screens, microcontroller)<br />
* Retesting once they're assembled<br />
<br />
SAO thoughts continue to evolve, with ideas ranging from madcap to enlightened genius turning up.<br />
* Theremin<br />
* Game controller<br />
* Googly eye jiggler<br />
* Tux<br />
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 [https://github.com/PancakeLegend/SwagBadge-SAOs PancakeLegend SAO git].<br />
<br />
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:<br />
* Stand up a wireless AP for wifi config if the device can't find anything to connect to on boot<br />
* 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)<br />
* 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.<br />
* 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.<br />
* Code to support adding SAOs to any of the spots on the board without having to reconfigure a whole bunch of pin assignments.<br />
* A variety of example applications and documentation to let people copy and embellish to bring their own magnificent ideas to life.<br />
<br />
Our ideas for the community continue to grow and we hope to be able to invite you all to join us in early November:<br />
* 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.<br />
* Get y'all involved!<br />
* 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.<br />
* Know how to build SAOs but aren't sure what would be good? We'll find you some people who have ideas.<br />
* Want to write neat software to make the badge do something? <br />
* Built a badge/have a badge from another event and looking for a community to help you understand and extend it?<br />
* Let's all stay connected, help each other out, and grow our expertise! It is, after all, the very essence of open hardware!<br />
<br />
... 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! <br />
<br />
=== Status: 2020-10-18 ===<br />
<br />
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.<br />
<br />
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.<br />
<br />
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 [https://jlcpcb.com/ JLC] which we've used before. Here's a [https://www.youtube.com/watch?v=ljOoGyCso8s 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 [https://www.youtube.com/playlist?list=PLIizEY7AraGyh6Y7KdNGXxRuXXwz9m8ta series of videos] on the tour to get a taste of what they saw.<br />
<br />
Think building your own PCB is too hard? Think again! If you plan on building a custom [[Swagbadge2021_SAO|SAO]] you'll want to learn how. The internet provides once again, with a [https://www.youtube.com/watch?v=BVhWh3AsXQs&list=PLy2022BX6EspFAKBCgRuEuzapuz_4aJCn 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.<br />
<br />
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.<br />
<br />
=== Status: 2020-10-11 ===<br />
<br />
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.<br />
<br />
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<br />
* be useful right at the start without any additional components<br />
* be elegant to look at<br />
* function as a badge<br />
* have the [[Swagbadge2021_SAO|SAO]] extension points are in useful locations and pointing in useful directions.<br />
* have space to include the important logos for the conference!<br />
<br />
[[File:badge_front.jpg|240px|LCA2021 swag badge front side 2020-10-08]] [[File:badge_back.jpg|240px|LCA2021 swag badge back side 2020-10-08]]<br />
<br />
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 [https://www.youtube.com/watch?v=d02arsbvVF8&t=2062 latest episode talks] about the swagbadge from about 34 minutes in.<br />
<br />
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.<br />
<br />
<br />
=== Status: 2020-10-04 ===<br />
<br />
Project approved and announced ... [https://github.com/CCHS-Melbourne/Swag-Badge #swagbadge hardware design] underway ... #swagbadge major parts ordered ... #dagbadge [https://en.wikipedia.org/wiki/Bill_of_materials BoM] not yet finalized ... Core team (mostly) assembled and ready to start building the community ... [https://hackaday.com/2019/03/20/introducing-the-shitty-add-on-v1-69bis-standard SAO] hardware community development not yet commenced (but ideas are brewing) ... #swagbadge firmware development is still flying under-the-radar !<br />
<br />
Note: Whilst the #swagbadge major parts have been ordered (330x ESP32 microcontrollers and 660x OLED screens), we are already sweating on shipping delays !<br />
<br />
<br />
[[File:Swag badge render 2020-09-30.jpg|240px|LCA2021 swag badge 3D render 2020-09-30]] Recent 3D render 2020-09-30<br />
<br />
<br />
=== Recommendations for those who can't wait to get started ===<br />
* Play with [http://micropython.org/unicorn microPython on-line]: Select peripheral "I2C LCD", choose demo "I2C LCD" and press "Run script"<br />
* Play with [https://github.com/micropython/micropython microPython on Unix]: See section "The Unix version"<br />
* Read up on [https://hackaday.com/2019/03/20/introducing-the-shitty-add-on-v1-69bis-standard SAO hardware add-ons]: How to extend the #swagbadge using a 6 pin (2x3) connector with power, [https://en.wikipedia.org/wiki/I%C2%B2C I2C bus] and 2x [https://en.wikipedia.org/wiki/General-purpose_input/output GPIO pins]<br />
<br />
<br />
[[File:0.96-inch-Blue-I2c-IIC-Serial-128x64-Oled-LCD-LED-Display-Module-5a.jpg|200px|0.96" OLED screen]] <br />
[[File:Lolin32.jpg|70px|ESP32 Lolin32]] <br />
[[File:Lolin32 pinout.jpg|360px|ESP32 Lolin32 pin-out]] <br />
<br />
<br />
=== Origin Story Timeline ===<br />
<br />
* 2020-10-04: #swagbadge project public announcement<br />
* 2020-09-24: Preparing for initial public announcement<br />
* 2020-09-17: [https://github.com/CCHS-Melbourne/Swag-Badge GitHub repository: #swagbadge hardware] created<br />
* 2020-09-11: Assembling core OHMC team ... getting the band back together<br />
* 2020-09-10: #swagbadge project green light ... we're good to go ! [https://twitter.com/linuxconfau/status/1304009218521853953 Trying not to spill the beans ?]<br />
* 2020-09-07: #swagbadge project proposal (goals, timeline and costs) sent to LCA2021<br />
* 2020-08-26: #swagbadge project conception<br />
* 2020-05-06: [https://linux.org.au/linux-australia-community-update-lca2021-information LCA2021 in Canberra "postponed" to 2022 and rebooted as on-line and world-wide for 2021] ... finally made it to Antarctica !<br />
* 2018-01-22: LCA2021 [https://github.com/geekscape/aiko_engine_mp GitHub repository: Aiko Engine for microPython] incept date<br />
<br />
[[File:Swag_badge_render_2020_09-02.png|200px|LCA2021 swag badge very first render 2020-09-02]]LCA2021 swag badge very first render 2020-09-02</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=SwagBadge2021&diff=1221SwagBadge20212020-12-01T03:18:37Z<p>AndyGelme: Link to the DIYODE magazine issue 41, December 2020 article</p>
<hr />
<div>=== #swagbadge for [https://lca2021.linux.org.au LCA2021]: Communications and resources ===<br />
<br />
* '''[[SwagBadge2021 Status, blog and timeline]]: Read for regular project updates and history'''<br />
* [[SwagBadge2021 FAQ]]: Frequently Asked Questions<br />
* [https://twitter.com/swagbadge2021 Twitter @swagbadge]: Follow for project notifications. HashTags: ''#swagbadge, #lca2021''<br />
* [https://github.com/CCHS-Melbourne/Swag-Badge GitHub repository: #swagbadge hardware]<br />
* [https://github.com/geekscape/aiko_engine_mp GitHub repository: Aiko Engine for microPython]: Not yet updated for #swagbadge<br />
* [[Swagbadge2021_Newcomers|Newcomers guide]]: Read our guide if you haven't done much hardware before and need more fundamentals before diving in<br />
* [[Swagbadge2021_GettingStarted|Getting started guide]]: Your Swagbadge has arrived. What next?<br />
* [https://diyodemag.com/columns/swagbadge_dagbadge_badge_ohmc_linux_conference DIYODE magazine issue 41, December 2020 article] on the Swagbadge<br />
<br />
<br />
'''Today (2020-10-04), we are publicly announcing the [https://lca2021.linux.org.au LCA2021] #swagbadge project''' and beginning the process of opening up our hardware and software development processes. The next couple of weeks will be a bit of a spectator sport whilst we put in place mechanisms for technical collaboration and contributions. We warmly welcome you to join in, get an early start on LCA2021 and enjoy the ride ! '''We'll be listening for questions and feedback sent to [https://twitter.com/swagbadge2021 Twitter @swagbadge]'''<br />
<br />
Note: Whilst this project is supported by [https://lca2021.linux.org.au LCA2021], the OHMC team are not an official part of the LCA2021 organizing committee. Of course, we'll be in close communication with them. Also, this project will be covered by a [https://lca2021.linux.org.au/attend/code-of-conduct Code Of Conduct] (perhaps with some hardware hacking caveats). The OHMC team supports and encourages inclusion and diversity in hardware / software hacking, please help us do better !<br />
<br />
<br />
[[File:Swag badge render 2020-09-30.jpg|360px|LCA2021 swag badge 3D render 2020-09-30]] Recent 3D render 2020-09-30<br />
<br />
<br />
----<br />
<br />
=== LCA2021 #swagbadge announcement ===<br />
<br />
A limited number of '''LCA2021 Swag Badge''' electronic badges will be produced for the [https://lca2021.linux.org.au on-line LCA2021] conference, which will be distributed to conference attendees. The LCA2021 Swag Badge is being specially developed and tailored for the conference.<br />
<br />
* ''Note 0: This is just our current understanding of how the LCA2021 #swagbadge will be made available ... and is subject to change by LCA2021 organizing committee''<br />
* ''Note 1: The #swagbadge will be only available to Australian participants, due to the cost and delay of shipping internationally''<br />
* ''Note 2: If you are outside of Australia or miss out on a #swagbadge, then you might want to seriously consider acquiring a #dagbadge (details soon)''<br />
* ''Note 3: No ... '''LCA2021 registration isn't open yet''' ... but, we love your enthusiasm'' ๐<br />
* ''Note 4: LCA2021 mini-conferences haven't been decided yet and we haven't received notification that there will be an OHMC2021''<br />
<br />
<br />
No ordinary conference badge, this one is full of extensible, open hardware, ready to be loaded up with whatever software and custom hardware add-ons takes your fancy !<br />
<br />
The Open Hardware Mini-Conference (OHMC) team are putting together a badge that will be:<br />
<br />
* Approachable for newcomers, e.g runs Python and doesn't require any special IDE (for embedded device development)<br />
* Custom-designed, super slick PCB<br />
* Powered by an ESP32 which gives you Wi-Fi and Bluetooth connectivity<br />
* Not one, but two delightful OLED screens <br />
* ... which double as pressable buttons<br />
* Ready for development with the latest [http://micropython.org microPython] installed<br />
* Supported by an open-sourced embedded network framework, the [https://github.com/geekscape/aiko_engine_mp Aiko Engine for microPython]<br />
* With a number of [[Swagbadge2021_SAO|SAO connectors]] so you can extend and add on your own hardware components<br />
<br />
We aim to post the #swagbadges prior to Christmas so they will be available before [https://lca2021.linux.org.au on-line LCA2021] begins.<br />
<br />
But wait, there's more ! In the spirit of LCA, we want the capabilities of the badge to be truly open. We'll be following up with more information about how you can join in to build out ideas for doing wonderful, magnificent, incredible... stuff ... '''<your idea here>''' ... using the [[Swagbadge2021_SAO|SAO connectors]]. <br />
<br />
Follow along and join in with the OHMC team as we prepare, plan, design and build your badges. We'll be posting regular updates here on this Wiki.<br />
<br />
<br />
[[File:Swag badge mechanical 2020-09-30.jpg|360px|LCA2021 swag badge mechanical layout 2020-09-30]] Mechanical layout 2020-09-30<br />
<br />
<br />
[[Swagbadge2021 Backstory]]</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=SwagBadge2021_Status,_blog_and_timeline&diff=1217SwagBadge2021 Status, blog and timeline2020-11-22T08:55:46Z<p>AndyGelme: Review of the 2020-11-15 blog entry</p>
<hr />
<div>'''Status: Week of 2020-11-15'''<br />
<br />
The amended PCBs arrive and they're all in top working order. So we split up all the components among the team to pre-assemble and test them so you don't have to:<br />
* Erase and flash the Lolin32s with MicroPython<br />
* Solder the headers on the Lolin32s, and solder these to the PCBs<br />
* Snip off the excess headers<br />
* Solder the OLEDs and switches to the PCBs<br />
It takes around 10 minutes to assemble and test each of the 300 Swagbadges.<br />
<br />
<br />
Check out our twitter [https://twitter.com/swagbadge2021 @swagbadge2021] for a preview peek at a special SAO that will come with your badge too!<br />
<br />
On the firmware, we had to deal with an unexpected Wi-Fi networking issue. It appears that our event loop code was consuming the processor and not allowing sufficient time for handling Wi-Fi, which in turn caused networking unreliability ... sometimes ! Fortunately, that issue has been fixed and at the same time a fairly extensive rewrite of the underlying Wi-Fi / MQTT connection, failure handling and re-connection threads occurred. Now we can get back to completing the out-of-the-box Wi-Fi client configuration functionality.<br />
<br />
Our Open Hardware MiniConference was accepted, so you can expect more great sessions during LCA2021 too. We'll definitely be making time for discussion and exploration of the Swagbadge, as well as talks proposed BY YOU for the Open Hardware MiniConference, and a community-building session so we can make OHMC even better than ever!<br />
<br />
We have some other exciting news, but you'll just have to wait til December for that. Soon, SOON!<br />
<br />
<br />
'''Status: Week of 2020-11-01'''<br />
<br />
The PCBs arrived on Sunday. What a lovely surprise! Yay!<br />
... Except they have some bad wiring which was missed despite a bunch of review. Boo!<br />
<br />
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.<br />
<br />
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.<br />
<br />
The SwagBadges are all owned by Linux Australia, and we are talking with them about the best way to reuse them and potentially recover some costs.<br />
<br />
Our set of documentation is steadily being built out. We know we need:<br />
* A quickstart set of instructions for every SwagBadge recipient, for getting going once they get their package in the post<br />
* How to extend a SwagBadge, via software and hardware<br />
* Troubleshooting!<br />
* Where to get help (from us, and the wider maker community)<br />
* List of materials and build instructions for the Dagbadge<br />
* Newcomers' guide to electronics<br />
<br />
'''Status: Week of 2020-10-25'''<br />
<br />
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. <br />
<br />
Why?<br />
<br />
# This lets us test if the Lolins are functional, nice and early, when we have time to do something about it.<br />
# It'll save us some time later on when we'll be hitting the deadline prior to shipping.<br />
<br />
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!<br />
<br />
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!<br />
<br />
This is a healthy Lolin: [[File:healthylolin.png|240px|Image of a healthy lolin with clean circuitry]]<br />
<br />
This is the damaged one: [[File:unhealthylolin.png|240px|Image of a dodgy lolin with semi-repaired blobby circuitry]]<br />
<br />
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.<br />
<br />
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.<br />
<br />
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:<br />
* Testing the boards<br />
* Soldering on all the components (switches, screens, microcontroller)<br />
* Retesting once they're assembled<br />
<br />
SAO thoughts continue to evolve, with ideas ranging from madcap to enlightened genius turning up.<br />
* Theremin<br />
* Game controller<br />
* Googly eye jiggler<br />
* Tux<br />
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 [https://github.com/PancakeLegend/SwagBadge-SAOs PancakeLegend SAO git].<br />
<br />
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:<br />
* Stand up a wireless AP for wifi config if the device can't find anything to connect to on boot<br />
* 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)<br />
* 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.<br />
* 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.<br />
* Code to support adding SAOs to any of the spots on the board without having to reconfigure a whole bunch of pin assignments.<br />
* A variety of example applications and documentation to let people copy and embellish to bring their own magnificent ideas to life.<br />
<br />
Our ideas for the community continue to grow and we hope to be able to invite you all to join us in early November:<br />
* 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.<br />
* Get y'all involved!<br />
* 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.<br />
* Know how to build SAOs but aren't sure what would be good? We'll find you some people who have ideas.<br />
* Want to write neat software to make the badge do something? <br />
* Built a badge/have a badge from another event and looking for a community to help you understand and extend it?<br />
* Let's all stay connected, help each other out, and grow our expertise! It is, after all, the very essence of open hardware!<br />
<br />
... 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! <br />
<br />
'''Status: 2020-10-18'''<br />
<br />
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.<br />
<br />
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.<br />
<br />
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 [https://jlcpcb.com/ JLC] which we've used before. Here's a [https://www.youtube.com/watch?v=ljOoGyCso8s 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 [https://www.youtube.com/playlist?list=PLIizEY7AraGyh6Y7KdNGXxRuXXwz9m8ta series of videos] on the tour to get a taste of what they saw.<br />
<br />
Think building your own PCB is too hard? Think again! If you plan on building a custom [[Swagbadge2021_SAO|SAO]] you'll want to learn how. The internet provides once again, with a [https://www.youtube.com/watch?v=BVhWh3AsXQs&list=PLy2022BX6EspFAKBCgRuEuzapuz_4aJCn 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.<br />
<br />
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.<br />
<br />
'''Status: 2020-10-11'''<br />
<br />
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.<br />
<br />
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<br />
* be useful right at the start without any additional components<br />
* be elegant to look at<br />
* function as a badge<br />
* have the [[Swagbadge2021_SAO|SAO]] extension points are in useful locations and pointing in useful directions.<br />
* have space to include the important logos for the conference!<br />
<br />
[[File:badge_front.jpg|240px|LCA2021 swag badge front side 2020-10-08]] [[File:badge_back.jpg|240px|LCA2021 swag badge back side 2020-10-08]]<br />
<br />
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 [https://www.youtube.com/watch?v=d02arsbvVF8&t=2062 latest episode talks] about the swagbadge from about 34 minutes in.<br />
<br />
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.<br />
<br />
<br />
'''Status: 2020-10-04'''<br />
<br />
Project approved and announced ... [https://github.com/CCHS-Melbourne/Swag-Badge #swagbadge hardware design] underway ... #swagbadge major parts ordered ... #dagbadge [https://en.wikipedia.org/wiki/Bill_of_materials BoM] not yet finalized ... Core team (mostly) assembled and ready to start building the community ... [https://hackaday.com/2019/03/20/introducing-the-shitty-add-on-v1-69bis-standard SAO] hardware community development not yet commenced (but ideas are brewing) ... #swagbadge firmware development is still flying under-the-radar !<br />
<br />
Note: Whilst the #swagbadge major parts have been ordered (330x ESP32 microcontrollers and 660x OLED screens), we are already sweating on shipping delays !<br />
<br />
<br />
[[File:Swag badge render 2020-09-30.jpg|240px|LCA2021 swag badge 3D render 2020-09-30]] Recent 3D render 2020-09-30<br />
<br />
<br />
'''Recommendations for those who can't wait to get started'''<br />
* Play with [http://micropython.org/unicorn microPython on-line]: Select peripheral "I2C LCD", choose demo "I2C LCD" and press "Run script"<br />
* Play with [https://github.com/micropython/micropython microPython on Unix]: See section "The Unix version"<br />
* Read up on [https://hackaday.com/2019/03/20/introducing-the-shitty-add-on-v1-69bis-standard SAO hardware add-ons]: How to extend the #swagbadge using a 6 pin (2x3) connector with power, [https://en.wikipedia.org/wiki/I%C2%B2C I2C bus] and 2x [https://en.wikipedia.org/wiki/General-purpose_input/output GPIO pins]<br />
<br />
<br />
[[File:0.96-inch-Blue-I2c-IIC-Serial-128x64-Oled-LCD-LED-Display-Module-5a.jpg|200px|0.96" OLED screen]] <br />
[[File:Lolin32.jpg|70px|ESP32 Lolin32]] <br />
[[File:Lolin32 pinout.jpg|360px|ESP32 Lolin32 pin-out]] <br />
<br />
<br />
'''Blog and timeline'''<br />
<br />
* 2020-10-04: #swagbadge project public announcement<br />
* 2020-09-24: Preparing for initial public announcement<br />
* 2020-09-17: [https://github.com/CCHS-Melbourne/Swag-Badge GitHub repository: #swagbadge hardware] created<br />
* 2020-09-11: Assembling core OHMC team ... getting the band back together<br />
* 2020-09-10: #swagbadge project green light ... we're good to go ! [https://twitter.com/linuxconfau/status/1304009218521853953 Trying not to spill the beans ?]<br />
* 2020-09-07: #swagbadge project proposal (goals, timeline and costs) sent to LCA2021<br />
* 2020-08-26: #swagbadge project conception<br />
* 2020-05-06: [https://linux.org.au/linux-australia-community-update-lca2021-information LCA2021 in Canberra "postponed" to 2022 and rebooted as on-line and world-wide for 2021] ... finally made it to Antarctica !<br />
* 2018-01-22: LCA2021 [https://github.com/geekscape/aiko_engine_mp GitHub repository: Aiko Engine for microPython] incept date<br />
<br />
[[File:Swag_badge_render_2020_09-02.png|200px|LCA2021 swag badge very first render 2020-09-02]]LCA2021 swag badge very first render 2020-09-02</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=SwagBadge2021_D.I.Y_DagBadge&diff=1200SwagBadge2021 D.I.Y DagBadge2020-10-17T14:34:38Z<p>AndyGelme: AndyGelme moved page SwagBadge D.I.Y DagBadge to SwagBadge2021 D.I.Y DagBadge without leaving a redirect</p>
<hr />
<div>== DagBadge - the DIY SwagBadge2021 ==<br />
<br />
[[Swagbadge2021|SwagBadge2021]] is the official electronic conference badge for the LCA2021 conference, but we don't want to limit participation to people who have the official board. So we've created DagBadge, the DIY electronic conference badge that you can build yourself from readily available parts.<br />
<br />
=== Parts Required ===<br />
<br />
You can adapt this design to suit the parts you have available. To follow our build guide, you will need:<br />
<br />
* 1 x Lolin32 Lite (ESP32 development board)<br />
* 2 x 0.96" 128x64 I2C OLED display modules<br />
* 2 x tactile buttons<br />
* 1 x breadboard<br />
* Set of jumper wires</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=SwagBadge2021_D.I.Y_DagBadge&diff=1199SwagBadge2021 D.I.Y DagBadge2020-10-17T14:10:22Z<p>AndyGelme: AndyGelme moved page DagBadge to SwagBadge D.I.Y DagBadge without leaving a redirect: Just so all SwagBadge2021 related pages have the same title prefix !</p>
<hr />
<div>== DagBadge - the DIY SwagBadge2021 ==<br />
<br />
[[Swagbadge2021|SwagBadge2021]] is the official electronic conference badge for the LCA2021 conference, but we don't want to limit participation to people who have the official board. So we've created DagBadge, the DIY electronic conference badge that you can build yourself from readily available parts.<br />
<br />
=== Parts Required ===<br />
<br />
You can adapt this design to suit the parts you have available. To follow our build guide, you will need:<br />
<br />
* 1 x Lolin32 Lite (ESP32 development board)<br />
* 2 x 0.96" 128x64 I2C OLED display modules<br />
* 2 x tactile buttons<br />
* 1 x breadboard<br />
* Set of jumper wires</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=Swagbadge2021_Backstory&diff=1194Swagbadge2021 Backstory2020-10-16T16:27:07Z<p>AndyGelme: AndyGelme moved page Swagbadge2021 backstory to Swagbadge2021 Backstory without leaving a redirect</p>
<hr />
<div>=== LCA2021 #swagbadge backstory ===<br />
<br />
'''Everything about 2020 has been turned upside-down and inside-out ๐''' Feels like the last normal (and awesome) thing that happened was [https://lca2020.linux.org.au LCA2020]. Wow ... that was a good time ๐<br />
<br />
The Open Hardware Mini-Conference (OHMC) team was keenly looking forward to [https://lca2021.linux.org.au LCA2021]. We have very fond memories of the [http://www.openhardwareconf.org/wiki/AMC2013 Arduino MiniConf in 2013]. We did a road-trip from Melbourne, the LCA2013 venue at the [https://www.anu.edu.au ANU] was excellent and we were looking forward to visiting [https://en.wikipedia.org/wiki/Canberra Canberra] again. Sadly, LCA2021 was postponed ๐ข, but then went virtual ๐ค ... and then a surprising thing happened ... the LCA2021 organizing team reached out to us and asked if we'd like to consider a special project ๐ฒ<br />
<br />
<br />
Melbourne was deep in CoVid-19 isolation ๐ค and the opportunity to start a new hardware project for our friends at LCA was just the shot-in-the-arm that we needed ๐ The LCA2021 organizing committee asked us to prepare a proposal for a [https://hackaday.com/2018/08/14/all-the-badges-of-def-con-26-vol-1 conference hardware badge] that could be manufactured and sent to a limited number (200) of LCA2021 attendees as part of the swag in time for the conference. So we did. They accepted ! '''And so the [https://github.com/CCHS-Melbourne/Swag-Badge #swagbadge] was conceived !!'''<br />
<br />
<br />
We've been thinking about an [https://github.com/CCHS-Melbourne/Minimum-viable-badge LCA badge (well, more than just thinking !)] for years, perhaps going back to LCA2012 in Ballarat (another one of our favorites) and the [https://www.freetronics.com.au/products/leostick LeoStick swag].<br />
<br />
<br />
Now, since it costs nothing to make additional copies of software ... the number of badges was bumped up to 300 ๐ค๐ค๐ค ... (we anticipate some late nights assembling, flashing, packing and posting) ๐ Not wanting anyone to miss out on the fun, [https://twitter.com/alecthegeek Alec] came up with the idea of the #dagbadge (a simple [https://en.wikipedia.org/wiki/Bill_of_materials BoM]) that anyone can order for themselves immediately and join in the fun, leading up to LCA2021 and beyond ๐ The #dagbadge will be particularly important for anyone wishing to play along and contribute to the hardware (see [https://hackaday.com/2019/03/20/introducing-the-shitty-add-on-v1-69bis-standard SAO]) or the firmware, before we ship the actual #swagbadge.<br />
<br />
<br />
Unfortunately, the traditional LCA Open Hardware Mini-Conference morning workshop assembly madness won't be happening this time, but maybe we can still switch it up and figure out a way to involve everyone and perhaps encourage both hardware and software collaboration and contributions. Something different from what we've always done before (which was hacking frantically in our respective caves until the morning of the OHMC). We're thinking something along the lines of ...<br />
<br />
* Develop the #swagbadge hardware in the open ... we'll detail the journey, the highs ๐ข and lows ๐คฏ of delivering a hardware project<br />
<br />
* Develop the #swagbadge software in the open ... encouraging collaboration and contributions ๐งช๐ฅ<br />
<br />
* Provide several [https://hackaday.com/2019/03/20/introducing-the-shitty-add-on-v1-69bis-standard SAO connectors] (power, [https://en.wikipedia.org/wiki/I%C2%B2C I2C] and a couple of [https://en.wikipedia.org/wiki/General-purpose_input/output GPIO] pins) ... so that you can create and share your own custom hardware add-ons to the #swagbadge<br />
<br />
* Provide a simple "store" where people can upload and download simple application examples to share with others<br />
<br />
<br />
[[File:Swag_badge_render_2020_09-02.png|200px|LCA2021 swag badge very first 3D render 2020-09-02]] Very first 3D render 2020-09-02<br />
[[File:Swag badge pcb 2020-09-30.jpg|300px|LCA2021 swag badge PCB 2020-09-30]] Recent PCB 2020-09-30<br />
[[File:Swag badge render 2020-10-01.jpg|360px|LCA2021 swag badge 3D render 2020-10-01]] Recent 3D render 2020-10-01</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=MediaWiki:Sidebar&diff=1169MediaWiki:Sidebar2020-10-04T10:29:36Z<p>AndyGelme: Added Swag Badge for LCA2021</p>
<hr />
<div><br />
* navigation<br />
** mainpage|Home<br />
** Swagbadge2021|Swag Badge 2021<br />
** OHMC2020|Open Hardware Miniconf 2020<br />
** OHMC2019|Open Hardware Miniconf 2019<br />
** OHMC2018|Open Hardware Miniconf 2018<br />
** OHC2017|Open Hardware Miniconf 2017<br />
** OHC2016|Open Hardware Miniconf 2016<br />
** OHC2015|Open Hardware Miniconf 2015<br />
** AMC2014|Arduino Miniconf 2014<br />
** AMC2013|Arduino Miniconf 2013<br />
** AMC2012|Arduino Miniconf 2012<br />
** AMC2011|Arduino Miniconf 2011<br />
** AMC2010|Arduino Miniconf 2010<br />
** recentchanges-url|recentchanges<br />
** helppage|help<br />
* SEARCH<br />
* TOOLBOX<br />
* LANGUAGES</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=MediaWiki:Sidebar&diff=1137MediaWiki:Sidebar2020-10-03T06:13:58Z<p>AndyGelme: </p>
<hr />
<div><br />
* navigation<br />
** mainpage|Home<br />
** OHMC2020|Open Hardware Miniconf 2020<br />
** OHMC2019|Open Hardware Miniconf 2019<br />
** OHMC2018|Open Hardware Miniconf 2018<br />
** OHC2017|Open Hardware Miniconf 2017<br />
** OHC2016|Open Hardware Miniconf 2016<br />
** OHC2015|Open Hardware Miniconf 2015<br />
** AMC2014|Arduino Miniconf 2014<br />
** AMC2013|Arduino Miniconf 2013<br />
** AMC2012|Arduino Miniconf 2012<br />
** AMC2011|Arduino Miniconf 2011<br />
** AMC2010|Arduino Miniconf 2010<br />
** recentchanges-url|recentchanges<br />
** helppage|help<br />
* SEARCH<br />
* TOOLBOX<br />
* LANGUAGES</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=MediaWiki:Sidebar&diff=1136MediaWiki:Sidebar2020-10-03T06:10:10Z<p>AndyGelme: Added OHMC2020 and SwagBadge2021</p>
<hr />
<div><br />
* navigation<br />
** mainpage|Home<br />
** Swagbadge2021|Swag Badge 2021<br />
** OHMC2020|Open Hardware Miniconf 2020<br />
** OHMC2019|Open Hardware Miniconf 2019<br />
** OHMC2018|Open Hardware Miniconf 2018<br />
** OHC2017|Open Hardware Miniconf 2017<br />
** OHC2016|Open Hardware Miniconf 2016<br />
** OHC2015|Open Hardware Miniconf 2015<br />
** AMC2014|Arduino Miniconf 2014<br />
** AMC2013|Arduino Miniconf 2013<br />
** AMC2012|Arduino Miniconf 2012<br />
** AMC2011|Arduino Miniconf 2011<br />
** AMC2010|Arduino Miniconf 2010<br />
** recentchanges-url|recentchanges<br />
** helppage|help<br />
* SEARCH<br />
* TOOLBOX<br />
* LANGUAGES</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=MediaWiki:Sidebar&diff=1135MediaWiki:Sidebar2020-10-03T06:09:03Z<p>AndyGelme: Added OHMC2020 and SwagBadge2021</p>
<hr />
<div><br />
* navigation<br />
** mainpage|Home<br />
** SwagBadge2021|Swagbadge2021<br />
** OHMC2020|Open Hardware Miniconf 2020<br />
** OHMC2019|Open Hardware Miniconf 2019<br />
** OHMC2018|Open Hardware Miniconf 2018<br />
** OHC2017|Open Hardware Miniconf 2017<br />
** OHC2016|Open Hardware Miniconf 2016<br />
** OHC2015|Open Hardware Miniconf 2015<br />
** AMC2014|Arduino Miniconf 2014<br />
** AMC2013|Arduino Miniconf 2013<br />
** AMC2012|Arduino Miniconf 2012<br />
** AMC2011|Arduino Miniconf 2011<br />
** AMC2010|Arduino Miniconf 2010<br />
** recentchanges-url|recentchanges<br />
** helppage|help<br />
* SEARCH<br />
* TOOLBOX<br />
* LANGUAGES</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=MediaWiki:Sidebar&diff=651MediaWiki:Sidebar2016-12-30T01:22:48Z<p>AndyGelme: Added OHMC2017</p>
<hr />
<div><br />
* navigation<br />
** mainpage|Home<br />
** OHC2017|Open Hardware Miniconf 2017<br />
** OHC2016|Open Hardware Miniconf 2016<br />
** OHC2015|Open Hardware Miniconf 2015<br />
** AMC2014|Arduino Miniconf 2014<br />
** AMC2013|Arduino Miniconf 2013<br />
** AMC2012|Arduino Miniconf 2012<br />
** AMC2011|Arduino Miniconf 2011<br />
** AMC2010|Arduino Miniconf 2010<br />
** recentchanges-url|recentchanges<br />
** helppage|help<br />
* SEARCH<br />
* TOOLBOX<br />
* LANGUAGES</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=OHC2016&diff=620OHC20162015-12-16T11:06:20Z<p>AndyGelme: </p>
<hr />
<div>[http://goo.gl/forms/JxcJ2YjQnI Open Hardware Miniconf 2016 REGISTRATION FORM]<br />
<br />
The Open Hardware Miniconf 2016 will take place as part of LCA 2016 in Geelong, Victoria, Australia.<br />
<br />
The concept of Free / Open Source Software, already well understood by LCA attendees, is complemented by a rapidly growing community focused around Open Hardware and "maker culture". One of the drivers of the popularity of the Open Hardware community is easy access to cheap devices such as Arduino, which is a microcontroller development board originally intended for classroom use but now a popular building block in all sorts of weird and wonderful hobbyist and professional projects.<br />
<br />
Interest in Open Hardware is high among FOSS enthusiasts but there is also a barrier to entry with the perceived difficulty and dangers of dealing with hot soldering irons, unknown components and unfamiliar naming schemes. The miniconf will use an Open Hardware assembly project as a stepping stone to help ease software developers into dealing with Open Hardware. Topics will cover both software and hardware issues, starting with simpler sessions suitable for Open Hardware beginners and progressing through to more advanced topics.<br />
<br />
The day will run in two distinct halves. The first part of the day will be a hands-on assembly session where participants will have the chance to assemble a special hardware project developed for the miniconf. Instructors will be on hand to assist with soldering and the other mysteries of hardware assembly. The second part of the day will be presentations about Open Hardware topics, including information on software to run on the hardware project built earlier in the day.<br />
<br />
Unlike previous years, due to venue restrictions, the assembly will not require any soldering. However, we aim to bring soldering back in 2017.<br />
<br />
== Venue ==<br />
<br />
To be determined<br />
<br />
== Draft schedule ==<br />
<br />
* 10:40 - '''12:20 Assembly workshop''' (registration required to participate, spectators also welcome)<br />
* 12:20 - 1:20 Lunch<br />
* 1:20 - 2:10 Bonus assembly workshop session<br />
* 2:10 - 2:20 Break<br />
* 2:20 - 2:40 '''Talk 1: TBD'''<br />
* 2:40 - 3:00 '''Talk 2: TBD'''<br />
* 3:00 - 3:40 Afternoon Tea<br />
* 3:40 - 4:00 '''Talk 3: TBD'''<br />
* 4:00 - 4:20 '''Talk 4: TBD'''<br />
* 4:20 - 4:30 Break<br />
* 4:30 - 4:50 '''Talk 5: TBD'''<br />
* 4:50 - 5:10 '''Talk 6: TBD'''<br />
* 5:10 - 5:40 '''Lightning talks, project showcase, general discussion'''<br />
<br />
'''Lightning Talks'''<br />
<br />
* If you'd like to present a 5 minute lightning talk, please email [mailto:andyg@geekscape.org andyg@geekscape.org]<br />
<br />
== Call For Papers ==<br />
<br />
Please see [[OHC2016-CFP]] for more information<br />
<br />
== Discussion Group ==<br />
<br />
There is a Google Group email list for discussion of topics related to the miniconf, including the SimpleBot assembly session:<br />
<br />
https://groups.google.com/forum/#!forum/open-hardware-conf<br />
<br />
== Assembly Project ==<br />
<br />
Each year we build a project developed for the Miniconf, and this year we'll be assembling ESPlant garden sensor designed by Angus Gratton and John Spencer.<br />
<br />
[https://github.com/CCHS-Melbourne/workshop-esplant ESPlant workshop GitHub repository]</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=OHC2016&diff=619OHC20162015-12-16T11:04:58Z<p>AndyGelme: </p>
<hr />
<div>[http://goo.gl/forms/JxcJ2YjQnI Open Hardware Miniconf 2016 REGISTRATION FORM]<br />
<br />
The Open Hardware Miniconf 2016 will take place as part of LCA 2016 in Geelong, Victoria, Australia.<br />
<br />
The concept of Free / Open Source Software, already well understood by LCA attendees, is complemented by a rapidly growing community focused around Open Hardware and "maker culture". One of the drivers of the popularity of the Open Hardware community is easy access to cheap devices such as Arduino, which is a microcontroller development board originally intended for classroom use but now a popular building block in all sorts of weird and wonderful hobbyist and professional projects.<br />
<br />
Interest in Open Hardware is high among FOSS enthusiasts but there is also a barrier to entry with the perceived difficulty and dangers of dealing with hot soldering irons, unknown components and unfamiliar naming schemes. The miniconf will use an Open Hardware assembly project as a stepping stone to help ease software developers into dealing with Open Hardware. Topics will cover both software and hardware issues, starting with simpler sessions suitable for Open Hardware beginners and progressing through to more advanced topics.<br />
<br />
The day will run in two distinct halves. The first part of the day will be a hands-on assembly session where participants will have the chance to assemble a special hardware project developed for the miniconf. Instructors will be on hand to assist with soldering and the other mysteries of hardware assembly. The second part of the day will be presentations about Open Hardware topics, including information on software to run on the hardware project built earlier in the day.<br />
<br />
Unlike previous years, due to venue restrictions, the assembly will not require any soldering. However, we aim to bring soldering back in 2017.<br />
<br />
== Venue ==<br />
<br />
To be determined<br />
<br />
== Draft schedule ==<br />
<br />
* 10:40 - '''12:20 Assembly workshop''' (registration required to participate, spectators also welcome)<br />
* 12:20 - 1:20 Lunch<br />
* 1:20 - 2:10 Bonus assembly workshop session<br />
* 2:10 - 2:20 Break<br />
* 2:20 - 2:40 '''Talk 1: TBD'''<br />
* 2:40 - 3:00 '''Talk 2: TBD'''<br />
* 3:00 - 3:40 Afternoon Tea<br />
* 3:40 - 4:00 '''Talk 3: TBD'''<br />
* 4:00 - 4:20 '''Talk 4: TBD'''<br />
* 4:20 - 4:30 Break<br />
* 4:30 - 4:50 '''Talk 5: TBD'''<br />
* 4:50 - 5:10 '''Talk 6: TBD'''<br />
* 5:10 - 5:40 '''Lightning talks, project showcase, general discussion'''<br />
<br />
'''Lightning Talks'''<br />
<br />
* If you'd like to present a 5 minute lightning talk, please email [mailto:andyg@geekscape.org andyg@geekscape.org]<br />
<br />
== Call For Papers ==<br />
<br />
Please see [[OHC2016-CFP]] for more information<br />
<br />
== Discussion Group ==<br />
<br />
There is a Google Group email list for discussion of topics related to the miniconf, including the SimpleBot assembly session:<br />
<br />
https://groups.google.com/forum/#!forum/open-hardware-conf<br />
<br />
== Assembly Project ==<br />
<br />
Each year we build a project developed for the Miniconf, and this year we'll be assembling ESPlant garden sensor designed by Angus Gratton and John Spencer.</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=Main_Page&diff=618Main Page2015-12-16T11:04:06Z<p>AndyGelme: </p>
<hr />
<div>{{DISPLAYTITLE:Open Hardware Miniconf}}<br />
<br />
[http://goo.gl/forms/JxcJ2YjQnI Open Hardware Miniconf 2016 REGISTRATION FORM]<br />
<br />
The [[OHC2016|Open Hardware Miniconf]] is a 1-day event that runs as a specialist stream within the [http://linux.conf.au/ linux.conf.au] conference. It gives participants an opportunity to learn basic hardware skills such as soldering (not in 2016), by assembling their own electronic project, and then the afternoon is filled with interesting talks about various projects and techniques related to the morning project and to open hardware in general.<br />
<br />
The [[OHC2016|Open Hardware Miniconf]] began as the Arduino Miniconf in Wellington NZ in 2010 and has run every year since. Although Arduino is still a powerful and popular tool for learning about microcontroller development, the event has now grown in scope to cover broader Open Hardware topics including non-Arduino projects. In 2015, it took on its new identity as the [[OHC2016|Open Hardware Miniconf]] to reflect this broader interest.<br />
<br />
To give you some idea what to expect, this is the hardware assembly session at the 2011 Arduino Miniconf:<br />
<br />
[[File:amc-2011.jpg]]<br />
<br />
(Photo by [http://www.flickr.com/photos/karora/5383488664/ Andrew McMillan], [http://creativecommons.org/licenses/by/2.0/deed.en CC2.0])<br />
<br />
After the assembly session is over the room is cleaned up a bit and the talks begin. It's a fun and educational event!<br />
<br />
Note that to attend you must first register for the main conference, which provides the venue. The [[OHC2016|Open Hardware Miniconf]] is part of LCA as a specialist stream for conference attendees: it's not a stand-alone event. See [http://linux.conf.au/ linux.conf.au] for more information.<br />
<br />
== Registration And Cost ==<br />
Attendance is free (to linux.conf.au delegates) but if you wish to participate in the morning hardware assembly tutorial you will need to pre-register and purchase a kit. Space is limited so get in fast! If you just want to come along and watch or attend the talks, you don't need to do anything. If you wish to participate in the hardware assembly tutorial, please submit the registration form.<br />
<br />
See [[OHC2016|Open Hardware Miniconf]] for more information.<br />
<br />
== Previous Events ==<br />
<br />
For historical reference:<br />
<br />
* [[OHC2016|Open Hardware Miniconf 2016 (Geelong, Australia)]]<br />
* [[OHC2015|Open Hardware Miniconf 2015 (Auckland, New Zealand)]]<br />
* [[AMC2014|Arduino Miniconf 2014 (Perth, Australia)]]<br />
* [[AMC2013|Arduino Miniconf 2013 (Canberra, Australia)]]<br />
* [[AMC2012|Arduino Miniconf 2012 (Ballarat, Australia)]]<br />
* [[AMC2011|Arduino Miniconf 2011 (Brisbane, Australia)]]<br />
* [[AMC2010|Arduino Miniconf 2010 (Wellington, New Zealand)]]</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=Main_Page&diff=617Main Page2015-12-16T10:58:07Z<p>AndyGelme: </p>
<hr />
<div>{{DISPLAYTITLE:Open Hardware Miniconf}}<br />
The [[OHC2016|Open Hardware Miniconf]] is a 1-day event that runs as a specialist stream within the [http://linux.conf.au/ linux.conf.au] conference. It gives participants an opportunity to learn basic hardware skills such as soldering (not in 2016), by assembling their own electronic project, and then the afternoon is filled with interesting talks about various projects and techniques related to the morning project and to open hardware in general.<br />
<br />
The [[OHC2016|Open Hardware Miniconf]] began as the Arduino Miniconf in Wellington NZ in 2010 and has run every year since. Although Arduino is still a powerful and popular tool for learning about microcontroller development, the event has now grown in scope to cover broader Open Hardware topics including non-Arduino projects. In 2015, it took on its new identity as the [[OHC2016|Open Hardware Miniconf]] to reflect this broader interest.<br />
<br />
To give you some idea what to expect, this is the hardware assembly session at the 2011 Arduino Miniconf:<br />
<br />
[[File:amc-2011.jpg]]<br />
<br />
(Photo by [http://www.flickr.com/photos/karora/5383488664/ Andrew McMillan], [http://creativecommons.org/licenses/by/2.0/deed.en CC2.0])<br />
<br />
After the assembly session is over the room is cleaned up a bit and the talks begin. It's a fun and educational event!<br />
<br />
Note that to attend you must first register for the main conference, which provides the venue. The [[OHC2016|Open Hardware Miniconf]] is part of LCA as a specialist stream for conference attendees: it's not a stand-alone event. See [http://linux.conf.au/ linux.conf.au] for more information.<br />
<br />
== Registration And Cost ==<br />
Attendance is free (to linux.conf.au delegates) but if you wish to participate in the morning hardware assembly tutorial you will need to pre-register and purchase a kit. Space is limited so get in fast! If you just want to come along and watch or attend the talks, you don't need to do anything. If you wish to participate in the hardware assembly tutorial, please submit the registration form.<br />
<br />
See [[OHC2016|Open Hardware Miniconf]] for more information.<br />
<br />
== Previous Events ==<br />
<br />
For historical reference:<br />
<br />
* [[OHC2016|Open Hardware Miniconf 2016 (Geelong, Australia)]]<br />
* [[OHC2015|Open Hardware Miniconf 2015 (Auckland, New Zealand)]]<br />
* [[AMC2014|Arduino Miniconf 2014 (Perth, Australia)]]<br />
* [[AMC2013|Arduino Miniconf 2013 (Canberra, Australia)]]<br />
* [[AMC2012|Arduino Miniconf 2012 (Ballarat, Australia)]]<br />
* [[AMC2011|Arduino Miniconf 2011 (Brisbane, Australia)]]<br />
* [[AMC2010|Arduino Miniconf 2010 (Wellington, New Zealand)]]</div>AndyGelmehttp://www.openhardwareconf.org/index.php?title=MediaWiki:Sidebar&diff=616MediaWiki:Sidebar2015-12-16T10:54:39Z<p>AndyGelme: </p>
<hr />
<div><br />
* navigation<br />
** mainpage|Home<br />
** OHC2016|Open Hardware Miniconf 2016<br />
** OHC2015|Open Hardware Miniconf 2015<br />
** AMC2014|Arduino Miniconf 2014<br />
** AMC2013|Arduino Miniconf 2013<br />
** AMC2012|Arduino Miniconf 2012<br />
** AMC2011|Arduino Miniconf 2011<br />
** AMC2010|Arduino Miniconf 2010<br />
** recentchanges-url|recentchanges<br />
** helppage|help<br />
* SEARCH<br />
* TOOLBOX<br />
* LANGUAGES</div>AndyGelme