1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/lantsang-smart-dtu

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 35 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 16.03.2025 10:42 9c0fdb3

Введение

Цель данной статьи — объяснить, какие работы были выполнены с помощью устройства управления данными SmartDtu компании Bluestone? Какие возможности были реализованы на платформе EC600S от Quectel? Почему эта платформа является настоящим спасением для разработчиков аппаратной части?

Нашей основной целью было освобождение рук широкого круга разработчиков аппаратной части, предоставив им готовое решение в области встраиваемых систем, которое позволит сосредоточиться именно на аппаратной стороне.

Основные функции

Основные функции нашего программного обеспечения и платформы включают поддержку базовых возможностей платформы EC600S, таких как таймеры, температура/влажность, PWM, GPIO, UART и FOTA.

Управление ресурсами

Управление ресурсами осуществляется через программную платформу с использованием команд по протоколу MQTT и через последовательный порт, что позволяет удалённо собирать данные и контролировать устройство. Это включает возможность удалённого запуска таймеров для сбора данных о температуре и влажности, а также управления состоянием GPIO-пинов.

Поддержка платформы

Платформа Tencent Cloud используется в качестве промежуточного звена для соединения между аппаратной частью EC600S и решением Bluestone. Это обеспечивает надёжное взаимодействие при работе с большими объёмами данных, а также гарантирует безопасность передачи данных и связи.

1 Аппаратная платформа

Наши программы выполняются на платформе EC600S от Quectel, используя язык программирования QuecPython, который был разработан компанией Quectel на основе MicroPython для использования в проектах по созданию встраиваемых систем. Язык QuecPython отличается легкостью и удобством для разработчиков, снижая барьеры входа в разработку.

Аппаратная платформа EC600S Аппаратная платформа EC600S

2 Разработка

Название Инструмент Примечание
Visual Studio Code QuecPython Разработка
QCOM Инструмент для COM-порта Отладка COM-порта
QPYcom Инструмент для записи и исполнения кода Разработка и отладка

3 Архитектура кода

3.1 Структура кода

Структура организации кода

  1. bluestone_common.py Этот файл является общим файлом для всего проекта и включает методы для получения состояния сети, установки состояния сети, проверки существования файла и проверки пути на соответствие URL.

  2. bluestone_config.py Этот файл предназначен для управления параметрами, используемыми при нормальной работе системы. Включает чтение параметров из файла, запись параметров в файл и конфигурацию по умолчанию.2. bluestone_daemon.py Демон-процесс, предназначенный для обеспечения здоровья встроенной системы во время её работы. При возникновении аномального прерывания или отключения связи без возможности восстановления система будет попытаться перезапуститься. На данный момент находится в процессе разработки.

  3. bluestone_fota.py Управление обновлением программного обеспечения и прошивок. Поддерживает несколько путей файлов для программного обеспечения и один путь для обновления прошивки.

  4. bluestone_gpio.py Управление всеми GPIO-пинами в системе, включая чтение и запись состояний.

  5. bluestone_main.py Входной файл системы, который запускает демона сети, инициализирует конфигурационные и данные файлы, инициализирует сервисы системы, MQTT, последовательные порты, таймеры и сервис watchdog.

  6. bluestone_mqtt.py Инструмент управления клиентом MQTT, который запускает MQTT, слушает обратные вызовы и анализирует параметры обратных вызовов, выполняет команды на основе анализа.

  7. bluestone_mqtt_tencent.py Инструмент управления клиентом MQTT для Tencent, который запускает MQTT, слушает обратные вызовы и анализирует параметры обратных вызовов, выполняет команды на основе анализа.

  8. bluestone_pwm.py Логика управления PWM, которая открывает и закрывает порты PWM, что позволяет имитировать эффект дыхания.9. bluestone_socket.py Инициализация TCP/IP сокета, соединение с клиентом и прием/передача команд. Разработка продолжается.

  9. bluestone_temperature.py Получение данных с бортовых датчиков температуры и влажности.

  10. bluestone_timer.py Управление таймерами, запуск и остановка таймеров по заданным параметрам.

  11. bluestone_uart.py Управление последовательными портами, запуск портов по переданным параметрам, чтение параметров порта и анализ команд, выполнение команд при наличии подходящих условий, включая перезапуск системы.

  12. bluestone_config.json Конфигурационный файл по умолчанию, содержащий параметры UART0-2 и параметры запуска Tencent MQTT. Пользователи могут настроить его в соответствии со своими требованиями.

