Monday, 6 April 2015

Making DAN - Data Acquisition Node

Transforming MMR-70 in to temperature sensing DAN - Data Acquisition Node.

Back and front (or front and back?) RFM12bs modified to provide analogue RSSI output. AA switch turns on Always Active mode, but in this case it is better to connect DAN to an external 3V power supply as CR2032 is for Power Saving mode only. Actually, in Power Saving mode this DAN draws less than 8 uA. When it wakes up for data measurement and transmission it can draw up to 14 mA, but because it happens only once a minute and takes only few milliseconds CR2032 fully restores before next session. On start up voltage goes down to 2.8V but it is back to 3.0V in about twenty minutes.

Sunday, 5 April 2015

Making shDAN - small house Data Acquisition Network

I've been experimenting with different sensors for a while now and even built a small network of sensors using RFM12bs radio transceivers. The only problem - it is very slowly moving project and sometimes I have to spend a lot of time just trying to remember what different components are doing :) So this weekend I desided to document how it works...

shDAN - small/smart house Data Acquisition Network

shDAN stands for "small/smart house Data Acquisition Network". And "small" not necessary relates to a small house, it could be just a small network in a big house :)

Why "small"? Because of the following limitations:
  • No more than 12 Data Acquisition Nodes (DAN) per subnet
  • No more than 6 sensors (zones) per Data Acquisition Node
  • Messages between Base Station and Data Nodes are quite small - 13 bytes only

shDAN main components

ABS - Active Base Station, replies to time sync requests from Data Nodes
LBS - Listening Base Station, only collects data from Data Nodes, but never transmit anything. Useful for a standalone displays or monitoring stations.
DAN - Data Acquisition Node
NID - Node ID, base station is always 0, DANs are in 1 to 12 range, 13-15 reserved.
SID - Sensor ID, up to 8 sensors per NID. Each NIC always has two special SIDs: 0 is RF TX power, 7 indicates List of Sensors.
TOS - Type of Sensor, 1 to 15 range. For example, 1 is for Temperature, 2 Humidity and so on. For all defined types see ```dnode.h```
EOS - End of Session bit
AA - Always Active node. Usually data nodes are in sleep mode to save battery power and wake up only to do new measurement and transmit data to a base station.

shDAN uses simple time-division multiplexing schema to spread different DANs' sessions within one minute. Start of DAN's transmission can be calculated as second = (node - 1)*5 so node 1 transmits first message at 00 sec of every minute, node 2 at 05 sec of every minute and so one. A session cannot be longer than 5 seconds, last message should have EOS bit set to indicate End of Session, so base station can send messages to AA (Always Active) nodes or other nodes can transmit urgent data.

Project's page on GitHub

See SVG pictures below for details.

shDAN topology

Latest SVG at Github

Sunday, 29 March 2015

Making low-power version of MMR-70

I use modded version of Sony Ericsoon MMR-70 for different projects. It is cheap - less than a euro delivered and in addition to quite capable AVR controller Atmega 32L it has FM radio transmitter with RDS support, 32kHz crystal used together with FM radio and orange LED.

For remote  temperature sensor powered by CR2032 battery I've stripped down all unused components - FM radio transmitter, 2.8V regulator, I2C pull-up resistor, transistors connected to UART pins... So in Sleep mode MMR-70 board with RFM12BS transceiver and BMP180 as temperature sensor takes less than 8uA.
Pic. 1. MMR-70 with FM radio chip and I2C pull-up resistors removed. UART, I2C bus and some Digital/Analogue pins exposed to round header sockets. 32kHz crystal patched to Atmega32 for real-time clock support.

MMR70-mod code on Github.

Making Sony Ericsson MMR-70 breadboard friendly

I continue to play with Sony Ericsson MMR-70 board. So far I've done a few iterations on making it breadboard friendly using round header strips. I've started with round pins, but then switched to round sockets - sockets are easier to manage and it produces lower profile. Much more useful than the very first attempt :)
Pic1. On the left - version with round strip pins, on the right - sockets. Board on the right also is very low-power version - all components which are not needed unsoldered to save power when MC is in Sleep mode.

Pic.2 Round sockets (bottom) profile is lower than pins (top).

Sunday, 7 December 2014

Sony Ericsson MMR-70 Modding (Part 2)

Modded version of Sony Ericsson MMR-70 now supports SHT1x temperature/humidity sensors and can display information on SSD1306 driven OLED:

All sources as usual on GutHub.

BDFE - Bitmap Distribution Format Exporter

Bitmap Distribution Format Exporter - utility which can extract subsets or export all glyphs from .bdf font files.

There are tons of free fonts in bdf format because for years bdf has been used by UNIX X Windows. Converters available as well, but I needed very specific converter which would create fonts for SSD1306 based OLED screens.

So here it is - bdf font converter which can export glyphs from bdf and present them as array of bytes. It also can rotate 8x8 and 8x16 glyphs CCW so they can be used on displays with SSD1306 controller.

I'm running it on my Raspberry Pi (same RPi I use to program MMR70 ATmega) but it should run on any other Linux machine as well.

Sunday, 28 September 2014

GPS library for Intel Galileo

Intel Galileo library MtkGps allows Adruino sketches to talk to any GPS modules which understand MediaTek PMTK protocol. Tested with Adafruit Ultimate GPS breakout board. Three examples are provided: