The uncertainty principle is a simple consequence of the idea that quantum mechanical operators do not necessarily commute.
In quantum mechanics, you find that the state which describes a state of definite value of an observable $A$ is not the state which describes a state of definite value for an observable $B$ if the commutator of both observables $[A,B]$ is not zero. (Formally, the two operators are not simultaneously diagonalizable.)
You just write down the definition of the standard deviation of the operator $A$ on a state $\psi$,
$$ \sigma_A(\psi) = \sqrt{\langle A^2\rangle_\psi - \langle A\rangle^2_\psi}$$
where $\langle\dot{}\rangle_\psi$ is the expectation value in the state $\psi$ and with a bit of algebraic manipulation (done e.g. on Wikipedia) we find that
$$ \sigma_A(\psi)\sigma_B(\psi)\ge \frac{1}{2}\lvert \langle[A,B]\rangle_\psi\lvert$$
Now, the standard deviation (or "uncertainty") of an observable on a state tells you how much the state "fluctuates" between different values of the observable. The standard deviation is, for instance, zero for eigenstates of the observable, since you always just measure the one eigenvalue that state has.
Plugging in the canonical commutation relation
$$ [x,p] = \mathrm{i}\hbar$$
yields the "famous" version of the uncertainty relation, namely
$$ \sigma_x\sigma_p\ge \frac{\hbar}{2}$$
but there is nothing special about position and momentum in this respect - every other operator pair likewise fulfills such an uncertainty relation.
It is, in my opinion, crucial to note that the uncertainty principle does not rely on any conception of "particles" or "waves". In particular, it also holds in finite-dimensional quantum systems (like a particle with spin that is somehow confined to a point) for observables like spin or angular momentum which have nothing to do with anything one might call "wavenature". The principle is just a consequence of the basic assumption of quantum mechanics that observables are well-modeled by operators on a Hilbert space.
The reason how "waves" enter is that the uncertainty relation for $x$ and $p$ is precisely that of the "widths" of functions in Fourier conjugate variables, and the Fourier relationship we are most familiar with is that between position and momentum space. That the canonical commutation relations are equivalent to such a description by Fourier conjugate variables is the content of the Stone-von Neumann theorem.
However, it is the description by commutation relations and not that by Fourier conjugacy that generalizes to all quantum states and all operators. Therefore, it is the commutation relation between the operators that should be seen as the origin of their quantum mechanical uncertainty relations.