This repository contains the Arduino programs for implementing an energy harvesting wireless sensor network (WSN) using the TDMA (Time Division Multiple Access) algorithm. These programs were developed as part of a research paper conducted at Ohio Northern University.
-
Robert Hayek, M.S.E.E Student, Northwestern University
- ORCID: 0000-0002-4015-5897
- Email: robert.hayek@u.northwestern.edu
-
Dr. Ahmed Ammar, Assistant Professor of Electrical & Computer Engineering, Ohio Northern University
- ORCID: 0000-0001-5907-7043
- Email: a-ammar@onu.edu
Ohio Northern University, Ada, Ohio, United States
The research paper associated with this work can be found here.
A poster presentation summarizing the research findings is available here
Energy harvesting has been recently proposed for wireless sensor harvesting networks to improve their energy efficiency and drastically reduce the maintenance costs of replacing batteries. However, energy harvesting is a stochastic process which imposes an energy availability constraint on the system design. Thus, traditional protocols and algorithms including synchronization, communication, scheduling, and networking, will not be suitable for energy harvesting wireless networks. Therefore, this paper proposed a novel Time Division Multiplexing Algorithm for a single-hop energy harvesting wireless sensor network. The algorithm synchronizes the nodes based on less frequent synchronization messages from the coordinator node, which reduces power consumption and improves throughput. The algorithm was implemented in a network of four nodes; three nodes are senders, and one node is a coordinator.
The repository contains two Arduino programs:
-
Sensor_Node: This sketch is to be uploaded to eacg energy harvesting node on the network. It enables simulates energy harvesting and runs the TDMA algorithm.
-
Coordinator_Node: This sketch is to be uploaded to the base station node in the network. It acts as the central synchronization and error detection unit for the energy harvesting WSN.
To use the programs in this repository, follow these steps:
-
Clone or download the repository to your local machine.
-
In Coordinator_Node.ino set time slot length and number of sensor nodes on the network variables.
-
In Sensor_Node.ino set the node ID number for each sensor node individually.
-
Upload the Sensor_Node sketch to the energy harvesting nodes.
-
Upload the Coordinator_Node sketch to the base station node.
This project is licensed under the MIT License. Feel free to use, modify, and distribute the code for academic and non-commercial purposes. However, please provide appropriate attribution to the authors when using this work.
If you have any questions or inquiries, please contact Robert Hayek (r-hayek@onu.edu) or Dr. Ahmed Ammar (a-ammar@onu.edu).