Universal Level 0

Universal Level 0

What is hardware?

Hardware is the physical medium on which software runs. It allows for software application code to run and provides the application various abilities such as communicating with sensors, battery charging circuits, Bluetooth, WiFi, etc. 

How to go about learning hardware?

  1. Select a project. The best way to get started on hardware is to select a simple project to do and work your way backwards through the various prerequisites.
  2. Select a specific solution such as STM32, Nordic or Dialog. This will allow you to focus on learning how all the various subsystems work together on a particular implementation and make extrapolation to other products much easier. 
  3. Keep reading. Look into data sheets, visit forums, read blogs and tutorials, ask questions and watch videos. Try to go one level deeper into each concept/subsystem you learn, every week. 

What to do when you’re stuck?

Often times in hardware, especially when starting out, you’ll come across barriers that are seemingly impossible to cross. You might have tried looking through 10’s of forums, libraries and tutorials but you’re still unable to solve your problem. The best thing to do is to stop and then start at the very beginning. Look into the available documentation such as data sheets, refer to pin connection diagrams and pin functions, look into application notes provided by manufacturers and if you’re still unable to find a solution look for help. Either on forums or from experienced personnel using the same offerings. Each barrier you come across will improve your overall skills by leaps and bounds. So don’t despair. The hard in hardware can be overcome by hard work. 

Do I need to invest money?

Yes. Hardware requires that you have a bare minimum infrastructure. Some of the most commonly used components tend to be:

  1. A breadboard
  2. Jumper cables (Male to Male, Female to Female)
  3. A multimeter
  4. Soldering kit (Soldering Iron, Flux, Solder Wire, Desoldering Pump)
  5. Wire Cutter
  6. A dev board (Arduino, STM32, nRF52, etc.)
  7. USB cable
  8. A PC
  9. Tactile Buttons
  10. LED’s
  11. Potentiometers
  12. Sensors (LDR, Ultrasonic Sensor, Flex Sensor, IR Sensor, Acclerometer, etc.)

The typical hardware workflow.

  1. Component Selection
  2. Component Study
  3. PCB Schematic
  4. PCB Layout
  5. Board Spin-Up
  6. Pin Configuration
  7. Peripheral Configuration
  8. Firmware Coding
  9. Debugging
  10. Iterate

Commonly used abbreviations


DK - Development Kit

SES - Seeger Embedded Studio

BLE - Bluetooth Low Energy

Softdevice - Library provided by Nordic for BLE

Build - Compile the code to a binary

ARM Cortex M4 - A low power microprocessor

LED - Light Emitting Diode

Segger J-Link - A debugger for ARM based microcontrollers

COM - Communications

TTL - Transistor Transistor Logic

UART - Universal Asynchronous Receiver Transmitter

VDD - Voltage Drain Drain

Pin Initialisation - Assigning a function to a pin

Intervals - Timer intervals

PCLK - Prescaled Clock Source - Downscaled/Divided Clock Source

HFCLK - High Frequency Clock Source


SPI - Serial Peripheral Interface

I2C - Inter Integrated Circuit

IDE - Integrated Development Environment 

GPIO - General Purpose Input/Output

CubeMX - Project initialisation tool by STM

HAL - Hardware Abstraction Layer


Power Profiler - A software used for measuring power consumption

LDO - Low Dropout Out Regulator

PCIe - Peripheral Component Interconnect Express

Kiel uVision - An IDE made by ARM for ARM based microcontrollers and SoC’s

GNU - GNU is not Unix