Difference between revisions of "Library Chair"

From ESE205 Wiki
Jump to navigation Jump to search
Line 89: Line 89:
 
* Downloading basic Raspberry Pi code (NOOBS) onto a microchip
 
* Downloading basic Raspberry Pi code (NOOBS) onto a microchip
 
* Launching the Raspberry Pi using USB inputs of a keyboard and a monitor  
 
* Launching the Raspberry Pi using USB inputs of a keyboard and a monitor  
* Creating code in the Pi so that it would automatically launch when only connected to a power source
 
 
* Operating a VNC viewer to develop code for the Pi and HTML code for the interface side by side
 
* Operating a VNC viewer to develop code for the Pi and HTML code for the interface side by side
 +
* Creating code on the Pi such that it automatically launches on a computer (in VNC Viewer) if connected only by Micro USB Power Source
 
* Building code on the Pi server that would be able to automatically rewrite HTML code based on input
 
* Building code on the Pi server that would be able to automatically rewrite HTML code based on input
 
* Writing code in the server that would allow for communication with the Arduino
 
* Writing code in the server that would allow for communication with the Arduino
  
 
'''Initial Launch of the Pi'''
 
'''Initial Launch of the Pi'''
 +
 
Necessary Materials
 
Necessary Materials
 
* Raspberry Pi 3
 
* Raspberry Pi 3
Line 107: Line 108:
 
We then connect the Raspberry Pi to its power source by connecting the Micro USB to the Pi and a Computer (any power source would suffice). We connect a keyboard and a mouse to the Raspberry Pi through USB, and connect the Pi to a monitor using an HDMI cord so we can operate the pi. Now that NOOBS is downloaded and the Pi is fully plugged in, we may code on the Pi as if it were a computer.
 
We then connect the Raspberry Pi to its power source by connecting the Micro USB to the Pi and a Computer (any power source would suffice). We connect a keyboard and a mouse to the Raspberry Pi through USB, and connect the Pi to a monitor using an HDMI cord so we can operate the pi. Now that NOOBS is downloaded and the Pi is fully plugged in, we may code on the Pi as if it were a computer.
  
'''Automatic Launch of the Pi'''
+
'''VNC Viewer and Automatic Launch of the Pi'''
 +
 
 +
Steps:
 +
* Downloading VNC Viewer
 +
* Identifying Raspberry Pi IP address
 +
* Enabling VNC viewer on the Pi
 +
* Editing the Pi start code to include connecting to the VNC Viewer
 +
 
 +
'''Building Pi Code to Automatically Rewrite HTML Code'''
 +
* Connecting the Pi to Wifi
 +
* Using Beautiful Soup function
 +
* Plugging in location of output in corresponding Pi and HTML code
 +
 
 +
'''Communicating with Arduino'''
 +
 
 +
Steps:
 +
* Setting up wired connection between Arduino and Pi
 +
* Writing program in Pi **attach code** that allows for Arduino connection
  
 
==Interface==
 
==Interface==

Revision as of 07:51, 20 November 2017

Overview

It's a Wednesday night. You're sitting in your room watching Netflix, putting off studying for your exam next week. You're cozy in bed, and it's cold and dark outside, plus your suite-mate just said he's ordering Domino's and there might be a slice or two left over for you. Every fiber of your being is willing you to stay home, eat, and watch TV, but that nagging voice in the back of your head tells you that you're a Wash U student damnit, and you'd better take this exam seriously! So you muster up some energy and get the kid on your floor who is in the class with you to walk to the library and study for a bit. When you guys get there, though, you see that every seat in the library is taken! ARGH!!

Few things are more annoying than when you decide to actually go study but then can't because there isn't an open spot for you in the library. Enter the Library Chair. In simple terms the Library Chair system consists of an interactive chair and a web interface. The chair can detect when someone is sitting in it, and this information is then relayed (via a few arduinos and a raspberry pi) to a website which displays a map of all the chairs in the library and which ones are occupied. You can check this website from the safety and comfort of your own room; no more cold walks to the library that end up being futile!

For more specific information on how the system operates, please look at the "Objectives" section of this wiki.


Library Chair Log

Team Members

Josh Zucker

Nick Blenko

Tom Howe

Our wonderful TA, Mo

And Professor Morley, adviser

Objectives

Our project's main objective is to create an interface that library goers can use to see which seats in the library are available, and which are occupied. This interface will be dependent on data obtained from a pressure detecting circuit hooked up to an arduino and affixed to the bottom of a library chair. This circuit will then communicate occupancy and location data to another arduino connected to a raspberry pi. The raspberry pi will in turn communicate this data to a web server. We are aiming for the circuit/arduino device to be accurate, low energy, and completely powered by solar panels.

As a group we are simultaneously working on a few different smaller goals. These include: finalizing the circuit that will detect when someone is sitting in the chair, figuring out how to communicate effectively between the arduinos and how to generate the wave function necessary for the circuit to operate from an arduino, integrating a solar power source into the circuit, communicating data from the raspberry pi to a web server, and designing and implementing an aesthetically pleasing web interface.

Challenges

  • Finding the best way to communicate information at a low energy level from our circuit in the chair to a processor
  • Integrating a pressure detecting circuit with an arduino serving as a function generator and RF communicator
  • Learning to use a Raspberry Pi to communicate information to a server
  • Setting up a server
  • Creating a user interface

Gantt Chart

An outline for the breakdown of duties and the timeline of the library chair project.

Budget

  • Chair: Cost Varies - (donated by Professor Morley)
  • Raspberry Pi: $35.00

