Embedded Webserver CrumbX1-NET from Chip45 with Bluetooth Module HC-06
This firmware runs very stable and has all features that I planned to implement. Therefore you should not expect new features in near future.
Fix timer sporadically not working properly (atomic access to timer counter).
Add support for ATmega128.
Improved compiler error message in case of unsupported ATmega type.
Applied a patch to protothreads to get rid of the "unused PT_YIELD_FLAG" warnings.
Removed gcc command line option that is not supported by WinAVR.
Fixed compilation error when the AUTH module is disabled.
Removed wrong and useless pull-up settings for serial ports.
Fix for wrong output on Port Y after oPY command with bit number 15-31. The problem did not occur on all gcc versions.
Fixed compiler warnings that have been introduced by new avr-gcc version.
Reduced size of hex file.
Added support for more serial ports.
Serial echo is now disabled by default (in serialconsole.h).
Made serial port much more stable on Xmega devices with R/C oscillator.
Fixed buffer overflow when receiving an oversized packet.
Fixed a missing byte in DHCP discover request.
Added DHCP status info to the "ip" command.
Add support for SD/MMC card slot
Add support for CrumbX1-NET module and other Xmega devices.
Add support for more I/O pins using shift registers
Added support for configurable hardware layout.
Added display of stored settings in config.shtml.
Added support for AVR with more than 20Mhz.
Added support for port E, F, G, H, J, K and L
Added authentication to httpd and socketd.
Added smtp client.
Added port D monitor with eMail notification.
Added serial port (USB) daemon
Added compatibility to Crumb-NET v2.0 and v2.1
Added telnet server for faster i/o commands.
Added the same commands as my USB firmware supports, through the URL http://address/io?command, see io_help.shtml for the list of commands.
Added status display for port B and D.
Added display for the analog inputs.
Added DHCP client
Added configuration page for IP-Address and DHCP
Added function to display the own MAC address
Added UDP protocol and statistics
Major parts of the code has been rewritten to fix bugs, improve performance and add new features.
Add missing documentation.
Last version of Stefan Perzborn / Chip45.
My release 2.0.0 is based on release 1.3 with friendly permission of the author.
The informations on this website let you build an I/O interface module which connects to the host computer via USB or Bluetooth. That makes 19 to 71 controllable Pins, depending on the microcontroller type. And you can have even more with the help of some cheap shift registers.
Access to the I/O ports is provided via simple text commands, eliminating the need of special drivers and libraries. It works with almost any programming language and any operating system, like PC, smartphones, tablets, Raspberry Pi, ...
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:
To query the port D in hexadecimal format:
In case of HTTP, the commands are appended to the URL:
The whole command set is described at the page bottom. You can execute more than 100 commands per second.
You can connect the ethernet controller to any pins of the microcontroller because the pin assignment is configurable.
You can order the ready-to-use CrumbX1-Net module with pre-installed firmware from Chip45, as well as an ethernet interface without microcontroller. Or you can build the hardware yourself using the schematics of the download package.
To upload the firmware into the microcontroller, you need a programming tool (ISP for ATmega, PDI for Xmega).
The chinese Bluetooth modules HC-05 and HC-06 fit perfectly onto the CrumbX1-NET module. I can also recommend the BTM-222, which supports longer distances with an external antenna.
The number of I/O ports can be enhanced using shift registers of type 74HC165 and 74HC595. This way you get lots of additional inputs and outputs. There is also support for a serial 12bit ADC of type MCP3204 or MCP3208.
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.
Die Commands d and p are not available on the port extensions!