Move PX4 Guide source into /docs (#24490)

* Add vitepress tree

* Update existing workflows so they dont trigger on changes in the docs path

* Add nojekyll, package.json, LICENCE etc

* Add crowdin docs upload/download scripts

* Add docs flaw checker workflows

* Used docs prefix for docs workflows

* Crowdin obvious fixes

* ci: docs move to self hosted runner

runs on a beefy server for faster builds

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* ci: don't run build action for docs or ci changes

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* ci: update runners

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* Add docs/en

* Add docs assets and scripts

* Fix up editlinks to point to PX4 sources

* Download just the translations that are supported

* Add translation sources for zh, uk, ko

* Update latest tranlsation and uorb graphs

* update vitepress to latest

---------

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
Co-authored-by: Ramon Roche <mrpollo@gmail.com>
This commit is contained in:
Hamish Willee
2025-03-13 16:08:27 +11:00
committed by GitHub
co-authored by Ramon Roche
parent 8e6d2ebe4a
commit 88d623bedb
5176 changed files with 558771 additions and 2 deletions
+59
View File
@@ -0,0 +1,59 @@
# Шина I2C (Огляд розробки)
I2C - це протокол послідовного обміну даними у вигляді пакетів, який дозволяє підключати кілька головних пристроїв до кількох підчинених пристроїв, використовуючи лише 2 провідника для кожного з'єднання.
Цей протокол призначений для підключення периферійних ІС з низькою швидкістю до процесорів та мікроконтролерів у короткій дистанційній, внутрішньоплатній комунікації.
Pixhawk/PX4 підтримує її для:
- Підключення зовнішніх компонентів, які вимагають вищих швидкостей передачі даних, ніж ті, що надає строгий послідовний UART, такі як далекоміри.
- Сумісність з периферійними пристроями, які підтримують лише I2C.
- Дозвіл декількох пристроїв приєднатися до одного шини (корисно для збереження портів).
Наприклад, світлодіоди, компас, дальномери і т. д.
:::info
The page [Hardware > I2C Peripherals](../sensor_bus/i2c_general.md) contains information about how to _use_ (rather than integrate) I2C peripherals and solve common setup problems.
:::
:::tip
IMUs (accelerometers/gyroscopes) should not be attached via I2C (typically the [SPI](https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus) bus is used).
Шина недостатньо швидка навіть з одним приєднаним пристроєм для виконання фільтрації вібрації (наприклад), і продуктивність погіршується ще більше з кожним додатковим пристроєм на шині.
:::
## Інтеграція пристроїв I2C
Drivers should `#include <drivers/device/i2c.h>` and then provide an implementation of the abstract base class `I2C` defined in **I2C.hpp** for the target hardware (i.e. for NuttX [here](https://github.com/PX4/PX4-Autopilot/blob/main/src/lib/drivers/device/nuttx/I2C.hpp)).
A small number of drivers will also need to include headers for their type of device (**drv_\*.h**) in [/src/drivers/](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers) - e.g. [drv_led.h](https://github.com/PX4/PX4-Autopilot/blob/main/src/drivers/drv_led.h).
Для включення драйвера в прошивку потрібно додати драйвер до файлу cmake, специфічного для плати, який відповідає цілі, для якої ви хочете збудувати.
Ви можете це зробити для одного драйвера:
```
CONFIG_DRIVERS_DISTANCE_SENSOR_LIGHTWARE_LASER_I2C=y
```
Ви також можете включити всі драйвери певного типу.
```
CONFIG_COMMON_DISTANCE_SENSOR=y
```
:::tip
For example, you can see/search for `CONFIG_DRIVERS_DISTANCE_SENSOR_LIGHTWARE_LASER_I2C` in the [px4_fmu-v4_default](https://github.com/PX4/PX4-Autopilot/blob/main/boards/px4/fmu-v4/default.px4board) configuration.
:::
## Приклади драйвера I2C
To find I2C driver examples, search for **i2c.h** in [/src/drivers/](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers).
Ось декілька прикладів:
- [drivers/distance_sensor/lightware_laser_i2c](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/distance_sensor/lightware_laser_i2c) - I2C driver for [Lightware SF1XX LIDAR](../sensor/sfxx_lidar.md).
- [drivers/distance_sensor/lightware_laser_serial](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/distance_sensor/lightware_laser_serial) - Serial driver for [Lightware SF1XX LIDAR](../sensor/sfxx_lidar.md).
- [drivers/ms5611](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/barometer/ms5611) - I2C Driver for the MS5611 and MS6507 barometric pressure sensor connected via I2C (or SPI).
## Подальша інформація
- [I2C](https://en.wikipedia.org/wiki/I%C2%B2C) (Wikipedia)
- [I2C Comparative Overview](https://learn.sparkfun.com/tutorials/i2c) (learn.sparkfun.com)
- [Driver Framework](../middleware/drivers.md)
+122
View File
@@ -0,0 +1,122 @@
# Периферійні пристрої шини I2C
[I2C](https://en.wikipedia.org/wiki/I2C) is a serial communication protocol that is commonly used (at least on smaller drones), for connecting peripheral components like rangefinders, LEDs, Compass, etc.
Рекомендовано для:
- Connecting offboard components that require low bandwidth and low latency communication, e.g. [rangefinders](../sensor/rangefinders.md), [magnetometers](../gps_compass/magnetometer.md), [airspeed sensors](../sensor/airspeed.md) and [tachometers](../sensor/tachometers.md) .
- Сумісність з периферійними пристроями, які підтримують лише I2C.
- Можливість підключення декількох пристроїв до однієї шини, що корисно для збереження портів.
I2C дозволяє підключати декілька головних пристроїв до декількох рабочих пристроїв, використовуючи лише 2 провідника на підключення (SDA, SCL).
Теоретично шина може підтримувати 128 пристроїв, що кожен з них доступний за унікальною адресою.
:::info
UAVCAN would normally be preferred where higher data rates are required, and on larger vehicles where sensors are be mounted further from the flight controller.
:::
## Підключення
I2C використовує пару проводів: SDA (серійні дані) та SCL (серійний годинник).
Шина є типу відкритого стоку, що означає, що пристрої заземлюють лінію даних.
It uses a pullup resistor to push it to `log.1` (idle state) - every wire has it usually located on the bus terminating devices.
Одна шина може підключати до кількох пристроїв I2C.
Індивідуальні пристрої підключені без перетину.
Для підключення (згідно зі стандартом dronecode) використовуються 4-жильні кабелі з роз'ємами JST-GH.
To ensure reliable communication and to reduce crosstalk it is advised to apply recommendations concerning [cable twisting](../assembly/cable_wiring.md#i2c-cables) and pullup resistors placement.
![Cable twisting](../../assets/hardware/cables/i2c_jst-gh_cable.jpg)
## Перевірка статусу шини та пристроїв
A useful tool for bus analysis is [i2cdetect](../modules/modules_command.md#i2cdetect).
Це список доступних пристроїв I2C за їх адресами.
Він може бути використаний для визначення доступності пристрою на шині та можливості автопілота спілкуватися з ним.
Інструмент можна запустити в терміналі PX4 за допомогою наступної команди:
```
i2cdetect -b 1
```
where the bus number is specified after `-b` parameter
## Поширені проблеми
### Конфлікти адрес
Якщо два пристрої I2C на шині мають однаковий ідентифікатор, відбудеться конфлікт, і жоден з пристроїв не буде працювати належним чином (або взагалі).
Це зазвичай трапляється тому, що користувач повинен підключити два сенсори одного типу до шини, але це також може статися, якщо пристрої використовують однакові адреси за замовчуванням.
Деякі конкретні пристрої I2C можуть дозволити вибрати нову адресу для одного з пристроїв, щоб уникнути конфлікту.
Деякі пристрої не підтримують цю опцію, або не мають широких варіантів адрес, які можна використовувати (тобто не можуть бути використані для уникнення конфлікту).
If you can't change the addresses, one option is to use an [I2C Address Translator](#i2c-address-translators).
### Недостатня пропускна здатність передачі
Пропускна здатність, доступна для кожного окремого пристрою, зазвичай зменшується зі збільшенням кількості пристроїв. Точне зменшення залежить від пропускної здатності, використованої кожним окремим пристроєм. Therefore it is possible to connect many low bandwidth devices, like [tachometers](../sensor/tachometers.md).
Якщо додати занадто багато пристроїв, це може призвести до помилок передачі та ненадійності мережі.
Є кілька способів зменшення проблеми:
- Розподілити пристрої на групи, кожна з приблизно однаковою кількістю пристроїв та підключити кожну групу до одного порту автопілота
- Збільшити ліміт швидкості шини (звичайно встановлений в 100кГц для зовнішнього I2C bus)
### Надмірна ємність проводки
Електрична ємність шини проводки зростає, коли додаються більше пристроїв/проводів. Точне зменшення залежить від загальної довжини шини проводки та специфічної ємності проводки.
Проблему можна проаналізувати за допомогою осцилографа, де ми бачимо, що краї сигналів SDA/SCL вже не гострі.
Є кілька способів зменшення проблеми:
- Розподілити пристрої на групи, кожна з приблизно однаковою кількістю пристроїв та підключити кожну групу до одного порту автопілота
- Використання найкоротших і найвищої якості кабелів I2C, що можливо
- Відокремлення пристроїв зі слабким відкритим стоковим драйвером до меншої шини з нижчою ємністю
- [I2C Bus Accelerators](#i2c-bus-accelerators)
## Прискорювачі шини I2C
Посилювачі шини I2C - це окремі схеми, які можуть використовуватися для підтримки більшої довжини проводки на шині I2C.
Вони працюють, фізично діливши мережу I2C на 2 частини та використовуючи свої транзистори для підсилення сигналів I2C.
Доступні прискорювачі включають:
- [Thunderfly TFI2CEXT01](https://github.com/ThunderFly-aerospace/TFI2CEXT01):
![I2C bus extender](../../assets/peripherals/i2c_tfi2cext/tfi2cext01a_bottom.jpg)
- Цей дронекод має з'єднувачі, тому це дуже легко додати до налаштування Pixhawk I2C.
- Модуль не має налаштувань (він працює зразу після встановлення).
## Перетворювачі I2C адрес
Перетворювачі I2C адрес можуть використовуватися для запобігання конфліктів I2C адрес в системах, де немає іншого способу призначення унікальних адрес.
Вони працюють, слухаючи I2C комунікацію та трансформуючи адресу, коли викликається пристрій-слейв (згідно з попередньо налаштованим алгоритмом).
До підтримуваних перетворювачів I2C адрес включають:
- [Thunderfly TFI2CADT01](../sensor_bus/translator_tfi2cadt.md)
## I2C Bus Splitters
I2C Bus Splitters are circuit boards that split the I2C port on your flight controller into multiple ports.
They are useful if you want to use multiple I2C peripherals on a flight controller that has only one I2C port (or too few), such as an airspeed sensor and a distance sensor.
You can find an appropriate board using an internet search.
## I2C Level Converter
Some I2C devices have 5V on the data lines, while the Pixhawk connector standard port expects these lines to be 3.3 V.
You can use an I2C level converter to connect 5V devices to a Pixhawk I2C port.
You can find an appropriate covnerter using an internet search.
## Розробка I2C
Software development for I2C devices is described in [I2C Bus (Development Overview)](../sensor_bus/i2c_development.md).
## Подальша інформація
- [I2C](https://en.wikipedia.org/wiki/I%C2%B2C) (Wikipedia)
- [I2C Comparative Overview](https://learn.sparkfun.com/tutorials/i2c) (learn.sparkfun.com)
- [Driver Framework](../middleware/drivers.md)
+4
View File
@@ -0,0 +1,4 @@
# Датчики та введення-виведення приводів
Цей розділ містить теми про інтеграцію датчиків та приводів у PX4.
It covers both sensor buses ([I2C](../sensor_bus/i2c_general.md), [CAN](../can/index.md), [UART](../uart/index.md), SPI) and also the main PWM ports.
+64
View File
@@ -0,0 +1,64 @@
# TFI2CADT01 - Перетворювач адреси I²C
[TFI2CADT01](https://github.com/ThunderFly-aerospace/TFI2CADT01) is an address translator module that is compatible with Pixhawk and PX4.
Перетворення адрес дозволяє кільком пристроям I2C з однаковою адресою співіснувати в мережі I2C.
Модуль може знадобитися, якщо використовуються кілька пристроїв, які мають однакову заводську адресу.
Модуль має вхідну та вихідну сторони.
Датчик підключається до головного пристрою на одній стороні.
На вихідній стороні можуть бути підключені датчики, адреси яких потрібно перетворити.
Модуль містить дві пари конекторів, кожна пара відповідає за різні перетворення.
![TFI2CADT - i2c address translator](../../assets/peripherals/i2c_tfi2cadt/tfi2cadt01a_both_sides.jpg)
:::info
[TFI2CADT01](https://github.com/ThunderFly-aerospace/TFI2CADT01) is designed as open-source hardware with GPLv3 license.
It is commercially available from [ThunderFly](https://www.thunderfly.cz/) company or from [Tindie eshop](https://www.tindie.com/products/thunderfly/tfi2cadt01-i2c-address-translator/).
:::
## Метод перетворення адрес
TFI2CADT01 виконує операцію XOR на викликаній адресі.
Таким чином, нову адресу пристрою можна знайти, взявши оригінальну адресу та застосувавши операцію XOR з значенням, вказаним на модулі.
За замовчуванням, вихід 1 виконує XOR зі значенням 0x08, а другий порт - з 0x78.
Коротко заданої каси можна змінити значення XOR на 0x0f для першого та 0x7f для другого порту.
Якщо вам потрібне власне значення для перетворення адрес, зміна конфігураційних резисторів дозволяє встановити будь-яке значення XOR.
## Приклад використання
The tachometer sensor [TFRPM01](../sensor/thunderfly_tachometer.md) can be set to two different addresses using a solder jumper.
Якщо автопілот має три шини, тільки 6 датчиків можуть бути підключені і жодна шина не залишається вільною (2 доступні адреси \* 3 порти I2C).
У деяких мультикоптерах або рішеннях VTOL є необхідність вимірювати оберти хвилину RPM 8 або більше елементів.
The [TFI2CADT01](https://www.tindie.com/products/thunderfly/tfi2cadt01-i2c-address-translator/) is highly recommended in this case.
![Multiple sensors](../../assets/peripherals/i2c_tfi2cadt/tfi2cadt01_multi_tfrpm01.jpg)
Наступна схема показує, як підключити 6 TFRPM01 до однієї шини автопілота.
Додавши ще один TFI2CADT01, до тієї ж шини можна підключити ще 4 пристрої.
[![Connection of multiple sensors](https://mermaid.ink/img/pako:eNptkd9rwjAQx_-VcE8dtJB2ukEfBLEWfJCJy8CHvgRznQH7gzSBDfF_33VZB2oCyf3I576XcBc4dgohh08j-xMTRdUyWuX2I6LNErY7zJh0tuv1ubNP_7csSRZsudlHS22GHlGxAduhM3fEfrdNI1GS4emK8a85fwSyGyC9A0S5yVbrg_DZKfLtCxH9JsjhaU7VvI7pfK3_NCg_NXmO3pwl5uYt9D0yAXoWoFNP4yM9H-kspJ0FtF8CdObpURtiaNA0UisaymWsrsCesMEKcnIV1tKdbQVVeyXU9UpaXCttOwO5NQ5jGKf1_t0ep9gzhZY04sYnrz9BI4mU)](https://mermaid-js.github.io/mermaid-live-editor/edit#pako:eNptkd9rwjAQx_-VcE8dtJB2ukEfBLEWfJCJy8CHvgRznQH7gzSBDfF_33VZB2oCyf3I576XcBc4dgohh08j-xMTRdUyWuX2I6LNErY7zJh0tuv1ubNP_7csSRZsudlHS22GHlGxAduhM3fEfrdNI1GS4emK8a85fwSyGyC9A0S5yVbrg_DZKfLtCxH9JsjhaU7VvI7pfK3_NCg_NXmO3pwl5uYt9D0yAXoWoFNP4yM9H-kspJ0FtF8CdObpURtiaNA0UisaymWsrsCesMEKcnIV1tKdbQVVeyXU9UpaXCttOwO5NQ5jGKf1_t0ep9gzhZY04sYnrz9BI4mU)
<!-- original mermaid graph
graph TD
FMU(FMU - PX4 autopilot)
FMU -- > AIR(Airspeed sensor)
FMU -- > RPM1(TFRPM01C 0x50)
FMU -- > RPM2(TFRPM01C 0x51)
FMU -- > TFI2CEXT
TFI2CEXT -- > ADT(TFI2CADT01: 0x0f, 0x7f)
ADT -- > RPM3(Out1: TFRPM01C 0x50 - 0x5f)
ADT -- > RPM4(Out1: TFRPM01C 0x51 - 0x5e)
ADT -- > RPM5(Out2: TFRPM01C 0x50 - 0x2f)
ADT -- > RPM6(Out2: TFRPM01C 0x52 - 0x2e)
-->
:::info
TFI2CADT01 does not contain any I2C buffer or accelerator.
As it adds additional capacitance on the bus, we advise combining it with some bus booster, e.g. [TFI2CEXT01](https://github.com/ThunderFly-aerospace/TFI2CEXT01).
:::
### Інші ресурси
- Datasheet of [LTC4317](https://www.analog.com/media/en/technical-documentation/data-sheets/4317fa.pdf)