Introduction
This project details an example implementation of a Zigbee radio based remote pressure, temperature and humidity outdoor sensor. The sensor is set up as a router in a Zigbee network, takes regular pressure, humidity, temperature readings and sends to the Zigbee coordinator. As part of the project a general purpose outdoor capable Zigbee radio platform was developed to interface with the sensor. For the working example, Digi’s Xbee3 Zigbee module runs a MicroPython script to communicate with a TE MS8607 sensor to perform the PTH measurements and send over the wireless Zigbee network.
Hardware Requirements
Zigbee Radio Platform
-
Digi XB3-24Z8US-J Digi XBee3 RF Module at Digi-Key
-
Digi XBee SMT Grove Development Board at Digi-Key
-
Bud PN-1323-CMB Enclosure at Digi-Key
-
TE M8 Male 4 Position Panel Mount Connector to Wire Leads at Digi-Key
-
TE M8 Male 3 Position Panel Mount Connector to Wire Leads at Digi-Key
-
TE M8 Female 3 Position Connector Cable Assembly at Digi-Key
-
Adafruit JST 2 Pin Connector Cables at Digi-Key
-
Amphenol 336320-12-0250 u.FL to RP-SMA adapter at Digi-Key
-
Digi A24-HASM-450 antenna at Digi-Key
PTH Sensor
-
TE Grove MS8607 Evaluation Board at Digi-Key
-
Hammond 1591XXMFLGY Enclosure at Digi-Key
-
TE M8 Female 4 Position Connector Cable Assembly at Digi-Key
Common Hardware
- Grove 4 Pin Connector Cables at Digi-Key
Supplier Documentation
- Digi XBee3 Zigbee 3.0 Module User Guide
- Digi Digi MicroPython Programming Guide
- Digi Xbee Grove Development Board User Guide
- TE Connectivity MS8607 PHT Combination Sensor Data Sheet
Hardware Setup
Zigbee Outdoor Radio Platform
The Zigbee radio platform uses a Digi Xbee3 wireless module (inserted in a Xbee Grove board) mounted in a Bud IP65 rated enclosure so it can be placed outdoors. The enclosure was modified to accommodate two TE Connectivity M8 panel mount connectors and an Amphenol external antenna adapter. One M8 interfaces to 5V power and the other M8 interfaces to the I2C external sensor interface. Grove and JST to M8 connector cable assemblies were built to provide the interface between the Xbee Grove board and external power and I2C bus.
Outdoor PTH Sensor
The PTH sensor is made up of an MS8607 Grove evaluation board inside a Hammond enclosure with an integrated M8 4 pin connector cable assembly. The M8 cable provides power, ground and I2C interface to the MS8607. The M8 connector side of the PHT sensor cable connects to the M8 I2C connector on the Zigbee Radio Platform. The Hammond enclosure was modified to accommodate the M8 cable assembly and holes were drilled in the cover to allow ambient air to circulate around the sensor.
Electrical Connections and Wiring Diagram
Full scheme-it project including BOM is at link https://www.digikey.com/schemeit/project/xbee3-pth-sensor-LFT3E4O500Q0
Example Code
The Xbee 3 wireless module runs a MicroPython script that communicates with the MS8607 sensor over I2C and sends data over the Zigbee wireless network. The example code scans the I2C bus and prints active addresses, resets the sensor, reads calibration data stored in onboard PROM and reads/converts barometric pressure, temperature and humidity in a continuous loop. The script also checks the Zigbee network connection and sends the sensor data over the Zigbee network to the pre-configured Zigbee coordinator. Latest version example code is on Xbee3-MicroPython/Zigbee_MS8607_i2c_rev1.py at master · eewiki/Xbee3-MicroPython · GitHub .
FOTA (Firmware Over The Air) Update
Digi Zigbee Xbee3 modules support firmware and application file system FOTA. FOTA allows a user to remotely update both the radio firmware and Micropython application from another Zigbee node in the same network. This is a very useful capability. Information on implementing FOTA and a working example is found in the eeWiki project Xbee3 Firmware Over The Air (FOTA) update using XCTU .
TE Connectivity MS8607 Sensor Calculation Background
Configuration settings and calculations used are based on MS8607-02BA01 datasheet per below:
Pressure and Temperature Calculation
Second Order Compensation Over Temperature