На основе системы управления датчиком воды RISC-V MCU CH32V307.
На основе системы управления датчиком воды RISC-V MCU CH32V307.

Я очень рад принять участие в этом «Конкурсе инновационных приложений MCU RISC-V». На этот раз я представил систему управления датчиком воды на основе MCU RISC-V CH32V307. В целом, затопление всегда приводило к затоплению многих мест в городах во время дождя. Некоторые места относительно отдалены, поэтому трудно обнаружить потенциальные опасности, в некоторых домах есть бассейны для хранения воды (резервуары для воды); ). При нехватке Нет немедленного обнаружения и напоминания, когда он полон или полон воды. Поэтому я использовал RISC-V MCU CH32V307 в сочетании с датчиком воды для создания исходного продукта системы управления датчиком воды. Даже если бы я пытался привлечь идеи, я мог бы испытать мощные функции и простоту эксплуатации RISC-V MCU. CH32V307, что также отражает его способность адаптироваться к различным сценариям применения Интернета вещей.

1. Знакомство с оборудованием:

Давайте сначала представим нашего главного героя: мы используем плату разработки CH32V307, которая использует плату разработки на основе ядра RISC-V MCU CH32V307, выпущенную Nanjing Qinheng Microelectronics (WCH).

Плата разработки CH32V307
Плата разработки CH32V307

Основные функции MCU управления:

Процессор RISC-V4F, системная частота до 144 МГц

Поддерживает однотактное умножение и аппаратное деление, а также поддерживает аппаратные операции с плавающей запятой (FPU).

64KB SRAM,256KB Flash

Напряжение источника питания: 2,5/3,3 В, блок GPIO имеет независимое питание.

Несколько режимов низкого энергопотребления: сон, остановка, режим ожидания

Сброс при включении/выключении, программируемый детектор напряжения

2 комплекта 18-канального универсального DMA

4 комплекта компараторов операционных усилителей

1 генератор случайных чисел TRNG

2 комплекта 12-битного преобразования ЦАП

2 блока 16-канального преобразования 12-битного АЦП, 16-канальные сенсорные клавиши TouchKey

10 комплектов таймеров

Полноскоростной интерфейс OTG USB2.0

Высокоскоростной интерфейс хоста/устройства USB2.0 (480 Мбит/с). Встроенный PHY)

3 интерфейса USART и 5 интерфейсов UART

2 CAN-интерфейса (2.0B активны)

Интерфейс SDIO, интерфейс FSMC, интерфейс цифрового изображения DVP

2 группы интерфейсов IIC, 3 группы интерфейсов SPI, 2 группы интерфейсов IIS

Контроллер Gigabit Ethernet ETH (встроенный 10M PHY)

80 портов ввода-вывода, могут быть сопоставлены с 16 внешними прерываниями

Блок вычисления CRC, 96-битный уникальный идентификатор чипа

Последовательный 2-проводной интерфейс отладки

Описание интерфейса
Описание интерфейса

Следующим на сцене находится наш датчик воды. Его функция — определить, есть ли вода. Если сенсорная плата обнаруживает отсутствие воды, она выдает высокий уровень, в противном случае выходной сигнал будет низким. Мы улавливаем этот сигнал через CH32V307, обрабатываем и управляем этим сигналом.

датчик воды
датчик воды

2. Подключитесь к схеме платы разработки.

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

Схема подключения
Схема подключения

Выше приведена принципиальная схема: когда датчик воды обнаруживает отсутствие воды, он отображает синий индикатор, когда есть вода, он отображает красный свет;

Итак, как мы можем подключиться? Сначала подключите сигнальную линию датчика воды к PD11 на панели управления для приема, а затем подключите реле. Поскольку реле необходимо управлять двумя индикаторами, подключите PD12 и PD14.

PD11ловитьдатчик воды
PD11ловитьдатчик воды

3. Доступ к коду данных

Провода подключены, и пришло время кодировать. Мы используем здесь IDE MounRiver Studio, разработанную с использованием TencentOS Tiny. Здесь мы перейдем непосредственно к основному коду.

Язык кода:javascript
копировать
#define RAIN_PORT GPIOD
#define RAIN_PIN GPIO_Pin_11
#define RAIN_RCC RCC_APB2Periph_GPIOD
#define RAIN_STATE() GPIO_ReadInputDataBit(RAIN_PORT,RAIN_PIN)//Читать статус датчика воды
void rain_INIT(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(RAIN_RCC,ENABLE);
    GPIO_InitStructure.GPIO_Pin=RAIN_PIN;
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(RAIN_PORT,&GPIO_InitStructure);
}

Вверху — состояние датчика воды, внизу — реле.

Язык кода:javascript
копировать
void POWER_init(void)
{
    GPIO_InitTypeDef  GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_14;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOD, &GPIO_InitStructure);
}
void Open_led(void){
    GPIO_ResetBits(GPIOD,GPIO_Pin_12);
    GPIO_SetBits(GPIOD,GPIO_Pin_14);
}
void Close_led(void){
    GPIO_ResetBits(GPIOD,GPIO_Pin_14);
    GPIO_SetBits(GPIOD,GPIO_Pin_12);
}