{
	"uart2": {
		"parity": 0,
		"baud_rate": 115200,
		"flow_control": 0,
		"stop_bits": 1,
		"data_bits": 8
	},
	"mqtt_tencent": {
		"product_id": "введите ваш продукт ID на Tencent Cloud",
		"pub_topic": "event",
		"product_secret": "введите ваш секретный ключ продукта с Tencent Cloud",
		"sub_topic": "control"
	},
	"uart1": {
		"parity": 0,
		"flow_control": 0,
		"baud_rate": 115200,
		"stop_bits": 1,
		"data_bits": 8
	},
	"uart0": {
		"baud_rate": 115200,
		"parity": 0,
		"flow_control": 0,
		"stop_bits": 1,
		"data_bits": 8
	}
}

4 Таймеры

Пример команды:

{
    "timer1": {
        "status": 1,
        "period": 5000,
        "mode": 1,
        "callback": "aht10"
    }
}
```- **timer1**: Устройство EC600S имеет четыре таймера  timer0, timer1, timer2 и timer3. Timer0 используется системой и недоступен для конфигурации; доступны только timer1, timer2 и timer3;
- **status**: Статус задачи таймера; 0 указывает на отключение, а 1  на включение;
- **period**: Интервал выполнения таймера, измеряется в миллисекундах; допустимый диапазон значений составляет от 5000 до 30000 миллисекунд;
- **mode**: Режим работы таймера; 0 указывает на одноразовое выполнение, а 1  на периодическое выполнение;
- **callback**: Название функции, которая будет вызвана при каждом цикле выполнения таймера; в настоящее время поддерживаются только "aht10" и "gpio", что соответственно означает сбор данных температуры и влажности или чтение состояния GPIO-пинов; несколько функций могут быть указаны через запятую.Замечание: После успешной конфигурации параметров таймера система автоматически перезагружается.

<a id="jump_5"></a>
## 5 Температура и влажность

Сбор данных о температуре и влажности осуществляется с помощью таймера. В соответствии с вышеописанным примером, достаточно указать "aht10" в поле callback.

<a id="jump_6"></a>
## 6 GPIO

Пример команды:

```json
{
    "gpio": {
        "gpio1": 1,
        "gpio2": 1,
        "gpio3": 0,
        "gpio4": 1,
        "gpio5": 1,
        "gpio6": 1,
        "gpio7": 1,
        "gpio8": 1,
        "gpio9": 0,
        "gpio10": 1,
        "gpio11": 0,
        "gpio12": 1,
        "gpio13": 1,
        "gpio14": 1
    }
}
  • gpio: Означает, что данная команда предназначена для управления GPIO;
  • gpio1: Управление пином GPIO1; значение 0 указывает на низкий уровень сигнала, а 1 — на высокий уровень;

7 UART

Пример команды:

{
    "uart1": {
        "baud_rate": 115200,
        "data_bits": 8,
        "flow_control": 0,
        "parity": 0,
        "stop_bits": 1
    }
}
  • uart1: Обозначает текущий номер UART-порта; поддерживаются uart0, uart1 и uart2;
  • baud_rate: Скорость передачи порта UART;
  • data_bits: Количество бит данных порта UART;
  • flow_control: Управление потоком;
  • parity: Паритет;
  • stop_bits: Число стоп-битов;

Замечание: После успешной конфигурации параметров UART системы система автоматически перезагружается.

8 FOTA

Пример команды:

{
    "fota": {
        "mode": 0,
        "url": "http://app.com/download"
    }
}
```- **fota**: Обозначает параметры конфигурации обновления.
```- **mode**: 0 указывает на обновление приложения; в этом режиме url может содержать несколько адресов, разделённых запятой; 1 указывает на обновление прошивки; в этом режиме допускается только один url.
 - **url**: адрес приложения или прошивки; поддержка протокола https отсутствует.
  Примечание: после успешного обновления система автоматически перезапустится.
  <a id="jump_9"></a>
