added images and updated documentation

This commit is contained in:
Sebastian Wendel 2022-12-19 02:25:34 +01:00
parent 0269371c0f
commit 5b32f6c09e
No known key found for this signature in database
GPG key ID: 1422B7DF78144640
132 changed files with 4359 additions and 38 deletions

Binary file not shown.

View file

@ -0,0 +1,133 @@
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the overall
community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or advances of
any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email address,
without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
[INSERT CONTACT METHOD].
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series of
actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within the
community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.1, available at
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
[https://www.contributor-covenant.org/translations][translations].
[homepage]: https://www.contributor-covenant.org
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
[Mozilla CoC]: https://github.com/mozilla/diversity
[FAQ]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations

View file

@ -0,0 +1,93 @@
# Getting in touch with the community
[planktoscope.com/community/](http://planktoscope.com/community/)
Thank you! You represent the heart of PlanktoScope. Without your support and belief in the PlanktoScope mission, we wouldn't be where we are today.
The **PlanktoScope Community** interface is our latest project. It consists of:
- [The People](http://planktoscope.com/community/people/) - you! The people making posts and creating challenges
- [The Feed](http://planktoscope.com/community/) - where new community posts end up
- [Join](http://planktoscope.com/community/wp-login.php?action=register) - the way to register (send this to your friends)!
After you [register](http://planktoscope.com/community/wp-login.php?action=register) and are verified (we must approve your application), your account will be switched from **subscriber** to **contributor**. After this, you'll be able to create posts and challenges! Posts appear in the [Community Feed](http://planktoscope.com/community/), and challenges appear on the Challenges Page. More on this below.
## Editing Your Profile
Upon registering, you should have received an email with your Login/Password. If you did not, reach out to me and Ill help you recover it. To edit your profile:
1. Go to the [PlanktoScope Wordpress login](http://planktoscope.com/community/wp-login.php) & enter your Login/Password
- Navigate to “Profile” on the left-hand side of the admin page
- Add any missing information
- Click the “Save” button to confirm
**Note**: your profile will not appear on the People Page until you have a first name, last name, and photo. All other info is optional (but encouraged)!
If your profile is still not showing up on the People Page, reach out to [contact@planktoscope.com.](mailto:contact@planktoscope.com.) Well make sure your profile is active and set up as a contributor.
## Making Posts
Making a post is a great way to share a cool project, tutorial, or research study that youve completed. In general, a post should be something finished (a hack, a lesson, a research study with findings, etc.).
Our community page is based on the Wordpress platform. If youve used Wordpress before, youll feel right at home. If not, no worries—its easy! Log in the same way you would to edit your profile. When you log in, the Wordpress admin page should appear with an option to see the Posts section. Click on it and select Add New from the menu. Next, follow [this great tutorial](https://www.wpbeginner.com/beginners-guide/how-to-add-a-new-post-in-wordpress-and-utilize-all-the-features/) on how to write a Wordpress post. You are now ready to start sharing your work!
## On The Horizon
The PlanktoScope Community interface will be forever under development. We really want your feedback! If you have suggestions, please email [planktoscope@gmail.com](mailto:planktoscope@gmail.com).
As we move forward, we want to improve the level of interactivity between community members and also provide incentives for posting cool projects and challenges.
In addition, we are thinking about ways to enable you to request and share biodata with other members of the PlanktoScope Community. Of course the priority will always be that all data exchanged in this way belongs to the individual who generates the data (first and foremost) and will remain open for others access.
## Final Note
The PlanktoScope Community is only as strong as its members. We are calling upon you (!) to help us push the PlanktoScope mission forward by collaborating with each other and going the extra step to share the work that you do. The more we all contribute and collaborate, the more the community benefits as a whole! **Let's see what we can build together!**
## Github
<https://github.com/PlanktoScope/PlanktoScope/issues>
## Mailinglist
<https://www.planktoscope.org/join>
## Slack
<https://planktoscope.slack.com>
## Sharing photos
Please create pages here and show off your favourite micrographs, build pictures, and so on. The more information you add, the better - we'd love to know how you prepared your samples, what configuration of microscope you have, and whether you're happy with your images being reused. We would suggest you add a simple notice somewhere on the page with a license and attribution - e.g.
<https://www.planktoscope.org/gallery>
```txt
Copyright 2020 Your Name, released under CC-BY 3.0
```
Submit an issue with your photos. You need a Github account. You can drag and drop images, and then fill in the copyright details.
Edit the wiki yourself. To edit the wiki you will need to be a project member. Please request access from the link at the top of the project homepage. See the editing guidelines for more details.
## Ask a question
If you have questions or suggestions, we would love to know! This helps us improve and document the OpenFlexure Microscope better.
## These are the best ways to ask questions or provide feedback
1. Check our [Frequently Asked Questions](../faq.md), and check whether someone has already [raised an issue](https://gitlab.com/openflexure/openflexure-helpdesk/) similar to yours.
2. Raise an issue on our [Github helpdesk](https://gitlab.com/openflexure/openflexure-helpdesk/-/issues/new).
3. Join the discussion in our [Discourse forum](https://openflexure.discourse.group).
4. Chat with us and our community in our [Gitter](https://gitter.im/OpenFlexure-Microscope/Lobby).
5. Tweet us [@OpenFlexure](https://twitter.com/openflexure).
6. [Email us](mailto:contact@openflexure.org).
## Twitter
- @ThibautPollina
- #PlanktoScope

48
docs/community/trainer.md Normal file
View file

@ -0,0 +1,48 @@
# Trainer notes
## Organizing a Build Workshop
### Planing the workshop
- Definiere die Ziele des Workshops.
- Ermittle die Bedürfnisse der Workshop-Teilnehmer.
- Erstelle einen Ablauf deiner Workshop Präsentation.
- Weise jedem Eintrag auf dem Ablauf eine erwartete Dauer zu.
- Handouts für die Teilnehmer vor.
- Nutze visuelle Mittel.
- Nutze webbasierte Werkzeuge, wenn möglich.
- Richte einen Raum oder Platz ein, um Diskussionen zu fördern.
- Bringe interaktive Aktivitäten in deinen Workshop ein.
- Baue einen Frage/Antwort Teil ein.
- Get to know the participants
- Define the purpose
- Set a clear goal
- Plan for more than just a day
- Prepare for the unexpected
- Set the scene
#### The site
### Announcing the workshop
- on the [community channels](/community)
### Material procurement
### Conduct the workshop
- Complete a check-in
- Go over the ground rules
- Share the agenda and set expectations
- Build trust with an icebreaker
- Facilitate, dont control
- Encourage (multimedia) documentation
- Assess goal completion
- Complete check-out
- Communicate the next steps
- Paint the big picture and communicate progress
- Activate and engage
### Follow-up
Ask for feedback

View file

@ -0,0 +1,118 @@
<!--
SPDX-License-Identifier: CC-BY-SA-4.0
-->
# Contributing
First of all, thank you for contributing to the PlanktoScope! The goal of this document is to provide everything you need to know in order to contribute to PlanktoScope.
There are several ways to join the development effort, share your progress with your build or just ask for help.
We are using slack as a communication platform between interested parties. You can [request to join by filling this form](https://docs.google.com/forms/d/e/1FAIpQLSfcod-avpzWVmWj42_hW1v2mMSHm0DAGXHxVECFig2dnKHxGQ/viewform).
This repository is also a good way to get involved. Please fill in an issue if you witnessed a bug in the software or hardware. If you are able, you can also join the development effort. Look through the [issues opened](https://github.com/PlanktonPlanet/PlanktoScope/labels/good%20first%20issue) and choose one that piques your interest. Let us know you want to work on it in the comments, we may even be able to guide your beginnings around the code.
- [Contributing](#contributing)
- [Assumptions](#assumptions)
- [How to Contribute](#how-to-contribute)
- [Development Workflow](#development-workflow)
- [Git Guidelines](#git-guidelines)
- [Release Process (for internal team only)](#release-process-for-internal-team-only)
## Assumptions
1. **You're familiar with [git](https://git-scm.com/) and the [Merge Request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)(PR) workflow.**
2. **You've read the PlanktoScope [documentation](https://planktonscope.readthedocs.io/) and the [images/readme](/images/readme.md).**
3. **You know about the PlanktoScope [community on Slack](https://planktoscope.slack.com/). Please use this for help.**
## How to Contribute
1. Make sure that the contribution you want to make is explained or detailed in a GitHub issue! Find an [existing issue](https://github.com/PlanktoScope/PlanktoScope/issues) or [open a new one](https://github.com/PlanktoScope/PlanktoScope/issues/new/choose).
2. Once done, [fork the PlanktoScope repository](https://docs.github.com/en/get-started/quickstart/fork-a-repo) in your Github account. Ask a mastertainer if you want your issue to be checked before making a PR.
3. [Create a new Git branch](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository).
4. Review the [Development Workflow](#development-workflow) section that describes the steps to mastertain the repository.
5. Make the changes on your branch.
6. [Submit the branch as a PR](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request) pointing to the `master` branch of the master fabcity-os-core-chart repository. A mastertainer should comment and/or review your Pull Request within a few days. Although depending on the circumstances, it may take longer. We do not enforce a naming convention for the PRs, but **please use something descriptive of your changes**, having in mind that the title of your PR will be automatically added to the next [release changelog](https://github.com/PlanktoScope/PlanktoScope/releases).
## Development Workflow
### Setup <!-- omit in toc -->
In order to use the different tools on this repository, you will first need to:
```sh
```
### Tests and Linter <!-- omit in toc -->
Each PR should pass the linter to be accepted.
```sh
make lint
```
Each PR should also check if the generated file `manifests/fcoscore.yaml` is updated with the new modifications.
You can generated the manifest with the command line:
```bash
helm template fcoscore . | grep -v 'helm.sh/chart:\|app.kubernetes.io/managed-by:' > manifests/PlanktoScope.yaml
```
Or just by comment the PR:
```txt
@PlanktoScope sync-manifest
```
Additionally, the CI will run a test to check if there are changes introduced to the charts. If changes were introduced, it will require you to update the Chart version.
## Git Guidelines
### Git Branches <!-- omit in toc -->
All changes must be made in a branch and submitted as PR.
We do not enforce any branch naming style, but please use something descriptive of your changes.
### Git Commits <!-- omit in toc -->
As minimal requirements, your commit message should:
- be capitalized
- not finish by a dot or any other punctuation character (!,?)
- start with a verb so that we can read your commit message this way: "This commit will ...", where "..." is the commit message.
e.g.: "Fix the home page button" or "Add more tests for create_index method"
We don't follow any other convention, but if you want to use one, we recommend [this one](https://chris.beams.io/posts/git-commit/).
### Pull Requests <!-- omit in toc -->
Some notes on PRs:
- [Convert your PR as a draft]() if your changes are a work in progress: no one will review it until you pass your PR as ready for review.<br>
The draft PR can be very useful if you want to show that you are working on something and make your work visible.
- The branch related to the PR must be **up-to-date with `master`** before merging. Fortunately, this project [integrates a bot]() to automatically enforce this requirement without the PR author having to do it manually.
- All PRs must be reviewed and approved by at least one mastertainer.
- The PR title should be accurate and descriptive of the changes. The title of the PR will be indeed automatically added to the next [release changelogs]().
## Release Process (for internal team only)
PlanktoScope tools follow the [Semantic Versioning Convention](https://semver.org/).
### Automation to Rebase and Merge the PRs <!-- omit in toc -->
This project integrates a bot that helps us manage pull requests merging.<br>
_[Read more about this]()._
### How to Publish the Release <!-- omit in toc -->
⚠️ Before doing anything, make sure you got through the guide about [Releasing an Integration]().
⚠️ Every PR that is merged to `master` introducing changes to the PlanktoScope needs to modify the file [``](), by increasing the version of the chart accordingly.
Every PR that is merged to `master` triggers the automated release process, as specified at [``](). A GitHub Action will be triggered and publish a new release on the GitHub repository [releases](). This will enable users to start using the new version of the chart immediately after publishing.
Thank you again for reading this through, we can not wait to begin to work with you if you made your way through this contributing guide ❤️
- pdfimages -all protocols/PlanktoScope\ -\ Setup\ and\ Sampling\ Guide\ VER3.pdf protocols/dumps/PlanktoScope_Setup_and_Sampling_Guide_VER3
sudo apt-get install pandoc texlive-latex-base texlive-fonts-recommended texlive-extra-utils texlive-latex-extra
sudo apt install poppler-utils

View file

@ -0,0 +1,11 @@
# Hardware Development
![planktoscope_hero](../images/project_description/planktoscope_versions.png)
## PlanktoScope Case
![](../images/logos/autodesk_fusion_360.png){ width="200" }
## PlanktoScope Hat
![](../images/logos/autodesk_eagle.png){ width="200" }

View file

@ -0,0 +1,26 @@
<!--
SPDX-License-Identifier: CC-BY-SA-4.0
-->
# Our software architecture
## Node-Red
![](../images/logos/node-red.svg){ width="100" }
[Node-Red](https://nodered.org/) is our main process. We use [the flow](https://nodered.org/docs/developing-flows/flow-structure) to manage our user interface through a dashboard instance.
## Python
![](../images/logos/python.svg){ width="200" }
The python code is separated in four main processes, each with a specific set of responsibilities:
- The main process controls all the others, starts everything up and cleans up on shutdown
- The stepper process manages the stepper movements.
- The imager process controls the camera and the streaming server via a state machine.
- The segmenter process manages the segmentation and its outputs.
Those processes all communicates together using MQTT and json messages. Each message is adressed to one topic. The high level topic controls which process receives the message. The details of each topic is at the end of this commit message. You can learn more about the [MQTT Messages here](mqtt_messages).
The code is architectured around 6 modules and about 10 classes. I encourage you to have a look at the files, they're pretty straightforward to understand.

View file

@ -0,0 +1,13 @@
<!--
SPDX-License-Identifier: CC-BY-SA-4.0
-->
# How to help development for the PlanktoScope code
We are using the [Github Flow approach](https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests) for our development efforts.
If you want to join us, have a look at the [currently opened issues](https://github.com/PlanktonPlanet/PlanktoScope/issues) and pick one where you feel like you can have an impact. Let us know you want to work it in the comments and get started.
For working on Node-Red, we recommend to install it directly on your development machine to allow for faster cycles of testing (and ease of use). But feel free to setup a Pi Zero as a portable and compact development environment! (One of us is using one configured as usb gadget to do so!)
If you don't know how to code, [the documentation could use your help](edit_this_doc)!

View file

@ -0,0 +1,35 @@
<!--
SPDX-License-Identifier: CC-BY-SA-4.0
-->
# Edit this documentation
This documentation is hosted by [ReadTheDocs.org](https://readthedocs.org/) at <https://planktonscope.readthedocs.io/>.
The source files are in the main [github repository](https://www.github.com/PlanktonPlanet/PlanktoScope), in the `docs` folder.
They are simple [Markdown files](https://www.markdownguide.org/), that you can edit in any text editor of your choice.
The local development and test is made using [mkdocs](https://www.mkdocs.org/). This allows you to test your documentation changes for styling issues and see what it will look like once rendered.
```sh
hatch run docs:serve
```
After installing mkdocs, you can use `mkdocs serve` in the main folder of this repository to start the development server.
If you want to include pictures and diagrams in the documentation, please set the pictures in a dedicated folder to the name of the page you are creating (for example, if your page is named `expert_setup.md`, please put all the related pictures in the `docs/expert_setup/` folder). Each picture should be named with a simple yet descriptive name, using jpg or png format if possible. Try to limit the size of the file by limiting the resolution to what is necessary for the picture to be clear on screen.
Contributions should be made by creating pull requests on [Github directly](https://github.com/PlanktonPlanet/PlanktoScope/pulls).
## Extensions available
In addition to the common markdown syntax, several extensions are activated. If you want more information on any of them, please follow the linked guides.
- [SmartyPants](https://python-markdown.github.io/extensions/smarty/): Converts ASCII dashes, quotes and ellipses to their HTML entity equivalents.
- [Sane Lists](https://python-markdown.github.io/extensions/sane_lists/): Alters the behavior of the Markdown List syntax to be less surprising.
- [Admonition](https://python-markdown.github.io/extensions/admonition/): Adds rST-style admonitions to Markdown documents.
- [Table of contents](https://python-markdown.github.io/extensions/toc/): Generates a Table of Contents from a Markdown document and adds it into the resulting HTML document.
- [Metadata](https://python-markdown.github.io/extensions/meta_data/): Adds a syntax for defining meta-data about a document.
- [Tables](https://python-markdown.github.io/extensions/tables/): Adds the ability to create tables in Markdown documents.
- [Fenced Code Blocks](https://python-markdown.github.io/extensions/fenced_code_blocks/): Adds a secondary way to define code blocks.

37
docs/faq.md Normal file
View file

@ -0,0 +1,37 @@
# Frequently Asked Questions
## What material is best to print with? What about print settings?
This is covered in the [printing instructions](https://build.planktoscope.org/planktoscope-microscope/latest/docs/#/0_printing). Short answer: use PLA, without any support material or adhesion layer. Layers of 0.1-0.3mm should be fine, I usually use 0.24. A brim might be useful, but not for the main body - use the "smart brim" instead.
## What's the best place to get STL files for a particular version of the microscope?
We're working on building nice pre-packaged zip archives of each version, but this is trickier than you'd think. In the meantime, the [printing instructions](https://build.planktoscope.org/planktoscope-microscope/latest/docs/#/0_printing) has a collection of lists of the right STL files for each major version.
## Are there nice simple instructions available for a particular version?
At the moment, the instructions try to cover all the options. Customised instructions are a [work in progress](https://gitlab.com/planktoscope/planktoscope-microscope/-/issues/24) and if you can help, please join in on that issue thread. Currently, you can most easily find the [current instructions in the online viewer](https://build.planktoscope.org/planktoscope-microscope/latest/docs).
## What's the magnification (or resolution, or field of view)?
See [Resolution and Field of View](../Make%20a%20microscope/Resolution%20and%20Field%20of%20View).
## How can I download a particular STL file?
The STL files are automatically generated from OpenSCAD and are published [here](https://planktoscope.org/projects/microscope/build).
## How can I print the microscope without soluble support material?
The microscope should print fine without any support material, and often without a raft or brim. We've never used soluble support. I have tested this on quite a lot of different plastic extrusion printers (RepRap, Ultimaker, MakerBot, Retr3d, and many more) and they all worked fine. Give the test piece a try first if you are unsure, and read the [issue](https://gitlab.com/planktoscope/planktoscope-microscope/-/issues/55) if you want more details.
## What's the best way to contact you with questions about the microscope?
We encourage everyone to [raise an issue](https://gitlab.com/planktoscope/planktoscope-helpdesk) if you have found something confusing or need more information - it means the answer stays online so others can find it. If there's something that, for whatever reason, isn't appropriate for GitLab, contact Richard Bowman at the University of Bath (no emails here to avoid spam, but I'm quite googlable).
## How do I know if it's printed correctly?
This isn't documented as nicely as it could be but Richard made together some diagrams of the [quality checks](https://gitlab.com/planktoscope/planktoscope-microscope/-/blob/master/docs/original_images/microscope_body_quality_checks.pdf) he does to make sure it's printed OK.
## You refer to bits of the microscope and I don't know which bit you mean
There's a reference sheet on [the names of bits of the microscope](https://gitlab.com/planktoscope/planktoscope-microscope/-/blob/master/docs/original_images/microscope_body_part_names.pdf). This is for an older design, but should be useful.

View file

@ -0,0 +1,3 @@
# Funding
The PlanktoScope project has been made possible by the generous support of a number of funders:

View file

@ -0,0 +1,342 @@
<!--
SPDX-License-Identifier: CC-BY-SA-4.0
-->
# Assembly guide of the PlanktoScope
![Complete](../images/assembly_guide/pictures/complete.webp)
## Step 0: Gather everything you need
- Laser cut structure
- M12 lenses
- Peristaltic pump and tubing
- Raspberry Pi, motor driver board, GPIO connectors
- Flashed SD card
- Stepper motors
- PiCam and flex cable
- GPIO ribbon connector, headers, HATs, LED
- DC Power terminal
- Magnets
- Super glue
- Standoffs (M2.5), M3 screws and nuts
Make sure you have your screwdriver kit, soldering iron, and components ready. Also, remember to flash the PlanktoScope image disk on the SD card before installing the Raspberry Pi.
If you are not familiar with any process, such as soldering, tapping, or wiring, try and familiarize yourself with the topics first.
Soldering deals with high heat and potentially toxic materials, so make sure to use the proper precautions.
## Step 1: Laser cutting
![Step1](../images/assembly_guide/pictures/step1.webp)
Laser cut all components using the .ai file ensuring all cuts are complete. The current design should have a 5mm material thickness. Start by placing laser cut base A on a flat workspace. Make sure all holes are complete, and negative space is clear.
!!! warning
If you are doing the laser cutting yourself, please take the time to check the calibration of the machine and its power output for the material you are using. A tight fit is needed between the different plates to avoid unwanted play between critical parts.
## Step 2: Standoff installation
![Step2](../images/assembly_guide/pictures/step2.webp)
![Step2 standoff location](../images/assembly_guide/render/Step2.webp)
Place 8 standoffs (M2.5 6mm) into the designated holes on the laser-cut base A. A pair of pliers make the job more comfortable. Do not overtighten as it is possible to crack the base material.
![Step3](../images/assembly_guide/pictures/step3.webp)
## Step 3: Motor HAT preparation
![Step4](../images/assembly_guide/pictures/step4.webp)
Insert and solder the terminal blocks and headers onto the motor driver PCB.
![Step5](../images/assembly_guide/pictures/step5.webp)
Place the motor driver PCB on to the indicated standoffs.
## Step 4: Magnets setup
![Step6](../images/assembly_guide/pictures/step6.webp)
Now is a good time to think about how the magnets will function within the microscope. The magnets in the sample stage will need to attract to the magnets on the flow cell holder. The magnets in the objective holder will need to attract the magnets on the mount. Keep this in mind as you are adding your magnets and tapping your respective M12 holders so your orientation will be correct.
![Step8](../images/assembly_guide/pictures/step8.webp)
You can now fix your magnets into their appropriate holes on sample stage **B**.
It is recommended to glue the magnets in place. If the magnets are too large to fit in, the holes can be widened with a handheld drill. However, they should be quite snug in place. Before you glue them in place make sure that the polarity is maintained, as they will be impossible to remove after gluing.
## Step 5: Sample stage assembly
![Step9](../images/assembly_guide/pictures/step9.webp)
Dont be alarmed by the color swap, this is the sample stage **B**. You can now fit the pegs on the driver mounts into the corresponding holes on the sample stage. They should be glued in place with superglue or epoxy. You can spin the shaft to align the driver mounts on the 2 steppers if it helps making the process easier.
![Step10](../images/assembly_guide/pictures/step10.webp)
You should now have a sample stage and motor assembly that looks like this.
## Step 6: Lenses tapping and mounting
![Step12](../images/assembly_guide/pictures/step12.webp)
You now need to tap the holes for the M12 lenses in stage and mount **M** and **D**. It is helpful for alignment to do both the objeDtive and tube lens mount together. It is important to do this as straight as possible. A drop of mineral or olive oil can help the process. Be careful to use a right-hand tap (that goes down when turning clockwise).
![Step13](../images/assembly_guide/pictures/step13.webp)
![Step14](../images/assembly_guide/pictures/step14.webp)
![Step6-2](../images/assembly_guide/render/step6-2.webp)
You can now screw the objective lens (the 25mm one) in part **D**.
![Step14](../images/assembly_guide/pictures/step15.webp)
## Step 7: Camera preparation
You can now unscrew the lens from the Pi camera, being careful not to disturb the sensor below.
![Image22](../images/assembly_guide/pictures/image22.webp)
![Image30](../images/assembly_guide/pictures/image30.webp)
## Step 8: Camera mount
![Step17](../images/assembly_guide/pictures/step17.webp)
You can mount the camera using the appropriate holes on the camera mount **G**. Be careful to avoid getting oil or dust on the sensor.
## Step 9: LED preparation
![Step18](../images/assembly_guide/pictures/step18.webp)
The LED can then be wired up and put into its mount **F**. If you wire the LED yourself, remember to give enough length to reach the motor driver on the other end of the microscope. You can also add a bit of glue to fix **F** to the motor mount **E** at this time to make assembly easier, though it is not required.
!!! warning
![Led](../images/assembly_guide/render/led.webp)
This picture shows the correct wiring for the LED. Please make sure the red wire is on the long pin of the LED.
## Step 10: Vertical slices assembly
You can now start placing the motor mount/LED assembly- **B**,
![Step5](../images/assembly_guide/render/step5.webp)
**C**,
![Step6](../images/assembly_guide/render/step6.webp)
**D**,
![Step7](../images/assembly_guide/render/step7.webp)
**E**,
![Step8](../images/assembly_guide/render/step8.webp)
**F**,
![Step8](../images/assembly_guide/render/step9.webp)
and **G** into the base **A**.
## Step 11: Pump setup
The pump can then be mounted in place on **H**. Thread the wires through the hole with the pump tubing pointed toward the holes on the mount.
![Step19](../images/assembly_guide/pictures/step19.webp)
Fix the pump in place.
![Step20](../images/assembly_guide/pictures/step20.webp)
## Step 12: Pump mounting
You can now mount the pump on base **A**.
![Step15](../images/assembly_guide/render/step15.webp)
Your setup should look like this. Don't worry about the wiring, we'll have a look at it in the next step!
![Step21](../images/assembly_guide/pictures/step21.webp)
## Step 13: Motor HAT wiring
![Step22](../images/assembly_guide/pictures/step22.svg)
You will now want to wire the steppers and pump to the terminals on the motor driver board.
!!! info
The PlanktoScope **uses only bipolar stepper motors** (with 4 wires coming out, and two coils inside), so you need to identify the two wires working together for each coil. The [RepRap Wiki has great information](https://reprap.org/wiki/Stepper_wiring#.22pair.22_wires_on_4_wire_motors) on how to do this, either with a multimeter or without.
You can find more information about stepper motors and how they work in this [document](http://resources.linengineering.com/acton/attachment/3791/f-00ca/1/-/-/-/-/Stepper%20Motor%20Basics.pdf).
!!! tip
If your wires are too short, you can invert the pump and the focus wiring. However, you will have to remember to change the configuration later on.
!!! tip
Make sure the wires are properly connected by pulling on them a little. They should not come loose.
## Step 14: Raspberry Pi setup and installation
![Step24](../images/assembly_guide/pictures/step24.webp)
At this point, you can insert your flashed SD card into your Raspberry Pi. [Consult the guide for flashing your SD card](https://www.planktoscope.org/replicate/assemble-your-kit) before you do this. The heat sink can also be added to the processor.
!!! note
If you choose the Expert path, you still need to flash your sd card, either with the [lite version](https://downloads.raspberrypi.org/raspios_lite_armhf_latest) of Raspberry OS or with the [desktop version](https://downloads.raspberrypi.org/raspios_armhf_latest).
![Step16](../images/assembly_guide/render/step16.webp)
Mount the Raspberry Pi containing the flashed SD card on the standoffs attached to the laser cut base A.
## Step 15: Standoffs
![Step17](../images/assembly_guide/render/step17.webp)
Add 8 standoffs (M2.5 15mm) to fix the motor driver board and the Raspberry Pi to the base.
![Step25](../images/assembly_guide/pictures/step25.webp)
## Step 16: Camera flex cable
![Step26](../images/assembly_guide/pictures/step26.webp)
At this point you can use the Pi camera flex cable to connect the camera to the Pi. This is done by gently pulling up the tensioners, inserting the cable in the right orientation, then pushing the tensioners back in place to set the cable. Try not to kink or fold the flex cable too much as it is possible to damage it.
## Step 17: Power supply wiring
![Step29](../images/assembly_guide/pictures/step29.webp)
The power wires can be wired into place on the motor driver board.
!!! tip
Make sure the wires are properly connected by pulling on them a little. They should not come loose.
## Step 18: Prepare the GPS HAT
![Step18-1](../images/assembly_guide/render/step18-1.webp)
Insert the battery to power the GPS HAT and solder the terminal mounts in place.
## Step 19: Install the GPS HAT
![Step18](../images/assembly_guide/render/step18.webp)
Mount the GPS HAT over the motor driver PCB using the standoffs attached to the laser cut base **A**.
## Step 20: Install the Fan HAT
![Step19](../images/assembly_guide/render/step19.webp)
Place the cooling fan HAT above the Raspberry Pi by mounting it to the standoffs on base **A**.
!!! warning
Be careful to slide the camera flat cable in the slot in the HAT above the connector.
## Step 21: Secure the HATS
![Step20](../images/assembly_guide/render/step20.webp)
Secure the cooling fan HAT and GPS HAT by tightening the 8 screws to the standoffs on base A
## Step 22: Install back panel
![Step21](../images/assembly_guide/render/step21.webp)
Insert the laser cut border **I** into base **A**.
## Step 23: GPS output connector
![Step22](../images/assembly_guide/render/step22.webp)
Insert the power and GPS connectors into side plate **J**.
## Step 24: Install side panel
![Step23](../images/assembly_guide/render/step23.webp)
Place the side plate **J** into the designated slots on the base. You can connect the GPS cable to its connector on the board.
!!! warning
The GPS connector is quite fragile, make sure to align it properly before inserting it.
## Step 25: Install the other side panel
![Step25](../images/assembly_guide/render/step25.webp)
Mount the side plate **K** on base **A** using the assigned slots.
## Step 26: Secure the sides together
![Step26](../images/assembly_guide/render/step26.webp)
Secure the laser cut sides with the screws and nuts.
## Step 27: Secure the sides to the base plate
![Step27](../images/assembly_guide/render/step27.webp)
Secure the laser cut sides to the base plate **A** with the screws and nuts.
!!! warning
To make this easier, you can turn the assembly upside down or on its side. Be careful when doing so as the plates may fall.
## Step 28: Insert the camera ribbon cable in the camera
![Step28](../images/assembly_guide/pictures/step28.webp)
You can now connect the camera flex cable into the connector on the camera board. Once again, gently pull up the tensioners, insert the cable in the right orientation, and push the tensioners back in place to set the cable. Try not to kink or fold the flex cable too much as it is possible to damage it.
## Step 29: Assemble the GPIO ribbon cable
If you didn't get an already assembled ribbon cable, you need to build it yourself.
The orientation of the connector does not really matter. However, you need to make sure that both connectors are oriented in the same direction and are on the same side of the ribbon.
To assemble, slide the ribbon in its connector and close it off. You need to tighten it really hard. It's very warmly recommended to use a vice to do so.
!!! warning
Once assembled, the ribbon should NOT look like this:
![Ribbon wrong](../images/assembly_guide/pictures/ribbon_wrong.webp)
It should rather look like this:
![Ribbon good](../images/assembly_guide/pictures/ribbon_good.webp)
## Step 30: Insert the ribbon cable
![Step28](../images/assembly_guide/render/step28.webp)
Attach the GPIO ribbon to connect the cooling fan HAT to the GPS HAT.
!!! tip
You can try to route the flat ribbon from the camera under the ribbon cable you are connecting now.
![Step31](../images/assembly_guide/pictures/step31.webp)
## Step 31: Fluidic assembly
![Step29](../images/assembly_guide/render/step29.webp)
Feed in the tubing from syringe 1 to form the fluidic path as shown.
![Step30](../images/assembly_guide/render/step30.webp)
Feed in the tubing from syringe 2 to form the fluidic path as shown
![Step31](../images/assembly_guide/render/step31.webp)
Feed in a length of tubing as shown through motor mount **H** and illumination mount **FE**
![Step34](../images/assembly_guide/pictures/step34.webp)
## Step 32: Close your PlanktoScope
!!! warning
Take a moment to check your wiring one last time. Also check the routing, make sure the LED wires and the pump stepper wires are in their dedicated channel.
![Step33](../images/assembly_guide/render/step33.webp)
Place the top **L** into the slots on the PlanktoScope body. Secure it in place with screws and nuts.
![Step34](../images/assembly_guide/render/step34.webp)
## Step 33: Enjoy
Congratulations on a job well done. You can have some rest, get a tea and some biscuits!
![Step35](../images/assembly_guide/render/step35.webp)
You can now plug the machine in and test it. If you have choose the Expert's path, now is a good time to [finish setting up your machine](../software/expert_setup.md).
## Step 34: Read the getting started guide
[A guide to get started with your machine use is available!](../usage/getting_started.md)

View file

@ -0,0 +1,62 @@
# Chapter 1
## Notes
| Topic | Description |
| --------- | ----------- |
| **Time** | |
| **Tools** | |
| **Parts** | |
!!! warning
⚠ Be extremely careful because this is very sharp.
## Detach the **Parts** from **panels** by cutting the **tabs**
![Image title](https://dummyimage.com/600x400/eee/aaa){ align=left }
### 👁 Locate the **panel S1** and discover the 5 differents **Parts F, P, K, J and I**
### 🎬 Flip your panel S1
### 🔴 Locate the outer **tabs** on the edges of the different **Parts**
### 🟠 B2. Razor blade
!!! warning
⚠ Be extremely careful because this is very sharp.
### 🟣 Use the **razor blade** to cut the outer tabs located on the edges of the different Parts
❌ Do not cut the inner tabs present inside the different Parts for now and focus on the outer tabs attaching the Parts to the main panel.
Position your **razor blade** on the tab as close to the piece as possible to avoid residual tab after cutting.
Press firmly on the razor blade, being very careful with your finger, to cut your first tab.
Make sure you don't damage your table by placing a flat, rigid support under the **S1 panel**.
Keep going with the other tabs of this piece F.
Once you have removed your **Part** from the main panel by cutting off all the tabs holding it, inspect it for potential residual tabs.
🟣 Here is a **residual tab** that will need to be removed.
🟠 Here there is no **residual tab** which is perfect.
🟣 Place your razor **blade flat** on the edge of your piece being very careful with your fingers and cut the residual tab.
Repeat the cutting of the **tabs** on all the **Parts F, P, K, J and I** present on the **panel S1**.
⚠ Be extremely careful because this is very sharp.
🔴 Locate the **inner tabs** on the edges of the different **Parts**.
Cut out the **tabs** inside of all the **Parts F, P, K, J and I** detached from the **panel S1**.
✅ Good way of cutting inner tabs
❌ Wrong way of cutting inner tabs
Repeat the process on the **panel S2**.
󰔞 Discover the 11 differents **Parts**.

View file

@ -0,0 +1,78 @@
# Chapter 10
## Notes
| Topic | Description |
| --------- | ----------- |
| **Time** | |
| **Tools** | |
| **Parts** | |
## Mount the **Raspberry Pi Camera HQ** on **Part B**
🟣 Locate the 4 holes on the top of the **Part B**.
---
🔵 **A2**. Standoff M2.5 - 15mm - Brass
---
Insert the four **Standoff M2.5 - 15mm**.
---
The result should be similar to the picture.
---
🟢 **B4**. Wrenches for standoffs
---
Using the small side of the **Standoff Wrench**, secure the **4 M2.5 - 15mm Standoffs**
---
* ✅ Make sure to screw until the **Standoff** is properly tightened into the hole.
* ❌ Do not stop screwing before.
---
󰔞 Locate the **Raspberry Pi Camera HQ**
---
Remove the lens cap **Raspberry Pi Camera HQ**.
---
!!! warning
⚠ Make sure your camera lens is clean. If it is not, gently wipe using cotton swab for this task.
---
Place the **Raspberry Pi Camera HQ** on top of the four **Standoffs** installed on **Part B**.
🟣Ensure correct orientation of the **Raspberry Pi Camera HQ**. The **black connector** where the **Ribbon Cable** was removed is on the same side as the 🟢slot circled in green
---
🟠 **A4**. Screw M2.5X5mm CHC - SS
---
🟡 **B3**. Allen key 2mm
---
Use the allen key and tighten the **Raspberry Pi Camera** to the **Standoffs**.
---
The result should be similar to the picture.
!!! info
🎬 Store this assembly for later.

View file

@ -0,0 +1,62 @@
# Chapter 10
## Notes
| Topic | Description |
| --------- | ----------- |
| **Time** | |
| **Tools** | |
| **Parts** | |
## Mount the **Linear Stepper Motor** on **Part E**
󰔞 Locate the Stepper Motors ⚠ Avoid touching the metal rods on the Stepper Motors
🟣 You can touch the gold stands
---
🟡 **A5**. Screw **M2.5X10mm** CHC - SS
---
🟡 **B3**. Allen key 2mm
---
🔴 Lay the **Part E** down and make sure the pockets in these holes are
facing upwards.
🟣 Locate the four holes on **Part E** and place four M2 Screws in the holes.
---
Attach the stepper motors to the screws we have just placed with the 🔴 pockets positioned on opposite to the cabling.
The result should be similar to the picture.
---
Use the 2mm allen key to fix the **Stepper Motors**.
The result should be similar to that picture.
---
The result should be similar to the picture.
---
Repeat the process on the other side with the other **Stepper Motor**.
---
Repeat the process on the other side with the other Stepper Motor.
---
The result should be similar to the picture.
!!! info
🎬 Store this assembly for later.

View file

@ -0,0 +1,19 @@
# Chapter 2
## Notes
| Topic | Description |
| --------- | ----------- |
| **Time** | |
| **Tools** | |
| **Parts** | |
## Place the 4 **Adhesive Pads** under the **Part I**
👁 Take the Part I.
🟠 Take the four adhesive pads present in the bag A.
🟣 Locate the four pockets that will receive the four adhesive pads.
Remove the paper and place the four adhesive pads in the pockets by pressing firmly on them, sticky-side down.
🎬 Store this assembly for later.

View file

@ -0,0 +1,32 @@
# Chapter 3
## Notes
| Topic | Description |
| --------- | ----------- |
| **Time** | |
| **Tools** | |
| **Parts** | |
## Screw the four **Standoffs** into **Part A**
👁 Grab the **Part A**.
🟣 Locate the **four holes** on **Part A**.
🟢 **A1. Standoff M2.5 - 6mm**- Brass
🟢 **B4**. Wrenches for standoffs
🟣 Place the Standoff M2.5 - 6mm in the small side of the wrenches for
standoffs B4.
🟠 Do not use the big side of the wrenches for standoffs since the standoff will be loose in it.
Place the standoff in the hole and start rotating **by hand** in a clockwise direction until secure.
Then tighten with the wrench.
✅ Make sure to screw until the standoff is properly inserted in the hole.
❌ Do not stop screwing before.
Keep going for each of the **four holes**.

View file

@ -0,0 +1,27 @@
# Chapter 4
## Notes
| Topic | Description |
| --------- | ----------- |
| **Time** | |
| **Tools** | |
| **Parts** | |
## Mount the **Heat Sinks** on the **Raspberry Pi**
󰔞 Locate the **Raspberry Pi 4 Model B** packaging.
!!! warning
⚠ Be careful removing it from its packaging.
Place the **four Heat Sinks** next to your **Raspberry Pi** and mark the locations of the **Heat Sinks** on the **Raspberry Pi**.
🟠 & 🔵 **Small Heat Sinks**
🟢 **Medium Heat Sink**
🟣 **Big Heat Sink**
Remove the protective labels under a **Heat Sink** and place the **Heat Sink** on the slot of the **Raspberry Pi**.
Remove the protective labels under all the **Heat Sinks** and place all the **Heat Sinks** on the slots of the **Raspberry Pi**.

View file

@ -0,0 +1,22 @@
# Chapter 5
## Notes
| Topic | Description |
| --------- | ----------- |
| **Time** | |
| **Tools** | |
| **Parts** | |
## Insert the **micro SD card** in the **Raspberry Pi**
* 󰔞 Locate the **SD card adapter** in the **bag K**.
* The **micro SD card** is inserted in the SD card adapter.
* 🟣 Remove the **micro SD card** from the **SD card adapter**.
* Flip your **Raspberry Pi**.
* 🟠 Locate the **micro SD port**.
* 🟣 Insert the **micro SD card** in the **Raspberry Pi**.
* Push the **micro SD card** in the **Raspberry Pi** port to a point of resistance.
* If you notice that the **micro SD card** protrudes about 2mm from its slot, this is normal.

View file

@ -0,0 +1,25 @@
# Chapter 6
## Notes
| Topic | Description |
| --------- | ----------- |
| **Time** | |
| **Tools** | |
| **Parts** | |
## Mount the **Raspberry Pi** on the **Part A**
* ✅ Make sure to position the Raspberry Pi properly on the four standoffs screwed on the Part A.
* ❌ Do not invert the position of the Raspberry Pi on the four standoffs screwed on the Part A.
* 🟣 **A3. Standoff M2.5 - 16mm** - SS
* Screw by hand a Standoff M2.5 - 16mm on the **Raspberry Pi**.
* Screw by hand all Standoffs M2.5 - 16mm on the **Raspberry Pi**.
* Make sure you insert all four standoffs by hand and tighten slightly.
* 🟢 **B4**. Wrenches for standoffs
* 🟠 Secure the Standoff M2.5 - 16 mm - SS **A3** in the big side of the wrenches for standoffs **B4**.
* 🟣 Do not use the small side of the wrenches for standoffs since the standoff wont fit in it.

View file

@ -0,0 +1,58 @@
# Chapter 7
## Notes
| Topic | Description |
| --------- | ----------- |
| **Time** | |
| **Tools** | |
| **Parts** | |
## Attach the **Ribbon Cable** to the **Raspberry Pi**
󰔞 Locate the **Raspberry Pi Camera HQ** packaging.
!!! warning
⚠ Be careful removing it from its packaging.
---
Lay your **Raspberry Pi Camera** face down on a suitable surface.
🔴 The **black connector** is simply a push/pull fit. To disengage the cable, pull the two corners of the black connector down, away from the camera board. It will unclip to about 3mm, make sure you don't pull it off! If you're struggling, try pulling off one corner of the connector at a time.
!!! warning
⚠ Be careful with this, this part is delicate. Lift the black connector gently
---
Once the connector has been disengaged from the Raspberry Pi camera board, the cable will simply slide out!
* 🟣 Put aside Camera the Raspberry Pi
* 🟢 Keep the Ribbon Cable for next step.
---
* 🔴 Locate the **black connector** present on the **Raspberry Pi**.
---
🔴 The **black connector** is simply a push/pull fit. To disengage the cable, pull the two corners of the black connector down, away from the camera board. It will unclip to about 3mm, make sure you don't pull it off! If you're struggling, try pulling off one
corner of the connector at a time.
!!! warning
⚠ Be careful, this part is delicate. Gently prise the black connector with nail or fingertip and thumb.
---
Insert the **Ribbon Cable** you just detached from the **Raspberry Pi Camera** in the **Raspberry Pi**.
✅ Make sure to insert in as much as you can.
🟣 Blue rectangle on **Ribbon Cable** should face the same direction as the arrow below.
---
🔴 Secure the Ribbon Cable in the Raspberry Pi by pressing firmly on the black connector.

View file

@ -0,0 +1,58 @@
# Chapter 8
## Notes
| Topic | Description |
| --------- | ----------- |
| **Time** | |
| **Tools** | |
| **Parts** | |
## Mount the PlanktoScope HAT on the Raspberry Pi
### Locate
󰔞 Locate the **PlanktoScope HAT** present in **bag I**.
### Ribbon cable
🔴Thread the **Ribbon cable** through the **PlanktoScope HAT** slot from the
underside.
!!! warning
⚠ Make sure the two 🟣black connectors are aligned before threading through the ribbon.
### Plug
Plug the **PlanktoScope HAT** into the **Raspberry Pi**.
!!! warning
⚠ Make sure the two black connectors are aligned before attaching them together.
### Connect
Press the **PlanktoScope HAT** against the **Raspberry Pi** until it is no longer possible to move them closer together.
!!! warning
⚠ Continue to feed through the Ribbon Cable and do not crush it while pressing the PlanktoScope HAT against the standoffs.
---
🟠 **A4**. Screw **M2.5X5mm** CHC - SS
---
🟣 Locate the 4 holes on the top of the **PlanktoScope HAT** and insert the four **M2.5X5mm**
---
🟡 **B3**. Allen key 2mm
---
Screw the four **A4** screws through the **PlanktoScope HAT** onto the **Standoff M2.5 - 16mm**.
🎬 Store this assembly for later.

View file

@ -0,0 +1,30 @@
# Chapter 9
## Notes
| Topic | Description |
| --------- | ----------- |
| **Time** | |
| **Tools** | |
| **Parts** | |
## Place the **Power Socket** on **Part M**
󰔞 Locate the **DC Power Jack** from the **Bag K**.
Remove the **Lock Ring** from the **DC Power Jack**
---
* 🔴 Lay the **Part M** down and make sure the pockets in these holes are facing upwards.
* 🟣 Locate the **Power Socket** hole on **Part M**.
---
🔴 Insert the cable inside of the hole by being sure of the orientation of the **Part M**.
---
* 🟣 Flip the **Part M** and secure the **DC Power Jack** by hand on the **Part M** by screwing the **Lock Ring**.
* ⚠ Make sure the **Lock Ring** doesnt spin on itself.
* 🎬 **Store this assembly for later**.

View file

@ -0,0 +1,11 @@
<!--
SPDX-License-Identifier: CC-BY-SA-4.0
-->
# Plankton Net
![network list](../images/hardware/planktoscope_collecting_device.png)
The simplest device you can use is a plankton net. It should be made of a fine mesh, down to 20 micron. It can be towed behind a boat at low speed (less than 2 knots) or towed by hand in a river or a lake.
Plankton nets can be made easily with a good sewind machine and some hardware.

View file

@ -0,0 +1,39 @@
# Content of the Kit
* note on the mapping of the component in the task to number in the BOM
## Bag A
## Bag B
## Bag C
## Bag D
## Bag E
## Bag F
## Bag G
## Bag H
## Bag I
## Bag J
## Bag K
## Bag L
## Bag M
## X1
## X2
## X3
## X4
## X5

View file

@ -0,0 +1 @@
# Disposal and recycling

View file

@ -0,0 +1,64 @@
<!--
SPDX-License-Identifier: CC-BY-SA-4.0
-->
# PlanktoScope Hat Hardware
## Buses and GPIO pinout
### I2C1 Bus
#### RTC RV-3028-C7
Address 0x52
Configured through a kernel driver.
#### OLED Display
Address 0x3c
#### LED control: LM36011
Address 0x64
Control through specific software, current range from 0 to 376mA in normal mode, up to 1.5A in flash mode.
### SPI0 Bus
#### Motor Controller 0: TMC5160
Chip Enable: SPI0_CE0
Motor Enable: GPIO23
Diagnostic output:
GPIO16 for Error output
GPIO20 for Stall output
#### Motor Controller 1: TMC5160
Chip Enable: SPI0_CE1
Motor Enable: GPIO5
Diagnostic output:
GPIO16 for Error output
GPIO20 for Stall output
### GPIO
#### Fan control
PWM1 control through GPIO13
#### LED Output selection
GPIO18: high for LED1, low for LED2
#### LED Strobe
GPIO22 for pulse
### I2C0 Bus
#### EEPROM M24C32
Address 0x50
For HAT information only.

View file

View file

@ -0,0 +1,11 @@
# Manufacturing
## PlanktoScope Case
![](../images/hardware/planktoscope_case_parts_00.png)
![](../images/hardware/planktoscope_case_00.png)
## PlanktoScope Hat
![](../images/hardware/planktoscope_hat_front.png)
![](../images/hardware/planktoscope_hat_back.png)

View file

@ -0,0 +1,98 @@
<!-- {{ read_csv('../../hardware/bom.csv') }} -->
<https://www.bmas.de/DE/Service/Gesetze-und-Gesetzesvorhaben/Gesetz-Unternehmerische-Sorgfaltspflichten-Lieferketten/gesetz-unternehmerische-sorgfaltspflichten-lieferketten.html>
<https://www.csr-in-deutschland.de/DE/Wirtschaft-Menschenrechte/Gesetz-ueber-die-unternehmerischen-Sorgfaltspflichten-in-Lieferketten/gesetz-ueber-die-unternehmerischen-sorgfaltspflichten-in-lieferketten.html>
<https://de.wikipedia.org/wiki/Lieferkettengesetz>
Die Sorgfaltspflichten der Unternehmen erstrecken sich auf die gesamte Lieferkette vom Rohstoff bis zum fertigen Verkaufsprodukt.
Die Anforderungen an die Unternehmen sind nach den unterschiedlichen Stufen in der Lieferkette abgestuft:
eigener Geschäftsbereich,
unmittelbarer Zulieferer,
mittelbarer Zulieferer.
Und nach:
Art und Umfang der Geschäftstätigkeit,
dem Einflussvermögen des Unternehmens auf den Verursacher der Verletzung,
der typischerweise zu erwartenden Schwere der Verletzung,
der Art des Verursachungsbeitrags des Unternehmens.
Die Anforderungen sind nach dem Einflussvermögen der Unternehmen in der Lieferkette abgestuft.
Unternehmen müssen sowohl im eigenen Geschäftsbereich als auch beim unmittelbaren
Zulieferer folgende Maßnahmen umsetzen:
Grundsatzerklärung zur Achtung der Menschenrechte verabschieden.
Risikoanalyse: Verfahren zur Ermittlung nachteiliger Auswirkungen auf die Menschenrechte durchführen.
Risikomanagement (inklusive Präventions- und Abhilfemaßnahmen) zur Abwendung potenziell negativer Auswirkungen auf die Menschenrechte
Beschwerdemechanismus einrichten.
Transparent öffentlich Bericht erstatten.
Im eigenen Geschäftsbereich müssen Unternehmen im Fall einer Verletzung im Inland unverzüglich Abhilfemaßnahmen ergreifen, die zwingend zur Beendigung der Verletzung führen.
Beim unmittelbaren Zulieferer muss das Unternehmen einen konkreten Plan zur Minimierung und Vermeidung erstellen, wenn es die Verletzung nicht in absehbarer Zeit beenden kann.
Bei mittelbaren Zulieferern:
Hier gelten die Sorgfaltspflichten nur anlassbezogen und nur wenn das Unternehmen Kenntnis von einem möglichen Verstoß erlangt.
In dem Fall hat das Unternehmen unverzüglich:
Eine Risikoanalyse durchzuführen.
Ein Konzept zur Minimierung und Vermeidung umsetzen.
Angemessene Präventionsmaßnahmen gegenüber dem Verursacher zu verankern. Die Umsetzung von Brancheninitiativen ist hierbei eine Möglichkeit.
Das Gesetz gilt auch für Zweigniederlassungen ausländischer Unternehmen in Deutschland, wenn sie insgesamt mehr als 3.000 Mitarbeitende (ab 2023) beziehungsweise 1.000 Mitarbeitende (ab 2024) in Deutschland beschäftigen.
Der Geschäftsbereich deutscher Unternehmen wird erweitert: Kontrollierte Tochterunternehmen im Ausland werden zum eigenen Geschäftsbereich gerechnet und gelten nicht als erster Zulieferer.
Ein weiteres Umweltabkommen, das Basler Abkommen zu Abfallexporten, wurde ergänzt. Dieses dient auch dem Schutz der menschlichen Gesundheit.
Beim mittelbaren Zulieferer gelten Brancheninitiativen als angemessene Präventionsmaßnahme.
Betriebsräte müssen über die Umsetzung des Gesetzes informiert werden.
Klarstellung: Eine Verletzung der Pflichten aus diesem Gesetz begründet keine zivilrechtliche Haftung. Eine unabhängig von diesem Gesetz begründete zivilrechtliche Haftung bleibt unberührt.
Klarstellung: Wenn ein Produktionsland internationale Abkommen nicht ratifiziert hat, ist das per se kein Grund, die Geschäftsbeziehungen in dieses Land abzubrechen.
Ein neuer Titel: Lieferkettensorgfaltspflichtengesetz (LkSG).
- The total number of suppliers and sites in your supply chain, and how they are distributed around the world
- Non-compliances by country and type
- Worker type analysis ie agency workers that represent a vulnerable group
- Gender breakdown, and issues that disproportionately affect men and women
- Suppliers at risk of lapsing their Sedex membership
- When suppliers are due for an audit
- <https://www.apics.org/docs/default-source/toc-pdfs/strategy-report-short.pdf>
- <https://sscs.mit.edu/wp-content/uploads/2022/07/MIT-CTL-State-Supply-Chain-Sustainability-2022.pdf>
- <https://www.thebci.org/static/e02a3e5f-82e5-4ff1-b8bc61de9657e9c8/BCI-0007h-Supply-Chain-Resilience-ReportLow-Singles.pdf>
- <https://www.ey.com/en_gl/supply-chain/supply-chain-sustainability-2022>
- <https://www.nstauthority.co.uk/media/8192/sc-report_final_accessible.pdf>
- <https://www.bmz.de/de/themen/lieferkettengesetz>
- <https://www.bgbl.de/xaver/bgbl/start.xav>#**bgbl**%2F%2F\*%5B%40attr_id%3D%27bgbl121s2959.pdf%27%5D\_\_1671334142633
- <https://www2.deloitte.com/content/dam/Deloitte/de/Documents/risk/Deloitte_CSR_Brochure_final.pdf>
## Components
### Raspberry Pi
| Criteria | Description |
| --------------------- | ----------- |
| Article | |
| Manufacturer | |
| Production country | |
| Production conditions | |
| Local availability | |
| Transportation | |
| Raw materials | |
| Recycling | |
| Waste | |
| Risk | |
| Alternatives | |
| Implications | |
### Source
- business@raspberrypi.com
- <http://www.designlife-cycle.com/raspberry-pi>
### Notes
### Camera Module
- <http://www.designlife-cycle.com/image-sensor>

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 289 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 501 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 496 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View file

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="512" width="512" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 511.99999 511.99999">
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g transform="translate(0 -540.36)">
<rect style="color:#000000" height="392" width="512" y="540.36" x=".000013828" fill="#8f0000"/>
<rect ry="0" height="108.23" width="500.23" stroke="#fff" y="938.25" x="5.886" stroke-width="11.772" fill="#fff"/>
<g transform="matrix(4 0 0 4 -162 -450.91)">
<path style="color-rendering:auto;text-decoration-color:#000000;color:#000000;isolation:auto;mix-blend-mode:normal;shape-rendering:auto;solid-color:#000000;block-progression:tb;text-decoration-line:none;image-rendering:auto;white-space:normal;text-indent:0;text-transform:none;text-decoration-style:solid" d="m122.88 305.82c-2.3846 0-4.3789 2.0376-4.3789 4.4222v0.77344c-2.2304 0.10995-4.0388 0.5467-5.3281 1.4316-1.5951 1.0948-2.4675 2.582-3.1816 3.877-0.71415 1.295-1.2996 2.4093-2.1504 3.1894-0.72545 0.66525-1.7997 1.1216-3.4512 1.3301-0.21359-2.192-2.0615-3.9512-4.3052-3.9512h-17.167c-2.3846 0-4.4165 1.965-4.4165 4.3496v4.2422c0 2.3846 2.0319 4.3516 4.4165 4.3516h17.167c2.3846 0 4.3872-1.9669 4.3872-4.3516v-1.6133c9.7257 0.15307 12.467 2.6032 15.594 5.3379 3.0006 2.6241 6.6658 5.3789 15.436 5.4948v0.73633c0 2.3846 2.0695 4.3799 4.4541 4.3799h17.092c2.3846 0 4.4541-1.9952 4.4541-4.3799v-4.2422c0-2.3846-2.0695-4.3779-4.4541-4.3779h-17.092c-2.3846 0-4.4541 1.9933-4.4541 4.3779v0.58594c-8.0984-0.0599-10.486-2.1557-13.498-4.7897-2.5035-2.1893-5.6398-4.5852-11.947-5.5859 1.176-1.1795 1.8834-2.5192 2.5137-3.6621 0.67724-1.228 1.2899-2.2006 2.2695-2.873 0.76303-0.52371 1.9757-0.83922 3.6621-0.93945v0.55078c0 2.3846 1.9943 4.3356 4.3789 4.3356h17.242c2.3846 0 4.3789-1.951 4.3789-4.3356v-4.2422c0-2.3846-1.9943-4.4222-4.3789-4.4222zm0 3h17.242c0.80513 0 1.3789 0.6171 1.3789 1.4222v4.2422c0 0.80514-0.57378 1.3356-1.3789 1.3356h-17.242c-0.80513 0-1.3789-0.53045-1.3789-1.3356v-4.2422c0-0.80513 0.57378-1.4222 1.3789-1.4222zm-39.962 11.016h17.167c0.80513 0 1.4165 0.60112 1.4165 1.4062v4.2422c0 0.80513-0.61138 1.4082-1.4165 1.4082h-17.167c-0.80513 0-1.4165-0.60307-1.4165-1.4082v-4.2422c0-0.80513 0.61137-1.4062 1.4165-1.4062zm57.038 9.984h17.092c0.80513 0 1.4541 0.5728 1.4541 1.3779v4.168c0 0.80513-0.64898 1.4541-1.4541 1.4541h-17.092c-0.80513 0-1.4541-0.64897-1.4541-1.4541v-4.168c0-0.80513 0.64897-1.3779 1.4541-1.3779z" fill="#fff"/>
</g>
<g transform="matrix(1.0024 0 0 1.0024 .26914 -2.6855)" fill="#8f0000">
<path d="m90.51 954.73v8.4388l-7.9801 1.4384v59.934h-13.931l-28.465-46.989-0.49878 0.048v37.111l7.9805 1.4384v8.3908h-28.929v-8.3908l7.4319-1.4384v-50.105l-7.4319-1.4384v-8.4388h7.4319 14.001l28.302 46.989 0.14384-0.048v-37.063l-6.983-1.4384v-8.4388h20.971 7.9586z"/>
<path d="m94.501 998.12q0-11.603 6.4729-18.987 6.5209-7.4319 17.98-7.4319 11.507 0 17.98 7.3839 6.5209 7.3839 6.5209 19.035v1.0069q0 11.699-6.5209 19.083-6.4729 7.3359-17.884 7.3359-11.555 0-18.076-7.3359-6.4729-7.384-6.4729-19.083v-1.0069zm14.001 1.0069q0 7.0963 2.4933 11.411 2.4933 4.2674 8.0552 4.2674 5.4181 0 7.9114-4.3153 2.5412-4.3153 2.5412-11.364v-1.0069q0-6.9044-2.5412-11.268-2.5412-4.3632-8.0072-4.3632t-7.9593 4.3632-2.4933 11.268v1.0069z"/>
<path d="m183.77 1018.2c-1.6302 2.3973-3.5641 4.2193-5.8017 5.466-2.2056 1.2466-4.7308 1.8797-7.5757 1.8797-6.393 0-11.364-2.3432-14.912-7.0101-3.5161-4.6669-5.1162-10.836-5.1162-18.508v-1.0069c0-8.1833 1.6161-14.784 5.1642-19.802 3.5481-5.0185 8.5348-7.5278 14.96-7.5278 2.5892 0 4.9226 0.57537 7.0003 1.7261 2.0777 1.1188 4.2289 2.7171 5.7952 4.7948v-18.604l-7.9806-1.4384v-8.4388h7.6513 14.295v64.969l5.9854 1.4384v8.4102h-18.41l-1.0548-6.3484zm-19.44-18.172c0 4.5391 0.62786 8.1191 2.1302 10.74 1.5343 2.5891 4.0276 3.8837 7.4798 3.8837 2.0457 0 3.8198-0.4155 5.3222-1.2466 1.5023-0.8311 3.0626-2.0298 4.0216-3.5961v-22.008c-0.95893-1.6622-2.5192-2.9408-4.0216-3.8358-1.4704-0.927-3.2125-1.3905-5.2263-1.3905-3.4203 0-5.9135 1.5183-7.4798 4.555s-2.2261 7.0003-2.2261 11.891v1.0069z"/>
<path d="m232.87 1025.5c-7.48 0-13.457-2.3974-17.932-7.1921-4.4751-4.7947-6.7127-10.884-6.7127-18.268v-1.9179c0-7.7033 2.1097-14.048 6.3291-19.035 4.2513-4.9865 9.941-7.4419 17.069-7.41 7.0007 0 12.435 2.0878 16.302 6.3072 3.8678 4.2194 6.4539 9.93 6.188 17.117v7.5004h-31.36l-0.0959 0.4109c0.25573 3.4203 1.3905 6.2332 3.4043 8.4388 2.0457 2.2056 4.8107 3.3084 8.2949 3.3084 3.1006 0 5.6738-0.3037 7.7196-0.911 2.0457-0.6393 4.2833-1.6303 6.7127-2.9728l3.7879 8.6306c-2.1417 1.6941-4.9226 3.1166-8.3429 4.2673-3.3883 1.1507-7.1763 1.7261-11.364 1.7261zm-1.2466-43.057c-2.5892 0-4.635 0.99093-6.1373 2.9728s-2.4293 4.587-2.781 7.8154l0.14385 0.39233h17.299v-1.3992c0-2.9727-0.83677-5.3381-2.2432-7.0962-1.3745-1.7901-3.4682-2.6851-6.2811-2.6851z"/>
<path d="m291.02 1000.6h-26.934v-10.973h26.934z"/>
<path d="m330.82 954.73c7.9273 0 14.145 1.822 18.652 5.466 4.5071 3.6121 6.3914 8.6152 6.3914 15.008 0 3.5161-0.57382 6.5684-2.4598 9.1576-1.8859 2.5892-4.6509 4.6829-8.2949 6.2811 4.1235 1.2147 7.0802 3.2445 8.8703 6.0894 1.822 2.8129 2.8819 6.3133 2.8819 10.501v3.5481c0 1.5343 0.15475 2.733 0.76208 3.5961 0.60734 0.8311 1.6142 1.3265 3.0207 1.4863l1.2051 0.2398v8.4387h-6.7191c-4.571 0-7.7835-1.2306-9.6375-3.6919s-2.5972-5.6419-2.5972-9.5416v-3.9796c0-3.3883-1.0948-6.0414-2.9168-7.9593-1.7901-1.9499-4.3313-2.9727-7.6237-3.0686h-11.406v18.412l6.9825 1.4384v8.3908h-28.929v-8.3908l7.9805-1.4384v-50.105l-7.9805-1.4384v-8.4388h7.8932 23.926zm-9.9252 30.782h9.6854c3.8997 0 6.8245-0.8311 8.7744-2.4933s2.9248-4.0596 2.9248-7.1921c0-3.1326-0.97493-5.6259-2.9248-7.4798-1.9179-1.8859-4.7628-2.8289-8.5347-2.8289h-9.8718v19.994z"/>
<path d="m411.73 993.62h-22.944v19.951h22.163l0.62332-7.9805h10.181v18.942h-54.914v-8.3908l7.9806-1.4384v-50.105l-7.9806-1.4384v-8.4451h7.5735 47.245v18.954h-10.277l-0.62332-7.9806h-21.972v16.959h22.944v10.973z"/>
<path d="m461.1 954.75c8.5347 0 15.567 2.7087 21.097 8.1747 5.5299 5.4341 8.3382 12.392 8.3382 20.927v11.555c0 8.5667-2.8082 15.593-8.3382 21.027-5.5299 5.4021-12.562 8.1031-21.097 8.1031h-31.416v-8.3908l6.983-1.5117v-50.105l-6.983-1.3652v-8.4145l7.4424-0.0733 23.974 0.0754zm-10.468 10.737v48.283l9.7484 0.026c5.0185 0.013 8.9502-1.6942 11.795-5.0825 2.8449-3.3883 4.3934-7.7938 4.3934-13.26v-11.651c0-5.4021-1.5486-9.8189-4.3934-13.207-2.8449-3.3883-6.7765-5.0824-11.795-5.0824l-9.7484-0.0262z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.7 KiB

View file

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View file

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="388.8pt" height="115pt" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Python programming language logo</title>
<metadata>
<rdf:RDF>
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</rdf:RDF>
</metadata>
<defs>
<linearGradient id="vlpc" x1="151" x2="112" y1="192.4" y2="137.3" gradientTransform="matrix(.5625 0 0 .568 -9.4 -5.305)" gradientUnits="userSpaceOnUse">
<stop style="stop-color:#ffd43b" offset="0"/>
<stop style="stop-color:#ffe873" offset="1"/>
</linearGradient>
<linearGradient id="vlpb" x1="26.65" x2="135.7" y1="20.6" y2="114.4" gradientTransform="matrix(.5625 0 0 .568 -9.4 -5.305)" gradientUnits="userSpaceOnUse">
<stop style="stop-color:#5a9fd4" offset="0"/>
<stop style="stop-color:#306998" offset="1"/>
</linearGradient>
<radialGradient id="vlpa" cx="61.52" cy="132.3" r="29.04" gradientTransform="matrix(2.383e-8 -.2964 1.437 4.684e-7 -128.5 150.5)" gradientUnits="userSpaceOnUse">
<stop style="stop-color:#b8b8b8;stop-opacity:.498" offset="0"/>
<stop style="stop-color:#7f7f7f;stop-opacity:0" offset="1"/>
</radialGradient>
</defs>
<path d="m184.6 61.93c0-14.56-4.152-22.04-12.46-22.45-3.304-0.156-6.531 0.3704-9.669 1.589-2.505 0.8967-4.191 1.784-5.078 2.68v34.76c5.312 3.334 10.03 4.883 14.14 4.64 8.704-0.5751 13.06-7.642 13.06-21.22zm10.24 0.6043c0 7.398-1.735 13.54-5.224 18.42-3.889 5.527-9.279 8.373-16.17 8.529-5.195 0.1657-10.55-1.462-16.05-4.874v31.59l-8.909-3.178v-70.12c1.462-1.793 3.343-3.334 5.624-4.64 5.302-3.09 11.75-4.679 19.33-4.757l0.1267 0.1267c6.93-0.08773 12.27 2.758 16.02 8.529 3.499 5.293 5.254 12.08 5.254 20.37z" style="fill:#646464"/>
<path d="m249.3 83.27c0 9.923-0.9942 16.79-2.983 20.62-1.998 3.821-5.8 6.872-11.41 9.143-4.552 1.793-9.474 2.768-14.76 2.934l-1.472-5.614c5.371-0.731 9.153-1.462 11.35-2.193 4.318-1.462 7.281-3.704 8.909-6.706 1.306-2.447 1.949-7.115 1.949-14.03v-2.32c-6.092 2.768-12.48 4.143-19.15 4.143-4.386 0-8.256-1.374-11.59-4.143-3.743-3.012-5.614-6.833-5.614-11.46v-37.08l8.909-3.051v37.32c0 3.987 1.287 7.057 3.86 9.211 2.573 2.154 5.907 3.187 9.991 3.109 4.084-0.08773 8.46-1.667 13.11-4.757v-43.54h8.909v48.41z" style="fill:#646464"/>
<path d="m284.1 89c-1.062 0.08772-2.037 0.1267-2.934 0.1267-5.039 0-8.967-1.199-11.77-3.606-2.797-2.408-4.201-5.731-4.201-9.971v-35.09h-6.102v-5.605h6.102v-14.88l8.899-3.168v18.05h10.01v5.605h-10.01v34.85c0 3.343 0.8967 5.712 2.69 7.096 1.54 1.14 3.987 1.793 7.32 1.959v4.64z" style="fill:#646464"/>
<path d="m338 88.27h-8.909v-34.39c0-3.499-0.8188-6.511-2.447-9.026-1.881-2.846-4.493-4.269-7.846-4.269-4.084 0-9.192 2.154-15.32 6.462v41.22h-8.909v-82.2l8.909-2.807v37.44c5.692-4.143 11.91-6.219 18.67-6.219 4.718 0 8.538 1.589 11.46 4.757 2.934 3.168 4.396 7.115 4.396 11.83v37.19z" style="fill:#646464"/>
<path d="m385.4 60.53c0-5.595-1.062-10.21-3.178-13.87-2.515-4.454-6.423-6.803-11.71-7.047-9.767 0.5653-14.64 7.564-14.64 20.98 0 6.15 1.014 11.29 3.061 15.41 2.612 5.254 6.531 7.846 11.76 7.759 9.806-0.07798 14.71-7.817 14.71-23.23zm9.757 0.05848c0 7.963-2.037 14.59-6.102 19.88-4.474 5.926-10.65 8.899-18.54 8.899-7.817 0-13.91-2.973-18.31-8.899-3.987-5.293-5.975-11.92-5.975-19.88 0-7.486 2.154-13.78 6.462-18.91 4.552-5.439 10.54-8.168 17.93-8.168 7.398 0 13.42 2.729 18.06 8.168 4.308 5.127 6.462 11.42 6.462 18.91z" style="fill:#646464"/>
<path d="m446.2 88.27h-8.909v-36.34c0-3.987-1.199-7.096-3.597-9.338-2.398-2.232-5.595-3.314-9.581-3.226-4.23 0.07798-8.256 1.462-12.08 4.143v44.76h-8.909v-45.86c5.127-3.733 9.845-6.17 14.15-7.31 4.065-1.062 7.651-1.589 10.74-1.589 2.115 0 4.104 0.2047 5.975 0.6141 3.499 0.809 6.345 2.31 8.538 4.513 2.447 2.437 3.665 5.361 3.665 8.782v40.85z" style="fill:#646464"/>
<path d="m60.51 6.398c-4.584 0.0213-8.961 0.4122-12.81 1.094-11.35 2.005-13.41 6.2-13.41 13.94v10.22h26.81v3.406h-26.81-10.06c-7.792 0-14.62 4.684-16.75 13.59-2.462 10.21-2.571 16.59 0 27.25 1.906 7.938 6.458 13.59 14.25 13.59h9.219v-12.25c0-8.85 7.657-16.66 16.75-16.66h26.78c7.455 0 13.41-6.138 13.41-13.62v-25.53c0-7.266-6.13-12.72-13.41-13.94-4.606-0.7667-9.385-1.115-13.97-1.094zm-14.5 8.219c2.77 0 5.031 2.299 5.031 5.125-2e-6 2.816-2.262 5.094-5.031 5.094-2.779-1e-6 -5.031-2.277-5.031-5.094-1e-6 -2.826 2.252-5.125 5.031-5.125z" style="fill:url(#vlpb)"/>
<path d="m91.23 35.05v11.91c0 9.231-7.826 17-16.75 17h-26.78c-7.336 0-13.41 6.278-13.41 13.62v25.53c0 7.266 6.319 11.54 13.41 13.62 8.487 2.496 16.63 2.947 26.78 0 6.75-1.954 13.41-5.888 13.41-13.62v-10.22h-26.78v-3.406h26.78 13.41c7.792 0 10.7-5.435 13.41-13.59 2.799-8.399 2.68-16.48 0-27.25-1.926-7.757-5.604-13.59-13.41-13.59h-10.06zm-15.06 64.66c2.779 3e-6 5.031 2.277 5.031 5.094-2e-6 2.826-2.252 5.125-5.031 5.125-2.77 0-5.031-2.299-5.031-5.125 2e-6 -2.816 2.262-5.094 5.031-5.094z" style="fill:url(#vlpc)"/>
<path d="m463.6 26.91h1.562v-9.796h3.7v-1.168h-8.962v1.168h3.7v9.796m6.647 0h1.334v-8.947l2.896 8.946h1.486l3.018-8.916v8.917h1.456v-10.96h-1.926l-3.298 9.393-2.813-9.393h-2.153v10.96" style="fill:#646464"/>
<path transform="matrix(.7341 0 0 .8095 16.25 27.01)" d="m110.5 132.3a48.95 8.607 0 1 1-97.9 0 48.95 8.607 0 1 1 97.9 0z" style="fill:url(#vlpa);opacity:.4438"/>
</svg>

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 390 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 810 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 768 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 610 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1,014 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Some files were not shown because too many files have changed in this diff Show more