The Internet of Things (IoT) has a great number of sensor nodes distributed in different environments, and the traditional approach uses batteries to power these nodes: however, the resultant huge cost of battery replacement means that the battery-powered approach is not the optimal solution. Micro energy harvesting offers the possibility of self-powered sensor nodes. This paper provides an overview of energy harvesting technology, and describes the methods for extracting energy from various sources, including photovoltaic, thermoelectric, piezoelectric, and RF; in addition, the characteristics of the four types of energy sources and the applicable circuit structures are summarized. This paper gives the pros and cons of the circuits, and future directions. The design challenges are the efficiency and size of the circuit. MPPT, as an important method of improving the system efficiency, is also highlighted and compared.