## 9 Использование системыНиже будет продемонстрирована методика использования системы с момента создания продукта до данных устройств через восемь этапов.

[Платформа SmartDtu компании BlueStone](https://dtu.lantsang.net), логин: dtu, пароль: d123qwe
### 9.1 Создание продукта
1. Нажмите на левое меню, чтобы перейти на страницу списка продуктов.</br>
! [Переход на страницу списка продуктов](https://bluestone.oss-cn-beijing.aliyuncs.com/images/вход-в-лист-продуктов.png)
2. Нажмите "Создать", чтобы открыть окно создания продукта и заполнить информацию о продукте.</br>
! [Нажмите "Создать"](/images/нажмите-создать.png)
! [Заполнение информации о продукте](https://bluestone.oss-cn-beijing.aliyuncs.com/images/заполнение-информации-о-продукте.png)
3. Успешное создание продукта.</br>
! [Успешное создание продукта](https://bluestone.oss-cn-beijing.aliyuncs.com/images/успешное-создание-продукта.png)

### 9.2 Настройка аппаратной части устройства
#### 9.2.1 Установка драйвера
Перейдите на страницу [официальной загрузки](https://python.quectel.com/download) компании Quectel, скачайте `USB driver`, как показано ниже.
! [Страница загрузки драйвера USB Quectel](https://bluestone.oss-cn-beijing.aliyuncs.com/images/установка-драйвера.png)
Обратите внимание на операционную систему; на данный момент нет доступных драйверов для `Mac` и `Linux`; пока неясно, являются ли они недоступными или вообще не требуются.
Двойным щелчком установите драйвер.* **Проверка установки**
Подключите компьютер к плате разработки; вы заметите, что светодиод питания загорается (красный цвет); затем нажмите кнопку включения и удерживайте её около пяти секунд; примерно через пять секунд начнут мигать светодиоды NET (драйвер COM-порта Quectel, интервал около двух секунд); перейдите в `Устройства и принтеры` вашего компьютера и проверьте наличие `портов COM и LPT`; если вы видите устройство, как показано на следующем изображении, значит установка завершена успешно!
![](https://bluestone.oss-cn-beijing.aliyuncs.com/images/установленный-драйвер-com-порта.png)
> **Примечание:** В официальной документации этот процесс описан довольно кратко; там указано, что после подключения платы разработки к компьютеру можно увидеть устройство; однако было замечено, что если не включить плату, устройство не будет видно! Кроме того, **официальная документация содержит схему, показывающую три устройства, но фактически было найдено только два**, а также отсутствует указанный в схеме **порт последовательного соединения для команд управления**. Причиной этого явления является то, что при выпуске устройство было прошито не firmware для Python, после установки firmware для Python эти порты становятся видимыми.

#### 9.2.2 Установка графического инструмента QPYcomПерейдите на страницу официальных загрузок [Quectel](https://python.quectel.com/download), чтобы скачать `QPYcom графический инструмент`. Пример страницы загрузки:

![Страница загрузки QPYcom графического инструмента](https://bluestone.oss-cn-beijing.aliyuncs.com/images/QPYcom%20%E5%9B%BE%E5%BD%A2%E5%B7%A5%E5%85%B7.png)

После завершения загрузки получится архив, который следует распаковать. Дважды щелкните на файл `QPYcom.exe`, чтобы запустить его.

> **Подсказка**: После выполнения программы она создаст несколько других файлов в том же каталоге, таких как `Config.ini`. Рекомендуется организовать эти файлы в пустую папку по вашему выбору.

Результат работы программы QPYcom представлен ниже:

![Скриншот программы QPYcom](https://bluestone.oss-cn-beijing.aliyuncs.com/images/QPYcom%20%E7%95%8C%E9%9D%A2.png)

#### 9.2.3 Настройка оборудования

Выберите последовательный порт, как указано на схеме:

![Выбор последовательного порта](https://bluestone.oss-cn-beijing.aliyuncs.com/images/%E9%80%89%E6%8B%A9%E4%B8%B2%E5%8F%A3.png)

Откройте страницу загрузки и нажмите кнопку "Создать", чтобы создать новый проект:

![Создание нового проекта](https://bluestone.oss-cn-beijing.aliyuncs.com/images/%E5%88%9B%E5%BB%BA%E9%A1%B9%E7%9B%AE.png)

Перейдите на страницу официальных загрузок [Quectel](https://python.quectel.com/download), чтобы скачать `файлы прошивки`.

![Загрузка файлов прошивки](https://bluestone.сss-cn-beijing.oss.almyunсs.com/images/Загрузка_файлов_прошивки.png)

После загрузки распакуйте архив `QPY_V0004_EC600S_FW.zip` и выберите нужную прошивку:![Выбор прошивки](https://bluestone.oss-cn-beijing.aliyuncs.com/images/%E9%80%89%E6%8B%A9%E5%9B%BA%E4%BB%B6.png)
![Завершение выбора прошивки](https://bluestone.oss-cn-beijing.aliyuncs.com/images/%E9%80%89%E6%8B%A9%E5%9B%BA%E4%BB%B6%E5%AE%8C%E6%88%90.png)

Нажмите кнопку **Загрузить прошивку** для загрузки файла прошивки на платформу разработки:

![Загрузка прошивки](https://bluestone.oss-cn-beijing.aliyuncs.com/images/%E4%B8%8B%E8%BD%BD%E5%9B%BA%E4%BB%B6.png)

Перейдите на страницу загрузки [программы управления](https://gitee.com/lantsang/smart-dtu), чтобы скачать **программу управления**, затем распакуйте её:

![Загрузка программы управления](https://bluestone.oss-cn-beijing.aliyuncs.com/images/%E6%8E%A7%E5%88%B6%E7%A8%8B%E5%BA%8F%E4%B8%8B%E8%BD%BD.png)

Передайте `bluestone_config.json` файл, который содержит `product_id` и `product_secret`. Замените их на новые значения ID продукта и секретного ключа (полученные с страницы списка продуктов).

![](https://bluestone.oss-cn-beijing.aliyuncs.com/images/продукт_id_ключ.png)
![](https://bluestone.oss-cn-beijing.aliyuncs.com/images/заменить_ID_ключа_продукта.png)

Импортируйте выбранный вами файл кода:

![](https://bluestone.oss-cn-beijing.aliyuncs.com/images/добавить_скрипт.png)
![](https://bluestone.oss-cn-beijing.aliyuncs.com/images/выбрать_скрипт.png)
![](https://bluestone.oss-cn-beijing.aliyuncs.com/images/выбрать_выбранный_файл.png)

Нажмите **Скачать скрипт**, чтобы скачать управляемую программу на платформу разработки:

![](https://bluestone.oss-cn-beijing.aliyuncs.com/images/скачивание_скрипта.png)

Нажмите **Файл**, закройте последовательный порт и снова откройте его, как показано на следующем рисунке, чтобы запустить устройство:

![](https://bluestone.oss-cn-beijing.aliyuncs.com/images/запуск_устройства.png)### 9. 3 Создание нового устройства
Данная система использует логику динамической регистрации; после настройки параметров устройства вам не потребуется создавать или импортировать устройство вручную при его подключении.

### 9. 4 Управление устройствами
Щелкните по пункту меню слева **Список устройств**. После перехода на страницу со списком устройств нажмите кнопку управления рядом с нужным устройством.
![](https://bluestone.oss-cn-beijing.aliyuncs.com/images/управление_устройством.png)

#### 9. 4. 1 Редактирование устройства
Как показано на рисунке, щелкните по кнопке редактирования, чтобы отредактировать устройство. В настоящее время можно редактировать только примечания к устройству.
![](https://bluestone.oss-cn-beijing.aliyuncs.com/images/редактирование_устройства.png)

#### 9. 4. 2 Удаление устройства
Щелкните по кнопке удаления, чтобы удалить устройство.
![](https://bluestone.oss-cn-beijing.aliyuncs.com/images/удаление_устройства.png)
> Примечание: Из-за использования динамической регистрации, если устройство всё ещё существует после удаления, оно будет заново зарегистрировано при получении сигнала устройства. Поэтому перед удалением устройства убедитесь, что оно было физически удалено.

#### 9. 4. 3 Сброс состояния
Щелкните по кнопке сброса состояния, чтобы вернуть состояние устройства в неактивное состояние.
![](https://bluestone.oss-cn-beijing.aliyuncs.com/images/сброс_состояния.png)#### 9.4.4 Отключение устройства
Нажмите переключатель включения/отключения устройства, чтобы изменить состояние активности устройства. При отключении устройства, сбор данных с него прекращается.

![](https://bluestone.oss-cn-beijing.aliyuncs.com/images/%E7%A6%81%E7%94%A8%E8%AE%DE%E5%A4%87.png)

### 9.5 Управление температурой и влажностью устройств

Щелкните по меню слева **Список устройств**. После перехода на страницу списка устройств нажмите кнопку **Температура и влажность** рядом с нужным устройством, чтобы начать управление температурой и влажностью устройства.

![](https://bluestone.oss-cn-beijing.aliyuncs.com/images/%E6%B8%A9%E6%B9%BF%E5%BA%A6%E7%AE%A1%E7%90%86.png)
> **Примечание**: Управление температурой и влажностью недоступно при состоянии устройства "выключен" или "неактивирован".

#### 9.5.1 Просмотр данных о температуре и влажности устройства

![](https://bluestone.сhina-aliyuncs.com/images/%E6%B8%A9%E6%B9%BF%E5%BA%A6%E6%95%B0%E6%8D%AE%E5%88%97%E8%A1%A8.png)

#### 9.5.2 Просмотр графика изменения температуры и влажности

Щелкните по кнопке графика данных в верхнем левом углу, чтобы перейти к представлению графиков и просмотреть изменения температуры и влажности устройства.

![](https://bluestone.сhina-aliyuncs.com/images/%E6%B8%A9%E6%B9%BF%E5%BA%A6%E5%9B%BE%E8%A1%A8.png)

#### 9.5.3 Настройка сбора данных о температуре и влажностиПри изменении параметров сбора данных и последующем применении настроек можно регулировать отправку данных устройством или период отправки данных (минимальное значение  60 секунд, максимальное  15 минут).![](https://bluestone.oss-cn-beijing.aliyuncs.com/images/%E6%B8%A9%E6%B9%BF%E5%BA%A6%E9%87%87%E9%9B%86%E9%85%8D%E7%BD%AE.png)

### 9.6 Управление GPIO устройств

Щелкните по меню слева **Список устройств**. После перехода на страницу списка устройств нажмите кнопку **GPIO** рядом с нужным устройством, чтобы начать управление GPIO устройством.

![](https://bluestone.oss-cn-beijing.aliyuncs.com/images/GPIO%E7%AE%A1%E7%90%86.png)
> Примечание: Управление GPIO недоступно при состоянии устройства "выключен" или "неактивирован".

Щелкните по переключателю GPIO или нажмите кнопки **вкл/выкл**, чтобы изменить состояние GPIO устройства.

![](https://bluestone.с.oss-cn-beijing.aliyuncs.com/images/GPIO%E5%BC%80%E5%85%B3.png)

### 9.7 Управление UART устройств

Щелкните по меню слева **Список устройств**. После перехода на страницу списка устройств нажмите кнопку **UART** рядом с нужным устройством, чтобы начать управление UART устройством.

![](https://bluestone.oss-cn-beijing.aliyuncs.com/images/UART%E7%AE%A1%E7%90%86.png)
> Примечание: Управление UART недоступно при состоянии устройства "выключен" или "неактивирован".
> Примечание: Для использования функции UART требуется подключение UART к модулю TTL-USB. Подробнее см. [официальную документацию](https://python.quectel.com/doc/doc/Advanced_development/zh/QuecPythonSub/UART.html#-10).

#### 9.7.1 Данные UART устройства![](https://bluestone.oss-cn-beijing.aliyuncs.com/images/UART_последовательность.png)[Данные UART устройства]

#### 9.7.2 Настройка UART последовательного соединения устройства
Как показано на рисунке, перейдите в настройки параметров UART.
![Переход к настройкам параметров UART](https://bluestone.oss-cn-beijing.aliyuncs.com/images/вход_в_UART_параметры_настройки.png)
Выберите последовательное соединение, измените параметры и сохраните изменения, чтобы модифицировать настройки UART последовательного соединения устройства.
![Настройка UART последовательного соединения](https://bluestone.oss-cn-beijing.aliyuncs.com/images/UART_порт_настройки.png)

#### 9.7.3 Отправка пользовательского JSON данных через UART устройства
Перейдите на страницу официального сайта [скачивания](https://python.quectel.com/download) Quectel, скачайте `QCOM последовательное соединение отладочное средство`, как показано ниже:
Распакуйте архив и дважды щелкните по файлу `QCOM_V1.6.exe`, чтобы запустить его. Начальная страница представлена ниже:
Далее проведите тестирование согласно официальному руководству.
В разделе `Устройства управления` -> `Порт (COM и LPT)` найдите значение порта `Quectel USB AT Port` и выберите соответствующий порт в `QCOM`, откройте его и отправьте команду тестирования `AT+GMR`. Обратите внимание, что **не следует менять другие настройки**.
Как показано ниже:
![Открытие порта QCOM](https://bluestone.oss-cn-beijing.aliyuncs.com/images/QCOM_тестирование.png)> **Подсказка**: если при попытке открыть порт возникают ошибки, нажмите кнопку сброса, затем повторите попытку после сброса. При получении нового устройства без других изменений, возможно, не удастся установить соединение, поэтому требуется сброс.Результаты тестирования
![Результаты тестирования](https://bluestone.oss-cn-beijing.aliyuncs.com/images/QCOM_тестирование_результат.png)
Как видно выше, если возвращается номер версии прошивки, это указывает на успешное завершение тестирования!

Далее отправьте пользовательский JSON-данные через UART. В разделе **Устройства управления** -> **Порт (COM и LPT)** найдите значение порта **USB-SERIAL CH340** и выберите соответствующий порт в **QCOM**, откройте его,
![Страница отображения отправленных параметров](https://bluestone.oss-cn-beijing.aliyuncs.com/images/uart_отображение_установленных_JSON.png)
Возвратитесь на страницу настроек параметров UART, введите случайный JSON, нажмите "Отправить",
![Отправка JSON-данных](https://bluestone.с.oss-cn-beijing.aliyuncs.com/images/uart_отображение_установленных_JSON.png)
![Успешная отправка](https://bluestone.oss-cn-beijing.aliyuncs.com/images/низкая_отправка_успешно.png)
Отправка пользовательских данных успешно выполнена### 9.8 Данные устройства
#### 9.8.1 Исторические данные устройства
Щелкнув по левой панели меню **Данные устройства**, вы можете просмотреть все исторические сообщения устройства.
![Исторические данные устройства](https://bluestone.oss-cn-beijing.aliyuncs.com/images/com/images/%E8%AE%BD%E5%A4%87%E6%95%B0%E6%8D%AA.png)

#### 9.8.2 Главная статистика
Обзор количества
   ![Обзор количества](https://bluestone.oss-cn-beijing.aliyuncs.com/images/%E8%AE%BD%E5%A4%87%E6%95%B0%E9%87%8F%E6%A6%80%E8%A7%A3.png)
Динамика изменения количества
   ![Динамика изменения количества](https://bluestone.oss-cn-beijing.aliyuncs.com/images/%E8%AE%BD%E5%A4%87%E5%8F%98%E5%8C%96%E8%B6%8A.png)
Топ-лист
   ![Топ-лист](https://bluestone.oss-cn-beijing.aliyuncs.com/images/%E8%AE%BD%E5%A4%87%E6%8E%92%E8%A1%8C%E6%A6%9C.png)

<a id="jump_10"></a>

## 10 Информация о правах[MIT](https://gitee.com/lantsang/smart-dtu/blob/master/LICENSE)

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/lantsang-smart-dtu.git
git@api.gitlife.ru:oschina-mirror/lantsang-smart-dtu.git
oschina-mirror
lantsang-smart-dtu
lantsang-smart-dtu
master