Traffic Light System Using Raspberry Pi 3 (Python)

Introduction
 
This article demonstrates how to make a smart traffic system using Raspberry Pi and Python.
 
Learn how to use the GPIO pins on your Raspberry Pi to interface with electronic components, such as LEDs, Buzzer and buttons.
 
 
 
Prerequisite 
 
Hardware 
 
As well as a Raspberry Pi with an SD card and the usal peripherals, you'll also  need:
  • 1x Solderless breadboard
  • All king of jumper leads 
  • 1x Tactile button
  • 3x LEDs (Red,Greean and Yellow)
  • 3x 330 ohm Register
  • Buzzer
  • Button
Software
   
Raspberry Pi needs NOOBS OS. NOOBS is a way of making setting up a Raspberry Pi for the first time much, much easier. You won't need network access, and you won't need to download imaging software. Just head to the download page, grab a copy of the NOOBS zip file, and unpack it onto a freshly formatted 4GB (or larger) SD card. Once you have installed an operating system, your Pi will boot as normal.
 
 
 
GPIO pins 
 
One powerfull feature of the Raspberry Pi is the row of GPIO pins along the top edge of the boadr. GPIO stands for General-Purpose Input/Output. These pins are a physical interface between the Raspberry Pi and the outside world. 
 
 
 
If you don't have a pin label, then this can help you to identufy the pin numbers

 
3.3 volts           
    
Anything connected to these pins will always get 3.3 v of power.
 
5 volts 
   
Anything connected to these pins will always get 5 v of power.
 
GND
 
Zero volts, used to complete a circuit
 
GPIO
   
These pins are for general-purpose use and can be configures as input or output pins
 
ID_SC/ID_SD/DNC
 
Special purpose pins. 
 
Lighting an LED 
 
LEDs are delicate little things. if you put too much current through them they will pop. To limit the current going through the LED, you should always use a register in series with it.
 
Long leg an LED to the Pi 3.3v and the short leg to a GND pin. Automatically LED will turn ON
 
 
 
If you connect special purpose(GPIO) pin are connect to long leg, make sure to write the import code.
 
 
 
Switching an LED on and off
 
GPIO Zero is a new Python library which provides a simple interface to everyday GPIO component. It comes installed by defalut in Rasbian.
 
Open IDLE(Integrated Development Environment), which you can use to write and run code.
 
Raspbian Menu Icon >> Programming >> Python 3 (IDLE). 
 
 
  • To create a new file in IDLE, You can click on File and then New File in IDLE's menu bar. 
  • Create a new file by clicking File >> New File
  • Save the new file by clicking File >> Save. Save the file as trffic.py
  • You'll need the LED Class, and to tell it that the LED is on pin 17. Write the following code in your new file.
  1. from gpiozero import LED  
  2.   led = LED(17)  
  • To make the LED switch on, type the following and press Enter
  1. led.on()  
  • To make it swith off you can type 
  1. led.off()  
  Your LED should switch on and then off again. But that's not all you can do. Similary check the Buzzer and Button. Just import a Buzzer and Button for header file.
  
Making Traffic Light
 
We need a breadboard, three LEDs, a button, a buzzer and the necessary jumper cables and registors.
 
Wiring
 
First, you need to understand how each component is connected. 
  • A push button requires 1 ground pin and 1 GPIO pin
  • An LED requires 1 ground pin and 1 GPIO pin, with a current limiting registor 
  • A buzzer requies 1 ground pin and 1 GPIO pin    
Place the components on the breadboard and connect them to the Raspberry Pi GPIO pins, accoring to the following diagram.
 
Component GPIO pin 
 
   Button                           21
   Red LED                       25
   Yellow LED                    8
   Green LED                    7
   Buzzer                           15
 
This is the same as the Switching and LED on and off step
  •    Open Pyton 3 from the main menu
  •    Create a new file just save with the project name.py 
 Add TrafficLight, Button and Buzzer Code
  1. from gpiozero import Button, TrafficLights, Buzzer  
  2. from time import sleep  
  3.   
  4. buzzer = Buzzer(15)  
  5. button = Button(21)  
  6. lights = TrafficLights(25, 8, 7)  
  7.   
  8. while True:  
  9.            button.wait_for_press() 
  10.            buzzer.on() 
  11.            light.green.on()  
  12.            sleep(1)  
  13.            lights.amber.on()  
  14.            sleep(1)  
  15.            lights.red.on()  
  16.            sleep(1)  
  17.            lights.off() 
  18.            buzzer.off() 
 OUTPUT
 
Run your Powershell coding (F5) 
 
Finally, we have successfully created smart traffic system using Raspberry Pi.