Skip to the content
PCBKitNew board
2 layers157.5 × 92.5 mmRoostaBoosta, the printed circuit board in 3D

IoT Weather Alarm Clock - Georgia Tech ECE 4180 Spring 2023 Final Project

Size
157.5 × 92.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
24
Nets
80
Pads
189
Tracks, vias
456, 4
Pours
3
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
11 Apr 2023
Updated
2 May 2023

Overview

RoostaBoosta is an open-source printed circuit board by mshakula, from the mshakula/RoostaBoosta repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 157.5 × 92.5 mm with 24 parts on 80 nets, routed with 456 tracks and 4 vias.

Its parts include 15 connectors, 6 switches, 1 resistor and 1 diode. It belongs with the home automation and IoT and lEDs and displays boards of this library.

README

README.md

MbedOS Header Image

RoostaBoosta

Who doesn't need a good morning boost? Return to your rich idyllic pastoral roots with RoostaBoosta™, the innovative, awesome, groundbreaking, fascinating, mind-boggling, stupendous IoT weather-predicting alarm clock!

Final project for Georgia Tech ECE4180. Based on the newer MbedOS 6 platform, this project incorporates networking, API calls, and audio-visual effects for an web-enabled alarm clock / weather prediction station.

Building

Since the project is based on MbedOS 6, it strives to support the newer Mbed CLI 2, which among other things has CMake support.

In addition, this project also relies on git submodules for dependency management, since Mbed CLI tools for dependency management have been unreliable at best in the past.

Requirements

Process

Download the project files and all included dependencies:

sh
git clone --recurse-submodules https://github.com/mshakula/RoostaBoosta.git

Alternatively, if the project is already checked out, do the following to update your dependencies:

sh
git submodule update --init --recursive

To build, use standard CMake

sh
cmake -S <project_dir> -B <output_directory>
cmake --build <output_directory> -t RoostaBoosta

Online Compiler / Mbed Studio / Other compilers

We decided to use the Mbed CLI 2 / CMake as our main build tool since that seems to be the most actively supported solution for Mbed. Regardless, if another compilation solution is necessary, it may be possible to add add support with the following:

Create a symlink to third_party/mbed-os from the project root.

sh
ln -s third_party/mbed-os mbed-os

Add a mbed-os.lib file that points to the checked out revision of mbed-os.

sh
echo "https://github.com/ARMmbed/mbed-os.git#"$(cd third_party/mbed-os && git rev-parse HEAD) > mbed-os.lib

Note that this is not guaranteed to work if there are library conflicts and is not officially maintained.

Branching

All branches should be headed at master, which should be the stable build branch.

New features should be developed in parallel on feature/[name] branches. Once a feature is complete, it can be merged into master. Any features that depend on another should branch from the other one. Features should only merge into their parent when they are certain that they work.

When merging back into master merge conflicts arise, they should be resolved in a local editor and tested before committing. If any bug is retroactively found in master, a bugfix/[name] branch should be created and then merged back into it asap.

Master branch should have updated version numbers done in the top-level CMakeLists.txt file. Feature branches can have the parent version number suffixed with the feature name.

Style

Try to keep code legible and nice. Google C++ style guide is good, with following exceptions:

  • Use .h headers for C header files exclusively. Use .hpp for C++ headers.
  • Avoid /* */ style comments, prefer //.
  • Use /// \tag style as opposed to /** @tag for doxygen parameter and function annotation.

A .clang-format is provided for all other formatting needs. Please keep all checked-in code formatted by it.

Hardware

The hardware used in this project is based on the hardware provided by the Georgia Tech ECE department.

Primary components used are:

Schematics and a breakout PCB are designed in KiCAD, which is free and open-source.

The hardware setup is currently as bare-bones as possible to simplify manual wiring.

Parts

