Add a watchdog which resets the WLAN module when it hangs.
Add system clock initialization code for Xmega controllers.
Improved timing and source code structure.
The correct line-feed format for the WLAN module is now auto-detected. Debugging via SERIAL_ECHO option is now disabled by default.
Reduced RAM usage a lot and improved stability.
Add hardware layouts for Arduino Uno, Crumb328, Crumb644, Crumb128 and Crumb2561.
AT and I/O commands can now be executed on both WLAN and USB.
My firmware controls all free analog and digital I/O pins of the AVR microcontroller, that are 16 to 82 controllable Pins depending on the microcontroller type. And you can have even more with the help of some cheap shift registers.
Simple text commands provide access to the I/O ports, so you don't need any special driver or library. It works out of the box with almost any programming language and any operating system, for example PC, Samrtphones, Tablets, Raspberry Pi, and so on.
The C Compiler for the microcontroller is free availabe for Windows (e.g. GNU Toolchain), Linux (avr-gcc) and Mac OS. The example app "ioModule" for PC and smartphones can be compiled with Qt Creator.
Remarks: I was asked why I use a second microcontroller besides the ESP Module:
For example, the following command sets the pin PC3 to high level:
And this command queries port D in hexadecimal format:
You will find the whole command set below. You can execute about 4 commands per second.
*= The Crumb644 must be made compatible by interrupting a line next to the USB-UART chip and insert an 1k Ohm resistor. This soldering should be done by an experienced technician because the parts are very small. The AVR boards above are all available with pre-installed bootloader, so you don't need an extra programming adapter.
These commands can be used on a single I/O line (PB7), a port (PB) or all ports together by a single command:
PB7 and PB are examples, all ports are accessible in the same way. When accessing all ports together, the size of the hexadecimal number depends on the size of the AVR, referring to the ports: DDCCBBAA or HHGGFFEEDDCCBBAA.
The commands for single pins support characters as an alternative to 0 and 1:
The commands d, p and o respond always with "Ok". The i command responds this way:
The available references depend on the capabilities of the Mikrocontroller:
Example for the r command:
The a command expects the channel number of the analog input, for example:
The length of the hexadecimal number depends on the size of the shift register (8-32 bits).
Again, the length of the hexadecimal number depends on the size of the shift register (8-32 bits). The current status of port Y can be read out by the command i.
The Commands d and p are not available on the port extensions!
In addition, you may execute any AT command that the WLAN module understands (except AT+CIPSEND). However, you can only receive the first line of response.