spark_abacus/README.md

2.9 KiB

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

ESP8266

The ESP-01 WiFi module (based on the ESP8266 chip) is used to join the local network, connect to the influxDB database on the SBC, 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.