electricity meter monitoring system (using STM32F103 micro-controller, PZEM-004T meter, SDM120 meter, DDM100TC meter, ESP8266 WiFi module)
Go to file
King Kévin d217a98413 move RE/DE pin to PB1 to fit better board layout 2017-01-21 18:54:05 +01:00
lib move RE/DE pin to PB1 to fit better board layout 2017-01-21 18:54:05 +01:00
libopencm3@ad5ec6af08 add libopencm3 and STM32duino-bootloader submodules dependencies 2016-01-15 15:36:00 +01:00
.gitignore ignore generated documentation 2016-08-14 19:26:46 +02:00
.gitmodules remove STM32duino-bootloader 2016-08-14 19:03:17 +02:00
Doxyfile update documentation 2016-09-11 22:44:27 +02:00
Makefile switch to blue pill development board 2017-01-19 13:30:03 +01:00
README.md document activity LEDs 2017-01-20 10:22:23 +01:00
global.c remove memmem 2016-10-04 11:16:13 +02:00
global.h add timer channel macros 2017-01-19 23:31:58 +01:00
main.c fix how received PZEM messages are handled 2017-01-20 17:07:34 +01:00

README.md

This is the firmware for the spark abacus.

project

summary

The spark abacus is a system to monitor electricity consumption. A micro-controller collects data from various electricity meters placed at the entry of the 3-phase 4-wire mains electricity distribution installation, and sends it over a local network to a computer storing the values in a database. The measurements can then be visualized. More information is available on the wiki.

board

The development board used for this project is a blue pill. This offers a STM32F103C8T6 micro-controller.

peripherals

LED

4 LEDs have been added to show the current activity:

  • power (red): shows if the board is power (the voltage regulator works).
  • heart beat (green): shows if the firmware is running correctly. It starts when all the setup of all peripherals is complete (including connecting to the WiFi network) and toggles every second.
  • query (yellow): goes on when starting to query the measurement values from all electricity meters, and goes off when it received all values.
  • submit (blue): goes on when it start submitting the values to the database (using an HTTP POST on influxDB), and goes off when the submission succeeded.

Note: don't use the onboard LED on PC13 on the blue pill as switching it heavily influences the RTC.

Connections LED (cathode) <-> board (all LED anodes are connected to the +3.3V rail):

  • power; GND
  • heart beat; PA5
  • query; PA6
  • submit; PA7

ESP8266

The ESP-01 WiFi module (based on the ESP8266 chip) is used to join the local network, connect to an influxDB database using HTTP, and store the measurement values gathered from the electricity meters.

AT firmware v0.51 from the espressif NONOS SDK 1.5.0 has been used for this project. Be sure to have configured the module to connect to the right access point beforehand using the following AT commands:

  • set station mode: AT+CWMODE_DEF=1
  • enable DHCP: AT+CWDHCP_DEF=1,1
  • set access point to connect to: AT+CWJAP_DEF="essid","password"

When booting the micro-controller will reset the device and wait until the module connects to the access point and gets an IP.

Connections ESP-01 <-> board:

  • GND, pin 1; ground
  • TX, pin 2; PA10, USART1_RX
  • GPIO2, pin 3; not connected
  • CH_PD, pin 4; pull-up resistor
  • GPIO0, pin 5; not connected
  • RST, pin 6; pull-up resistor
  • RX, pin 7; PA9, USART1_TX
  • VCC, pin 8; +3.3V (add a large capacitor to cope with power spikes)

code

dependencies

The source code uses the libopencm3 library. libopencm3 is already a git submodules. To initialize and update it you just need to run once: git submodule init and git submodule update.

firmware

To compile the firmware run make.

documentation

To generate doxygen documentation run make doc.

flash

The firmware will be flashed using SWD (Serial Wire Debug). For that you need an SWD adapter. The Makefile uses a ST-Link V2 along OpenOCD software (per default), or a Black Magic Probe. To flash using SWD run make flash.

debug

SWD also allows to debug the code running on the micro-controller using GDB. To start the debugging session run make debug.

USB

The firmware offers serial communication over USB (using the CDC ACM device class). This is mainly used to show the activity and help debugging to code. Type help to get a list of additional available actions.

You can also reset the board by setting the serial width to 5 bits over USB. To reset the board run make reset. This only works if USB CDC ACM is running correctly and the micro-controller isn't stuck.