Skip to content

Releases: eriksl/esp8266-universal-io-bridge

Release 15

22 Dec 18:01
Compare
Choose a tag to compare

A whole lot changes, improvements and fixes.

Main difference is the support of udp sockets.

Release 14

04 Jun 07:36
Compare
Choose a tag to compare

Release 14.

Major changes: add access point mode.

Changelog:

  • Fix issue where esp wouldn't start with default-config.
    It appears some fields in the config struct aren't properly
    defaulted to 0.

  • Add recipes in Makefile to backup current config, wipe it or restore it:
    make backup-config
    make restore-config
    make wipe-config
    This needs a programmer, it's done using esptool.

  • Add gpio trigger for association
    This triggers and I/O whenever

    • client mode is connected and IP is obtained
    • access point mode is active and a client connects
      When the connection is dropped due to whatever reason,
      the trigger is reset.
  • Drop major/minor version scheme. It's obsolete with the new (boot)
    configuration using access point mode.

  • Add flexible end of line handling.
    Any combination of \n \r \r\n and \n\r are now accepted as
    end of line delimiter. A line without any of them is now also
    accepted, as long as the command is sent in exactly one tcp segment.

  • Add access point mode

    • use the wac (wlan-accesspoint-config) command to select ssid, passwd, channel
    • write the config using cw
    • then use the wm (wlan-mode) command to select "ap" mode.
    • login over the access point ssid and write the config (cw) to make
    • the config permanent or issue a reset/power-cycle to return to client mode
    • or use wm client to return to client mode
    • use wcc (wlan-client-config) to select ssid, passwd and then issue cw to write to flash.

    NOTE: for access point use a password longer than 7, it's required by the
    SDK.

  • New "scratch" configuration mode
    At startup the software will now try various schemes to obtain a
    connection so you can configure it.

    1. if the device is configured to start in client mode, try the
      ssid/passwd stored in flash.
      1a) if none is stored (flash is pristine/wiped or ssid/passwd
      invalid), use "esp" for ssid and "espespesp" for passwd.
      1b) if the device cannot connect to the configured/default ssid
      for more then 30 seconds, change to access point mode -> 2)
    2. if the device is configured to start in access point mode (or put in
      access point mode because of step 1b)), try the ssid/passwd stored
      in flash.
      2a) if none is stored (flash is pristine/wiped or ssid/passwd
      invalid), use "esp" for ssid and "espespesp" for passwd.

    That way you should always be able to connect to the esp.

Release 13

11 May 18:10
Compare
Choose a tag to compare

Release 13.

Major change: added support for Hitachi HD44780 type displays.

Changelog:

  • Add PCF8574A (note the "A") support at address 0x3a.
  • Introduce UART function for GPIO pins. They're activated by
    default (which reflects default operation). This makes is
    possible to enable/disable internal pull-ups.
  • Add support for hd44780-type of LCD displays.
  • RTC/NTP: work around bogus ntp subsystem in SDK. The ntp
    subsystem only syncs once, then relies on it's internal clock,
    which runs dramatically slow. Workaround it by stopping and
    starting the ntp subsystem every time a valid timestamp was
    obtained.
  • lcd: add experimental support for a few UTF-8 characters.
    The more or less common latin accented characters
    é è ê ë ü ç ñ ï are now programmed into CGRAM and translated
    from their corresponding UTF-8 codepoints. That's all there
    is room for, sadly.
  • OTA: more resilience. Retry a chunk if the ESP didn't get it.
    Most of the time this is caused by a long segment being split
    into smaller ones, which confuses the ESP. One retry is often
    enough for a failed chunk.
  • LCD: add mappings for some unicode characters that are in the
    character rom.
  • I2C: change the meaning of the "scl delay" parameter. It used
    to be a delay in microseconds, but that proved to be too coarse
    for obtaining higher speeds. The delay is now a simple busy loop.
    Expect values like 250 or higher to obtain a standard 100 kHz
    speed bus.
  • I2C: add timing information to the i2c-read command. So you
    can tweak and check the actual bus speed.
  • Improved background task scheduler so CPU is kept even shorter
    and background task can be finished quicker nonetheless.

Bug fixes:

Requested enhancements:

Release 12

13 Mar 12:02
Compare
Choose a tag to compare

Release 12.

About 3/4 of the code rewritten to make a more flexible framework that allows extension
in various directions. Much of the changes are under the hood, but there are many changes
in the user interface as well. As everything has become rather big, it's not anymore
doable to keep the documention as "mark down" document. The README.md file has been
emptied and only has a link to the, now, real documentation in PDF (recommended!) or
HTML format. Reading the complete PDF is very much recommend for everyone, even the
sections that may not look relevant at first sight. Some things have remained the same,
but many have changed more or less!