https://express.google.com/product/385505035318354406_8630599681660487108_6136318?mall=WashingtonDC&directCheckout=1&utm_source=google_shopping&utm_medium=product_ads&utm_campaign=gsx&dclid=CJ31z4iVq9cCFYIpaQodZkUNkg

  • Solar cells: $9.50

(Found on Amazon, but Wiki won't let me post the link to the page because of a spam filter)

  • Resistors/Capacitors/Diodes: ~$5.00
  • Wire: $2.50
  • Web Server: $12/Year

https://domains.google/?gclid=Cj0KCQiArYDQBRDoARIsAMR8s_ScLqI_DH4AD7z6oBy_tVey4H-jz4VXtbH8GBIPOwqxhcrwV_F713gaAuZXEALw_wcB&dclid=CJiflsmVq9cCFRYxaQodTZYPtA#/

  • Bluehost Account $3.99/Month

https://www.bluehost.com

  • RF Link Receiver (433 MHz) $4.95

https://www.sparkfun.com/products/10532

  • RF Link Transmitter (433 MHz) $3.95

https://www.sparkfun.com/products/10534

  • 2x Arduino Uno - one provided by school, one bought at link below for $27.95

https://www.amazon.com/gp/product/B008GRTSV6/ref=oh_aui_detailpage_o03_s00?ie=UTF8&psc=1

  • External 16 bit ADC converter 14.95

https://www.adafruit.com/product/1085

Total: $119.79

Building the Circuit

Our circuit is composed of two main parts, an RC circuit and a peak detector. The RC circuit does the actual people detecting. The circuit detects a person because it is fed a square wave with a period roughly equal to four time constants, when someone sits in the circuit they effect the capacitance of it, as the human body has a capacitance of 100-200 pF, and increases the capacitance in the RC circuit, increasing the time constant as well. When the time constant is increased the period of the square wave is not long enough for the capacitor to charge to its peak and so the peak voltage of the circuit is lower when the chair is occupied. The peak detector comes in here to make the measuring the voltage easier. The first part of the peak detector is a diode, which will only let through voltage that is higher than the voltage on the other side of the circuit, therefore if the voltage of the RC circuit is less than the peak voltage it will not be let through. The next element in the peak detector is a parallel RC circuit. In this circuit the capacitor maintains the voltage on the other side of the diode, at the peak voltage, while the resistor slowly drains it, so that when the peak voltage is lowered it is noticed on the other side of the peak detector. Voltage is measured across the parallel RC circuit.

Figure 1:The detection circuit with the peak detector with possible values for capacitances and resistances.
Figure 2:The measured voltage at the peak detector of the above circuit.
Figure 3:A closer view of the voltage at the peak detector in the above circuit.


Group Presentation

Link to the presentation

Communicating Chair to Processor

Solar Power

Server

There were a few steps in setting up our Raspberry Pi server that would relay information from the Arduino to the website interface.

  • Downloading basic Raspberry Pi code (NOOBS) onto a microchip
  • Launching the Raspberry Pi using USB inputs of a keyboard and a monitor
  • Operating a VNC viewer to develop code for the Pi and HTML code for the interface side by side
  • Creating code on the Pi such that it automatically launches on a computer (in VNC Viewer) if connected only by Micro USB Power Source
  • Building code on the Pi server that would be able to automatically rewrite HTML code based on input
  • Writing code in the server that would allow for communication with the Arduino

Initial Launch of the Pi

Necessary Materials

  • Raspberry Pi 3
  • Micro USB (power source)
  • Micro SD card
  • Monitor
  • Mouse
  • HDMI Cable

To initially launch the server, we must first download the necessary preliminary coding found on the official Raspberry Pi website. We do so by using our Micro SD card and plugging it into a USB port on a computer with internet access. We then make sure the Micro SD is clear of all information (if reusing a Micro SD card, be sure to clear using formatting protocol explained on website **insert instructions/reference**). We then download the code off of the website, move the downloaded files to USB input, and wait for the information to copy. We then safely eject the Micro SD card and remove it from the USB. NOOBS is now loaded onto the Micro SD Card.

We then connect the Raspberry Pi to its power source by connecting the Micro USB to the Pi and a Computer (any power source would suffice). We connect a keyboard and a mouse to the Raspberry Pi through USB, and connect the Pi to a monitor using an HDMI cord so we can operate the pi. Now that NOOBS is downloaded and the Pi is fully plugged in, we may code on the Pi as if it were a computer.

VNC Viewer and Automatic Launch of the Pi

Steps:

  • Downloading VNC Viewer
  • Identifying Raspberry Pi IP address
  • Enabling VNC viewer on the Pi
  • Editing the Pi start code to include connecting to the VNC Viewer

Building Pi Code to Automatically Rewrite HTML Code

  • Connecting the Pi to Wifi
  • Using Beautiful Soup function
  • Plugging in location of output in corresponding Pi and HTML code

Communicating with Arduino

Steps:

  • Setting up wired connection between Arduino and Pi
  • Writing program in Pi **attach code** that allows for Arduino connection

Interface

To create the interface, we first bought the domain www.librarychair205.com. We then got a third party account at BlueHost, where we could manage our domain. In order to upload code to the domain, it involves creating an FTP account, using Filezilla to upload to that FTP account, using Atom to write code in html so it is compatible with the FTP account, and being able to grab the data from the RaspberryPi server.

Our steps:

  • Generate functional HTML code in Atom
  • Save the HTML code in index form to be compatible with Firezilla
  • Set up the connection between the Firezilla account and the online server's account and IP address
  • Upload the FTP file to Bluehost