Introduction: Wireless Arduino Display With 315mhz RF Modules

About: Hi, I am a Canadian student who is avid about all things electronic and stuff using microcontrollers.
Hello Instructables. I am a Canadian Gr.9 student this is part of my final project- Magnetic Levitation. I will post it in December or January.

EDIT: Okay, so my project failed, but i will still continue to attempt to make it work as my project was one of the best science fair projects, and I am going to the regional Science Fair.

EDIT: So I got my project to work, see it here.

BTW- This is my first Instructable, How did I do, what can I add?


Overview-

I have made a wireless 20x04 LCD with the VirtualWire library. The transmitter operates through serial, so for most projects only minimal code it needed to use the screen. If your code already uses serial, and by using the code I have provided, you can already display up to 20 chars on the screen without changing your code at all. To use all the lines it is as simple as this:

Serial.print ("Line number here (1-4)");

This can be set up in two main ways



1. Have an external micro controller(I call it the main micro controller in this project.) connected to the transmitter Arduino, I used a FRDM-K64F, but because everyone uses Arduino's, I will pretend that it is an Arduino. (This is what I did)
2. Use the Transmitter micro controller as the micro controller in your project.


F.Y.I: (All the cool devices have a name, so the name of mine is WAD)

W-Wireless

A-Arduino

D-Display

Versions

I am running my levitation device with a FRDM-K64F. Since it uses big magnets, I decided I needed a upgrade from the Arduino serial monitor. For me this was a 20x4 LCD. I set out to assemble the code and hardware for the LCD. After a weeks worth of testing I couldn't get it to work with the K64F, but it worked flawlessly with the Arduino.

Version 1: Non wireless LCD using Arduino Uno as a LCD driver, receiving data through the Serial pin. When one of the "line" 4 wires from my "Arduino" (how am I doing with pretending my K64F is an Arduino?) was pulled high, the serial data would be displayed on the specific line number that was indicated. After prolonged usage I blew something in the LCD....

Version 2: After a order from Ebay I had this version. Serial data from the serial monitor or the RX pin is processed and sent through the RF transmitter to the RF receiver. The Arduino nano gets the data, and if it is data to be displayed, sends it to the I2C backpack, which then puts it on the screen. (Diagram in with photos) It only took me a week to build program and document it.

Version 2.1: (This project) This is more of an upgrade vs. a new version. I changed the library for the RF chips from RadioHead to VirtualWire. I made transmitter easier to use, and added an antenna to it. I made a case for the reciever, and added an on/off switch.

Credits,Warnings, And Disclaimers

F.Y.I The RF modules in this project may/will stop your wireless garage door openers from working while the transmitter is powered. Buy 2 set of chips with different frequencies so you can swap them out if they cause interference.

I don't know what you could possibly do wrong, but I am not responsible for what you do and/or what you break with this the instructions and code in this Instructable.(My friends pointed out that it looked like a kind of looked like a bomb, so be careful where you take it)...

Most of the code in this 'Ible is examples from Arduino.cc, Virtual Wire, elapsedMillis and LiquidCrystal_I2c.

Step 1: Parts Needed

These were the prices in US dollars when I posted this;



• Arduino Nano ($2.9)
• Arduino Uno ($4)
• Breadboard ($1.6)
• M/F Jumper Wires ($1)
• 433 MHZ RF Module ($1) or 315 MHZ RF Module ($1) (you only need one, but get both)
• I2C LCD Adapter ($1)
• 20x04 LCD ($4.3)
• Main Micro controller (can be any micro controller that supports serial)
• Mini SPDT toggle switches


As a total this costs about $17+$4 if you want an Arduino Uno as your main.

If you buy Chinese Arduino's, you should really donate a little to Arduino to help the cause ;-)

Step 2: Computer Software

I have no clue about Mac's as this will help you with Windows.

You will need the Arduino Software to complete the following.

If you don't know how to install libraries read this 'ible.

