Mesh networking is a great technology for the IoT for its low-power nature and built-in redundancies. Silicon Labs has been an industry leader in mesh networking using the ZigBee technology and a co-founder of the Thread group. We wanted to create a large mesh network of pumpkins to show how easy it is to build an IoT system.
First, we enlisted some volunteers who channeled their creative inner child to carve/decorate the pumpkins.
Then it was time to connect them into a Connected Pumpkin mesh network. That part is as easy as 1-2-3 using upcoming ZigBee Reference Designs
Now you’re ready to control the pumpkins on any device with internet connection.
• Select a mesh network technology (ZigBee, Thread)
• For ZigBee, acquire a gateway (Silicon Labs Reference Designs available soon)
• Select appropriate end devices (a Lighting Reference Design available soon)
• Foam pumpkins (Then you can re-use, and it works better with electronics...)
Micro Tracker based on EFM32G210 MCU with
General usage for wild animals tracking but possible use for child, bicycles and so on.
EFM32 MCU extra low consumption provide long time to standalone time.
Currently use microsoft azure to collect and visualize data
Source codes will be published on github.
As the current maintainer of an alternative open-source CP210x Programmer
I got a question last Friday about customizing the CP2105. The person wanted to read the current configuration from the chip, but it failed.
Over the weekend I tried it out with my CP2104 Evaluation Kit, kindly provided to me by Silicon Labs a while ago, and indeed, it did not work. After researching all available sources, I found out that:
cp210x-program -w --set-product-string='CP2104 EK for Peter'
However, these findings made me curious how the “dump EEPROM” feature works on a CP2102. The code in fact reads 1024 bytes from the Baud Rate Table. But the Baud Rate Table is only 320 bytes long! It turns out that the CP2102 firmware does not check transfer size for read (nor write) commands. Since the Baud Rate Table happens to be located at the very beginning of the 1024-byte EEPROM in the CP2102, the Baud Rate Config command (0x3709) becomes an EEPROM read/write command.
This stopped working on CP2104, because this model does not have a Baud Rate Table; the necessary divider calculations are done directly by the firmware, removing the need to customize anything on the device when using an unusual baud rate. Kudos to Silicon Labs. But as a corollary, this broke the (undocumented) dump EEPROM hack.
For the curious, there's nothing to regret. Unlike previous models, the CP2104 does not contain any EEPROM. Instead, there is a much more reliable One-time programmable ROM (PROM). It comes unprogrammed initially. For each customizable value, there is a flag indicating whether it has been programmed yet. If it is 0xff, a hard-wired default is used. After customization it becomes 0x00 and the value from the PROM is used. The customization process is physically irreversible; that's why you can safely X-Ray your PCB board with a CP2104 on it without fears that some of those zeros flip back to ones.
How did I find out the implementation details of CP2102? Well, it appears that boundary checks are not very popular with the folks at Silicon Labs, so you can read up to 3073 bytes with the Flush Buffer Config command (0x370D) on a CP2104, which includes the customizable part of the PROM (1024 bytes), the hard-wired default values (following 1024 bytes) and a routine (or main program?) in the following bytes.
By the way, the code appears to be valid 8051 machine code, with references to C8051F01x USB special function registers. This makes me wonder how hard it would be to turn a stock C8051F015 into a CP210x-compatible bridge. Not much, I guess, because good engineers prefer re-using proven designs over constantly re-inventing the wheel. ;-)
Just thought I'd share this with you, in case anyone wants to make something similar, an Expansion board for the BlueGiga modules that works with the EFM32 STKs. It's made for the BLE112/BLE113 modules, but it shouldn't be too hard to adapt it for the new Blue Gecko modules; BGM111.
Schematics and layout attached. It's a 5x5 cm, two-layer PCB, so they should be quite cheap to prototype.
Full disclaimer: Steven Cooreman actually did the work, I'm just the messenger.