On this page you find our ideas for the next step in our roadmap. Please use these ideas to define a project for collaborating with us in programs PSLab participates, e.g. for our organization applications for Seasons of Docs or, internships or in Google Summer of Code.
Google Summer of Code Ideas
Project 1: Add support for PSLab to sigrok
The sigrok project is signal analysis software suite which supports various measurement devices such as oscilloscopes, logic analyzers, multimeters, etc. Since PSLab provides several such instruments, it could be added as a mixed signal device to libsigrok.
Having support for the PSLab board in libsigrok would provide two major benefits to the Pocket Science Lab project:
- Common backend: pslab-python and pslab-android currently share a lot of duplicate functionality for communicating with the board. Since libsigrok supports Android, we could use it as a common backend to reduce duplication.
- Protocol decoding: While the PSLab board provides a logic analyzer, neither pslab-python nor pslab-android currently provides any protocol decoders. This means captured logic traces must be manually decoded, which is very time consuming. Sigrok provides many protocol decoders, which we could benefit from if PSLab were supported by libsigrok.
Related material:
Sigrok homepage: https://sigrok.org/
Project 2: Circuitpython busio compatibility layer for pslab-python
Adafruit maintains a large repository of sensor drivers written for circuitpython, a fork of micropython. These sensor drivers use circuitpython’s busio module, which provides support for I2C, SPI, UART, and 1-wire protocols. The PSLab board also provides support for these protocols, with the exception of 1-wire. By writing a compatibility layer between busio and pslab-python’s serial bus modules, we would gain support for all sensors supported by Adafruit.
Related material:
Circuitpython busio documentation: https://circuitpython.readthedocs.io/en/latest/shared-bindings/busio/
Season of Docs Ideas
Project 1: Learn through experimentation with PSLab
This documentation project tries to put together, in an informative and educational way, all the concepts that can be learned through experimentation with the PSLab project. The task of the technical writer would be to put together detailed tutorials of the experiments that can be done with PSLab in a way that the final user can learn about some interesting topics.
Related material:
Project link: https://github.com/fossasia?utf8=%E2%9C%93&q=pslab
Documentation link: https://github.com/fossasia/pslab-documentation
Features to be documented:
Use Case: 1. Learn about electricity with PSLab
- Electricity
- Resistance
- Power Source
- Multimeter
- Other experiments
Use Case: 2. Learn electronics and Hardware development with PSLab
- LED experiment with PSLab
- Mutimeter
- Wave generator experiment
- WiFi in PSLab
- Reprograming PSLab
- PSLab Board design and development
Use Case: 3. Learn about the environment with PSLab
- Humidity sensor
- Lux meter
- Dust sensor
- Thermometer
- Barometer
- Gas Sensor
- Others
Project 2: Python and robotics with PSLab
PSLab a python library, in this idea the technical writer will put a set of tutorials for students with very low or no knowledge of python to use PSLab to discover and learn about this language through experimentation with the platform. By creating different sections that increasingly introduce python concepts through experimentation with PSLab students will be able to learn through experimentation, one of the main targets of the PSLab platform. This work includes the documentation of the Python API as well as the creation of experimental tutorials.
Related material:
Project link: https://github.com/fossasia/pslab-python
Documentation link: https://github.com/fossasia/pslab-python/blob/development/README.m
Features to be documented:
Use Case: 1. Python learning with PSLAB
- Python module installation
- Usage of Python module
- First application with python module
- Integrate your application with PSLab using python module
Use Case: 2. Learning robotics through PSLab
- Introduction to robot mechatronics
- Introduction to ROS
- ROS and PSLab python library
- The meArm robot as a use case
- Create a ROS component to control the meArm with PSLab
- Adapt the ROS component to control other robots with PSLab
For questions regarding Season of Docs please contact: marcoDOTantDOTgutierrezATgmailDOTcom
Season of Docs Mentors:
M Padmal
![M Padmal](https://webcf.waybackmachine.org/web/20220128054105im_/https://i0.wp.com/pslab.io/wp-content/uploads/Padmal.jpg?resize=209%2C209&ssl=1)
Padmal is an Electronic and Telecommunication Engineering graduate with a first class from University of Moratuwa, Sri Lanka. Being a past GSoC student building up the PSLab project with FOSSASIA, his interests lies in hardware/firmware development.
Contact: blogDOTpadmalATgmailDOTCOM
Hong Phuc
![Hong Phuc](https://webcf.waybackmachine.org/web/20220128054105im_/https://i0.wp.com/pslab.io/wp-content/uploads/hpdang.jpg?resize=217%2C217&ssl=1)
Hong Phuc is an ambassador of Science Hack Day, co-founder of FOSSASIA, and organizer of Open Tech events across Asia. She is also a consultant on Open Source and InnerSource for large corporations.
Contact: hpATfossasiaDOTorg
Lorenz Gerber
![](https://webcf.waybackmachine.org/web/20220128054105im_/https://i0.wp.com/pslab.io/wp-content/uploads/WhatsApp-Image-2018-12-18-at-16.08.481.jpeg?resize=220%2C220&ssl=1)
Lorenz currently develops Cloud High Performance Computing pipelines for Bioinformatics applications at the Genome Institute of Singapore
Contact: lorenzDOTgerberATprovementDOTse
Marco A. Gutiérrez
![](https://webcf.waybackmachine.org/web/20220128054105im_/https://i0.wp.com/pslab.io/wp-content/uploads/marco.jpeg?resize=219%2C219&ssl=1)
Marco A. Gutiérrez is a PhD holder in cognitive vision planning for robotics systems. He has contributed to RoboComp, the Point Cloud Library and Open Perception. He is also a developer for Open Robotics and an AI enthusiast.
Contact: marcoDOTantDOTgutierrezATgmailDOTcom
Developers Programs
You can apply for internships here.
Below is the list of ideas. At the end of the page you find application guidelines.
Add Pocket Science Lab Apps to Debian, Improve Feature Set and Provide Autobuilds for Packages of Linux Systems
The Pocket Science Lab is an Open Hardware that comes with a basic desktop application in an early stage version. There is a prototype Debian package available that was generated semi-automatically. The goal of the summer project is to further develop the application to make the hardware fully functional on the Debian desktop and to fully automate the package build. The frontend used for the application is Electron. The student should also collaborate with other Debian members in order to include Electron in Debian.
- Confirmed Mentor: Norbert Preining
- How to contact the mentor: Email, chat, Gitter, (In order to stay in aligned throughout the program, please submit daily scrum email, participate in weekly team meetings over video conferencing software, write 4 monthly blog posts about technical aspects and create a final project presentation with slides and a screencast)
- Confirmed co-mentors: M. Padmal
- Deliverables of the project: The outcome of this summer project should be a well-tested PSLab desktop version for Linux systems such as Debian that is automatically built using CI tools. In order to achieve this goal the student has to develop the missing bits and pieces including creating frontend and adding features to the Python backend of the project.
- Desirable skills: Debian, Debian packaging, make (debian/rules is a Makefile), shell, automation, CI, Python, Electron, Web Technologies, Hardware knowledge
- Related projects: PSLab Desktop
Add Datalogger and Connect Features to PSLab Firmware and Applications
The firmware of the PSLab device is already in a very stable state. The next goal in the project is to enable the PSLab to collect data without being connected to a phone or computer. We want to have a fully functional data logger in the project. It is your task do extend the existing data logger capabilities and make this feature fully functional. It should be possible controlling data logger functionalities externally through the Android app, desktop or iOS via USB, WiFi or Bluetooth also should be possible as well as advanced scheduling data logging and interval measurements.
Required Features to be Developed:
- Implement use device as “data logger”
- Add support for MiniSD card
- Implement support for “record and play data”
- Implement support for time and date
- Implement record at certain times and interval
- Implement “send data to device or net address using WiFi or Bluetooth”
Repository and Issue Tracker: https://github.com/fossasia/pslab-firmware
Prerequisite Knowledge: Technology C
Possible Mentors: Lorenz Gerber,M Padmal, Wei Tat Chung, Haggen So
Add Advanced Screen Support for LED Screens as Well as LED Badges to Firmware and Implement Controls in Android Application
The PSLab Firmware already has basic support for screens. In this summer project the goal is to extend the screen support for different kind of screens from fully colored LED displays to simple one colored pixel badges. Additionally support should be added to the Android app to display custom information on the added screen.
- Confirmed Mentor: Wei Tat Chung
- How to contact the mentor: Email, chat, Gitter, (In order to stay in aligned throughout the program, please submit daily scrum email, participate in weekly team meetings over video conferencing software, write 4 monthly blog posts about technical aspects and create a final project presentation with slides and a screencast)
- Confirmed co-mentors: Kok Waigie
- Deliverables of the project: At the end of the project users are able to use the screen on hardware easily as extensive functionalities are supported through the firmware. Users are furthermore able to use the screen as a display device for custom information or simply as a badge
- Desirable skills: C, Make File, Shell, Electronics, Python, Firmware, Electron, Android, Java, Kotlin, Hardware knowledge
- Related projects: https://github.com/fossasia/pslab-firmware
Add additionl Instruments to PSLab Android
Many instruments have been improved and new ones implemented. A number of additional instruments are still high on the wishlist of many users including ph meter, magnetometer and a distance measurement tool. Users also want to build experiments using different instruments at the same time and we need a section to be implemented for this new functionality. The Android app has seen big improvements and exciting features have been implemented over the last year, including recording, export and mapping features. These features have not been implemented in all instruments yet and there is work left here. Some areas also need improvements in regards to speed which are related to slower provision of map APIs of OSM for example. Furthermore we need more professional features like the ability to schedule experiments and to run them in intervals. Also exporting in other formats like JSON and Matlab, syncing and backup features are important. Finally the configuration of PSLab and the setup of the PSLab device via WiFi or Bluetooth as a data logger while unconnected needs to be developed.
Required Features to be Developed:
- Implement connect to device via Bluetooth or WiFi
- Implement setup device with ESP and provide all info on required steps in detail
- Implement export, settings, maps in all instruments
- Offer choice of Google Maps or OpenStreetMap in App settings
- Provide API to login and connect to external service and sync data
- Implement backup to Google Drive
- Add section “build experiments with several instruments”
- Add instruments: PH Meter, Magnetometer, Distance Measurements
- Implement Interval Recording, e.g. record every 10 minutes for 10 seconds
- Sensors: Provide a way to collect and store data
- Add section “build experiments with several instruments” following existing approach
- Implement configuration of device as independent data logger, e.g. device runs independently and records data in intervals, for a specific time etc.
Repository and Issue Tracker: https://github.com/fossasia/pslab-android
Google Play: https://play.google.com/store/apps/details?id=io.pslab
Fdroid: https://f-droid.org/packages/io.pslab/
Prerequisite Technology: Java and Kotlin
Possible Mentors: Wong Wan Leung, Lorenz Gerber,M Padmal, Wei Tat Chung
PSLab Desktop App
The goal of the next steps in the development of the desktop app is to follow the design approach of the Android app, implement export capabilities, the ability to connect it with the web app and reach feature parity with Android. Furthermore the goal is to enable building experiments with several instruments and accessing functionalities through the terminal. The desktop was developed firstly for Linux systems. It is rather complex to setup and using outdated versions of Python and libraries resulting on unexpected crashes. A main objective is therefore also to enhance stability and to automatically build packages for Linux, Windows and MacOS.
Required Features to be Developed:
- Adjust and implement architecture to enable the build of cross desktop desktop application for: Linux, Windows, MacOS
- Automatically build deb and other Linux packages on each merged PR
- Automatically build Windows exe or msi file on each merged PR
- Automatically build a Mac dmg file on each merged PR
- Design app according to instruments similar to Android app
- Add section “build experiments with several instruments” following existing approach
- Provide an external repository to add to Linux systems
- Provide documentation to make experiments with the application
- Add export capabilities, e.g. Matlab, CSV, JSON etc.
- Add terminal access (terminal in graphical UI)
Repository and Issue Tracker:
- Python Library: https://github.com/fossasia/pslab-python
- PSLab GUI Experiments using Qt and Python: https://github.com/fossasia/pslab-desktop
Prerequisite Knowledge: Python, APIs
Possible Mentors: M Padmal, Wong Wan Leung
PSLab Web App
The goal of the web app project is to enable different people to store their data independently of the device they use, to enable them to collect data from external devices (connected to a network via WiFi/Bluetooth) in the field and to collect and share data of groups. Sharing of data should be done through tables and spreadsheets and visualized on maps and charts/diagrams.
Required Features to be Developed:
- Implement Backend (API centric) and Frontend
- Convert Frontend to ReactJS
- Enhance account features, signup, login, passwords, store personal info, connect to social media accounts
- Implement “add device to your account”
- Implement API to store app settings (Android)
- Implement API to store and sync instrument data
- Implement Export to Google Docs
- Implement backup to Google Drive
- Implement group features: Group Admin, show data of all groups
- Implement show data on maps, take inspiration at http://aqicn.org
- Implement visualization of data on charts and diagrams
- Implement labeling of data, e.g. PH data etc.
- Implement storing data according to instruments of Android app
- Add export capabilities, e.g. Matlab, CSV, JSON etc.
- Implement Interval Recording, e.g. record every 10 minutes for 10 seconds
- Implement configuration of device as independent data logger, e.g. device runs independently and records data in intervals, for a specific time etc.
- Implement “Admin section” to store system configurations and system data, e.g. users, experiments (including deleted experiments), media storage, email service etc. (compare to open event admin)
- Implement private area where users can store data that is not public
Repository and Issue Tracker: https://github.com/fossasia/pslab-webapp
Prerequisite Knowledge/Technology: Python, Flask, ReactJS
Possible Mentors: Lorenz Gerber, M Padmal, Wei Tat Chung
Set of PSLab experiments and walk through
PSLab is a project meant for experimentation, the lack of experiments and walkthroughs will prevent people in the community to get involved in the project. By creating new experiments and developing the necessary tools for it the student will enable other community members to understand the usefulness of PSLab and spark their interest.
- Confirmed Mentor: Marco A. Gutierrez
- How to contact the mentor: [email protected]
- Confirmed co-mentors: Wei Tat
- Deliverables of the project: Set of PSLab tutorials to follow the experiments with PSLab
- Desirable skills: Electronics, Python, Electron, Web Technologies, Hardware knowledge
- Application tasks: Creating and development of new experiments, set up walk through information for new community members to reproduce the experiments.
- Related projects:
Develop Continuous Integration System Set Up and Develop Advanced Automated Tests to Maintain Quality of PSLab Apps
Quality of the software and hardware is very important in order to maintain the usability of the project. PSLab needs a Continuous Integration system that can help guarantee the quality of the software and as much of the hardware as possible. In this task the student will do a research on the possible CI systems that can be integrated with PSLab and its application. Then a full setup will be done and different unit tests will be integrated in order to keep the software from PSLab being continuously tested.
- Confirmed Mentor: Marco A. Gutierrez
- How to contact the mentor: [email protected]
- Confirmed co-mentors: Wei Tat
- Deliverables of the project: A CI system for the software applications of PSLab, should contain as many unit tests of the system as possible
- Desirable skills: Electronics, Python, Electron, Web Technologies, Hardware knowledge
- Application tasks: Selection and Implementation of a CI System, create unit tests and build tests on top of these
- Related projects: Jenkins, Github Actions, Travis, Circle CI
PSLab iOS
The goal of the iOS app development is to reach feature parity with the Android app.
Repository and Issue Tracker: https://github.com/fossasia/pslab-iOS
Prerequisite Knowledge/Technology: Swift
Possible Mentors: Jogendra, Lorenz Gerber, M Padmal, Wei Tat Chung
PSLab Hardware
PSLab V1
- Define: What enhancements can be done with the current layout?
- Implement play, stop/record buttons
- Add MiniSD card slot
- Implement support for USB-C and increase measurement range
- What can USB-C provide additionally
- Define what ranges / features will be improved
- Include additional sensor/components, e.g.
- Temperature
- Motion Sensor (what technology)
- Infrared Sensor to measure distance
- Magnetometer
- Light sensor
- LED module
- Humidity sensor
- Implement support for digital sensors: What is specifically missing in the UART implementation? E.g. why can’t we use digital humidity sensor using the serial port.
- Add RTC – use phone to synchronize
- Add GPS module for timing – synchronous timing
PSLab V2
- Develop the next version of PSLab using an ARM chip, possibly: LPC43S70FET256: 32-bit ARM Cortex-M4 + 2 x M0 MCU; 282 kB SRAM; Ethernet; two HS USBs; 80 Msps 12-bit ADC; configurable peripherals, AES engine (Issue)
- Define: What can we achieve additionally?
Repository and Issue Tracker: https://github.com/fossasia/pslab-hardware
Prerequisite Knowledge: C, Firmware Development
Possible Mentors: Mitch Altman, Lorenz Gerber, M Padmal, Wei Tat Chung
Neurolab
The goal of the Neurolab project is to develop an easy to use open hardware measurement headset device for brain waves that can be plugged into an Android smartphone and a software application and enables us to understand our brains better.
Our brains communicate through neurotransmitters and their activity emits electricity. The neuroheadset measures that electricity on the skin of the forehead and the software processes the signal so that it can translated into a visual or auditory representation. The data that can be collected can be analysed to identify mental health, stress, relaxation and even diseases like Alzheimer.
Current devices in the medical industry are usually not accessible by doctors due to their high pricing. They are also complicated to use. The idea of the device is to integrate it into a headband and focus on signals that can be obtained through the frontal lobe.
A difference to existing projects like OpenBCI is that it will not be necessary to 3D print large headsets. Instead we are focusing on creating a device that collects as much data as possible through the forehead. To achieve this goal we are using high-grade sensors and flexible electronics.
Required Features to be Developed:
- Implement a firmware for alternative ICs to AD7173 and OPA2111
- Implement Neurolab visual feedback in Android app
- Implement Neurolab audio feedback in Android app
- Update Neurolab desktop app to using latest libraries and Java version
- Provide Neurolab desktop packages for Linux, Windows and Mac
- Automatically build desktop packages on each merged PR for all major platforms
Repositories and Issue Tracker:
Neurolab Android https://github.com/fossasia/neurolab-android
Neurolab Desktop https://github.com/fossasia/neurolab-desktop
Neurolab Firmware https://github.com/fossasia/neurolab-firmware
Neurolab Hardware https://github.com/fossasia/neurolab-hardware
Prerequisite Knowledge: Java, Kotlin, Desktop technologies, C
Possible Mentors: Mitch Altman, Lorenz Gerber, M Padmal, Wei Tat Chung
Developer Program Application Guidelines
In your proposal please tell us about your coding project. Keep it simple. We prefer people who rather solve some issues to show their dedication than super long proposals. The following information is relevant for us:
- About Yourself: Tell us about yourself, your activities in Open Source projects, university, your blog and background. Tell us why you picked this project, how do you use it?
- Project title and possible mentors (if you know)
- Abstract: Please provide a short abstract. What is the project you want to do?
- Previously Solved Issues/PRs: Which relevant pull requests, real features and bugs in the project repository did you solve already? (This is one of the most important points to decide who gets the stipend)
- List of Features/Bugs you plan to solve: What needs to be done for the project? It is very important to list quantifiable results and a list of features. Lists with bullet points are sufficient. If there are existing issues, please add the link behind the feature or bug you plan to solve. Please write the features/bugs in a way that you can post it on the issue tracker.
- Design Samples: If relevant include designs that help us to understand your idea. If you have samples, please add them below the proposal.
- Timeline Table/List: Create a timeline for your work. Which features are most important – put them at the beginning. A simple list or table is sufficient. No need for charts.
- Test Cases: Outline test cases and add information on unit tests.
- Documentation is important and part of the development process. We keep documentation in repositories in the docs folder usually.
- Communication: To keep communication flowing in the project we require people to be a member and all project channels. Please also include a list of channels you are participating in (chat, mailing list, Twitter etc.) and add your ID or Email to ensure we can find you.
- Daily Scrum: During programs we expect people to submit scrum reports. Please tell us what questions are asked in a daily scrum!
- Other Expectations: During the program please submit a weekly technical blog article with screenshots, media and share it on social media, provide three webcasts, provide two presentations and organize a small outreach meetup each month. What is your plan?
- Availability: We want to avoid disappointments and ensure that people are available for the program full time. Students who are not available to contribute continuously during the program will be failed by admins without exception. Please don’t ask for exceptions in your application. If you are not available full-time in the program, don’t apply. Please confirm in your application, that you don’t have any other job or internship during the program, no extended travel or any other commitments or family obligation that could prevent you from participating in the program full-time.