Releases: eriksl/esp8266-universal-io-bridge
Release 15
A whole lot changes, improvements and fixes.
Main difference is the support of udp sockets.
Release 14
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.- 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) - 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.
- if the device is configured to start in client mode, try the
Release 13
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:
- UART: fix data entered being sent over and over again, as reported
by luca.gamma in http://www.esp8266.com/viewtopic.php?p=46866#p46866
Requested enhancements:
- add config options for timeout for bridge and command channels. As
requested by luca.gamma in http://www.esp8266.com/viewtopic.php?p=46866#p46866
Release 12
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.
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
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
- 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
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
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
Add i2c, raw, and including support for some sensors.