Experiment 6
Experiment 6
Aim: Implement device to device communication with the help of Mosquitto broker
Objective:
Establish Device-to-Device CommunicationSet up a broker or server to handle the
communication between IoT devices.
Demonstrate Real-Time Data Exchange
• What is QoS?
Ans: Quality of Service (QoS):
MQTT offers three levels of QoS for message delivery:
o QoS 0 (At most once): Messages are delivered once, with no acknowledgment.
o QoS 1 (At least once): Messages are delivered at least once, with
acknowledgment.
o QoS 2 (Exactly once): Messages are delivered exactly once, ensuring no
duplication.
Sardar Patel Institute of Technology
Bhavan’s Campus, Munshi Nagar, Andheri (West), Mumbai-400058-India
(Autonomous Institute Affiliated to University of Mumbai)
Academic Year: 2024-2025
Algorithm:
import time
from umqtt.simple import MQTTClient
import ubinascii
import machine
import micropython
import network
import esp
import gc
# Initialize variables
last_message = 0
message_interval = 5
counter = 0
# Main loop
try:
client = connect_and_subscribe() # Connect to MQTT
while True:
Sardar Patel Institute of Technology
Bhavan’s Campus, Munshi Nagar, Andheri (West), Mumbai-400058-India
(Autonomous Institute Affiliated to University of Mumbai)
Academic Year: 2024-2025
Program:
try:
Boot.py
import time
import network
import esp
import gc
import machine
# Wi-Fi credentials
ssid = 'Room-301' # Replace with your Wi-Fi SSID
password = 'etrx@301' # Replace with your Wi-Fi password
print('Connecting to Wi-Fi...')
station.connect(ssid, password)
Main.py
Code for ESP 1 (Ultrasonic sensor -> ESP 2, IR sensor <- ESP 2):
import time
from umqtt.simple import MQTTClient
import ubinascii
import machine
import micropython
import network
import esp
import gc
# Sensor setup (Ultrasonic sensor, assuming trigger pin 12, echo pin 13)
trigger_pin = machine.Pin(12, machine.Pin.OUT)
echo_pin = machine.Pin(13, machine.Pin.IN)
esp.osdebug(None)
gc.collect()
# Initialize variables
last_message = 0
message_interval = 5
counter = 0
while echo_pin.value() == 0:
start = time.ticks_us()
Sardar Patel Institute of Technology
Bhavan’s Campus, Munshi Nagar, Andheri (West), Mumbai-400058-India
(Autonomous Institute Affiliated to University of Mumbai)
Academic Year: 2024-2025
while echo_pin.value() == 1:
end = time.ticks_us()
# Main loop
try:
client = connect_and_subscribe()
while True:
try:
client.check_msg() # Check for incoming messages
except OSError as e:
restart_and_reconnect() # Handle connection errors
Sardar Patel Institute of Technology
Bhavan’s Campus, Munshi Nagar, Andheri (West), Mumbai-400058-India
(Autonomous Institute Affiliated to University of Mumbai)
Academic Year: 2024-2025
except Exception as e:
print('Exception occurred:', e)
restart_and_reconnect() # Handle startup exceptions
Main.py
Code for ESP 2 (IR sensor -> ESP 1, Ultrasonic sensor <- ESP 1):
import time
from umqtt.simple import MQTTClient
import ubinascii
import machine
import micropython
import network
import esp
import gc
esp.osdebug(None)
gc.collect()
# Initialize variables
last_message = 0
message_interval = 5
counter = 0
# Main loop
try:
client = connect_and_subscribe()
while True:
try:
client.check_msg() # Check for incoming messages
except OSError as e:
restart_and_reconnect() # Handle connection errors
except Exception as e:
print('Exception occurred:', e)
restart_and_reconnect() # Handle startup exceptions
Sardar Patel Institute of Technology
Bhavan’s Campus, Munshi Nagar, Andheri (West), Mumbai-400058-India
(Autonomous Institute Affiliated to University of Mumbai)
Academic Year: 2024-2025
Result:
Figure 4ESP1
Figure 5ESP2
Sardar Patel Institute of Technology
Bhavan’s Campus, Munshi Nagar, Andheri (West), Mumbai-400058-India
(Autonomous Institute Affiliated to University of Mumbai)
Academic Year: 2024-2025
Conclusion: The experiment successfully demonstrated device-to-device communication using the Mosquitto MQTT
in an IoT setup. Two ESP devices were integrated with ultrasonic and IR sensors, respectively, and
utilized the MQTT publish/subscribe model to exchange real-time sensor data. The system efficiently
handled message transmission with robust error recovery mechanisms, ensuring reliable connectivity.
Overall, this experiment highlights the effective use of MQTT for low-latency, real-time communication
between IoT devices in constrained network environments, showcasing its applicability for various
sensor-based applications.