Skip to the content
PCBKitNew board
2 layers82.5 × 95.3 mmOpenWest2018, the printed circuit board in 3D

The 2018 badge features WiFi connectivity, and all the badges are controlled by an MQTT server. The main controller is a WeMos D1 Mini, which uses the ESP8266 WiFi module.

Size
82.5 × 95.3 mm
Copper layers
2
Thickness
1.6 mm
Parts
8
Nets
17
Pads
37
Tracks, vias
105, 5
Routed
Yes
KiCad
KiCad 4
Created
6 Jun 2018
Updated
9 Jul 2018

Overview

OpenWest2018 is an open-source printed circuit board by compukidmike, from the compukidmike/OpenWest2018 repository on GitHub. It is a 2-layer board of 82.5 × 95.3 mm with 8 parts on 17 nets, routed with 105 tracks and 5 vias.

It is built around the WS2812B. Its parts include 2 diodes, 2 connectors and 1 IC.

Main components

1

README

README.md

OpenWest2018 Electronic Badge

BadgePic

This year's badge is dedicated to our dear friend d3c4f. May his memory live on through many more awesome badges.

The 2018 badge features WiFi connectivity, and all the badges are controlled by an MQTT server. The main controller is a WeMos D1 Mini, which uses the ESP8266 WiFi module.

A note on battery life: WiFi uses a lot of power. So do LEDs. The badges probably won't last more than a day on batteries. Take them out when you're not at the conference to avoid unnecessary battery drain. Also, don't connect a USB cable while the batteries are in the badge. Bad things could happen.

One of the fun things about this badge is that they're all controlled by this central server. There's no authentication on MQTT publications, so anyone can change what all the badges are doing. There are many programs to interact with MQTT servers. MQTTLens is a free chrome app that's very easy to use. If you want to learn more about MQTT go here https://www.hivemq.com/blog/mqtt-essentials-part-1-introducing-mqtt

We're using mosquitto (https://mosquitto.org/) for our local MQTT server. This server is only available at the conference. After the con is over, you'll have to connect the badge to your own server or an online service like adafruit.io. There are instructions below on how to do that.

The local MQTT server IP is 10.155.0.214, port 1883

The Feeds are setup as follows:

  • Feed names: color1, color2, effect, effectspeed
  • All feeds are prefixed by feeds/
  • Colors are in Hex format (FFFFFF)
  • Effectspeed is 0-255
  • Effect is 0-6 (Off, On, Blink, Pulse, Alternate1, Alternate2, Rainbow)
  • Must set retain flag on messages

The retain flag is important. It tells the server to keep the last message, and give it to any new client that subscribes to a feed. That means your badge won't have to wait until a new message is sent out to start displaying the proper colors, etc.


To get the Arduino IDE set up, you'll need to do the following:

(The Arduino IDE can be downloaded from https://www.arduino.cc/)

  • Add the ESP8266 to the boards menu

  • Add the required libraries

    • Click Sketch > Include Library > Manage Libraries...
    • Search for and install the following libraries:
      • Adafruit IO Arduino
      • Adafruit MQTT Library
      • ArduinoHTTPClient
      • FastLED
      • WiFi
  • Mac users need to download the WeMos driver at: https://wiki.wemos.cc/downloads (restart required after install).

To connect the badge to your own WiFi network:

  • Edit the following lines in the code:
    text
    #define WLAN_SSID       "OPENWEST-GUEST"
    #define WLAN_PASS       "Openwest2018!"

To connect the badge to a different MQTT server:

  • Edit the following lines in the code:
    text
    #define AIO_SERVER      "10.155.0.214"         // IP or URL for MQTT server
    #define AIO_SERVERPORT  1883                   // use 8883 for SSL
    #define AIO_USERNAME    "test"                 // Adafruit.io username
    #define AIO_KEY         "1234567890"           // Adafruit.io key
  • To connect to adafruit.io, you'll need to create an account and then put your username and AIO key here. There are also more steps below for adafruit.io

Adafruit.io Workaround

If you attended my talk about the badge, I talked about how adafruit.io is an MQTT server that doesn't fit the spec. One of the things I said was that they retain messages by default. Well, they changed that, but still don't support the retain flag, so there's a workaround. Please keep in mind that they made this change on April 22, 2018. I've been working with the badge code since long before that. They've updated their libraries to handle this, but I haven't had a chance to mess with it. If you get it working with the new Adafruit IO library, please submit a pull request. Here's the blog post that talks about the change: https://io.adafruit.com/blog/notebook/2018/04/22/new-io-plus-and-mqtt-features/

So, with that said, here's the workaround:

  • All feed names are prefixed by your username, so they look like this: <username>/feeds/<feed_name>
  • You'll need to set up a publish feed for each of your feed subscriptions with /get at the end (I know, it's ridiculous).
    • Example: Adafruit_MQTT_Publish color1get = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/color1/get");
    • Note that the name must be different from the feed subscription (color1get vs color1)
  • Then, near the bottom of the code after this line: Serial.println("MQTT Connected!");
    • Add a publish for each feed:
      text
      color1get.publish('\0');
      color2get.publish('\0');
      effectget.publish('\0');
      effectspeedget.publish('\0');
      delay(1000); //delay for receiving the packets
    • The delay is necessary to give time to get the response from the server and not drop packets