24
QtyValueFootprintReferences
11kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1
1AUDIO_CONN_OUTConnector_PinSocket_2.54mm:PinSocket_2x02_P2.54mm_VerticalJ9
1AUDIO_CONN_PWRConnector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_VerticalJ10
1AUDIO_CONN_VOLConnector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_VerticalJ11
1AUDIO_CON_INConnector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_VerticalJ12
1BNT5Button_Switch_THT:SW_PUSH_6mmSW6
1BTN1Button_Switch_THT:SW_PUSH_6mmSW2
1BTN2Button_Switch_THT:SW_PUSH_6mmSW3
1BTN3Button_Switch_THT:SW_PUSH_6mmSW4
1BTN4Button_Switch_THT:SW_PUSH_6mmSW5
1BT_CONNConnector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_VerticalJ8
1Barrel_Jack_Switch_Pin3RingConnector_BarrelJack:BarrelJack_HorizontalJ2
1ETHERNET_CONNConnector_PinSocket_2.54mm:PinSocket_1x13_P2.54mm_VerticalJ6
1LCD_CONNConnector_PinSocket_2.54mm:PinSocket_2x05_P2.54mm_VerticalJ4
1MBED_CONN_DEBUGConnector_PinHeader_2.54mm:PinHeader_2x20_P2.54mm_VerticalJ5
1MBED_CONN_LEFTConnector_PinHeader_2.54mm:PinHeader_1x20_P2.54mm_VerticalJ1
1MBED_CONN_RIGHTConnector_PinHeader_2.54mm:PinHeader_1x20_P2.54mm_VerticalJ3
1PWR_LEDLED_THT:LED_D1.8mm_W3.3mm_H2.4mmD1
1R_PotentiometerConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalRV1
1SD_CONNConnector_PinSocket_2.54mm:PinSocket_1x07_P2.54mm_VerticalJ7
1SONAR_CONNConnector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalJ15
1SW_SPDTButton_Switch_THT:SW_Slide_1P2T_CK_OS102011MS2QSW1
1WIFI_CONN_LEFTConnector_PinSocket_2.54mm:PinSocket_1x10_P2.54mm_VerticalJ13
1WIFI_CONN_RIGHTConnector_PinSocket_2.54mm:PinSocket_1x10_P2.54mm_VerticalJ14

Questions

How big is the RoostaBoosta PCB?

It measures 157.5 × 92.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the RoostaBoosta use?

24 parts. 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 RoostaBoosta KiCad files?

From the mshakula/RoostaBoosta repository on GitHub, at the commit this page was made from: the board is hw/RoostaBoosta.kicad_pcb and its schematic hw/RoostaBoosta.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the RoostaBoosta design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers56 × 65 mmSeaTalk1, the printed circuit board in 3D

    SeaTalk1

    dotnet/iot

    This repo includes .NET Core implementations for various IoT boards, chips, displays and PCBs.

    24 parts2.4kMIT
  • 2 layers26.2 × 45.5 mmPL18 multiprotocol, the printed circuit board in 3D

    PL18 multiprotocol

    pascallanger/DIY-Multiprotocol-TX-Module

    Multiprotocol TX Module (or MULTI-Module) is a 2.4GHz transmitter module which controls many different receivers and models.

    24 parts1.9kGPL-3.0
  • 2 layers58 × 35.5 mmHat, the printed circuit board in 3D

    Hat

    menloresearch/asimov-1

    v1 of Asimov, an open-source humanoid robot

    24 parts1.4kCERN-OHL-S-2.0
  • 2 layers21.6 × 19.5 mmMicron Logo LED, the printed circuit board in 3D

    Micron Logo LED

    DraftShift/StealthChanger

    Tool changing system for Vorons and other front mount printer motion systems, not just stealthburner.

    24 parts1.2kGPL-3.0
  • 2 layers158 × 11 mmRainbow Matchstick, the printed circuit board in 3D

    Rainbow Matchstick

    VoronDesign/Voron-Hardware

    Cool Hardware designed by the Voron Design group

    24 parts1.1kGPL-3.0
  • 2 layers85.6 × 54 mmTRACED wio1262-carrier, the printed circuit board in 3D

    TRACED wio1262-carrier

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    24 parts915
  • 2 layers36 × 20 mmCombined, the printed circuit board in 3D

    Combined

    adamb314/ServoProject

    Getting the most out of your hobby servo

    24 parts545