Tag Archives: 16×2

Web-To-LCD 2

This new-and improved version of my earlier project that leaves the Arduino out of the picture. Everything runs on the ESP8266. Same results, just simpler to build and much simpler code.

You can join the ESP’s wifi network and tell it which access point to join.  The code is also updatable from a web browser.

Initially, you’ll have to upload the sketch to the ESP using a breadboard and a serial to USB converter, or some other configuration of the following schematic:
** Be careful to use only 3.3v on the RX pin and VCC Pins of the ESP8266 **
If your FTDI programmer is 5v you’ll need to add a level shifter, or voltage divider on it’s TX pin.

From here on out you can modify the code and flash wirelessly using a browser.

To get the ESP connected to your home network:

  • First join the WiFi network: ESP LCD.
  • Use the password you set for ESPpassword
  • Launch your browser and navigate to
  • Here you’ll find a page that lets you set the SSID and PASSWORD for your wifi network
  • Now you can connect your computer back to your home network

To update and upload a modified sketch:

  • Back in your browser, navigate to http://esp.local
  • Select the binary to upload, then click “upload”.
  • Done!

Output examples are shown on my earlier project.

Here’s the schematic with LCD:



Arduino+ESP8266 XML/RSS/HTML to LCD for Weather/News/Ham Radio/Stocks etc

Here is a project that pulls data from the internet and displays it on an LCD.  I use a 20×4 character display but this will work on a 16×2 as well.  I’ve tried to make this program easily adaptable to many different kinds of data.  The working version has examples for weather, news, amateur (ham) radio and stocks.

Data is easily pulled from the web and displayed on the LCD with a few simple parameters.

Features include:
– A large custom alphanumeric font
– Correct wrapping of text on the 20×4 LCD
– Removal of IPD+ messages from the ESP8266
– Special character replacement
– Custom formatting with grid layout or specify the number columns in each row.

To make the ESP8266 play nice with the Arduino I had to flash the ESP with a firmware that sets the serial data rate to 9600.  I also had to increase the Arduino’s software serial buffer to 256 (from 64).  Look at the GitHub page for firmware and flashing software.  I found the flashing instructions at: http://www.xess.com/blog/esp8266-reflash/

To increase your software serial buffer, first find your software serial library.  On my mac I had to control-click on the arduino app and choose “show package contents”.  Navigate to: /Arduino.app/Contents/Java/hardware/arduino/avr/libraries/SoftwareSerial/SoftwareSerial.h
and change the line:
#define _SS_MAX_RX_BUFF 64 // RX buffer size
#define _SS_MAX_RX_BUFF 256 // RX buffer size

Here are some examples of the display:

Weather (big font):
Amateur (Ham) Radio band openings:
Solar-Terrestrial data:
Stocks (big font):

Here is the schematic.  You can use any 6 arduino pins for the LCD and any two pins for software serial (some boards, like mega, don’t support all pins for software serial).  Just define the pins you use in the code.  Note that the ESP8266 needs a 3.3V for power and RX.  I used a regulator for the power and a voltage divider on the RX.  The arduino’s 3.3V output did not supply enough current to the ESP8266 in my tests.

First build on protoboard:

Second build:
proto2 proto3

Here’s a real simple enclosure made from a dollar store picture frame and some bolts:


The code is available on GitHub.

Audio Spectrum Analyzer

There is a great tutorial on how to setup and use a 2×16 LCD on the Arduino website:

Here’s a good explanation of FFT theory:

My pinout is a little different because I wanted to save as many PWM pins to add servo control for the next stage of this project.  I’ve been tinkering with the idea of moving physical objects around based on audio input, instead of just showing levels on a display.

To visualize the frequency levels of the incoming audio signal I use the 8-bit Fast Fourier transform code which is discussed here:

Honestly, I’m not convinced that what I’m seeing on the display is an accurate representation of the audio spectrum that I’m listening to, but it looks pretty cool and that’s all I really care about at this point.  There is hardware available that would produce much more accurate results than this software.  There is a “Color Organ” project on the Make website that I’d like to build someday:

Additional Reading:

Code and libraries on GitHub