Giving Thomas the Train the Ability to Drive at Night
by zbrown101 in Circuits > Raspberry Pi
435 Views, 0 Favorites, 0 Comments
Giving Thomas the Train the Ability to Drive at Night
This instructable will teach you how to create a system of lights to warn waiting passengers when a train is approaching and also how to get a message to appear on a laptop when the train is at the station. A sound for when the train passes the station will be generated along with a series of flashing LED lights. All of this can be done using a Raspberry Pi.
Supplies
One computer
MatLab 2016 or newer
Download the Raspberry Pi package
3D Printer
3D printed Train Station to house the raspberry pi
Raspberry Pi with the following components:
2 Infrared Sensors
5 LED lights of your choice of color
11 Wires
2 Resistors
200-300 Ohm resistors
USB Chord to connect computer to the raspberry pi
Design the Circuitry for Desired Outputs and Inputs
Using basic circuitry, the lights and infrared emitter and receiver should be hooked up to the Raspberry Pi. The Red LED lights are hooked up to ground and then are connected to GPIO Pins 4,5,6 and 7. The Infrared Receiver is connected to GPIO Pin 21 and the Infrared Emitter is connected to the 5V pin.
Develop Coding to Satisfy Desirable Outcome
The most important lines of the code are lines 12 and 16 which launch the dialogue boxes. Line 18, the if statement, is reading if the infra red sensors have an obstruction between them and if they are obstructed then that means the train is passing, the horn will sound and the lights will turn on. If the statement is false nothing will happen because the train is not approaching.
Code: %% Header
%Microcontroller Project-Night Train
%John Brown,Trent Payne,Karsten Parker;Section 9
%October 3, 2017
%Project Description: Design a microcontroller that takes two inputs and
%produces two outputs to help improve aspects of a model train setup
%Solution Method:Use various resources and Matlab to improve aspects of the
%model train setup.
%% Setup-First Input/Output
while true
a=0;%initializes a
while readDigitalPin(rpi,21) == 1
a=1;%stops light code from running before question dialog code
question=('The train is stopping at the station. Do you wish to sound the horn?');
question_title=('Train Horn');
resp=questdlg(question,question_title,'yes','no','no');%pops up question dialog box with two options and a default answer
tf=strcmp(resp,'yes');%compares character array length of response to character array yes.
if tf==1%if resp='yes'
[Y,FS]=audioread('train_horn.m4a');%takes audio file and converts it into sample data,y, and sampling rate,FS.
sound(Y,FS)%sound command takes sampled data and sampling rate and generates sound
msgbox('The train horn is sounding!')
pause(2)
break
else%if resp='no', tf will be logical 0 since no and yes char arrays are different lengths
msgbox('The train horn was not sounded!')
pause(2)
break
end
end
while readDigitalPin(rpi,21) == 1 && a==1 %starts while loop while switch is flipped on and question dialog box has run
%This first code segment turns on the lights in order.
writeDigitalPin(rpi,4,0)
pause(0.25)
writeDigitalPin(rpi,5,0)
pause(0.25)
writeDigitalPin(rpi,6,0)
pause(0.25)
writeDigitalPin(rpi,7,0)
pause(0.25)
%This second code segment turns the lights off in order.
writeDigitalPin(rpi,4,1)
pause(0.25)
writeDigitalPin(rpi,5,1)
pause(0.25)
writeDigitalPin(rpi,6,1)
pause(0.25)
writeDigitalPin(rpi,7,1)
pause(0.25)
end%end while loop
end
Listen for the Train to Come Around the Corner, and Watch As the Lights Warn You to Step Back
As the train approaches and crosses the infrared sensors, the lights will go off, setting off the train horn to arrive passengers to step away from the edge; however, there will also be a dialogue box that pops up asking the train conductor, "The train is approaching the station, is the train stopping?", then a second reads "The train horn is sounding", and if the horn is not pulled, a third dialogue box will say, "the horn was not sounded."
Final Setup
To complete the project, the whole system should be combined into the blue train station which was 3D Printed for aesthetics. The train station symbolizes where the passengers will be when the train arrives. Now they will be safe thanks to the Night Train warning system.