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.
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.
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 module does not have the interal 1k series resistor between USB-UART Tx and AVR Rx. The manual correction is difficult because of the small parts.
I noticed that fake Arduino Nano with CH340 chip have often problems to receive data from the USB interface. You may work around this design error by removing the "Rx" LED.
The original Arduino Boards are always sold with a Bootloader. Also Crumb modules provide that as an optional feature.
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 each response. The following command sequence configures the WLAN connection of the ESP module: