Abstract : In this article, we propose, design, model and experiment an energy efficient protocol for Wireless Sensor Networks (WSNs), ODYSSE (“Opportunistic Duty-cYcle based routing protocol for wirelesS Sensor networks”). It combines three main elements: the first one is duty-cycling, where nodes alternate between active and sleep states, and is a classical but effective method to save energy. The second one is opportunistic routing where relaying (routing) is not rigidly fixed: at each hop, any node closer to the destination might become the relay. This requires less node synchronization, allows for path diversity and load balancing. The third one, is source coding (with LDPC, Low-Density Parity-Check codes). With uncoordinated duty-cycling as a starting point, the three techniques fit perfectly, yielding a robust low complexity protocol for highly constrained nodes. Modeling the average waiting delay of forwarders, we also show that simple relay selection strategies are effective. We focused on two heterogeneous scenarios: the most challenging scenario of bulk-transmission (of still images), and one of the most classical WSNs applications, i.e infrequent events reporting. Using a testbed of 45 Arduino nodes communicating with IEEE 802.15.4 (XBee) within the large scale platform FIT IoT-LAB, we implemented and extensively studied the behavior and performance of the protocol.