Тогда просто прочитайте это в первом задании.

Язык кода:javascript
копировать
if(RAIN_STATE()==1){
     printf("===>Сейчас нет воды%d\r\n",RAIN_STATE());
     Close_led();
 }else{
     printf("===>На данный момент есть вода%d\r\n",RAIN_STATE());
      Open_led();
 }

Что ж, давайте посмотрим видео моего успеха (видео показано на 21:17 секунде).

4. Мысли и понимание

Эта система управления датчиком воды является продуктом первого поколения, то есть продуктом начального уровня. В основном она демонстрирует богатые сценарии применения и простоту разработки платы разработки CH32V307. Отчетность о данных и отображение на мобильном терминале могут быть добавлены в будущем. Это не сложно для CH32V307. Потому что CH32V307 такой мощный. . Наконец, я хотел бы поблагодарить всех зрителей за просмотр от всего сердца. Зеленые горы никогда не меняются, а зеленые воды всегда текут; благодарим вас за поддержку и надеемся, что в следующий раз у вас будет возможность принять участие в таком мероприятии.

boy illustration
RasaGpt — платформа чат-ботов на основе Rasa и LLM.
boy illustration
Nomic Embed: воспроизводимая модель внедрения SOTA с открытым исходным кодом.
boy illustration
Улучшение YOLOv8: EMA основана на эффективном многомасштабном внимании, основанном на межпространственном обучении, и эффект лучше, чем у ECA, CBAM и CA. Малые цели имеют очевидные преимущества | ICASSP2023
boy illustration
Урок 1 серии Libtorch: Тензорная библиотека Silky C++
boy illustration
Руководство по локальному развертыванию Stable Diffusion: подробные шаги и анализ распространенных проблем
boy illustration
Полностью автоматический инструмент для работы с видео в один клик: VideoLingo
boy illustration
Улучшения оптимизации RT-DETR: облегченные улучшения магистрали | Support Paddle облегченный rtdetr-r18, rtdetr-r34, rtdetr-r50, rtdet
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | Деформируемое внимание с большим ядром (D-LKA Attention), большое ядро ​​​​свертки улучшает механизм внимания восприимчивых полей с различными функциями
boy illustration
Создано Datawhale: выпущено «Руководство по тонкой настройке развертывания большой модели GLM-4»!
boy illustration
7B превышает десятки миллиардов, aiXcoder-7B с открытым исходным кодом Пекинского университета — это самая мощная модель большого кода, лучший выбор для корпоративного развертывания.
boy illustration
Используйте модель Huggingface, чтобы заменить интерфейс внедрения OpenAI в китайской среде.
boy illustration
Оригинальные улучшения YOLOv8: несколько новых улучшений | Сохранение исходной информации — алгоритм отделяемой по глубине свертки (MDSConv) |
boy illustration
Второй пилот облачной разработки | Быстро поиграйте со средствами разработки на базе искусственного интеллекта
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция с нулевым кодированием и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
Решенная Ошибка | Загрузка PyTorch медленная: TimeoutError: [Errno 110] При загрузке факела истекло время ожидания — Cat Head Tiger
boy illustration
Brother OCR, библиотека с открытым исходным кодом для Python, которая распознает коды проверки.
boy illustration
Новейшее подробное руководство по загрузке и использованию последней демонстрационной версии набора данных COCO.
boy illustration
Выпущен отчет о крупной модели финансовой отрасли за 2023 год | Полный текст включен в загрузку |
boy illustration
Обычные компьютеры также могут работать с большими моделями, и вы можете получить личного помощника с искусственным интеллектом за три шага | Руководство для начинающих по локальному развертыванию LLaMA-3
boy illustration
Одной статьи достаточно для анализа фактора транскрипции SCENIC на Python (4)
boy illustration
Бросая вызов ограничениям производительности небольших видеокарт, он научит вас запускать большие модели глубокого обучения с ограниченными ресурсами, а также предоставит полное руководство по оценке и эффективному использованию памяти графического процессора!
boy illustration
Команда Fudan NLP опубликовала 80-страничный обзор крупномасштабных модельных агентов, в котором в одной статье представлен обзор текущего состояния и будущего агентов ИИ.
boy illustration
[Эксклюзив] Вы должны знать о новой функции JetBrains 2024.1 «Полнострочное завершение кода», чтобы решить вашу путаницу!
boy illustration
Краткое изложение базовых знаний о регистрации изображений 1.0
boy illustration
Новейшее подробное руководство по установке и использованию библиотеки cv2 (OpenCV, opencv-python) в Python.
boy illustration
Легко создайте локальную базу знаний для крупных моделей на основе Ollama+AnythingLLM.
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание решения. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Одна статья поможет вам понять RAG (Retrival Enhanced Generation) | Введение в концепцию и теорию + практику работы с кодом (включая исходный код).
boy illustration
Эволюция архитектуры шлюза облачной разработки
boy illustration
Docker и Kubernetes [Разработка контейнерных приложений с помощью Python]