All Projects → kanflo → Opendps

kanflo / Opendps

Licence: mit
Give your DPS5005 the upgrade it deserves

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Opendps

esp8266-wifi-cmsis-dap
WIRELESS CMSIS-DAP USB/IP-SWD/JTAG HID adapter firmware for ESP8266 boards
Stars: ✭ 69 (-89.47%)
Mutual labels:  esp8266, stm32, wifi
Mqtt via esp01
TCP/UDP Applicaton for UNO/MEGA/STM32 using ESP8266's AT firmware.
Stars: ✭ 23 (-96.49%)
Mutual labels:  stm32, esp8266, wifi
Atc
STM32 LL AT-Command parser
Stars: ✭ 53 (-91.91%)
Mutual labels:  stm32, esp8266, wifi
swifitch-software
Software for SWIFITCH HW
Stars: ✭ 12 (-98.17%)
Mutual labels:  esp8266, wifi
LibTeleinfo
Librairie Universelle Teleinformation (TIC)
Stars: ✭ 77 (-88.24%)
Mutual labels:  esp8266, wifi
firmware
设备固件库,适用于IntoRobot系列产品
Stars: ✭ 19 (-97.1%)
Mutual labels:  esp8266, stm32
wireless-esp8266-dap
ESP8266 Wireless Debugger. Based on CMSIS-DAP v2.0.0. Optional 40MHz SPI acceleration, etc. ESP8266 无线调试器
Stars: ✭ 154 (-76.49%)
Mutual labels:  esp8266, wifi
Cicada-FW
IoT Communications Module for Energy Access. An easy way to get production ready, bi-directional communications for your IoT embedded device. Proiect supported by the EnAccess Foundation - https://enaccess.org
Stars: ✭ 12 (-98.17%)
Mutual labels:  esp8266, wifi
Spore
Spore WiFi LED module. Firmware and Hardware.
Stars: ✭ 19 (-97.1%)
Mutual labels:  esp8266, wifi
Esp8266 beaconspam
Creates up to a thousand WiFi access points with custom SSIDs.
Stars: ✭ 575 (-12.21%)
Mutual labels:  esp8266, wifi
Esphelper
A library to make using WiFi & MQTT on the ESP8266 easy.
Stars: ✭ 310 (-52.67%)
Mutual labels:  esp8266, wifi
RetroWiFiModem
An ESP8266 based RS232 <-> WiFi modem with Hayes AT style commands and LED indicators
Stars: ✭ 65 (-90.08%)
Mutual labels:  esp8266, wifi
low-power-wifi
Experiments in low-power-wifi on esp8266, esp32, and ...
Stars: ✭ 35 (-94.66%)
Mutual labels:  esp8266, wifi
issues
Issue Tracker for ESPHome
Stars: ✭ 182 (-72.21%)
Mutual labels:  esp8266, wifi
MySQL MariaDB Generic
This MySQL_MariaDB_Generic library helps you connect your boards directly to a MySQL / MariaDB server, either local or cloud-based, so that you can store / retrieve data to / from the server. Supported boards are ESP8266/ESP32, WT32_ETH01 (ESP32 + LAN8720A), nRF52, SAMD21/SAMD51, STM32F/L/H/G/WB/MP1, Teensy, SAM DUE, Mega, RP2040-based boards, P…
Stars: ✭ 35 (-94.66%)
Mutual labels:  esp8266, stm32
Blynk Library
Blynk library for embedded hardware. Works with Arduino, ESP8266, Raspberry Pi, Intel Edison/Galileo, LinkIt ONE, Particle Core/Photon, Energia, ARM mbed, etc.
Stars: ✭ 3,305 (+404.58%)
Mutual labels:  esp8266, wifi
Esp At
AT application for ESP32 ESP-IDF & ESP32S2 ESP-IDF & ESP8266 ESP8266_RTOS_SDK
Stars: ✭ 319 (-51.3%)
Mutual labels:  esp8266, wifi
Heatpump
Arduino library to control Mitsubishi Heat Pumps via connector cn105
Stars: ✭ 327 (-50.08%)
Mutual labels:  esp8266, wifi
Logic Analyzer
Logic Analyzer, for Arduino, AVR, ESP8266 and STM32 with a very nice working processing interface, you could run it also on any Android device.
Stars: ✭ 203 (-69.01%)
Mutual labels:  stm32, esp8266
UPnP Generic
A simple library that implements port mappings to router using UPnP SSDP for Arduino boards, running on nRF52, SAMD21/SAMD51, STM32F/L/H/G/WB/MP1, Teensy, RP2040-based boards, WT32_ETH01, Portenta_H7, etc. besides ESP8266/ESP32, using ESP WiFi, WiFiNINA, Ethernet W5x00, ESP8266/ESP32 AT-command WiFi, Portenta_H7 Murata WiFi or Vision-shield Ethe…
Stars: ✭ 14 (-97.86%)
Mutual labels:  stm32, wifi

OpenDPS

Give your DPS5005 the upgrade it deserves

OpenDPS is a FOSS firmware replacement for the DPS5005 (and DPS3003, DPS3005, DPS5015, DP50V5A, DPS5020 and possibly others) that has the same functionality, has a less cluttered user interface and is remote controllable via wifi (ESP8266) or via a serial port.

A DPS5005 with wifi

