MATLAB Examples

Automatic Meter Reading

This example shows you how to use Simulink® and Communications System Toolbox™ to read utility meters by processing Standard Consumption Message (SCM) or Interval Data Message (IDM) signals emitted by the meters. You can either use captured signals, or receive signals in real time using the Communication Systems Toolbox Support Package for RTL-SDR Radio.


Required Hardware and Software

To run this example using recorded data from a file , you need the following software:

To receive signals in real time, you also need the following hardware:

  • RTL-SDR radio

and the following software

For a full list of Communications System Toolbox supported SDR platforms, refer to Supported Hardware section of Software Defined Radio (SDR) discovery page.


For an introduction to the SCM/IDM signaling scheme and AMR technology for reading utility meters, refer to the Automatic Meter Reading Using MATLAB example.

Receiver Model Structure

The following block diagram summarizes the receiver structure. The processing has four main parts: Signal Source, Physical Layer, Message Parser, and Data Viewer.

Signal Source

This example can use two signal sources:

  1. ''File'': Over-the-air signals written to a file and read using a Baseband File Reader block at 1.0 Msps
  2. ''RTL-SDR Radio'': RTL-SDR radio at a sample rate of 1.0 Msps

If you choose ''RTL-SDR Radio'' as the signal source, this application will search your computer for RTL-SDR radios and ask you to choose one of them as the signal source.

Physical Layer

The baseband samples received from the signal source are processed by the physical layer (PHY) to produce packets that contain the SCM or IDM information. The following diagram shows the physical layer receive processing.

Message parser

For a valid message, the bits are then parsed into the specific fields of either the IDM or SCM format. This example can parse both the SCM format and the IDM format.

Data Viewer

The data viewer shows the decoded SCM or IDM messages on a graphical user interface (GUI). For each successfully decoded SCM/IDM, the commodity type, meter ID, consumption information and the capture time is shown. As data is captured and decoded, the application lists the information decoded from these messages in a tabular form. The table lists only the unique meter IDs with their latest consumption information.

You can also change the meter ID and start text file logging using the GUI.

  • Meter ID - Change the meter ID from 0, which is the default value and is reserved for diplaying all detected meters, to a specific meter ID which you like to be displayed.
  • Log data to file - Save the decoded messages in a TXT file. You can use the saved data for post processing.

The following figures illustrate how the GUI displays the meter readings.

Further Exploration

The data file accompanying the example has only one meter reading and has been captured at center frequency of 915 MHz. Using RTL-SDR radio, the example will display readings from multiple meters when it is run for a longer period in a residential neighborhood.

You can further explore AMR signals using the AMRSimulinkExampleApp user interface. This app allows you to select the signal source and change the center frequency of the RTL-SDR radio. To launch the app, type AMRSimulinkExampleApp in the MATLAB Command Window or click the link. This user interface is shown in the following figure.

Selected Bibliography