About 11.15pm on February 11, a Holden Commodore was stopped at a breath, alcohol and drug testing bus that was set up on Armadale Road in Banjup.
Inquiries by officers led to the vehicle being searched.
It will be alleged that approximately 18 grams of methylamphetamine, a machete, scales, cannabis and cash were located and seized.
Because of the items found in the car, Armadale Detectives with the assistance of officers from the breath-testing section searched a home in Forrestdale.
It will be alleged during the search police located and seized a home-made handgun capable of firing .22 rounds of ammunition, a shotgun, cannabis, weapons, smoking implements and ammunition.
The 35-year-old man was charged with multiple offences including three counts of carrying a controlled weapon, two counts of possessing a prohibited drug and one count of possessing an unlicensed firearm.