Summary of what has changed (mainly on user interface level):

  • fixes/workarounds for GPIO counter (which has a bit flakey implementation)
  • added additional layer of "io device" with sublayer "pin", so "io devices"
    can be added (like I2C I/O expanders)
  • added NTP support; set server and timezone using ntp-set and write config
  • gpio config is no longer immediately auto-saved, you should now use write config
    just like with any other command
  • move MUCH static content from DRAM to IROM (flash), save about 20 kilobytes on dram!
    this includes static text strings, that are normally copied to dram on startup; include
    code to handle this (data in flash must always be aligned on 4 bytes and can only be read
    4 bytes at a time)
  • add string pseudo-class (including length and size traits) to always make sure strings
    can't be overflowing buffer space
  • add feature to automatically display time on external display
  • add I2C address to I2C sensors traits, so the same sensor can be added multiple times,
    with different addresses
  • add configurable status I/O pin; you can make use this to make e.g. a led blink on command reception
    or counter trigger
  • change UART bridge default data port from 25 (SMTP, wrong) to 23 (telnet)
  • add command to select WLAN powersaving
  • add OTA (over-the-air) firmware flashing, uses part from RBOOT by Richard Burton
  • replicate/reimplement some libc functions ourselves, in IROM, saves some more IRAM space
  • add basic HTTP support (point your browser to port 24 and see)
  • add support for the ADC input
  • using make flash, also flash default.bin and blank.bin, even though we're not using it
  • remove wlan "bootstrap" mode, see documentation for how to set wlan/ssid instead
  • add MCP23017 16 pin I2C I/O expander as first "extra" I/O device
  • only counter downward edges using the counter, counters are mostly pulled up, this reduces
    the number of spurious counts.

Release 11: Uart bridge tcp port and access point scanning.

11 Sep 18:24
Compare
Choose a tag to compare

Changes:

- tcp port the uart bridge listens at is now configurable (see btp command)
- add wlan / access point scanning (see wlan-scan and wlan-list commands)
- optimisation (speed and memory usage, both ram and flash)
- some small bug fixes

Release 10: Add display framework, combine firmware files

10 Sep 16:49
Compare
Choose a tag to compare
Fixes and updates:

- add missing display.c and display.h files
- added display framework
- added support for i2c SAA1064 4x7 led segment driver
- move to a single firmware file with padding between the iram and the irom region, flash on 0x00000
- updated documentation

Release 9: Add sensor calibration, pwm modulation feature, fix some i2c sensors

24 Jul 08:53
Compare
Choose a tag to compare
  • add i2c sensor calibration, you can specify a correction offset and factor per sensor (isc command)
  • change irom_text offset from 0x40000 to 0x10000, this frees up about 200 kbyte of flash memory
  • add pwm modulation for all your "flashy" effects, see below for usage
  • fixes to the tsl2550, tsl2561, bh1750, digipicco and am2321 i2c sensors
  • add realtime clock (sort of)

PWM modulation:

This makes the duty go up and down automatically between configured boundaries, with a configured speed. Convenient for "slow" flashlights or "glowing" christmas lights.

For normal pwm use:

gm pwm
gs

For modulated pwm use:

gm pwm
gs

Speed is actually slowing down factor, 1 is fastest.

Release 8: Keep WLAN config when possible and add the last few GPIO's

19 Jul 16:44
Compare
Choose a tag to compare

Changelog (see also the commit logs):

  • i2c sensors: improve ds1621/ds1631/ds1731 vs lm75/tmp275 and tsl2550 vs. tsl2561
  • don't touch GPIO's AT ALL if we don't configure them
  • add GPIO16 (restricted to modes input/output/timer, due to hardware/sdk restrictions)
  • reduce stack and bss size
  • introduce major/minor versioning scheme, if only minor config change, keep most of the configuration
  • add option to disable the wlan bootstrap mode (thus making the tcp<->uart bridge completely transparent again
  • add GPIO14 and GPIO15, note that GPIO15 needs to be pulled to ground for programming but don't use a link, use a resistor (or a led plus a resistor, etc.)
  • change "bounce" mode name to "timer", which I feel is more appropriate
  • add GPIO1 and GPIO3 to the list of GPIO's, these are normally the UART TX and UART RX pins, so be careful; you can still use the UART for programming though.

Release 7: Add wlan bootstrap mode, add tsl2560, generic option support (set/unset), add gpio counter support

17 Jul 17:09
Compare
Choose a tag to compare

Changelog (also see the commit logs)

  • Add GPIO asynchronous counter support. Just like it says, it counts the input going low or high. Unfortunately we can't specify which edge to count, the SDK code doesn't allow us to. Add a debouncing time in milliseconds.
  • UART settings default to 115200N8, as the system also spits out messages at this setting.
  • Add WLAN SSID and password to our own config, for some reason we can no longer use the settings from the system.
  • Add WLAN bootstrap mode, after power-on you have 10 seconds to type (or even better: copy&paste) the SSID name, a space, the password and a linefeed (0x0a, ^J) to the UART and it will be used to connect WLAN.
  • Several i2c robustness improvements
  • Add TSL2550 sensor
  • Enhance sensor dump command:
    parameter = 0 or absent: short dump, only detected sensors
    parameter = 1: longer dump, show all known sensors
    parameter = 2: longer dump, show all known sensors with verbose error
  • Replace lineair (float) calculations for some i2c sensors by integer or simplified float code, saves on iram usage
  • Replace commands print-debug and strip-telnet by a generic "set" and "unset" option command interface, add tsl-high-sens option to make the tsl i2c sensors work in a higher sensibility mode (recommended unless in direct sunlight, where it will overflow).
  • Add some stuff to prevent the tsl2550 and tsl2561 to be confused (same i2c address), similarly the lm75/tmp versus ds1621/ds1631/ds1721 which on the same address but not alike.

Release 6: Add I2C

09 Jul 11:35
Compare
Choose a tag to compare

Add i2c, raw, and including support for some sensors.