There are three accompanying blog posts you might find of interest:

  • Part one covers the reverse engineering of the DPS5005.
  • Part two describes the design of OpenDPS.
  • Part three covers the process of upgrading stock DPS5005:s to OpenDPS.

Upgrading your DPS5005

If you are eager to upgrade your DPS5005, you may skip directly to part three. Oh, and of course you can use OpenDPS for more than a programmable power supply. Why not use it as an interface for your DIY sous vide cooker :D

Cloning & building

First build the OpenDPS firmware:

git clone --recursive https://github.com/kanflo/opendps.git
cd opendps
make -C libopencm3
make -C opendps flash
make -C dpsboot flash

Check the blog for instructions on how to unlock and flash your DPS5005.

Second, build and flash the ESP8266 firmware. First you need to create the file esp8266-proxy/esp-open-rtos/include/private_ssid_config.h with the following content:

#define WIFI_SSID "My SSID"
#define WIFI_PASS "Secret password"

Next:

make -C esp8266-proxy flash

Setup dpsctl.py

The script runs with python2 and python3. The libraries pycrc and pyserial are required:

pip install -r requirements.txt

Usage

A vanilla OpenDPS device will support two functions, constant voltage (cv) and constant current (cc). A tool called dpsctl.py can be used to talk to an OpenDPS device to query functionality and supported parameters for each function.

Once upgraded and connected to an ESP8266, type the following at the terminal to find its IP address:

% dpsctl.py --scan
172.16.3.203
1 OpenDPS device found

Enable constant voltage (cv) at 3.3V limited to 500mA:

% dpsctl.py -d 172.16.3.203 -f cv
Changed function.

% dpsctl.py -d 172.16.3.203 -p voltage=3300 current=500
voltage: ok
current: ok

% dpsctl.py -d 172.16.3.203 -o on

Query the status of the device:

% dpsctl.py -d 172.16.3.203 -q
Func       : cv (on)
  current  : 500
  voltage  : 3300
V_in       : 12.35 V
V_out      : 3.33 V
I_out      : 0.152 A

List supported functions of the device:

% dpsctl.py -d 172.16.3.203 -F
Selected OpenDPS supports the cv and cc functions.

List supported functions parameters of current function:

% dpsctl.py -d 172.16.3.203 -P
Selected OpenDPS supports the voltage (mV) current (mA) parameters for the cv function.

Additionally, dpsctl.py can return JSON, eg.:

% dpsctl.py -d 172.16.3.203 -q -j
{
    "command": 132,
    "cur_func": "cv",
    "i_out": 151,
    "output_enabled": 1,
    "params": {
        "current": "500",
        "voltage": "3300"
    },
    "status": 1,
    "v_in": 12355,
    "v_out": 3321
}

Upgrading

As newer DPS:es have 1.25mm spaced JTAG pins (JST-GH) and limited space for running the JTAG signals towards the back of the device, a permanent soldered JTAG is somewhat cumbersome. People not activly developing OpenDPS will not need JTAG anyway. To facilitate upgrade, OpenDPS comes with a bootloader enabling upgrade over UART:

% make -C opendps bin
% dpsctl.py -d /dev/ttyUSB0 -U opendps/opendps.bin

If you accidentally upgrade to a really b0rken version, the bootloader can be forced to enter upgrade mode if you keep the SEL button pressed while enabling power.

The display will be black during the entire upgrade operation. If it stays black, the bootloader might refuse or fail to start the OpenDPS application, or the application crashed. If you attempt the upgrade operation again, and upgrading begins, the bootloader is running but is refusing to boot your firmware. But why? Well, let's find out. If you append the -v option to dpsctl.py you will get a dump of the UART traffic.

Communicating with /dev/ttyUSB0
TX  9 bytes 7e 09 04 00 27 86 0c b2 7f
RX 9 bytes 7e 89 00 04 00 03 66 0f 7f

The fourth byte from the end in the received data (0x03 in this example) will tell us why the bootloader refused to boot the firmware. See protocol.h for the different reasons.

Custom Fonts

If you would like to use a your own font for OpenDPS you may do so by doing the following:

% make -C opendps fonts \
    METER_FONT_FILE=<path_to_font> \
    METER_FONT_SMALL_SIZE=18 \
    METER_FONT_MEDIUM_SIZE=24 \
    METER_FONT_LARGE_SIZE=48 \
    FULL_FONT_FILE=<path_to_font> \
    FULL_FONT_SMALL_SIZE=15

Supported fonts are .ttf or .otf

Source code organisation

The project consists of four parts:

  • dpsboot/ The OpenDPS bootloader.
  • opendps/ The OpenDPS firmware.
  • esp8266-proxy/ The ESP8266 firmware for wifi connected OpenDPS:es.
  • dpsctl/ A Python script for controlling your OpenDPS via wifi or a serial port.
  • emu/ Xcode project and GNU makefile for running an emulated OpenDPS.

What about other DPS:es?

OpenDPS has been verified to work with other models in the DPSx0xx series, such as the DPS3003, DPS3005, DPS5015 and DPS5020. The maxium settable output current can be defined when building opendps, see the makefile. Plese note that the hardware design might change at any time without any notice (I am not affiliated with its designer). This will render OpenDPS unusable until fixed.


Licensed under the MIT license. Have fun!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].