The terminology is indeed a bit blurry and may depend on the CPU vendor.
What is clear is that a hardware interrupt is triggered by a hardware signal and makes the CPU enter a predefined ISR. These are exceptions triggered by (typically external) hardware.
The notation of a trap varies a bit between CPU vendors. Traps on non-Intel CPUs can (e.g. on a 68000 or PowerPC CPU) be software interrupts. Those CPUs have a TRAP instruction. On an x86, this instruction would be INT xxx, on an ARM CPU SWI/SVC, on a PowerPC TRAP #xx. This would be an exception deliberately triggered by a user program (typically used to enter the operating system)
Traps in the Intel world are exceptional conditions, like division by zero or other errors like invalid memory access (but might also be triggered by a set single step flag). Other CPU vendors simply call that an exception. Those are exceptions typically triggered by erroneous programs or conditions the CPU is not able to handle during normal program flow.
And all of them are normally called exceptions.