diff --git a/documentation/docs/operation/user-interface.md b/documentation/docs/operation/user-interface.md index 1ea7c4a41..c803315ae 100644 --- a/documentation/docs/operation/user-interface.md +++ b/documentation/docs/operation/user-interface.md @@ -17,15 +17,15 @@ From here, you can quickly access any of the available tabs. The buttons are onl ![Tab List](../images/ui_guide/tab_list.webp) !!! tip - This list is also available from any other tab and allows you to quickly navigate between tabs. +This list is also available from any other tab and allows you to quickly navigate between tabs. ## Machine shutdown From this page, you can also shutdown the machine when you are done. !!! warning - It's **very very very important** to **always** shutdown the machine and wait a minute for it to completely shutdown before unplugging the power supply! - **You risk data corruption if you turn off power without shutting down the machine through the software!** +It's **very very very important** to **always** shutdown the machine and wait a minute for it to completely shutdown before unplugging the power supply! +**You risk data corruption if you turn off power without shutting down the machine through the software!** To shutdown the machine, first unlock the shutdown button by clicking on "Unlock Button". @@ -49,10 +49,6 @@ There is a mechanism of validation of the submitted data. Please be careful to u ![Sample validation](../images/ui_guide/sample_validation.webp) -The GPS status block will give you the current information on the GPS fix and location, your direction and speed. This can be used to grab the location when in the field. - -![Sample net](../images/ui_guide/sample_net.webp) - Once all the fields are completed, you can go to the next tab by clicking the -> arrow. This will make sure all the inserted data is valid. ## Optic Configuration @@ -68,7 +64,7 @@ In the Optic Characterization block, you can control to turn the light on or not Only the "Light" setting in the Optic Characterization panel works; everything else in that panel does not work and instead will be removed in a future version of the PlanktoScope software. !!! warning - For now, the characteristics shown here are not true values (except if you use the 25mm/16mm lens couple). +For now, the characteristics shown here are not true values (except if you use the 25mm/16mm lens couple). The Camera Settings block allows you to change the shutter speed, the ISO number and the camera white balance settings. You can set it to automatic, but it's better if you control it by hand to make sure the setting doesn't change when the acquisition is started. @@ -87,7 +83,7 @@ Finally, this is where the magic happens! You will be able to chose the final pa First of all, change the Fraction Size of your sample. You can then choose a unique ID for your acquisition, the number of pictures you want to take, the pumped volume (in between images), the delay to stabilize the image and the Flowcell thickness. All those settings will influence the Total imaged volume (the total volume captured during the acquisition) and the Total pumped volume. !!! warning - Make sure the Total pumped volume is lower than the volume of your sample. +Make sure the Total pumped volume is lower than the volume of your sample. ## Gallery @@ -109,40 +105,6 @@ Note: if your PlanktoScope's system time is different from your web browser's ti You will need to change the PlanktoScope's system time (for example by pressing the button displayed in the prompt) in order for the Metrics panel to work, and in order for your PlanktoScope to record accurate timestamps with its image acquisition datasets. The system time will be accurate until your PlanktoScope shuts down; the next time you turn on your PlanktoScope, you will need to change the PlanktoScope's system time again. This is a known problem, and we will improve the usability of this situation in future versions of the PlanktoScope software. -!!! warning - - The USB Backup panel doesn't always work; it will be removed in a future version of the PlanktoScope software; you should instead download files using the [Gallery tab](#gallery). - -!!! warning - - The GPS Status panel will be removed in a future version of the PlanktoScope software. - -!!! warning - - The Navigation panel, including its fan toggle (which doesn't work correctly) will be removed in a future version of the PlanktoScope software. - -## Wifi - -!!! warning - - This page will be removed in a future version of the PlanktoScope software, because it doesn't always work. You should instead refer to the network operations guide's section for [connecting your PlanktoScope to the Internet](./networking.md#connect-your-planktoscope-to-the-internet). - -![Administration](../images/ui_guide/wifi.webp) - -This page will give you information about the network the PlanktoScope is connected to. It will also allows you to connect your machine to a new WiFi network. - -Start by doing a network scan by clicking on the `Scan` button. The list will be populated with detected networks after a few seconds. You can then choose one of them, enter its password and click on `Add the network` to connect to it. The wifi network of the PlanktoScope will disappear after a few seconds, so **you will need to connect back to the same network you just put the machine on**. - -Finally, if you are not located in the US, please update the Country code in the field below. This will ensure the PlanktoScope complies with local Wifi regulations (such as maximum emitted power, duty cycle and such). - -Clicking on the button `Reset wifi networks` will erase ALL networks saved previously by the machine. If you do this, it will disconnect immediately from any network it's connected to, and will put up its own network. - -!!! info - For now, only WPA/WPA2 Personal security is supported; Wi-Fi networks without passwords are not supported. - -!!! warning - Please be mindful about the security policies of your organisation before connecting your device to a network (either through Wifi or with an Ethernet cable). A lot of research institutions don't allow devices not controlled by them to be connected to their network without first going on an approved list with a least a basic security checkup. - ## Administration ![Administration](../images/ui_guide/administration.png) diff --git a/documentation/docs/reference/software/architecture/os.md b/documentation/docs/reference/software/architecture/os.md index b48b6a023..ca6dac2c5 100644 --- a/documentation/docs/reference/software/architecture/os.md +++ b/documentation/docs/reference/software/architecture/os.md @@ -28,7 +28,7 @@ This definition is a reasonable description of the PlanktoScope OS, because it's - A Raspberry Pi computer. -- Various input/output devices such as actuators (e.g. the pump, the sample focus-adjustment actuators, and the illumination LED), sensors (e.g. the camera and the GPS module), and information storage devices (e.g. the real-time clock and the EEPROM). +- Various input/output devices such as actuators (e.g. the pump, the sample focus-adjustment actuators, and the illumination LED), sensors (e.g. the camera), and information storage devices (e.g. the real-time clock and the EEPROM). ## Software deployment & execution @@ -138,10 +138,6 @@ Note: currently all of `forklift`'s functionality is only exposed through a comm PlanktoScope-specific hardware modules are abstracted by PlanktoScope-specific programs which expose high-level network APIs (typically using [MQTT](https://mqtt.org/) and/or [HTTP](https://en.wikipedia.org/wiki/HTTP)); other programs should use these APIs in order to interact with the PlanktoScope-specific hardware modules. To provide these APIs, the PlanktoScope OS adds the following services (beyond what is already provided by the default installation of the Raspberry Pi OS): -- [`gpsd`](https://gpsd.gitlab.io/gpsd/): for providing an abstraction for the PlanktoScope's GPS receiver. - -- [`chronyd`](https://chrony-project.org/): for managing synchronization of the Raspberry Pi's system clock with the PlanktoScope's GPS receiver and with any time sources available over the Internet. - - The [PlanktoScope hardware controller](https://github.com/PlanktoScope/PlanktoScope/tree/main/controller): for controlling PlanktoScope-specific hardware modules and abstracting them into high-level network APIs for other programs to interact with. ## User interface diff --git a/node-red/package-lock.json b/node-red/package-lock.json index a8c59c32d..07ae634df 100644 --- a/node-red/package-lock.json +++ b/node-red/package-lock.json @@ -9,7 +9,6 @@ "@flowfuse/node-red-dashboard-2-ui-flowviewer": "~1.0.1", "node-red-contrib-cron-plus": "~2.1.0", "node-red-contrib-dir2files": "~0.3.0", - "node-red-contrib-gpsd": "~1.0.8", "node-red-contrib-python3-function": "^0.0.4", "node-red-contrib-ui-multistate-switch": "~1.2.3", "node-red-dashboard": "~3.6.5", @@ -1660,14 +1659,6 @@ "node": ">= 0.6" } }, - "node_modules/node-gpsd": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/node-gpsd/-/node-gpsd-0.3.4.tgz", - "integrity": "sha512-sI9hPfHiaWDmhjE1oJZnhMo7UF2vQVGl3qk0K4HbN1L8BkS0I+rd6V687eHOj/6ervXiHrhwXzYYsWdXxGy0Qg==", - "engines": { - "node": ">=v0.8.0" - } - }, "node_modules/node-red-contrib-cron-plus": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/node-red-contrib-cron-plus/-/node-red-contrib-cron-plus-2.1.0.tgz", @@ -1694,15 +1685,6 @@ "path": "^0.12.7" } }, - "node_modules/node-red-contrib-gpsd": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/node-red-contrib-gpsd/-/node-red-contrib-gpsd-1.0.8.tgz", - "integrity": "sha512-KLZ2/bVqyt1LD3TbfyjCzN3piR0KGVLt3RlB9vIygyc2ML1J/AyvqYrGS3fWaWtIVK0k+f+NkK6BV/DXO2q/2Q==", - "license": "GPL-3.0+", - "dependencies": { - "node-gpsd": "^0.3.4" - } - }, "node_modules/node-red-contrib-python3-function": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/node-red-contrib-python3-function/-/node-red-contrib-python3-function-0.0.4.tgz", diff --git a/node-red/package.json b/node-red/package.json index 195ef4acf..60b5aee6c 100644 --- a/node-red/package.json +++ b/node-red/package.json @@ -5,7 +5,6 @@ "@flowfuse/node-red-dashboard-2-ui-flowviewer": "~1.0.1", "node-red-contrib-cron-plus": "~2.1.0", "node-red-contrib-dir2files": "~0.3.0", - "node-red-contrib-gpsd": "~1.0.8", "node-red-contrib-python3-function": "^0.0.4", "node-red-contrib-ui-multistate-switch": "~1.2.3", "node-red-dashboard": "~3.6.5", diff --git a/node-red/projects/adafruithat/flows.json b/node-red/projects/adafruithat/flows.json index 780f1d615..b14a8e021 100644 --- a/node-red/projects/adafruithat/flows.json +++ b/node-red/projects/adafruithat/flows.json @@ -644,16 +644,6 @@ "collapse": false, "className": "" }, - { - "id": "fc5e4e6f.5b1c8", - "type": "ui_group", - "name": "GPS Status", - "tab": "737ec584.2eea2c", - "order": 6, - "disp": true, - "width": 10, - "collapse": false - }, { "id": "f3ca28ef.4df0a8", "type": "ui_group", @@ -1778,31 +1768,6 @@ "error" ] }, - { - "id": "18f44504.cac66b", - "type": "gpsd", - "z": "b771c342.49603", - "name": "", - "hostname": "localhost", - "port": "2947", - "tpv": true, - "sky": false, - "info": false, - "device": false, - "gst": false, - "att": false, - "x": 250, - "y": 1240, - "wires": [ - [ - "258b4562.9f778a", - "54e37580.fdc31c", - "cc21ca16.b92928", - "4a4de52c.cf2884", - "73c4a14a.9b93c8" - ] - ] - }, { "id": "726a7822.cd6298", "type": "ui_ui_control", @@ -1997,22 +1962,6 @@ [] ] }, - { - "id": "7116e906.9f50f", - "type": "ui_text", - "z": "b771c342.49603", - "group": "fc5e4e6f.5b1c8", - "order": 1, - "width": 10, - "height": 1, - "name": "GPS Status Display", - "label": "GPS Status:", - "format": "{{msg.payload}}", - "layout": "row-center", - "x": 730, - "y": 1080, - "wires": [] - }, { "id": "9c7f7fc9.c8d3a", "type": "ui_text_input", @@ -2537,141 +2486,6 @@ ] ] }, - { - "id": "4fb4e0ad.c417c", - "type": "ui_text", - "z": "b771c342.49603", - "group": "fc5e4e6f.5b1c8", - "order": 6, - "width": 5, - "height": 1, - "name": "Latitude", - "label": "Latitude", - "format": "{{msg.payload.lat.deg}}°{{msg.payload.lat.min}}'{{msg.payload.lat.sec}}{{msg.payload.lat.dir}}", - "layout": "col-center", - "x": 700, - "y": 1120, - "wires": [] - }, - { - "id": "8d2b5026.13e6e8", - "type": "ui_text", - "z": "b771c342.49603", - "group": "fc5e4e6f.5b1c8", - "order": 7, - "width": 5, - "height": 1, - "name": "Longitude", - "label": "Longitude", - "format": "{{msg.payload.lon.deg}}°{{msg.payload.lon.min}}'{{msg.payload.lon.sec}}{{msg.payload.lon.dir}}", - "layout": "col-center", - "x": 700, - "y": 1160, - "wires": [] - }, - { - "id": "258b4562.9f778a", - "type": "function", - "z": "b771c342.49603", - "name": "Convert DD to DMS", - "func": "function ConvertDDToDMS(D, lng){\n // from https://stackoverflow.com/a/5786281/2108279\n return {\n dir : D<0?lng?'W':'S':lng?'E':'N',\n deg : 0|(D<0?D=-D:D),\n min : 0|D%1*60,\n sec :(0|D*60%1*6000)/100\n };\n}\n\nmsg.payload = {\n \"lat\":ConvertDDToDMS(msg.payload.lat, false),\n \"lon\":ConvertDDToDMS(msg.payload.lon, true)\n};\nreturn msg;", - "outputs": 1, - "noerr": 0, - "initialize": "", - "finalize": "", - "x": 490, - "y": 1140, - "wires": [ - [ - "4fb4e0ad.c417c", - "8d2b5026.13e6e8" - ] - ] - }, - { - "id": "7c4ce5f3.62dd5c", - "type": "ui_text", - "z": "b771c342.49603", - "group": "fc5e4e6f.5b1c8", - "order": 4, - "width": 2, - "height": 1, - "name": "Speed", - "label": "Speed", - "format": "{{msg.payload}} kts", - "layout": "col-center", - "x": 690, - "y": 1200, - "wires": [] - }, - { - "id": "54e37580.fdc31c", - "type": "ui_text", - "z": "b771c342.49603", - "group": "fc5e4e6f.5b1c8", - "order": 5, - "width": 2, - "height": 1, - "name": "Direction", - "label": "Direction", - "format": "{{msg.payload.track}} °", - "layout": "col-center", - "x": 700, - "y": 1240, - "wires": [] - }, - { - "id": "cc21ca16.b92928", - "type": "function", - "z": "b771c342.49603", - "name": "GPS Mode", - "func": "switch (msg.payload.mode){\n case 1:msg.payload = \"No Fix\"; break\n case 2:msg.payload = \"2D Fix\"; break\n case 3:msg.payload = \"3D Fix\"; break\n default: msg.payload = \"No info\"\n}\nreturn msg;", - "outputs": 1, - "noerr": 0, - "initialize": "", - "finalize": "", - "x": 470, - "y": 1080, - "wires": [ - [ - "7116e906.9f50f" - ] - ] - }, - { - "id": "4a4de52c.cf2884", - "type": "function", - "z": "b771c342.49603", - "name": "Speed conversion", - "func": "msg.payload = (0|msg.payload.speed) * 1.9438\nreturn msg;", - "outputs": 1, - "noerr": 0, - "initialize": "", - "finalize": "", - "x": 490, - "y": 1200, - "wires": [ - [ - "7c4ce5f3.62dd5c" - ] - ] - }, - { - "id": "35ad311f.344c76", - "type": "ui_text", - "z": "b771c342.49603", - "group": "fc5e4e6f.5b1c8", - "order": 2, - "width": 5, - "height": 1, - "name": "Time", - "label": "Time", - "format": "{{msg.payload.time}}", - "layout": "col-center", - "x": 690, - "y": 1280, - "wires": [] - }, { "id": "e73fd87d.d24e4", "type": "function", @@ -2710,25 +2524,6 @@ ] ] }, - { - "id": "73c4a14a.9b93c8", - "type": "function", - "z": "b771c342.49603", - "name": "Convert time", - "func": "msg.payload.time = msg.payload.time.replace('T', ' ');\nreturn msg;", - "outputs": 1, - "noerr": 0, - "initialize": "", - "finalize": "", - "libs": [], - "x": 470, - "y": 1280, - "wires": [ - [ - "35ad311f.344c76" - ] - ] - }, { "id": "58de1340.3cc354", "type": "ui_text_input", @@ -9096,4 +8891,4 @@ ] ] } -] +] \ No newline at end of file diff --git a/node-red/projects/adafruithat/package.json b/node-red/projects/adafruithat/package.json index f77f12d80..9e03507e5 100644 --- a/node-red/projects/adafruithat/package.json +++ b/node-red/projects/adafruithat/package.json @@ -4,7 +4,6 @@ "description": "Deprecated flows for adafruithat", "dependencies": { "node-red-contrib-dir2files": "~0.3.0", - "node-red-contrib-gpsd": "~1.0.8", "node-red-contrib-python3-function": "^0.0.4", "node-red-contrib-ui-multistate-switch": "~1.2.3", "node-red-dashboard": "~3.6.5", diff --git a/os/planktoscope-app-env/gps/boot/firmware/config.txt.snippet b/os/planktoscope-app-env/gps/boot/firmware/config.txt.snippet deleted file mode 100644 index 0b2cdc077..000000000 --- a/os/planktoscope-app-env/gps/boot/firmware/config.txt.snippet +++ /dev/null @@ -1,3 +0,0 @@ - -# PlanktoScope - Enable automatic time update from GPSD -dtoverlay=pps-gpio,gpiopin=4 diff --git a/os/planktoscope-app-env/gps/install.sh b/os/planktoscope-app-env/gps/install.sh deleted file mode 100755 index e64b2b201..000000000 --- a/os/planktoscope-app-env/gps/install.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -eux -# The GPS driver provides support for a GPS device over serial, as well as system clock updating -# from GPS. - -# Determine the base path for copied files -config_files_root=$(dirname "$(realpath "$BASH_SOURCE")") - -# Install dependencies -sudo -E apt-get install -y -o Dpkg::Progress-Fancy=0 \ - gpsd pps-tools chrony - -# The following command enables the serial port but disables the login shell over the serial port. -# We use this because the serial port is reserved for a GPS device. -# Note that this overrides a setting in the base-os/platform-hardware/config.sh script. -sudo raspi-config nonint do_serial_cons 1 - -# Enable automatic time update from GPSD -file="/boot/firmware/config.txt" -sudo bash -c "cat \"$config_files_root$file.snippet\" >> \"$file\"" diff --git a/os/planktoscope-app-env/setup.sh b/os/planktoscope-app-env/setup.sh index c70f927bb..fe2cf1c4e 100755 --- a/os/planktoscope-app-env/setup.sh +++ b/os/planktoscope-app-env/setup.sh @@ -61,16 +61,6 @@ else panic "$description" fi -if [ "$hardware_type" = "adafruithat" ]; then - description="set up GPS and clock driver" - report_starting "$description" - if "$build_scripts_root/gps/install.sh"; then - report_finished "$description" - else - panic "$description" - fi -fi - description="enable CPU overclocking" report_starting "$description" if "$build_scripts_root/overclocking/config.sh"; then