Detecting and handling faulty nodes is one of the main challenges in wireless sensor networks (WSNs). Most of the existing fault detection schemes rely on the data sensed by neighboring nodes, however, these schemes do not usually consider the nature of the events and the coverage issues. In this paper, we present a novel distributed fuzzy logic-based faulty node detection algorithm for heterogeneous WSNs. To weight of the values sensed by the neighboring nodes, the proposed algorithm applies factors such as distance, coverage and the difference of the sensed values. By using the proposed distributed algorithm, each sensor node can correctly recognize its status at the presence of the events such as fire and transient faults. Extensive simulations results indicate the effectiveness of the proposed algorithm in reducing the false positive problems and improving detection accuracy in the fault detection process.