I know this is an ugly workaround. I'm sorry. On the bright side, it does show how to setup and publish data back to the server.


If I missed anything, or you have something to add to this readme, please submit a pull request.

Parts

8
QtyValueFootprintReferences
2Conn_01x05Socket_Strips:Socket_Strip_Straight_1x05_Pitch2.54mmJ1, J2
2WS2812BWS2812b-HandSolder:WS2812BLED1, LED2
1BatteryBattery-WireConn:Battery-WireConnBT1
1LOGOOpenWest2018:BadgeOutlineG***
1TESTWire_Pads:SolderWirePad_single_1mmDrillDOUT
1WeMos_miniwemos-d1-mini:wemos-d1-mini-with-pin-header-and-connectorU1

Questions

How big is the OpenWest2018 PCB?

It measures 82.5 × 95.3 mm and has 2 copper layers, 1.6 mm thick.

What parts does the OpenWest2018 use?

8 parts, built around the WS2812B. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the OpenWest2018 KiCad files?

From the compukidmike/OpenWest2018 repository on GitHub, at the commit this page was made from: the board is Board Files/KiCad Files/OpenWest2018.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the OpenWest2018 design in my own project?

Its repository states no licence, so its author keeps all rights: ask compukidmike before reusing the design.

Similar boards

  • 4 layers99 × 53.3 mmPSLab, the printed circuit board in 3D

    PSLab

    fossasia/pslab-hardware

    PSLab Hardware Design and Schematics https://pslab.io

    199 parts1.7kApache-2.0
  • 2 layers26 × 30 mmMicrocontroller, the printed circuit board in 3D

    Microcontroller

    FrameworkComputer/ExpansionCards

    Reference designs and documentation to create Expansion Cards for the Framework Laptop

    34 parts1.1kCC-BY-4.0
  • 4 layers82.6 × 82.5 mmJumperless2, the printed circuit board in 3D

    Jumperless2

    Architeuthis-Flux/Jumperless

    A jumperless breadboard

    208 parts914
  • 2 layers95.3 × 161.9 mmDfh badge, the printed circuit board in 3D

    Dfh badge

    tanaes/whopping_Voron_mods

    135 parts787GPL-3.0
  • 2 layers42.8 × 28.8 mmMM Skirt, the printed circuit board in 3D

    MM Skirt

    PrintersForAnts/Micron

    If you want to purchase full kits there are 3 available (Kits are slowly updating to R1 hardware just make sure to double check the included hardware in your kit and if you have any questions reach out in the discord)

    11 parts741GPL-3.0
  • 2 layers149.6 × 127.1 mmErgodash, the printed circuit board in 3D

    Ergodash

    omkbd/ErgoDash

    keyboard

    187 parts732MIT
  • 2 layers285.5 × 95 mmReviung46 ver1 1, the printed circuit board in 3D

    Reviung46 ver1 1

    gtips/reviung

    The REVIUNG41 is 41-key column staggered keyboard.

    119 parts517MIT
  • 2 layers177.7 × 144.5 mmCOMM PANEL, the printed circuit board in 3D

    COMM PANEL

    jrsteensen/OpenHornet

    OpenHornet 1:1 F/A-18C Simulator Repository

    275 parts431