Inspiration

Most random numbers used today are software-based and predictable. We wanted to build a low-cost hardware system that generates true randomness from real physical noise, which is important for security and cryptography.

What it does

The project generates true random numbers using noise from a reverse-biased Zener diode. It displays the random bits and numbers on an LCD and also sends them to a PC to visualize and test randomness in real time.

How we built it

We used a Zener diode to generate noise, amplified it using an LM358 op-amp, and sampled it with an Arduino. The random data is shown on an LCD, while a Python application plots the bit stream, saves data, and performs randomness tests.

Challenges we ran into

Handling very small noise signals, removing unwanted bias, button debouncing, and synchronizing hardware output with the software visualization were the main challenges.

Accomplishments that we're proud of

We successfully built a working hardware-based TRNG, visualized real-time randomness, and verified it using statistical tests like bit balance and distribution — all with low-cost components.

What we learned

We learned how physical noise can be used as a real entropy source, how to interface analog hardware with digital systems, and how to validate randomness using basic statistical methods.

What's next for True Random Number Generator (TRNG)

In the future, we plan to improve entropy extraction, add advanced randomness tests, increase speed, and integrate the TRNG into security applications like encryption and key generation.

Built With

  • analog-electronics
  • arduino-uno
  • embedded-c/c++
  • lcd
  • lm358-op-amp
  • python
  • python-with-pyserial-and-matplotlib
  • reverse-biased-zener-diode-noise
  • serial-communication
Share this project:

Updates