Welcome to the uracoli Blog

µracoli stands for microcontroller radio communications library and is intended to be a package that demonstrates capabilities and usage of Atmel's IEEE-802.15.4 radio transceivers AT86RF{230,231,212} in combination with AVR 8 bit microcontrollers (e.g. ATmega16, ATmega1281, ATmega128RFA1, ...).

Donnerstag, 23. Mai 2013

Dogorians wireless light fixtures run uracoli

The show Dogorians (http://www.dogora.com), a musical now (May 2013) playing at the Theatre du Soleil in France, needed some compact remote wireless light fixtures.

So, in conjunction with Daniel and Axel, we created some DMX driven remote nodes. This has been made in no time: 3 weeks from first draft to product delivery. We both created the software and hardware, for both the remote nodes and the gateway.

The on-field setup was easy: set the dip switch addresses, hook the gateway on the DMX light board, over !

DMX having a rather high transfer rate (250kbps), we had to use some low-level tricks such has writing straight from UART to TRX buffer (call it poor man's DMA :)).

We have future projects to make a full commercial product out of this first version.

At the moment, the code is not opened but feel free to ask for advice/snippets !



The boards ready to ship !


 The DMX to wireless gateway:



 Enclosures for the lights:

Close-up of a board:

Close-up of a boards, with JTAG programming wires:

Donnerstag, 4. April 2013

STK500 + Mega16L + RZ600 Radio Board = Sniffer

Recently on AVR-Freaks there was a discussion how to sniff frames with a RZ600 radio board, that is eventually available. After a look in the data sheets, I figured out that the stone old µracoli-target stkm16 can be easily modified to do this job.

STK500 with RZ600 Radio Board - the JTAG-ICE in the background was used for debugging and is normally not needed, a simple 6pin ISP cable would be sufficient to flash the ATmega16L

Here is the recipe:
  • take a STK500 
  • an ATmega16L (because of 3.3V) in DIP (or better a Mega64)
  • 3 x double wires
  • a RZ600 board (I used the one with AT86RF230)
  • a power supply
  • a RS232 cable
Assemble the above components:
  • double check if only the mega16L plugs in the STK500
  • wire PD0/1 to RXD/TXD of RS232 spare
  • wire PA4 ... PA7 with LED0...3 (if you like blinking LEDs)
  • plug RZ600 on PORTB
  • set he STK500 jumpers :  
    • VTARGET, AREF, RESET, XTAL1, BSEL2 connected,
    • OSCSEL connected 1-2 (SW clock from STK500)
Next compile the target stkm16 (will come with version 0.4.0 soon, meanwhile
pull the repository and use rel_0.4.0 branch)  and configure the STK500.
  • connect the serial interface to RS232-CTRL
  • avrdude -P /dev/ttyS0 -p m16 -c stk500v2 -tF
  • type  fosc 3.6864
  • type  vtarg 3.4
This ensures that RZ600 radio board operates at a valid voltage level
and the SW clock with a baudrate friendly frequency is used

Now flash the firmware sniffer_stkm16.hex and set the fuses to lf = 0xfe, hf = 0x91.

Next run the script sniffer.py from uracoli-sniffer-.zip
 python sniffer.py -p /dev/ttyS0:115200 -c 17 | wireshark -ki -
and voila - we can sniff.

Wireshark and Sniffer Frontend - for those who look at details they will see it is an older screenshot :-)


However there are some limitations. Because there is just 1K of RAM in the Mega16, you can't  buffer much data and so you will loose some frames if a large traffic peak occurs in your network.

Sonntag, 17. März 2013

Chemnitzer Linuxtage 2013


As a good tradition, the Chemnitz Linux Days take place on a sunny march weekend.

Amazingly there is more embedded stuff from year to year. In 2013 the Raspberry-Pi is the gadget of the year. As a surprise there was Contiki/6LowPan project by the Open Source Domotics Group from Vienna/Austria. At the booth they did show the available hardware, e.g. 220V light switches, power outlets with power metering capabilities included and other gadgets around home automation.

On the saturday in the evening there is the get-together party of all contributors of the Chemnitz Linux Days, a good place to talk with the "makers" of this event.
This years cultural act was the percussion group Drummed Boxes from Chemnitz.
Our presentation about how to integrate sensor data via SNMP into large scale IT monitoring systems like Icinga or Nagios had quite a lot of visitors and was well received by the audience. The slides and a µracoli-app-note will be online soon.

The auditorium for the SNMP presentation.


However, we want to say a huge thank you for the professional and perfect organisation of the event to all members of the Chemnitz Linux Days Team. Looking forward to see you again next year in march.
 

Sonntag, 3. Februar 2013

Arduino Open Space in Dresden

Yesterday Daniel and Axel visited the Arduino Open Space in Dresden. We had some of our Radiofaro prototypes with us. In our short presentation we did show two demos. Demo #1 prepared a COSM feed, that gathers data from a DF-Robot-Ethernet-Shield + Radiofaro as gateway and a remote Radiofaro board that acts as a temperature and voltage sensor. In Demo #2 Daniel did an atoc hack and created a wireless display from a Times-Square-Shield and a LED Matrix, that was provided by Agile Hardware.

Beside of our presentation we had a lot of interesting discussions, among all of the talks we got a interesting pointer to the Codebender Project, which is a web based development platform for Arduino.

So finally it was an interesting and inspiring saturday afternoon with a nice opportunity to present our project and get into direct contact with the Dresden Arduino community. Many thanks to our hosts Steffen and Sabine and looking forward to meet you again at the next Arduino Open Space.



Sonntag, 30. September 2012

Changes in uracoli Version 0.3.0


In order to improve the usage of uracoli, there are some changes that affect the usage.
  • libradio and libioutil libraries are combined to liburacoli
  • The HIF baudrate can now be predefined in board.cfg and overwritten on the command line
  • A python terminal program with TKinter GUI is available as alpha version
  • The wireshark interface script sniffer.py got a TKinter GUI and a custom wireshark dissector in LUA for the p2p protocoll is added.

Samstag, 8. September 2012

RadioBlock - An interesting new module

The RadioBlock module is equipped with an AT86RF231 transceiver and a Cortex-M0 LPC1114 MCU. This module is currently in a funding process on kickstarter.com. It is intended to be a lowcost wirless modem to upgrade existing micro controller projects like Arduino with wireless connectivity. For µracoli this means that the code base has to be ported to 32 bit, to support also MCUs with ARM-cores ... OK, challenge accepted :-)

Samstag, 1. September 2012

Naming boards with udev

Most of the transceiver boards come with an USB connector. After connecting the board with the PC, a kernel driver is loaded and a name is assigned, e.g.  /dev/ttyUSB[0...9] or /dev/ttyACM[0...9]. In more complex setups, it is always a bit of pain, keeping track, which board gets which name assigned. The name can be found with disconnecting/reconnecting the board and search in the output of the command dmesg for the name:
axel@dellbox:~$ dmesg | egrep "ttyUSB|ttyACM"
ftdi_sio ttyUSB1: FTDI USB Serial Device \
  converter now disconnected from ttyUSB1
usb 1-2.6: FTDI USB Serial Device converter now \
  attached to ttyUSB1
Recently I found, that the udev system under Linux povides a much more sophisticated way to assign user specified names to the boards. The udev daemon can assign the name according to the serial number, that is stored in the USB chip of the transceiver board or in an EEPROM. Read in the next section how this can be used ...