I've linked to the site where I got them if you think the files I give you have viruses. (But they don't)

Install the VirtualWire Library

Install the ElapsedMillis Library

Install the Liquid Crystal I2C Library (Last one in the table)

Install the CH340G Arduino Clone Driver

To install the CH340G Driver, just open it, go to the CH341SER folder, and click on install SETUP.EXE.

Step 3: Solder

Depending on the Arduino clones you got, you may need to solder the header pins on the Nano, If you got a Chinese clone without headers, solder them and the ICSP (2 by 3) header, as you may need to burn a boot loader to the Arduino. I didn't solder them on, but I got lucky and the boot loader was installed already.

You will also have to solder the I2C adapter to the screen.

How to Solder The Nano (It is actually for the Pro Mini, but it's close enough)

How to Burn a Bootloader

Step 4: The Wires

I tried Fritzing but my laptop crashed when I did :(

For the Receiver (Arduino Nano)

  • On the I2C adapter
    • Device----------> Nano
    • VCC 5v
    • GND GND
    • SDA A4
    • SCL A5
  • On the RF chip (Reciever)
    • VCC 5v or D12
    • GND GND
    • Data* D11
  • On the switch
    • Middle pin Gnd
    • Other pin Power Supply-GND
  • Other
    • Power Supply+ VIN

(For some reason I put in a voltage divider to adjust to Nano VIN voltage. To do this move the power supply+ to one side of a potentiometer, the middle leg to the Nano VIN, and the other pin to the Arduino GND

*There may be more than one data pin. Only connect one of them (I did the one beside the ground pin).

For the Transmitter (Arduino Uno), It is set up so you can just plug in right into the Arduino headers, and yes, it is safe for I/O as when I tested, it doesn't take more than 40ma.

  • On the RF chip (Transmitter)
    • Device--------> Uno
    • GND D8
    • VCC D9
    • DATA D10
    • ANT ~20 cm wire (I used stranded, and twisted it tight to get electrical contact)

Step 5: The Reciever Code

I have tried to comment this code a lot to make it easy to understand, now that I look at it, a lot of them are pretty redundant... Oh well, at least you should be able to understand it.

You can see the simple structure of the code in the flow chart.

You should connect the LCD and run the I2C scanner (not by me) to find the address (mine was 0x27). Change the address at the top of the receiver code.

Upload you sketch to your board. If you need help check out this. Arduino IDE will probably ask you if it can put the sketch in a folder, click yes.

If your Arduino Nano didn't come with a cable, make sure to check that you have a cable with power and data, as I spent a couple hours frustrated, One cable later, it worked

Step 6: Transmitter Code

This code is super simple, and probably won't really ever need changing if it is deployed.

For help refer to the previous step.

Step 7: How to Use

  1. Load code onto your Arduino's
  2. Open the Serial Monitor for the transmitter or plug in main micro controller's TX to the Transmitter Arduino RX
  3. Type text or a command (See Command List)
  4. wait for a couple of seconds while the data is transmitted.

Command List (Case-sensitive)

  • status, shows status icon in top right corner (change the boolean constat to 0 to disable by default)
  • clear, will clear the screen
  • on, will turn on the transmitter
  • off, will turn off the transmitter
  • {, If you precede a command with this, it will display the command on the LCD
  • nostatus, hides status icon (default)
  • backlight, activates backlight (default)
  • nobacklight, deactivates backlight (to set as default comment out lcd.backlight() is setup)
  • 1, set line number to one
  • 2, set line number to two
  • 3, set line number to three
  • 4, set line number to four

Step 8: Where to Next

  1. Make a case for it. (Done)
  2. Use nrf24l01 boards for a better range, and have addressable LCD screens, not to mention it is a transceiver, so we could mount switches on the LCD that can control the main micro controller
  3. Add a Bluetooth module that mirrors text to phones
  4. Make the status bar show the signal strength, not just weather it is connected or not