A Fridge Magnet

Da raspibo.
Jump to navigation Jump to search

This is the implementation of the idea to create an electronic fridge magnet.

What is that?

  • It is a battery operated Display
  • A radio wireless connection provides the contents to show

It can be used as a "Internet of Things" implementation of a fridge magnet to show important or interesting information for the family, but can be used as a price/special offer label on the front side of shop shelves.

Features:

  • It is possible to connect up to 212*31=6572 displays to the same transmitter and update them independently (several displays sharing the same address will show the same contents).
  • Using an optimized version of the code (currently under development) the circuit can work for monthes on a single battery. The display is bi-stable so it can turned off, the entire circuit can be put in sleep mode for the most part of the time.

Here is a picture of the prototype to whet your appetite:

Fridge1.jpg

The components used in this prototype are:

Fridge2.jpg

The total cost for a unit is around 70 euros (plus shipping costs from several suppliers etc).

The following parts are needed to upload the software and to send the images to our display (or to several displays):

RAM and wiring card

Fridge3.jpg

This card is the only hardware part than needs to be soldered. The current version, as shown in the picture here above, uses a JeeLabs proto board and insulated copper wired.

Here is the table of the connections:

Display     Signal     Connected to:         AtMega pin:        Equivalent
Connector              (JeeNode)                                "Arduino pin#"

1           GND        GND(pin 3 any P port)   GND              GND
2           3.3V       +3V(pin 4 any P port)  +3.3V             +3.3V
3           SCLK       SCK(pin 3 SPI/ISP)      SCLK/PB5 pin 19  13
4           MOSI       MOSI(pin 4 SPI/ISP)     MOSI/PB3 pin 17  11
5           MISO       MISO(pin 1 SPI/ISP)     MISO/PB4 pin 18  12
6           SSEL       SEL0(pin 7 SPI/ISP)     PB0 pin 14       8
7           Busy       DIO4(pin 2 port 4)      PD7 pin 13       7
8           BorderCtl  IRQ (pin 6 any P port)  PD3 pin 5        3
9           SCL        SCL(pin 5 PWR/SEL/I2C)  SCL/PC5 pin 28   A6 (19)
10          SDA        SDA(pin 4 PWR/SEL/I2C)  SDA/PC4 pin 27   A5 (18)
11          PWM        DIO2(pin 2 port 2)      PD5 pin 11       5
12          Reset      DIO3(pin 2 port 3)      PD6 pin 12       6
13          PWR        SEL1(pin 8 SPI/ISP)     PB1 pin 14       9 (**)
14          Discharge  DIO1(pin 2 port 1)      PD4 pin 6        4
(**: this pin has been remapped, it is not the same used in the demo code
provided by Embedded Artists as PD2 is used by the RF12 radio tranceiver on
JeeNodes).

RAM pin     Signal     Connected to:           ATmega PIN:      Equivalent
                       (JeeNode)                                "Arduino pin#"                                          
1           /CS        AIO2(pin 5 port 2)      PC1 pin 24       A2 (15)
2           SO         MISO(pin 1 SPI/ISP)     MISO/PB4 pin 18  12
3           not connected
4           VSS/GND    GND(pin 3 any P port)   GND              GND
5           SI         MOSI(pin 4 SPI/ISP)     MOSI/PB3 pin 17  11
6           SCK        SCK(pin 3 SPI/ISP)      SCLK/PB5 pin 19  13
7           HOLD       +3V(pin 4 any P port)  +3.3V             +3.3V
8           VCC        +3V(pin 4 any P port)  +3.3V             +3.3V

Firmware

  • Step 1: Download the demo code from embedded artists (Apache License).
  • Step 2: Be sure you have loaded the JeeNode Libraries as explained here.
  • Step 3: Use epaperradioram.ino instead of the epaper.ino source code.

The last line of setup() is:

 rf12_initialize(1, RF12_868MHZ, 100);

where 1 is the node number and 100 is the group number. Change these constants if you want to support several fridge magnets.

  • Step 4: Upload the firmware on the JeeNode as described here

Now if you power up your JeeNode the Display will be cleared waiting for the first image to be received.

Software

I have developed a demo program able to display text messages and images on the remote display. Step 1: download the fridge.c source code. Change the DISPLAYNODE constant to match the node number of your display if needed. Step 2: compile it:

 gcc -o fridge fridge.c

This demo program is able to display text messages (using 5x7 fonts,

  gcc -o fridge fridge.c