Intro: LCD Bus Schedule Display
Students will develop an understanding of and be able to select and use transportation technologies.
Transportation plays a vital role in the operation of other technologies, such as manufacturing, construction, communication, health and safety, and agriculture.
Have you ever missed a bus? Have you ever wished you had a convenient display that showed expected bus arrivals in real-time? Then this Instructable is for you! With just a simple Arduino kit, an LCD display and some easy programming, you can quickly create a fun and novel way to never miss the bus again. This LED display can be linked to a bus route app using the app's API to show arrivals as they occur, and it can also be edited to display a custom message. Let's head to step 1!
Step 1: The Kit
To start off, you'll need to get your hands on the right hardware. For this example, we've used the SparkFun Inventor's Kit v 3.2; if you have this kit, it'll be easier to follow along. However, it should be possible to create this project without this exact kit. All you'll need is an Arduino, a breadboard, some jumper wires, a potentiometer, and an LCD display. You'll also need to download Arduino's opensource software, which can be found at www.arduino.cc. The SparkFun kit comes with an instruction manual, which consists of mostly pictures. We'll add the pictures, but also include further explanation through text. Just as a warning, if you don't end up using this kit, the connecting pins between the Arduino and the LED display may be slightly different, so try to get the most similar pieces of hardware you can.
Step 2: Understanding the Components
As we you've probably already imagined, we need to properly connect the Aurdino to the LCD display so that it will display the appropriate information. This requires an input of instructions for the Arduino, and an output from the Arduino to the display. The Arduino acts as a computer chip, processing the information it is getting from the software and outputting the appropriate electrical signals to the display. The display receives these signals, and in turn lights up individual LCD's, which creates a message. The breadboard allows us to connect the display to the Arduino via jumper wires. The potentiometer acts as a voltage controller, increasing or decreasing the resistance, which in turn changes the amount of voltage that reaches the display; a resistor could be used in its place, but will require more trial-and-error in order to find the correct amount of resistance. You can think of the potentiometer as a volume knob on a radio, as it can turn the voltage up or down.
Step 3: Using the Breadboard
Now, you may have already been confused or intimidated by the breadboard. If it's your first time using one, you may not know how signals are transferred through the terminals. There are two type of rails on the breadboard: the power rails, which are denoted by a + or - sign and have red and blue strips running along them, and the terminal rails, which transfer signals. To make things easier, you should orient your breadboard in the same way the one in this picture is oriented, as it's how ours is positioned. For the breadboard to operate, power is input from the power source to + power rail, and a ground is connected from the - rail to a ground. Power travels horizontally along the power rail, so that if a power and ground wire were connected to the lower left + and - rails, the lower right + and - rails would output that power. The terminal rails, however, transfer signals vertically, so that a cable that is connected to the A1 terminal would transfer a signal along the entire first column; that is, terminals B1, C1, D1, and E1 would output the same signal that is being input from A1. This is crucial, as if you put two inputs on the same column, you may not get the expected output. As you can see, the breadboard is split horizontally down the middle by a ridge; this ridge separates the two halves of the breadboard so that a signal from A1 will transfer all the way to E1, but will not transfer to F1. This allows for more inputs an outputs to fit on one breadboard. Power must also be connected from the power rail to the terminal rail that needs power, as the power rail is only a supply of power, and the power must be picked up from the rail and transferred to whatever component needs power.
Step 4: Assembling the Display
Now it's time to assemble the LCD display! Start by orienting your display the same way we have ours, with the column numbers increasing from left to right. You can either use the first image as a guide and make connections in any order you'd like, or you can follow along with the second picture to connect individual components and wires. As we can see, the 5V power that is output from the Arduino is delivered to the power rail of the breadboard, and this power is accessed by two pins on the LCD display as well as the potentiometer. The rest of the terminals connect to outputs on the Arduino, and the signal these pins output is based on the code you write for the Arduino. Once you've got everything connected, it's time to write the code!
Step 5: The Code
When writing the code for your Arduino, you need to make sure you're using the correct software. To download the software, head to www.arduino.cc. Under the "software" tab, you can either used a web-based client or download the programming software directly to your computer. We recommend downloading the software, as it will be easier to edit the code since it's local and won't require a connection to the internet.
This is an example of CTA arrival time display:
However, this is build in the Python platform.
Step 6: Connecting to API for Real-Time Updates
For this final step, we'll be connecting the Arduino unit to an app that will allow the display to show live updates of bus schedules. To do this, we'll use the app's API and integrate it into our system.
What is an API? (Application Programming Interface)
API is the acronym for Application Programming Interface, which is a software intermediary that allows two applications to talk to each other. Each time you use an app like Facebook, send an instant message, or check the weather on your phone, you’re using an API.
What Is an Example of an API?
When you use an application on your mobile phone, the application connects to the Internet and sends data to a server. The server then retrieves that data, interprets it, performs the necessary actions and sends it back to your phone. The application then interprets that data and presents you with the information you wanted in a readable way. This is what an API is - all of this happens via API.
We'll be using the Transloc Website to track bus schedules, so we recommend using this source so it's easier to follow along.
1. Go to TransLoc Wolfline website to determine which stop and route you want to track
2. Go to mashape, select Transloc, create an account, and get access to the API.
Step 7: Troubleshooting
Well, if your display works without any troubles, then you won't need this step! If your display doesn't work properly, or doesn't display the correct information, some simple troubleshooting may be required. First, make sure all components are compatible with each other, and make sure the software you're using is either the latest version or the version that's compatible with your Arduino. Next, make sure all connections are correct, and that the Arduino is receiving both power and data from your computer. To test if the Arduino is receiving power and data, you can create filler text for the LCD to display within your code; the filler text should appear on the display. You can also use a voltage tester or multimeter to ensure that there's power. If you're using a multimeter, check the voltage along the power rails, and look for 5V. If the voltage is very low, you may have a damaged or malfunctioning Arduino or input cable. If all of the connections are correct, and the display isn't showing a message, you may need to adjust your potentiometer until the display lights up to your preferred brightness. Check to make sure that none of the jumper wires are torn or damaged, and make sure that the LCD display and the Arduino are in working order and undamaged. If you know the LCD is getting power, but isn't displaying the correct message, double check the code to ensure that it's correct. Lastly, if your display isn't showing the correct live bus schedule, you may need to review the API you've added so that it's correct and compatible with your code.