How to Monitor Raspberry Pi Pico W Internal Temperature via Mosquitto MQTT Broker over LAN

In today's interconnected world, the ability to monitor devices remotely has become indispensable. With the Raspberry Pi Pico W and Mosquitto MQTT broker, you can effortlessly monitor the internal temperature of your Pico W from anywhere within your local area network (LAN). In this comprehensive guide, we'll walk through the seamless process of setting up your Raspberry Pi Pico W to transmit its internal temperature data to a Mosquitto MQTT broker, enabling remote monitoring through an MQTT client.

 


Prerequisites

  • Raspberry Pi Pico W
    raspberry_pi_pico_w
  • Access to a Local Wi-Fi Network
  • Laptop or Computer to Run the Mosquitto MQTT Broke
    Untitled
  • MQTT Client Software (e.g., MQTT Explorer, MQTT.fx)

Setting up the Raspberry Pi Pico W

  1. Connectivity: Ensure your Raspberry Pi Pico W is connected to your system for programming.
  1. Library Installation: Install the necessary libraries for reading the internal temperature sensor on the Pico W.
Untitled%201

Installing and Configuring Mosquitto MQTT Broker

  1. Installation: Install the Mosquitto MQTT broker on your laptop or computer. [Watch Video Tutorial]
  1. Configuration: Configure Mosquitto to run on your local network. Ensure accessibility from external networks by configuring port forwarding on your router. [Watch Video Tutorial]

Writing the Code

# Import necessary libraries
import time
from machine import ADC
from umqtt.simple import MQTTClient

# WiFi and MQTT Broker Configuration
WIFI_SSID = ""               # Insert your WiFi SSID
WIFI_PASSWORD = ""           # Insert your WiFi password
MQTT_BROKER = ""             # Insert your MQTT broker IP address or domain
MQTT_PORT = 1883             # Default MQTT port
MQTT_TOPIC = "Internal Pico-W Temp"  # MQTT topic to publish temperature data

# ADC Configuration
ADCPIN = 4                   # ADC pin for reading temperature
adc = ADC(ADCPIN)

# MQTT Client Configuration
client = MQTTClient("pico_client", MQTT_BROKER, MQTT_PORT)

# Function to read temperature from internal sensor
def read_temperature():
    adc_value = adc.read_u16()          # Read ADC value
    volt = (3.3 / 65535) * adc_value   # Convert ADC value to voltage
    temperature = 27 - (volt - 0.706) / 0.001721  # Convert voltage to temperature
    return round(temperature, 1)        # Round temperature to one decimal place

# Function to connect to WiFi network
def connect_to_wifi():
    import network
    station = network.WLAN(network.STA_IF)    # Create WiFi station interface
    station.active(True)                      # Activate WiFi station
    station.connect(WIFI_SSID, WIFI_PASSWORD) # Connect to WiFi
    while not station.isconnected():          # Wait until connected
        pass
    print("Connected to WiFi")

# Function to connect to MQTT broker
def connect_to_mqtt():
    client.connect()                          # Connect MQTT client to broker
    print("Connected to MQTT Broker")

# Function to publish temperature to MQTT broker
def publish_temperature():
    temperature = read_temperature()          # Read temperature
    client.publish(MQTT_TOPIC, str(temperature))  # Publish temperature to MQTT topic
    #print("Published temperature:", temperature)  # Uncomment for debug

# Main function
def main():
    connect_to_wifi()                         # Connect to WiFi network
    connect_to_mqtt()                         # Connect to MQTT broker
    while True:
        publish_temperature()                 # Publish temperature data
        time.sleep(5)                         # Wait 5 seconds before next reading

if __name__ == "__main__":
    main()  # Run main function when script is executed

Testing:

  • Ensure your Raspberry Pi Pico W is powered on and connected to the same network as your MQTT broker.
  • Run the provided Python script on your Raspberry Pi Pico W to start publishing temperature data.
Untitled%202

Conclusion:

With the completion of these steps, you've successfully established a system to monitor the internal temperature of your Raspberry Pi Pico W remotely using a Mosquitto MQTT broker. Regardless of your location within your LAN, you now have real-time access to temperature data, facilitating proactive monitoring and maintenance of your Pico W device.

For further assistance and detailed code explanations, refer to the accompanying YouTube video tutorial. Happy monitoring!

Comments