1
0
Fork 0
Browse Source

(#2) add initial content light-meter.md.

Most the content is taken from the ReadMe file from Light Meter's code
repository. Project overviews for Return to Ritherdon, Light Meter
and 'Artwork 1' are all here. The hardware requirements are, also,
included (part of issue #2) and preparation/maintenance instructions
for the software side of the project.
master
Craig Oates 3 years ago
parent
commit
ace5c1dc47
  1. BIN
      light-meter/attachments/hardware-layout.png
  2. BIN
      light-meter/attachments/light-meter-extension.png
  3. BIN
      light-meter/attachments/light-meter-logo.png
  4. BIN
      light-meter/attachments/main-proj-architecture.png
  5. BIN
      light-meter/attachments/return-to-ritherdon-project-overview.png
  6. 322
      light-meter/rtr-light-meter.md

BIN
light-meter/attachments/hardware-layout.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 KiB

BIN
light-meter/attachments/light-meter-extension.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 520 KiB

BIN
light-meter/attachments/light-meter-logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
light-meter/attachments/main-proj-architecture.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

BIN
light-meter/attachments/return-to-ritherdon-project-overview.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

322
light-meter/rtr-light-meter.md

@ -0,0 +1,322 @@
# Return to Ritherdon: Light Meter
## Table of Contents
To be added later...
## Return to Ritherdon: Project Overview
**Disclosure: This document was written by [Craig
Oates](https://git.abbether.net/craig.oates) and all information I
have cited about the other parties where taken from their respective
websites. I have, also, applied minor editing in places to help
readability - in the context of this document. Please use the links listed
below for the original/official version of the sourced material. Craig
is the author of the software in this repository.**
## Return to Ritherdon Overview
'Return to Ritherdon' is a two year residency at Ritherdon & Co Ltd, a
manufacturer of metal enclosures based in Darwen, Lancashire U.K. It
was devised by artist Nicola Ellis and funded by Arts Council England.
- [Nicola Ellis](http://www.nicolaellis.com)
- [Ritherdon](https://www.ritherdon.co.uk/about-us/)
- [Arts Council England](https://www.artscouncil.org.uk/)
### About the Artist: Nicola Ellis
Nicola is interested in the properties, value, function and
circulation of materials. She has a current focus on metals and the
companies that work with them, her work draws on the visual and spoken
language of industry operations, fabrication and profiling
processes. The parameters for her sculpture, installation, drawings
and videos include relationships between people, businesses and
technology.
### About the Manufacturer: Ritherdon
Established in 1895, Ritherdon have been manufacturing a variety of
electrical enclosures and related products for many decades. A
combination of a passion for innovation with close working
relationships with their customers means that they are continually
developing and expanding their product ranges.
### About: Arts Council England
They were set up in 1946, by Royal Charter, to champion and develop
art and culture across the country. They are governed by an Executive
Board and National and Area Councils.
- [Arts Council England's Royal
Charter](https://www.artscouncil.org.uk/sites/default/files/download-file/Consolidated_Royal_Charter_2013.pdf)
## Light Meter: Project Overview
Light Meter is one of three smaller projects which fall within the
Return to Ritherdon project. You should view the three smaller
projects as one project but, at the time of writing, the project does
not have a name. So, for the time being, I will refer to it as
'Artwork 1'.
### 'Artwork 1': Project Overview
The overall project ("Artwork 1" not 'Return to Ritherdon' or 'Light
Meter') consists of three separate/smaller projects. The names of the
smaller projects are a by-product of the software development
process. You should not view them as individual pieces within the
overall project. From an artwork point-of-view, "Artwork 1" is one
piece. The name of the software projects are 'Light Meter' (which is
this one), 'Midpoint' and 'Relay'. All three projects reside in their
own git repositories. You can find the other project's repositories at
the following links:
- [Mid-Point](https://git.abbether.net/return-to-ritherdon/midpoint)
- [Relay](https://git.abbether.net/return-to-ritherdon/relay)
The (technical) aim of the project is to turn a set of lights on at
the gallery when the welding machines are active in the welding booths
at Ritherdon. The solution we arrived at was a three-stage
process. The stages are as follows:
1. Monitor the light levels in the welding booths at Ritherdon and
send that information to a sever (Light Meter).
2. Receive the light readings and store them in a database and make
them available for others to access (Midpoint).
3. Have the lights installed at the gallery connected to wi-fi enabled
relays which request the latest light readings from the server. If
the readings are above a certain threshold, have the light in the
gallery turn on (otherwise, turn off). The relays are responsible
for turning the lights on and off (Relay).
Each step should require no human intervention.
For more information on how each project accomplishes its task, please
use the (repo.) links above. Otherwise, here is an diagram to help
explain the three stages mentioned above.
![main-proj-architecture](attachments/main-proj-architecture.png)
## Hardware Specifications
Here are the list of parts used in this project:
- [Raspbian](https://www.raspberrypi.org/downloads/raspbian/) (You can
use the G.U.I. or "headless" version)
- [Raspberry Pi
4](https://www.raspberrypi.org/products/raspberry-pi-4-model-b/) (I
am assuming you have the appropriate power cable, S.D. cards Etc.)
- [Light
Sensor](https://www.amazon.co.uk/s/ref=as_li_ss_tl?url=search-alias=aps&field-keywords=LDR&linkCode=ll2&tag=pimylifeup-21&linkId=8662811b5623ce86540420c7e8ce0268&language=en_GB)
(I tend to use "light sensor" and "light meter" interchangeably --
sorry if confusing)
- [2 x 1kΩ
Resistor](https://www.amazon.co.uk/1K-Resistors-50-Pack-Electronics/dp/B00JGUE0L0)
- [330nF
Capacitor](https://www.alibaba.com/product-detail/ODOELEC-334-0-33uf-330nf-50v_60626664828.html)
-
[Breadboard](https://thepihut.com/products/raspberry-pi-breadboard-half-size)
(Optional but recommended if you do not know how-to solder or you
don't feel comfortable doing it)
- [Jumper
Wires](https://thepihut.com/products/rpi-premium-jumper-wires-40pk-male-female-100mm?_pos=18&_sid=4d08c5200&_ss=r)
(I'm assuming you are using the breadboard. If are not, you might
need different cables like Female-to-Female or ones without a
connector on the ends)
### Raspberry Pi Technical Specifications
The information below was taken from [Raspberry Pi
Foundation](https://www.raspberrypi.org/products/raspberry-pi-4-model-b/specifications/)'s
website.
- Broadcom BCM2711, Quad core Cortex-A72 (ARM v8) 64-bit SoC @ 1.5GHz
- 2GB, 4GB or 8GB LPDDR4-3200 SDRAM (depending on model)
- 2.4 GHz and 5.0 GHz IEEE 802.11ac wireless, Bluetooth 5.0, BLE
- Gigabit Ethernet
- 2 USB 3.0 ports; 2 USB 2.0 ports.
- Raspberry Pi standard 40 pin GPIO header (fully backwards compatible with previous boards)
- 2 × micro-HDMI ports (up to 4kp60 supported)
- 2-lane MIPI DSI display port
- 2-lane MIPI CSI camera port
- 4-pole stereo audio and composite video port
- H.265 (4kp60 decode), H264 (1080p60 decode, 1080p30 encode)
- OpenGL ES 3.0 graphics
- Micro-SD card slot for loading operating system and data storage
- 5V DC via USB-C connector (minimum 3A*)
- 5V DC via GPIO header (minimum 3A*)
- Power over Ethernet (PoE) enabled (requires separate PoE HAT)
- Operating temperature: 0 – 50 degrees C ambient
**A good quality 2.5A power supply can be used if downstream USB
peripherals consume less than 500mA in total.**
- [Raspberry Pi 4 Model B product
brief](https://static.raspberrypi.org/files/product-briefs/200521+Raspberry+Pi+4+Product+Brief.pdf)
- [Raspberry Pi 4 Model B schematic
diagrams](https://www.raspberrypi.org/documentation/hardware/raspberrypi/schematics/rpi_SCH_4b_4p0_reduced.pdf)
- [Raspberry Pi 4 Model B mechanical
drawing](https://www.raspberrypi.org/documentation/hardware/raspberrypi/mechanical/rpi_MECH_4b_4p0.pdf)
## Project Set-Up
Light Meter consists of two parts: hardware and software. The hardware
part focuses on the electronics attached to the Raspberry Pi 4 and the
software side focuses on installing the required software dependencies
onto the operating system and any 'maintenance' tasks for sustained
use of the device (whilst in operation). For the actual code written
specifically for this project, please refer to the [project's
code repository](https://git.abbether.net/return-to-ritherdon/light-meter).
### Initial Raspbian Set-up
Upon the initial installation of Raspbian on to the Pi, you need to
make sure the following is established:
- The username is "rtrp".
- The host-name is "factory#" (where "#" is a number between 1 and 3).
- The Pi is set to auto-login with the "rtrp" account.
You can set the Pi up to automatically login to the desktop but the
recommended option is to login to a "headless" environment
(I.E. console-mode). Remember, you can only log into the desktop
environment if your version of Raspbian has one. The final version of
this project does not expect one.
### Hardware Preparations
#### Network Connections
Before installing the Raspberry Pi in its final location
(gallery/exhibition), make sure it can connect to the galleries
internet -- either via wi-fi or Ethernet cable. If you use an Ethernet
cable, you do not need to do anything, but the wi-fi requires a little
work on the command-line (if you are using a "headless" version of
Raspbian). If you are unsure how to connect to a router via wi-fi, use
the following link to learn how:
- [Raspbian Wi-Fi
Tutorial](https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md)
The easiest way to do this is via the "raspi-config" file/command. You
can access it by entering `sudo raspi-config` into the console and
entering the "Network Options" section. For the other ways of
connecting to a wireless network, I recommend you read the tutorial
because it can get complicated and the options are numerous.
#### Light-Meter Set-Up
The light-meter is a custom addition to the Raspberry Pi which is
built using the Pi's general-purpose input and output (G.P.I.O.)
pins. You can see the layout of the components connected to the Pi in
the diagram below.
![hardware-layout](attachments/hardware-layout.png)
Depending on the type of enclosure you use, you might find it more
convenient to have the actual light-meter (component) connected to the
breadboard with a pair of jumper wires. To help explain the point,
please see the image below.
![light-meter-extension](attachments/light-meter-extension.png)
#### Power Supply
I am under the impression this device will run in a fully functional
building (I.E. the Ritherdon factory). Because of this, I have taken
no precautions or steps to assume a loss of power beyond the typical
scenarios found in a U.K. factory environment. I have no idea how the
Pi will operate whilst powered via batteries or other "mobile" power
sources. With that said, make sure you can place the Pi where you want
it whilst still being able to power it.
The Raspberry Pi should be programmed to turn itself off at a
designated time. At the time of writing it is expected to be around 6
P.M. with a plug with a timer cutting all power to the Pi
approximately 30 minutes after that (when the factory usually powers
down for the day). When the factory's electrics are turned on at the
start of a working day, the Pi will be included in that process. It
will require no intervention from any of the workforce -- apart from
the initial factory start-up process.
### Software Preparations
Depending on what version of Linux/Raspbian you are running, you might
need to install some dependencies. I have listed the common ones I
came across whilst developing this project. But, you might need to
rely on your own cunning to track down missing dependencies.
```bash
# Don't forget to apt update and upgrade first...
sudo apt install python3-pip
sudo pip3 install requests
sudo pip3 install RPi.GPIO
# You might need to install RPi.GPIO via apt
sudo apt install python3-rpi.gpio
# I will explain why this is here below...
mkdir ~/repos
```
**Note: I decided not to create/use a (Python) virtual environment
because of the projects objectives. I expect the software in this
repository to run on an unmanned machine with only one task to
complete. The environment this project will run in/on will not change
throughout the course of the exhibition. So, the redundancies afforded
by the virtual environment are not needed.**
When you clone this repository, you need to make sure you clone it
into the following location: `/home/rtrp/repos/light-meter/`. From
there, run the following command,
```bash
# This must be the first thing you run after you have cloned
# the repository.
. ~/repos/light-meter/make-log-files.sh
```
You can test the code is working properly by running it. You can do
that by entering `sudo python3 ~/repos/light-meter/cli_meter.py` into
the console. This is assuming the server specified in "cli_meter.py"
is set-up and working as intended.
**Note: For some reason, I had trouble running "cli_meter.py" without
`sudo`. I would sometimes get an error message saying "RPi.GPIO is not
available/installed" (paraphrased). If you manage to get it working
without the use of `sudo`, remain as you were. Otherwise, keep a
mental note of this if you come across the problem.**
When you are ready to run this project as intended, you can set-up a
cron-job for it. To do so enter `sudo crontab -e` into the console
(see note about `sudo` above). You might need to select an editor if
this is your first time setting up a cron-job. I tend to go for Nano
-- which is option "1" most of the time. When the crontab file opens,
enter the following commands at the bottom of the file,
```bash
@reboot bash /home/rtrp/repos/light-meter/startup.sh &
00 18 * * * /home/rtrp/repos/light-meter/shutdown.sh
```
These tasks make the Raspberry Pi send a message to the sever to
indicate its/their status ("on" or "off") and makes the "cli_meter.py"
script run. At this point, you should be able to walk away and let the
Pi do its thing. This is assuming the server is up and running and the
Pi is connected to the world-wide-web. If all is successful, you will
notice the Pi will turn itself off at 18:00 (6 p.m.) and will start
sending light reading when you turn it on without any input from
you. Unfortunately, the Pi can only manage the shutdown procedure on
its own. You will need to turn it on. (This has been accounted whilst
the exhibition is open.)
To make sure the Pi sends a "powering down" message to the server, I
tend you create an alias called `powerdown`. When you type this into
the console, it runs the "shutdown.sh" script -- which has the
shutdown command within it. To make the alias permanent, enter
`alias='~/repos/light-meter/shutdown.sh'` into `~/.bashrc`. This is
easier to test the bespoke shutdown procedure is working as
intended. You can, also, adjust the time in the crontab or run the
script by running the script like you normally would but I find them
to be frustrating to do in this instance.