diff --git a/case/v3/common/pi_mount.stl b/case/v3/common/pi_mount.stl index c0b709da3..68501b0a2 100644 Binary files a/case/v3/common/pi_mount.stl and b/case/v3/common/pi_mount.stl differ diff --git a/case/v3/common/pi_mount_noinserts.stl b/case/v3/common/pi_mount_noinserts.stl new file mode 100644 index 000000000..c0b709da3 Binary files /dev/null and b/case/v3/common/pi_mount_noinserts.stl differ diff --git a/docs/source/BOM.rst b/docs/source/BOM.rst index 0920848ca..69a4762e8 100644 --- a/docs/source/BOM.rst +++ b/docs/source/BOM.rst @@ -96,7 +96,7 @@ These are the bigger items/assemblies which you'll need to purchase to include i - Other lenses might work here, but something fast with a 10deg FOV is ideal You can use either the imx296 or imx462 module from innomaker. They both -perform about the same so choose the least expesive/easiest to get model +perform about the same so choose the least expensive/easiest to get model in your particular location. Case hardware @@ -132,6 +132,6 @@ In addition to the 3d printed parts detailed in the :doc:`Build Guide`_. This is the lower-cost version without RTC, but it has a 5000mah battery which should provide about 5 hours of run time. +If you'd like to have a fully stand-alone unit with integrated rechargeable battery, there are instructions in the build guide for integrating a `PiSugar S plus `_. This is the lower-cost version without RTC, but it has a 5000mah battery which should provide about 5 hours of run time. diff --git a/docs/source/build_guide.rst b/docs/source/build_guide.rst index 263416f89..3aba77071 100644 --- a/docs/source/build_guide.rst +++ b/docs/source/build_guide.rst @@ -8,12 +8,11 @@ Introduction and Overview Welcome to the PiFinder build guide! This guide is split into three main parts, one for building the :ref:`UI Board` with Screen and Buttons, a section related to :ref:`3d printing` and preparing the case parts, and one for :ref:`final assembly`. Along with these sections, please consult the :doc:`Bill of Materials` for a full list of parts required and reach out with any questions via `email `_ or `discord `_ -If you've received a kit with an assembled UI Board + 3d Parts, you can jump right to the :ref:`final assembly`. Otherwise, fire up that 3d printer and get the :ref:`parts printing` while you work to assemble the UI Hat. PiFinder UI Hat ======================== -A key part of the PiFinder is a custom 'Hat' which matches the general form factor of the Raspberry Pi and connects to it's GPIO header. It contains the switches, screen and Inertial Measurement Unit along with keypad backlight components +A key part of the PiFinder is a custom 'Hat' which matches the general form factor of the Raspberry Pi and connects to its GPIO header. It contains the switches, screen and Inertial Measurement Unit along with keypad backlight components It's all through-hole components, so should be approachable to even beginners... but the component build order is important as some items block access to others. @@ -34,7 +33,7 @@ Polarity matters here, so mind the direction. The longer lead of the LED should .. image:: ../../images/build_guide/led_build_03.jpeg -Take you time and make sure each is positioned well. They should be pretty uniform, but little inconsistencies don't matter too much. I like to place them all in the board, and then tape them in place. +Take your time and make sure each is positioned well. They should be pretty uniform, but little inconsistencies don't matter too much. I like to place them all in the board, and then tape them in place. .. image:: images/build_guide/ui_module_2.jpeg @@ -49,7 +48,7 @@ When satisfied, solder the remaining legs and clip the leads up to a single pair .. image:: images/build_guide/ui_module_5.jpeg -The two resistors and transitor are next. R2 is the vertical oriented 330ohm part and R1 is the 22ohm oriented horizontally. Direction does not matter with these, but it's important for the transistor. Check the photo below for orientation and make sure this is bent flat against the PCB and the resistors are low. Solder them from the back and clip the leads once you've verified they look good. +The two resistors and transistor are next. R2 is the vertical oriented 330ohm part and R1 is the 22ohm oriented horizontally. Direction does not matter with these, but it's important for the transistor. Check the photo below for orientation and make sure this is bent flat against the PCB and the resistors are low. Solder them from the back and clip the leads once you've verified they look good. .. image:: images/build_guide/ui_module_6a.jpeg @@ -106,7 +105,7 @@ The GPS header is next. The modules come with a yellow header, but any will do. IMU ------------------------ -The Inertial Measurement unit is next. The IMU has an annoyingly bright green LED on it, which you will either want to paint over with a few laywers of black nail polish, or you can use your soldering iron to destroy it. It can be handled after it's soldered if you forget, but it's much easier before hand. See the image below to ID the offending component. +The Inertial Measurement unit is next. The IMU has an annoyingly bright green LED on it, which you will either want to paint over with a few layers of black nail polish, or you can use your soldering iron to destroy it. It can be handled after it's soldered if you forget, but it's much easier beforehand. See the image below to ID the offending component. .. image:: ../../images/build_guide/adafruit_IMU.png :target: ../../images/build_guide/adafruit_IMU.png @@ -150,7 +149,7 @@ To make the top plate fit a bit better and look tidier, I suggest sanding back o .. image:: ../../images/build_guide/IMG_4652.jpeg :target: ../../images/build_guide/IMG_4652.jpeg - :alt: Cut/Sand tabs on displya + :alt: Cut/Sand tabs on display It's not a bad idea to test fit the screen with the header installed and the top-plate in place. Everything should fit nicely and be square. @@ -216,7 +215,7 @@ part can have force applied as the hat is installed and removed. .. image:: images/build_guide/ui_module_17.jpeg -After you have all the pins soldrerd, it's a good time to insert the SD card and power it up to double check everything is working +After you have all the pins soldered, it's a good time to insert the SD card and power it up to double check everything is working .. image:: images/build_guide/ui_module_18.jpeg @@ -229,7 +228,7 @@ There you go! The PiFinder hat is fully assembled and you can move on to printi Configurations Overview ======================== -There are three different ways to build a PiFinder allowing it to be convieniently used on a variety of telescopes. +There are three different ways to build a PiFinder allowing it to be conveniently used on a variety of telescopes. .. list-table:: @@ -246,7 +245,7 @@ There are three different ways to build a PiFinder allowing it to be convienient Flat -Any configuration can technically work with any scope, but since the camera always needs to face the sky the different configurations allow the screen and keyboard to be placed for easy access. The Left and Right configruations are primarily for newtonian style scopes, like dobsonians, which have the focuser perpendicular to the light path. +Any configuration can technically work with any scope, but since the camera always needs to face the sky the different configurations allow the screen and keyboard to be placed for easy access. The Left and Right configurations are primarily for newtonian style scopes, like dobsonians, which have the focuser perpendicular to the light path. The Flat configuration places the keypad and screen in easy reach for refractors, SCT's and other rear-focuser scopes. When the scope is pointed upward, the screen is tilted towards you for quick access. @@ -338,7 +337,7 @@ Back ^^^^^^^^^ The back piece holds the camera for left/right builds and reinforces the PiMount and Bottom piece to -help keep everything squar and sturdy. It needs six inserts; four to mount the camera and two in the bottom +help keep everything square and sturdy. It needs six inserts; four to mount the camera and two in the bottom edge to connect with the bottom piece .. image:: images/build_guide/parts_7.jpeg @@ -350,7 +349,7 @@ Dovetail Bottom The dovetail bottom has two inserts to receive the longer 12mm screws which allow angle adjustment. These inserts are placed in the side opposite where the top piece connects. The screws pass through the top piece and part of the bottom before engaging with the inserts. This makes this assembly strong enough to hold the set angle with the screws -sufficiently tightend. +sufficiently tightened. .. image:: images/build_guide/parts_8.jpeg :target: images/build_guide/parts_8.jpeg @@ -493,7 +492,7 @@ Assembly Overview From here on out you'll need the M2.5 screws, stand-offs, and thumbscrews along with the 3d printed parts, UI hat and other bits like the camera, lens and GPS unit. Most of the photos in this part of the guide show a build with the PiSugar, but if you are powering the PiFinder in some other way, the assembly is almost identical. -*In all cases, don't over tighten the hardware!* There is no need and you could end up damaging the 3d printed pieces, inserts or screws. Once they feel snug, that's probably enough force. The case forms a ridged assembly once everything is in place and will easily support the camera and other bits. +*In all cases, don't over tighten the hardware!* There is no need and you could end up damaging the 3d printed pieces, inserts or screws. Once they feel snug, that's probably enough force. The case forms a rigid assembly once everything is in place and will easily support the camera and other bits. Pi Mounting --------------------------- @@ -528,14 +527,14 @@ Snip the zip-ties off and you are ready to move on. Camera Prep --------------------------- -The new v3 camera may come with one of two different lens holders aready installed. No matter +The new v3 camera may come with one of two different lens holders already installed. No matter which your camera has you'll be removing and replacing it. .. image:: images/v25_upgrade/v25_upgrade_11.jpeg Some cameras have pin headers installed, if you have one of these, you'll need to clip them as close as reasonable to the board. It can help here to remove the black plastic portion by pulling it with -a pair of pliers. Alternatively, you can just cut through it to get as close to the PCB as possilble. +a pair of pliers. Alternatively, you can just cut through it to get as close to the PCB as possible. Take care not to clip any of the surrounding components. .. image:: images/v25_upgrade/v25_upgrade_12.jpeg @@ -558,8 +557,8 @@ there are holes there to help get started. Tighten the screws down against the .. image:: images/v25_upgrade/v25_upgrade_15.jpeg Flip the camera assembly over and thread in the lens. Be slow and careful here. With gentle force -the lens should slide in a few MM to get everything align and stop. When it stops, check to make sure it seems -straight and start screwing it into place. To get focus about right, You'll want a 6mm gap (picured below) between the +the lens should slide in a few MM to get everything aligned and stop. When it stops, check to make sure it seems +straight and start screwing it into place. To get focus about right, You'll want a 6mm gap (pictured below) between the top of the lens holder and the bottom of the lip on the lens. Don't fret too much about it as you'll do final focus under the stars. @@ -590,7 +589,7 @@ Return to the Raspberry Pi assembly and thread the camera cable through as shown .. important:: If you are using the recommended S Plus unit, now is the time to make sure you've got it all prepared. - * Turn the 'Auto Startup' switch on the bottom of the unit to OFF. Having this in the ON position will prevent i2c from working and the IMU will not be used. See the image below: The switch is outlined in orange, and the photos shows the correct OFF position. + * Turn the 'Auto Startup' switch on the bottom of the unit to OFF. Having this in the ON position will prevent i2c from working and the IMU will not be used. See the image below: The switch is outlined in orange, and the photo shows the correct OFF position. * The blue power light on the PiSugar board is very bright. You'll definitely want to cover it with some black nail polish or use a soldering iron to destroy it. Plug it in to the battery and turn it on to make sure it's subdued. Check the image below for the position of this LED. It's already blacked out with nail polish in the photo, but the orange arrow indicates which one you'll want to cover. @@ -628,7 +627,7 @@ The combined PiSugar/RPI stack then gets secured to the PI Mount using the 20mm - .. figure:: images/build_guide/right_3.jpeg - Secured wiith stand offs + Secured with stand offs @@ -697,7 +696,7 @@ Now it's time to mount the camera module. You'll need the module, camera tray a .. note:: The images here show an older back piece and camera tray. New kits have a back piece - with two holes which match the camera holder. In this simpler arrangment the camera + with two holes which match the camera holder. In this simpler arrangement the camera tray is not directly secured to the back piece, but rather has two holes through it. The camera holder is secured with longer screws through the tray into the two holes in the back piece @@ -707,7 +706,7 @@ by sliding the dark-grey piece away from the PCB. Be gentle as this part can br much force. Once the connector is open, slide the cable into the connector using gentle force and making -sure it's well aligned. Take you time and watch the +sure it's well aligned. Take your time and watch the dark-grey clip. It should not close as you are inserting the cable, and if it does, you'll need to re-open it to get the cable to slide in all the way. @@ -769,7 +768,7 @@ manage the camera and GPS cables. The photos below show the left and right conf - .. image:: images/build_guide/right_20.jpeg -The screw holes on the UI Board should line up with three of the four stand-offs. The fourth provides support, but does is not used to secure the outer case. Collect up the Shroud, Bezel and cover plate along with three of the 12mm screws for the next steps +The screw holes on the UI Board should line up with three of the four stand-offs. The fourth provides support, but is not used to secure the outer case. Collect up the Shroud, Bezel and cover plate along with three of the 12mm screws for the next steps .. image:: images/build_guide/common_5.jpeg :target: images/build_guide/common_5.jpeg @@ -910,7 +909,7 @@ Next you'll position the camera module and use the longer M2.5 screw to secure i :alt: Assembly Steps -Gently plug in the UI Module, working to tuck the cable underneath it. Take you time and make sure the camera cable is not pinched between the stand-offs and the UI Module. +Gently plug in the UI Module, working to tuck the cable underneath it. Take your time and make sure the camera cable is not pinched between the stand-offs and the UI Module. .. image:: ../../images/build_guide/v1.6/flat/flat_build_guide_10.jpeg diff --git a/docs/source/catalogs.rst b/docs/source/catalogs.rst index 27f41c588..d711f16d9 100644 --- a/docs/source/catalogs.rst +++ b/docs/source/catalogs.rst @@ -76,4 +76,4 @@ The Abell Catalog of Planetary Nebulae (1966 by George O. Abell) contains 79 ent Arp ---- Atlas of Peculiar Galaxies (Arp 1966) -Select galaxies with interest morhphology. See `Wikipedia - Atlas of Peculiar Galaxies `_ +Select galaxies with interest morphology. See `Wikipedia - Atlas of Peculiar Galaxies `_ diff --git a/docs/source/dev_arch.rst b/docs/source/dev_arch.rst index 1f512ddc7..4313a1c63 100644 --- a/docs/source/dev_arch.rst +++ b/docs/source/dev_arch.rst @@ -48,7 +48,7 @@ there are some time-critical requirements: information, that would be cumbersome to change using the keyboard. This means that in parallel http requests MUST be parsed and serviced. 5. `SkySafari `_ can connect to PiFinder and - be used as planetarium software to a) see there PiFinder is pointing and + be used as planetarium software to a) see where PiFinder is pointing and b) to push targets to PiFinder. This means that PiFinder MUST support the LX200 protocol as supported by SkySafari. @@ -197,8 +197,8 @@ Here some details: commands on exposure time through `camera_command_queue` - The solver processes the image and notifies the integrator of new solves through the `solver_queue` - - The `aligment_command_queue` is used to ask the solver, which pixel corresponds - to a given position and the result is handed back using the `aligment_response_queue` + - The `alignment_command_queue` is used to ask the solver, which pixel corresponds + to a given position and the result is handed back using the `alignment_response_queue` - Through the `ui_queue` a new target is set by the SkySafari server - Commands and telescope location (GPS) are injected by the `webserver` into the respective queues. @@ -234,7 +234,7 @@ There are three types of shared state in PiFinder - The shared image - This uses a **shared memory image, that is constantly updated by the - image acquision thread**. Whenever working on this image, make sure that + image acquisition thread**. Whenever working on this image, make sure that you create your own local copy of it, so it does not get changed while you process it. - An UIState object - see ``ui/status.py`` diff --git a/docs/source/dev_guide.rst b/docs/source/dev_guide.rst index 1fb95c80a..eb0ed0878 100644 --- a/docs/source/dev_guide.rst +++ b/docs/source/dev_guide.rst @@ -24,7 +24,7 @@ The easiest way to get started is to join the `PiFinder Discord server `_ is written in `reStructuredText `_ . The files are located in PiFinders GitHub repository under ``docs/source`` and have -the ending ``.rst``. The documentation is then published to `redthedocs.io `_, when the change is committed +the ending ``.rst``. The documentation is then published to `readthedocs.io `_, when the change is committed to the official GitHub repository (using readthedocs's infrastructure). You can link your fork also to your account on readthedocs.io, but it is easier to build the documentation locally. @@ -158,7 +158,7 @@ Internationalization PiFinder uses ``gettext`` and ``pybabel`` for internationalization. You can find the information in folder ``python/locale`` in the repository. This means that strings that need translation must be -enclosed in a call to ``_()`` such als ``_("string that needs translation")``. +enclosed in a call to ``_()`` such as ``_("string that needs translation")``. As we would like to allow users to switch the language of the user interface from the menu, and with-out restarting PiFinder, care must be taken, that translations are performed dynamically, i.e. not at load time of python files. @@ -184,7 +184,7 @@ also contain the compiled ``.mo`` files, which are binary representations of the When you edit the files, check for each entry that has a ``msgstr ""`` line, which means the string is not translated yet. You also need to check the translations of strings marked as "fuzzy". You need to remove the "fuzzy" line, once you have checked the translation. -In order to run the PiFinder software with the latest translation, you need to run the folloing commands: +In order to run the PiFinder software with the latest translation, you need to run the following commands: .. code-block:: @@ -276,7 +276,7 @@ Code Quality Automation ----------------------- The PiFinder codebase includes features for maintaining code quality, -adherance to style guide and for evaluation and testing. These will +adherence to style guide and for evaluation and testing. These will be installed along with the dev dependencies and should be available to run immediately. @@ -287,12 +287,12 @@ We use `Nox `_ as an entrypoint to all of the code quality tools. Simply run ``nox`` to from the ``PiFinder/python`` directory and it will run (almost) all of the code quality checks and tests. -The first time it runs Nox will set up suitible environments for each session +The first time it runs Nox will set up suitable environments for each session it manages and this might take a bit. Subsequent runs will be much faster. To see what sessions are available use ``nox -l`` -To run only a specfic session use ``nox -s [session_name]`` +To run only a specific session use ``nox -s [session_name]`` The defined sessions are: @@ -320,7 +320,7 @@ The defined sessions are: - babel -> Runs the complete toolchain for internationalization (based on `pybabel`). That means extracts strings to translate and updates the `.po`-files in `python/locale/**` - Then these are compiled into `.mo`-files. Unfortuntely, this changes the `.mo`-files in any case, + Then these are compiled into `.mo`-files. Unfortunately, this changes the `.mo`-files in any case, even if the there have been no changes to strings or their translation. As this will show up as changes to checked-in, this is not run by default. @@ -340,7 +340,7 @@ Running/Debugging from the command line When you installed all the dependencies, you like to develop and test your code. You like to see debugging information and all verbose messages. You -probably like to save these informations into a file. +probably like to save this information into a file. Therefore, switch to the ``~/PiFinder/python`` folder and start the PiFinder python program with the command line parameters you need for the certain use case. @@ -357,7 +357,7 @@ PiFinder process is likely running. Before you can start a PiFinder process for testing purposes from the command line, you have to stop all currently running PiFinder instances. Simply, because you can not run multiple PiFinder instances in parallel. They would try to access the same hardware, which is not possible. -You can do this e.g. with the following code, which uses awk to kill all runnding processes of +You can do this e.g. with the following code, which uses awk to kill all running processes of PiFinder: .. code-block:: @@ -425,7 +425,7 @@ You enable the debug information output simply by passing the '-x' flag. .......................... Start the PiFinder software with a particular display device. This is useful -for devloping on a different posix system like MacOS or Linux. Available options +for developing on a different posix system like MacOS or Linux. Available options are: - ssd1351 - This is the standard 1.5" OLED screen (DEFAULT) @@ -495,7 +495,7 @@ the IMU is defect or you have a problem on your board. 1. Please check, if the board is soldered all pins correctly and did not shorten anything (spurious lead). 2. If you sourced the parts by you own, it might be, that you bought the wrong - IMU hardware version. You need the 4646 versio. On the non-stemma QT versions, + IMU hardware version. You need the 4646 version. On the non-stemma QT versions, the data pins are switched. `See here on Discord `_. 3. The IMU is defect. diff --git a/docs/source/quick_start.rst b/docs/source/quick_start.rst index 690d7bac6..a7a557a0a 100644 --- a/docs/source/quick_start.rst +++ b/docs/source/quick_start.rst @@ -3,7 +3,7 @@ Quick Start .. note:: This documentation is for v3 and v2.5 PiFinders running software 2.2.0 or above. - You can see what version of software is running by lookin in the upper right of + You can see what version of software is running by looking in the upper right of the welcome screen. If you need docs for a previous version please choose `1.x.x `_ @@ -66,7 +66,7 @@ is closest to the keypad (there will be only one if you don't have the internal charge the internal battery. You can use the regular charging connector to both power the unit and charge the battery from external power if you turn the white power switch to the 'On' position. -Note that when you turn on your PiFinder for the first time, it will take a minute to start up. During intial +Note that when you turn on your PiFinder for the first time, it will take a minute to start up. During initial startup, the welcome screen will come and go as the PiFinder restarts but subsequent power-on's will be much quicker. Once the PiFinder is powered on, an welcome image will appear on the screen. You’ll then see some information about @@ -78,7 +78,7 @@ the loading process and finally the Main Menu will appear. Using the PiFinder ------------------- -The PiFinder features a scolling menu with the active option highlighted in the middle of the screen. +The PiFinder features a scrolling menu with the active option highlighted in the middle of the screen. .. image:: images/quick_start/pifinder_main_menu.png @@ -183,12 +183,12 @@ started. This may happen a little after sunset, or, if you’re in an area with you may have to wait until full darkness. There are two icons in the upper right of the screen that will tell you if the PiFinder knows -where it is: one shows a sattelite dish which will be solid when there is a GPS signal and +where it is: one shows a satellite dish which will be solid when there is a GPS signal and a location has been acquired, and will flash when searching for a location and time. -The other indicator shows how the PiFinder has determined your current telescope poition. It will +The other indicator shows how the PiFinder has determined your current telescope position. It will display a camera if it has plate-solved its current view and this camera icon will fade if the scope -is moving and it's using the acceleromiter. If you see an 'X', the PiFinder has yet to determine +is moving and it's using the accelerometer. If you see an 'X', the PiFinder has yet to determine where it's pointing (see :ref:`quick_start:setting focus & first solve`) .. list-table:: @@ -214,15 +214,15 @@ where it's pointing (see :ref:`quick_start:setting focus & first solve`) .. note:: - The GPS reciever in the PiFinder must be outside to get a GPS lock and may take several - minutes to recieve all the data required to calculate it's location and date/time. + The GPS receiver in the PiFinder must be outside to get a GPS lock and may take several + minutes to receive all the data required to calculate its location and date/time. This delay is longer after the PiFinder has been off for a long period or moved a distance while it's turned off. Subsequent start ups at the same location should be quicker. Leaving the PiFinder on the GPS Status screen will result in a faster lock time as this screen disables the camera, reducing the overall EM noise and helping the GPS - reciever see more satellites. + receiver see more satellites. @@ -278,7 +278,7 @@ Use the menu system to select the 'Focus' option under the 'Start' menu The Focus screen shows a live preview of what the camera is seeing. It uses special image processing to highlight stars and remove background skyglow so that you can easily focus your PiFinder camera. -If there are no stars visible or the image is too defocused he screen may seem too bright or dark or +If there are no stars visible or the image is too defocused the screen may seem too bright or dark or have a noisy appearance, this is normal until the camera is near focus. See below for some examples .. list-table:: @@ -317,7 +317,7 @@ of it's FOV lines up with your telescope, you tell the PiFinder where within it' your telescope is pointing. The PiFinder camera sees a patch of sky that is 10 degrees wide. That's about 20 full moons -across and the much smaller field of view (FOV) of your telescope is somehwere in +across and the much smaller field of view (FOV) of your telescope is somewhere in that patch of sky. By pointing your telescope at a star, and then selecting that same star on the PiFinder's alignment chart, you are telling the PiFinder where to put DSO's so they are in the middle of your eyepiece each time. @@ -328,7 +328,7 @@ are in the middle of your eyepiece each time. `click here `_ -To being, select the 'Align' option from the 'Start' menu +To begin, select the 'Align' option from the 'Start' menu .. image:: images/quick_start/start_align_selected.png @@ -366,7 +366,7 @@ go back to the eyepiece and center it up as well you can. When you press the wherever in your telescope eyepiece the star is at that moment Press the **SQUARE** button to complete the alignment, or you can press the **0** key -to exit alignment mode without changing the alignmnet point. +to exit alignment mode without changing the alignment point. .. image:: images/quick_start/align_done.png @@ -467,7 +467,7 @@ Now it's time to point your scope at the selected object! .. image:: images/quick_start/M13_locate.png -The Push-To instructions show how many degress to move your scope on each axis in order to find the +The Push-To instructions show how many degrees to move your scope on each axis in order to find the current object. The top arrow and number tell you which direction to spin your scope clockwise vs. counterclockwise, and how far in degrees. The lower arrow tells you whether to move your scope up towards zenith, or down towards the horizon, and how far in degrees. @@ -480,7 +480,7 @@ be in your eyepiece! - How close you need to get to 0.00/0.00 depends on your eyepiece. If you have an eyepiece with a true field of view of 1/2 degree, then a readout below 0.25/0.25 will assure the object is somewhere in your eyepiece FOV - When moving your scope the PiFinder uses it's accelerometer to estimate where your telescope is pointing. This is - less accurate than a plate solve, so the numbers displayed dim slightly to signal this. As soon as your stop + less accurate than a plate solve, so the numbers displayed dim slightly to signal this. As soon as you stop moving the telescope, the PiFinder will take a new image of the sky and determine exactly where your scope is pointing. The numbers displayed will shift a bit and become brighter indicating a 100% reliable position. @@ -504,7 +504,7 @@ To easily shut down the PiFinder: .. image:: images/quick_start/shutdown_confirm.png -When you confrim the screen and keypad will turn off after a few seconds and it's then safe to +When you confirm the screen and keypad will turn off after a few seconds and it's then safe to turn off the unit using the power switch or unplugging the battery. You've now got the basics of using the PiFinder sorted, to learn more you can continue on to the full :doc:`user_guide` diff --git a/docs/source/skysafari.rst b/docs/source/skysafari.rst index c5b72e492..0085ce949 100644 --- a/docs/source/skysafari.rst +++ b/docs/source/skysafari.rst @@ -57,4 +57,4 @@ Click 'Next' to continue The defaults are good for the Readout rate and Timeout. Give your profile a name and click the 'Save Preset' button. This will save your new profile and make it the active one. -Now you should be able to select the Telescope icon on the main SkySafari screen and click the connect button to start requesting position updates from the PiFinder. If no solution has been obtained yet, the PiFinder will send a default location to SkySafari (0 degress RA/DEC) until it completes the first exposure/solve. +Now you should be able to select the Telescope icon on the main SkySafari screen and click the connect button to start requesting position updates from the PiFinder. If no solution has been obtained yet, the PiFinder will send a default location to SkySafari (0 degrees RA/DEC) until it completes the first exposure/solve. diff --git a/docs/source/software.rst b/docs/source/software.rst index 8b8e6bcf5..80140ed4a 100644 --- a/docs/source/software.rst +++ b/docs/source/software.rst @@ -71,7 +71,7 @@ General Pi Setup You must use the specific Raspberry Pi OS version listed here or the PiFinder software will not work. The software is designed and tested for a specific version with each release. -* Create Image: I'd strongly recommend using the Rapsberry Pi imager. It's available for most platforms and lets you easily setup wifi and SSH for your new image. +* Create Image: I'd strongly recommend using the Raspberry Pi imager. It's available for most platforms and lets you easily setup wifi and SSH for your new image. * Select the 64-Bit version of Pi OS (**Legacy**) Lite (No Desktop Environment) diff --git a/docs/source/user_guide.rst b/docs/source/user_guide.rst index d99fdab4b..3842b21e2 100644 --- a/docs/source/user_guide.rst +++ b/docs/source/user_guide.rst @@ -64,7 +64,7 @@ site, you can turn the brightness down to preserve your dark-adapted vision. at the eyepiece in especially dark environments. The default is 30 seconds and this can be configured, or turned off completely, in the :ref:`user_guide:settings menu` - Pressing any button, or moving the PFinder will wake it from power save mode. + Pressing any button, or moving the PiFinder will wake it from power save mode. The Menu System ===================================== @@ -88,7 +88,7 @@ Screens -------- When you choose some menu items, like Camera, these will lead you to a specific screen such as showing the -camera preview, a start chart or details about a particular catalog object. Each one of the screens is +camera preview, a star chart or details about a particular catalog object. Each one of the screens is covered in more detail below. Options @@ -556,7 +556,7 @@ Web Interface The PiFinder provides an easy to use web interface which allows you to: * See the current PiFinder status -* Remote control the PiFinder via a virtural screen and keypad +* Remote control the PiFinder via a virtual screen and keypad * Change network settings and connect to new WiFi networks * Backup and restore your observing logs, settings and other data * View and download your logged observations diff --git a/docs/source/v25_upgrade.rst b/docs/source/v25_upgrade.rst index 17dc1b8b3..015a43e4d 100644 --- a/docs/source/v25_upgrade.rst +++ b/docs/source/v25_upgrade.rst @@ -23,7 +23,7 @@ guide once before diving in. Camera Prep ---------------- -The new v3 camera may come with one of two different lens holders aready installed. No matter +The new v3 camera may come with one of two different lens holders already installed. No matter which your camera has you'll be removing and replacing it. .. image:: images/v25_upgrade/v25_upgrade_11.jpeg @@ -51,8 +51,8 @@ there are holes there to help get started. Tighten the screws down against the .. image:: images/v25_upgrade/v25_upgrade_15.jpeg Flip the camera assembly over and thread in the lens. Be slow and careful here. With gentle force -the lens should slide in a few MM to get everything align and stop. When it stops, check to make sure it seems -straight and start screwing it into place. To get focus about right, You'll want a 6mm gap (picured below) between the +the lens should slide in a few MM to get everything aligned and stop. When it stops, check to make sure it seems +straight and start screwing it into place. To get focus about right, You'll want a 6mm gap (pictured below) between the top of the lens holder and the bottom of the lip on the lens. Don't fret too much about it as you'll do final focus under the stars. @@ -97,7 +97,7 @@ by sliding the dark-grey piece away from the PCB. Be gentle as this part can br much force. Once the connector is open, slide the cable into the connector using gentle force and making -sure it's well aligned. Take you time and watch the +sure it's well aligned. Take your time and watch the dark-grey clip. It should not close as you are inserting the cable, and if it does, you'll need to re-open it to get the cable to slide in all the way. diff --git a/fonts/sarasa-mono-sc-light-nerd-font+patched.ttf b/fonts/sarasa-mono-sc-light-nerd-font+patched.ttf new file mode 100644 index 000000000..6c0dd58a6 Binary files /dev/null and b/fonts/sarasa-mono-sc-light-nerd-font+patched.ttf differ diff --git a/python/PiFinder/pos_server.py b/python/PiFinder/pos_server.py index 8049be207..906785aef 100644 --- a/python/PiFinder/pos_server.py +++ b/python/PiFinder/pos_server.py @@ -90,6 +90,31 @@ def get_telescope_dec(shared_state, _): return dec_result +def get_distance_bars(_shared_state, _input_str): + return "\x7f" + + +def get_firmware_date(_shared_state, _input_str): + return "Jan 28 2026" + + +def get_firmware_version(_shared_state, _input_str): + return "01.0" + + +def get_product(_shared_state, _input_str): + return "PiFinder" + + +def get_firmware_time(_shared_state, _input_str): + return "17:25:00" + + +def get_status(_shared_state, _input_str): + # Indicates alt-az mode, tracking, and 1-star aligned + return "AT1" + + def respond_none(shared_state, input_str): return None @@ -182,13 +207,20 @@ def extract_command(s): lx_command_dict = { + "D": get_distance_bars, "GD": get_telescope_dec, "GR": get_telescope_ra, - "RS": respond_none, - "MS": respond_zero, - "Sd": parse_sd_command, - "Sr": parse_sr_command, - "Q": respond_none, + "GVD": get_firmware_date, + "GVN": get_firmware_version, + "GVP": get_product, + "GVT": get_firmware_time, + "GW": get_status, + "RS": respond_none, # Set slew rate to max + "MS": respond_zero, # Slew to object + "Q": respond_none, # Abort + "U": respond_none, # Precision toggle + "Sd": parse_sd_command, # Set declination + "Sr": parse_sr_command, # Set RA } @@ -216,8 +248,13 @@ def handle_client(client_socket, shared_state): command_handler = lx_command_dict.get(command, not_implemented) out_data = command_handler(shared_state, in_data) if out_data: - response = out_data if out_data in ("0", "1") else out_data + "#" + response = out_data if out_data in ("0", "1", "AT1") else out_data + "#" client_socket.send(response.encode()) + # Special case for the ACK command in the LX200 protocol sent by Stellarium + # No leading : for the ACK command but Stellarium leads all commands with # + elif in_data[0] == 0x06 or (in_data[0] == b'#' and in_data[1] == 0x06): + # A indicates alt-az mode + client_socket.send("A".encode()) except socket.timeout: logging.warning("Connection timed out.") break diff --git a/python/PiFinder/ui/fonts.py b/python/PiFinder/ui/fonts.py index 4ae93464a..1ef097b00 100644 --- a/python/PiFinder/ui/fonts.py +++ b/python/PiFinder/ui/fonts.py @@ -3,6 +3,8 @@ from pathlib import Path from PIL import ImageFont +import gettext +import os class Font: @@ -20,9 +22,8 @@ def __init__( height: int = 0, width: int = 0, ): - self.font = ImageFont.truetype( - ttf_file, size, layout_engine=ImageFont.Layout.BASIC - ) + # CHANGED: Removed layout_engine for better Unicode support + self.font = ImageFont.truetype(ttf_file, size) # calculate height/width # Use several chars to get space between @@ -43,10 +44,40 @@ def __init__( huge_size=35, screen_width=128, ): + base_dir = Path(__file__).parent.parent.parent font_path = str(Path(Path.cwd(), "../fonts")) - boldttf = str(Path(font_path, "RobotoMonoNerdFontMono-Bold.ttf")) - regularttf = str(Path(font_path, "RobotoMonoNerdFontMono-Regular.ttf")) - + print(font_path) + # CHANGED: Check if Chinese language is active + is_chinese = False + try: + locale_path = str(base_dir / "locale") + # Try to load Chinese translation + lang = gettext.translation( + "messages", + locale_path, + languages=["zh"], + fallback=True + ) + # Check if translation is actually Chinese (not fallback) + info = lang.info() + if info and info.get('language', '').startswith('zh'): + # Additional check: verify translation works + test = lang.gettext("Star") + if test and test != "Star": + is_chinese = True + except Exception: + pass + + if is_chinese: + # Use Chinese font for Chinese language + chinesettf = str(Path(font_path, "sarasa-mono-sc-light-nerd-font+patched.ttf")) + boldttf = chinesettf + regularttf = chinesettf + else: + # Use default fonts for other languages + boldttf = str(Path(font_path, "RobotoMonoNerdFontMono-Bold.ttf")) + regularttf = str(Path(font_path, "RobotoMonoNerdFontMono-Regular.ttf")) + print(boldttf) self.base = Font(boldttf, base_size, screen_width) # 10 self.bold = Font(boldttf, bold_size, screen_width) # 12 self.large = Font(regularttf, large_size, screen_width) # 15 diff --git a/python/PiFinder/ui/menu_structure.py b/python/PiFinder/ui/menu_structure.py index 75dfecb0d..5a394705e 100644 --- a/python/PiFinder/ui/menu_structure.py +++ b/python/PiFinder/ui/menu_structure.py @@ -26,6 +26,7 @@ def _(key: str) -> Any: s = _("Language: en") s = _("Language: es") s = _("Language: fr") +s = _("Language: zh") s = s del s @@ -719,6 +720,10 @@ def _(key: str) -> Any: "name": _("Spanish"), "value": "es", }, + { + "name": _("Chinese"), + "value": "zh", + }, ], }, ], diff --git a/python/locale/zh/LC_MESSAGES/messages.mo b/python/locale/zh/LC_MESSAGES/messages.mo new file mode 100644 index 000000000..9cfd12d4a Binary files /dev/null and b/python/locale/zh/LC_MESSAGES/messages.mo differ diff --git a/python/locale/zh/LC_MESSAGES/messages.po b/python/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..2622c95a8 --- /dev/null +++ b/python/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,774 @@ +# Chinese (Simplified) translations for PiFinder. +# Copyright (C) 2025 ORGANIZATION +# This file is distributed under the same license as the PiFinder project. +# +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2025-10-22 20:16+0200\n" +"PO-Revision-Date: 2025-02-05 15:00+0800\n" +"Last-Translator: ClawdPulse\n" +"Language: zh_CN\n" +"Language-Team: zh_CN \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.16.0\n" + +#: PiFinder/cat_images.py:49 +msgid "No Image" +msgstr "无图像" + +#: PiFinder/main.py:545 +msgid "" +"Degraded\n" +"Check Status" +msgstr "" +"性能下降\n" +"检查状态" + +#: PiFinder/main.py:637 +msgid "" +"Catalogs\n" +"Fully Loaded" +msgstr "" +"星表\n" +"已完全加载" + +#: PiFinder/obj_types.py:7 PiFinder/ui/menu_structure.py:385 +msgid "Galaxy" +msgstr "星系" + +#. TRANSLATORS: Object type +#: PiFinder/obj_types.py:8 PiFinder/ui/menu_structure.py:389 +msgid "Open Cluster" +msgstr "疏散星团" + +#. TRANSLATORS: Object type +#: PiFinder/obj_types.py:9 PiFinder/ui/menu_structure.py:397 +msgid "Globular" +msgstr "球状星团" + +#. TRANSLATORS: Object type +#: PiFinder/obj_types.py:10 PiFinder/ui/menu_structure.py:401 +msgid "Nebula" +msgstr "星云" + +#. TRANSLATORS: Object type +#: PiFinder/obj_types.py:11 PiFinder/ui/menu_structure.py:409 +msgid "Dark Nebula" +msgstr "暗星云" + +#. TRANSLATORS: Object type +#: PiFinder/obj_types.py:12 +msgid "Planetary" +msgstr "行星状星云" + +#. TRANSLATORS: Object type +#: PiFinder/obj_types.py:13 +msgid "Cluster + Neb" +msgstr "星团+星云" + +#. TRANSLATORS: Object type +#: PiFinder/obj_types.py:14 PiFinder/ui/menu_structure.py:429 +msgid "Asterism" +msgstr "星群" + +#. TRANSLATORS: Object type +#: PiFinder/obj_types.py:15 PiFinder/ui/menu_structure.py:425 +msgid "Knot" +msgstr "节" + +#. TRANSLATORS: Object type +#: PiFinder/obj_types.py:16 +msgid "Triple star" +msgstr "三合星" + +#. TRANSLATORS: Object type +#: PiFinder/obj_types.py:17 +msgid "Double star" +msgstr "双星" + +#. TRANSLATORS: Object type +#: PiFinder/obj_types.py:18 PiFinder/ui/menu_structure.py:413 +msgid "Star" +msgstr "恒星" + +#. TRANSLATORS: Object type +#: PiFinder/obj_types.py:19 +msgid "Unkn" +msgstr "未知" + +#: PiFinder/obj_types.py:20 PiFinder/ui/menu_structure.py:421 +msgid "Planet" +msgstr "行星" + +#: PiFinder/obj_types.py:21 PiFinder/ui/menu_structure.py:282 +msgid "Comet" +msgstr "彗星" + +#: PiFinder/align.py:45 +msgid "Align Timeout" +msgstr "对齐超时" + +#: PiFinder/align.py:58 +msgid "Alignment Set" +msgstr "对齐已设置" + +#: PiFinder/ui/chart.py:115 +msgid "Can't plot" +msgstr "无法绘制" + +#: PiFinder/ui/chart.py:134 +msgid "No Solve Yet" +msgstr "尚未解析" + +#: PiFinder/ui/align.py:43 +msgid "Aligning..." +msgstr "对齐中..." + +#: PiFinder/ui/align.py:67 +msgid "Aligned!" +msgstr "已对齐!" + +#: PiFinder/ui/align.py:88 +msgid "Alignment failed" +msgstr "对齐失败" + +#: PiFinder/ui/callbacks.py:54 +msgid "Filters Reset" +msgstr "滤镜已重置" + +#: PiFinder/ui/callbacks.py:74 +msgid "Test Mode" +msgstr "测试模式" + +#: PiFinder/ui/callbacks.py:107 +msgid "Shutting Down" +msgstr "正在关机" + +#: PiFinder/ui/callbacks.py:118 +msgid "Restarting..." +msgstr "正在重启..." + +#: PiFinder/ui/callbacks.py:145 +msgid "Switching cam" +msgstr "切换相机" + +#: PiFinder/ui/callbacks.py:161 +msgid "WiFi to AP" +msgstr "WiFi转AP" + +#: PiFinder/ui/callbacks.py:168 +msgid "WiFi to Client" +msgstr "WiFi转客户端" + +#: PiFinder/ui/loc_gps.py:21 +msgid "Time: {time}" +msgstr "时间: {time}" + +#: PiFinder/ui/menu_structure.py:33 +msgid "PiFinder" +msgstr "PiFinder" + +#: PiFinder/ui/menu_structure.py:37 +msgid "Start" +msgstr "开始" + +#: PiFinder/ui/menu_structure.py:42 +msgid "Focus" +msgstr "对焦" + +#: PiFinder/ui/menu_structure.py:46 +msgid "Align" +msgstr "对齐" + +#: PiFinder/ui/menu_structure.py:53 +msgid "GPS Status" +msgstr "GPS状态" + +#: PiFinder/ui/menu_structure.py:58 +msgid "Chart" +msgstr "星图" + +#: PiFinder/ui/menu_structure.py:63 +msgid "Objects" +msgstr "天体" + +#: PiFinder/ui/menu_structure.py:68 +msgid "All Filtered" +msgstr "全部筛选" + +#: PiFinder/ui/menu_structure.py:73 +msgid "By Catalog" +msgstr "按星表" + +#: PiFinder/ui/menu_structure.py:79 +msgid "Planets" +msgstr "行星" + +#: PiFinder/ui/menu_structure.py:89 +msgid "NGC" +msgstr "NGC" + +#: PiFinder/ui/menu_structure.py:93 +msgid "Messier" +msgstr "梅西耶" + +#: PiFinder/ui/menu_structure.py:97 +msgid "DSO..." +msgstr "深空天体..." + +#: PiFinder/ui/menu_structure.py:102 +msgid "Abell Pn" +msgstr "阿贝尔行星状星云" + +#: PiFinder/ui/menu_structure.py:107 +msgid "Arp Galaxies" +msgstr "Arp星系" + +#: PiFinder/ui/menu_structure.py:112 +msgid "Barnard" +msgstr "巴纳德" + +#: PiFinder/ui/menu_structure.py:117 +msgid "Caldwell" +msgstr "考德威尔" + +#: PiFinder/ui/menu_structure.py:122 +msgid "Collinder" +msgstr "科林德" + +#: PiFinder/ui/menu_structure.py:127 +msgid "E.G. Globs" +msgstr "ESO球状星团" + +#: PiFinder/ui/menu_structure.py:132 +msgid "Herschel 400" +msgstr "赫歇尔400" + +#: PiFinder/ui/menu_structure.py:137 +msgid "IC" +msgstr "IC" + +#: PiFinder/ui/menu_structure.py:156 +msgid "Sharpless" +msgstr "夏普利斯" + +#: PiFinder/ui/menu_structure.py:161 +msgid "TAAS 200" +msgstr "TAAS 200" + +#: PiFinder/ui/menu_structure.py:166 +msgid "Stars..." +msgstr "恒星..." + +#: PiFinder/ui/menu_structure.py:171 +msgid "Bright Named" +msgstr "亮星" + +#: PiFinder/ui/menu_structure.py:176 +msgid "SAC Doubles" +msgstr "SAC双星" + +#: PiFinder/ui/menu_structure.py:181 +msgid "SAC Asterisms" +msgstr "SAC星群" + +#: PiFinder/ui/menu_structure.py:186 +msgid "SAC Red Stars" +msgstr "SAC红巨星" + +#: PiFinder/ui/menu_structure.py:191 +msgid "RASC Doubles" +msgstr "RASC双星" + +#: PiFinder/ui/menu_structure.py:196 +msgid "WDS Doubles" +msgstr "WDS双星" + +#: PiFinder/ui/menu_structure.py:201 +msgid "TLK 90 Variables" +msgstr "TLK 90变星" + +#: PiFinder/ui/menu_structure.py:207 +msgid "Recent" +msgstr "最近" + +#: PiFinder/ui/menu_structure.py:212 +msgid "Custom" +msgstr "自定义" + +#: PiFinder/ui/menu_structure.py:217 +msgid "Name Search" +msgstr "名称搜索" + +#: PiFinder/ui/menu_structure.py:223 +msgid "Filter" +msgstr "筛选" + +#: PiFinder/ui/menu_structure.py:228 +msgid "Reset All" +msgstr "全部重置" + +#: PiFinder/ui/menu_structure.py:233 +msgid "Confirm" +msgstr "确认" + +#: PiFinder/ui/menu_structure.py:234 +msgid "Cancel" +msgstr "取消" + +#: PiFinder/ui/menu_structure.py:238 +msgid "Catalogs" +msgstr "星表" + +#: PiFinder/ui/menu_structure.py:305 +msgid "Type" +msgstr "类型" + +#: PiFinder/ui/menu_structure.py:373 +msgid "Cluster/Neb" +msgstr "星团/星云" + +#: PiFinder/ui/menu_structure.py:377 +msgid "P. Nebula" +msgstr "行星状星云" + +#: PiFinder/ui/menu_structure.py:405 +msgid "Double Str" +msgstr "双星" + +#: PiFinder/ui/menu_structure.py:433 +msgid "Triple Str" +msgstr "三合星" + +#: PiFinder/ui/menu_structure.py:449 +msgid "Altitude" +msgstr "高度" + +#: PiFinder/ui/menu_structure.py:454 +msgid "None" +msgstr "无" + +#: PiFinder/ui/menu_structure.py:492 +msgid "Magnitude" +msgstr "星等" + +#: PiFinder/ui/menu_structure.py:541 +msgid "Observed" +msgstr "已观测" + +#: PiFinder/ui/menu_structure.py:546 +msgid "Any" +msgstr "任意" + +#: PiFinder/ui/menu_structure.py:550 +msgid "Yes" +msgstr "是" + +#: PiFinder/ui/menu_structure.py:554 +msgid "No" +msgstr "否" + +#: PiFinder/ui/menu_structure.py:559 +msgid "Settings" +msgstr "设置" + +#: PiFinder/ui/menu_structure.py:563 +msgid "User Pref..." +msgstr "用户偏好..." + +#: PiFinder/ui/menu_structure.py:568 +msgid "Key Bright" +msgstr "按键亮度" + +#: PiFinder/ui/menu_structure.py:598 +msgid "Sleep Time" +msgstr "休眠时间" + +#: PiFinder/ui/menu_structure.py:602 +msgid "Off" +msgstr "关闭" + +#: PiFinder/ui/menu_structure.py:622 +msgid "Menu Anim" +msgstr "菜单动画" + +#: PiFinder/ui/menu_structure.py:626 +msgid "Fast" +msgstr "快" + +#: PiFinder/ui/menu_structure.py:630 +msgid "Medium" +msgstr "中" + +#: PiFinder/ui/menu_structure.py:634 +msgid "Slow" +msgstr "慢" + +#: PiFinder/ui/menu_structure.py:642 +msgid "Scroll Speed" +msgstr "滚动速度" + +#: PiFinder/ui/menu_structure.py:660 +msgid "Az Arrows" +msgstr "方位箭头" + +#: PiFinder/ui/menu_structure.py:664 +msgid "Default" +msgstr "默认" + +#: PiFinder/ui/menu_structure.py:668 +msgid "Reverse" +msgstr "反向" + +#: PiFinder/ui/menu_structure.py:673 +msgid "Language" +msgstr "语言" + +#: PiFinder/ui/menu_structure.py:677 +msgid "English" +msgstr "英语" + +#: PiFinder/ui/menu_structure.py:681 +msgid "German" +msgstr "德语" + +#: PiFinder/ui/menu_structure.py:685 +msgid "French" +msgstr "法语" + +#: PiFinder/ui/menu_structure.py:689 +msgid "Spanish" +msgstr "西班牙语" + +#: PiFinder/ui/menu_structure.py:693 +msgid "Chinese" +msgstr "中文" + +#: PiFinder/ui/menu_structure.py:699 +msgid "Chart..." +msgstr "星图..." + +#: PiFinder/ui/menu_structure.py:703 +msgid "Reticle" +msgstr "十字丝" + +#: PiFinder/ui/menu_structure.py:723 +msgid "Constellation" +msgstr "星座" + +#: PiFinder/ui/menu_structure.py:743 +msgid "DSO Display" +msgstr "深空天体显示" + +#: PiFinder/ui/menu_structure.py:763 +msgid "RA/DEC Disp." +msgstr "赤经/赤纬显示" + +#: PiFinder/ui/menu_structure.py:767 +msgid "HH:MM" +msgstr "时:分" + +#: PiFinder/ui/menu_structure.py:771 +msgid "Degrees" +msgstr "度数" + +#: PiFinder/ui/menu_structure.py:775 +msgid "Camera Exp" +msgstr "相机曝光" + +#: PiFinder/ui/menu_structure.py:779 +msgid "Auto" +msgstr "自动" + +#: PiFinder/ui/menu_structure.py:811 +msgid "WiFi Mode" +msgstr "WiFi模式" + +#: PiFinder/ui/menu_structure.py:815 +msgid "Client Mode" +msgstr "客户端模式" + +#: PiFinder/ui/menu_structure.py:820 +msgid "AP Mode" +msgstr "AP模式" + +#: PiFinder/ui/menu_structure.py:826 +msgid "Mount Type" +msgstr "望远镜类型" + +#: PiFinder/ui/menu_structure.py:830 +msgid "Alt/Az" +msgstr "地平式" + +#: PiFinder/ui/menu_structure.py:834 +msgid "Equatorial" +msgstr "赤道式" + +#: PiFinder/ui/menu_structure.py:839 +msgid "Advanced" +msgstr "高级" + +#: PiFinder/ui/menu_structure.py:848 +msgid "PiFinder Type" +msgstr "PiFinder类型" + +#: PiFinder/ui/menu_structure.py:852 +msgid "Left" +msgstr "左" + +#: PiFinder/ui/menu_structure.py:856 +msgid "Right" +msgstr "右" + +#: PiFinder/ui/menu_structure.py:860 +msgid "Straight" +msgstr "直" + +#: PiFinder/ui/menu_structure.py:864 +msgid "Flat v3" +msgstr "平板v3" + +#: PiFinder/ui/menu_structure.py:868 +msgid "Flat v2" +msgstr "平板v2" + +#: PiFinder/ui/menu_structure.py:872 +msgid "AS Bloom" +msgstr "AS Bloom" + +#: PiFinder/ui/menu_structure.py:877 +msgid "Camera Type" +msgstr "相机类型" + +#: PiFinder/ui/menu_structure.py:881 +msgid "v2 - imx477" +msgstr "v2 - imx477" + +#: PiFinder/ui/menu_structure.py:885 +msgid "v3 - imx296" +msgstr "v3 - imx296" + +#: PiFinder/ui/menu_structure.py:889 +msgid "v3 - imx462" +msgstr "v3 - imx462" + +#: PiFinder/ui/menu_structure.py:893 +msgid "GPS Settings" +msgstr "GPS设置" + +#: PiFinder/ui/menu_structure.py:897 +msgid "GPS Type" +msgstr "GPS类型" + +#: PiFinder/ui/menu_structure.py:901 +msgid "UBlox" +msgstr "UBlox" + +#: PiFinder/ui/menu_structure.py:905 +msgid "GPSD (generic)" +msgstr "GPSD (通用)" + +#: PiFinder/ui/menu_structure.py:909 +msgid "GPS Baud Rate" +msgstr "GPS波特率" + +#: PiFinder/ui/menu_structure.py:913 +msgid "9600 (standard)" +msgstr "9600 (标准)" + +#: PiFinder/ui/menu_structure.py:917 +msgid "115200 (UBlox-10)" +msgstr "115200 (UBlox-10)" + +#: PiFinder/ui/menu_structure.py:924 +msgid "IMU Sensit." +msgstr "IMU灵敏度" + +#: PiFinder/ui/menu_structure.py:928 +msgid "Very Low" +msgstr "很低" + +#: PiFinder/ui/menu_structure.py:932 +msgid "Low" +msgstr "低" + +#: PiFinder/ui/menu_structure.py:936 +msgid "High" +msgstr "高" + +#: PiFinder/ui/menu_structure.py:943 +msgid "Tools" +msgstr "工具" + +#: PiFinder/ui/menu_structure.py:945 +msgid "Status" +msgstr "状态" + +#: PiFinder/ui/menu_structure.py:946 +msgid "Equipment" +msgstr "设备" + +#: PiFinder/ui/menu_structure.py:950 +msgid "Place & Time" +msgstr "位置和时间" + +#: PiFinder/ui/menu_structure.py:955 +msgid "Set Location" +msgstr "设置位置" + +#: PiFinder/ui/menu_structure.py:959 +msgid "Set Time" +msgstr "设置时间" + +#: PiFinder/ui/menu_structure.py:964 +msgid "Reset" +msgstr "重置" + +#: PiFinder/ui/menu_structure.py:966 +msgid "Console" +msgstr "控制台" + +#: PiFinder/ui/menu_structure.py:967 +msgid "Software Upd" +msgstr "软件更新" + +#: PiFinder/ui/menu_structure.py:968 +msgid "Test Mode" +msgstr "测试模式" + +#: PiFinder/ui/menu_structure.py:970 +msgid "Experimental" +msgstr "实验功能" + +#: PiFinder/ui/menu_structure.py:972 +msgid "SQM" +msgstr "SQM" + +#: PiFinder/ui/menu_structure.py:976 +msgid "AE Algo" +msgstr "AE算法" + +#: PiFinder/ui/menu_structure.py:980 +msgid "Sweep" +msgstr "扫描" + +#: PiFinder/ui/menu_structure.py:984 +msgid "Exponential" +msgstr "指数" + +#: PiFinder/ui/menu_structure.py:988 +msgid "Reset to 0.4s" +msgstr "重置为0.4秒" + +#: PiFinder/ui/menu_structure.py:992 +msgid "Histogram" +msgstr "直方图" + +#: PiFinder/ui/menu_structure.py:997 +msgid "Power" +msgstr "电源" + +#: PiFinder/ui/menu_structure.py:1001 +msgid "Shutdown" +msgstr "关机" + +#: PiFinder/ui/menu_structure.py:1010 +msgid "Restart" +msgstr "重启" + +#: PiFinder/ui/menu_structure.py:1026 PiFinder/ui/menu_structure.py:1037 +msgid "Cancel" +msgstr "取消" + +#: PiFinder/ui/menu_structure.py:22 +msgid "Language: zh" +msgstr "语言: 中文" + +#: PiFinder/ui/callbacks.py:49 +msgid "Options for\nDIY PiFinders" +msgstr "DIY PiFinder\n选项" + +#: PiFinder/ui/equipment.py:95 +msgid "No telescope selected" +msgstr "未选择望远镜" + +#: PiFinder/ui/equipment.py:97 +msgid "No eyepiece selected" +msgstr "未选择目镜" + +#: PiFinder/ui/equipment.py:99 +msgid "Mag: {mag:.0f}x" +msgstr "倍率: {mag:.0f}x" + +#: PiFinder/ui/equipment.py:101 +msgid "TFOV: {tfov_degrees:.0f}°{tfov_minutes:02.0f}'" +msgstr "视场: {tfov_degrees:.0f}°{tfov_minutes:02.0f}'" + +#: PiFinder/ui/equipment.py:104 +msgid "Telescope..." +msgstr "望远镜..." + +#: PiFinder/ui/equipment.py:108 +msgid "Eyepiece..." +msgstr "目镜..." + +#: PiFinder/ui/base.py:319 +msgid "Limited" +msgstr "有限" + +#: PiFinder/ui/base.py:320 +msgid "Basic" +msgstr "基础" + +#: PiFinder/ui/base.py:321 +msgid "Accurate" +msgstr "精确" + +#: PiFinder/ui/base.py:322 +msgid "Precise" +msgstr "精准" + +#: PiFinder/ui/location_list.py:42 +msgid "Save" +msgstr "保存" + +#: PiFinder/ui/location_list.py:43 +msgid "Lock" +msgstr "锁定" + +#: PiFinder/ui/location_list.py:55 +msgid "Location Name" +msgstr "位置名称" + +#: PiFinder/ui/location_list.py:56 +msgid "Loc {number}" +msgstr "位置 {number}" + +#: PiFinder/ui/location_list.py:60 +msgid "Location saved" +msgstr "位置已保存" + +#: PiFinder/ui/location_list.py:61 +msgid "Location locked" +msgstr "位置已锁定" + +#: PiFinder/ui/loc_gps.py:47 +msgid "{error:.1f} km" +msgstr "{error:.1f} 公里" + +#: PiFinder/ui/loc_gps.py:49 +msgid "{error:.0f} m" +msgstr "{error:.0f} 米" + +#: PiFinder/ui/loc_gps.py:75 +msgid "GPS Locked" +msgstr "GPS已锁定" + +#: PiFinder/ui/loc_gps.py:82 +msgid "Lock boost on" +msgstr "锁定增强开启" diff --git a/python/views/gps.tpl b/python/views/gps.tpl index ce536d095..a074194f3 100644 --- a/python/views/gps.tpl +++ b/python/views/gps.tpl @@ -54,7 +54,7 @@
- +
diff --git a/python/views/network_item.tpl b/python/views/network_item.tpl index db23813fa..26726e35b 100644 --- a/python/views/network_item.tpl +++ b/python/views/network_item.tpl @@ -12,7 +12,7 @@