- PVSM.RU - https://www.pvsm.ru -
Многие приобрели «голубую таблетку» на попробовать. Но из-за сложности программирования данная вещь оказалась где то на полке, до лучших времен.
Будем считать, что «лучшие времена» — наступили.
Все используемые детали / компоненты можно приобрести на aliexpress.com
Для более быстрой, по сравнению с UART загрузкой «прошивки» и отладки программ рекомендуется использовать программатор ST-Link V2 [1]
Модуль это совокупность аппаратной и программной частей. Аппаратная часть — «таблетка» STM32F103C8T6, программная часть — «шаблон прошивки», созданный при помощи программы MIOC [6] Данная программа — OpenSource [8].
У микроконтроллера есть выводы или ножки. Часть из них это питание микроконтроллера, часть имеют специальное назначение (например Reset ), часть — интерфейс ввода/вывода общего назначения (англ. general-purpose input/output, GPIO).
Порты объединены в группы ( A; B; C... ). Каждая группа содержит до 16 портов, пронумерованных от 0 до 15. В итоге нумерация портов выглядит как PA0, PA1,…
Порты служат для связи между компонентами модуля, к примеру микропроцессором и различными периферийными устройствами. Порты могут выступать как в роли входа, в роли выхода и как двунаправленные.
На плате «таблетки» нанесена маркировка портов.
В модуле IO основные типы портов представлены в таблице:
В качестве датчиков, исполнительных механизмов будем использовать различные устройства от Arduino.
С помощью данной программы создаем / конфигурируем шаблон прошивки (проект для Embitz; Keil) модуля IO. Программа установки не требует. Скачали, запустили. С помощью данной программы создаём глобальные переменные, которые будем использовать в своих прошивках. Переменные могут быть ассоциированы с портами.
Окно первого запуска:
Создадим проект:
Выбрать папку для проекта. Папка, для проекта должна быть пуста!
Поморгаем светодиодом, что имеется на «голубой таблетке». Данный светодиод подключен к порту PC13.
Добавить строку в таблицу переменных
Генерируем BSP код (кнопка F8)
Далее, каждый раз после изменения проекта, обязательна генерация BSP!
Открыть созданный проект в среде разработки EmBitz или Keil. EmBitz пока как временное решение. Похоже автор забросил данный проект. По всей видимости в дальнейшем в проекте будет использоваться Code::Blocks.
В файле main.c напишем следующее:
(Для увеличения размера картинки откройте её в новой вкладке)
В EmBitz нажать F2, после появления окна информации нажать F7. Должна выполниться компиляция.
Повторное нажатие F2 скроет информационные закладки.
Загружаем в микроконтроллер, смотрим, как работает.
Добавим кнопку, например такую:
Схема подключения:
Добавим переменную в таблицу:
Генерируем BSP.
Изменим программу на следующую:
Создаём новую BSP (F8), компилируем, загружаем в микроконтроллер.
Нажимаем на кнопку — светодиод зажигается, отпускаем — тухнет.
Вместо светодиода на другой порт можно подключить реле, например:
И управлять какой либо полезной нагрузкой.
Нужно определить, что будет консолью.
Возможны варианты:
Если в конфигурации выбраны одновременно UART1 и USB as Console, при этом USB VCP не выбран, то консоль будет назначена «в никуда». Т.е. ругаться на функцию print_str ( или макрос print ) не будет, но и вывода не будет никакого. Такое же поведение будет если не выбрать ни один интерфейс, или выбрать USB VCP но не выбрать ни UART1 ни USB as Console.
Конфигурация консоли:
Подключим TettaTerm к COM-порту (консоли). Если загрузку прошивки производим через UART1, то не забываем отключать/подключать COM-порт. В TerraTerm «горячие кнопки» Alt+I; Alt+N Для варианта загрузки через ST-Link этого делать не требуется.
Отредактируем программу:
Теперь на консоли будет отображаться состояние кнопки:
Подключим к «таблетке» температурный датчик DS18B20.
Поместим в таблицу переменную:
Изменим программу на следующую:
Создаём новую конфигурацию, компилируем, загружаем в микроконтроллер.
На консоли будет отображаться температура, измеряемая датчиком.
В качестве примера работы с АЦП можно использовать потенциометр:
Или датчик влажности почвы
Остановимся на последнем:
Конфигурируем порт:
Редактируем программу:
Компилируем, загружаем.
В консоли наблюдаем:
adc — текущее показание АЦП. max и min — зафиксированные минимальное и максимальное показания датчика, совсем сухой (0%) и совсем мокрый (100%).
Совсем мокрый (100%) — опустим датчик в стакан с водой. Совсем сухой (0%) — лежит на открытом воздухе.
По сути мы сделали калибровку датчика влажности почвы от 0 до 100%. Максимальное и минимальное значения поместим в текст программы.
Результат работы. Датчик помещен в землю цветочного горшка:
Данный проект — шаблон решения для полива растений.
На этом пока всё. Программа MIOC будет пополняться дополнительными возможностями.
Автор: alex-open-plc
Источник [9]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/open-source/329434
Ссылки в тексте:
[1] ST-Link V2: https://ru.aliexpress.com/item/32837620312.html?spm=a2g0o.productlist.0.0.5fc21d7ffB01FE&algo_pvid=88768d44-685d-4770-94dd-3f81771bc7a5&algo_expid=88768d44-685d-4770-94dd-3f81771bc7a5-11&btsid=95997f2e-4478-4d75-bbd6-58d09cb7a6f5&ws_ab_test=searchweb0_0,searchweb201602_9,searchweb201603_52
[2] STM32 Flash loader demonstrator: https://www.st.com/en/development-tools/flasher-stm32.html
[3] STM32 Virtual COM Port Driver: https://www.st.com/en/development-tools/stsw-stm32102.html
[4] STM32 ST-LINK utility: https://www.st.com/en/development-tools/stsw-link004.html
[5] www.embitz.org: http://www.embitz.org
[6] MIOC: https://github.com/open-plc-com/MIOC/blob/master/bin/mioc_exe.7z
[7] terraterm: https://osdn.net/projects/ttssh2/releases/
[8] OpenSource: https://github.com/open-plc-com/MIOC/tree/master/src
[9] Источник: https://habr.com/ru/post/466663/?utm_source=habrahabr&utm_medium=rss&utm_campaign=466663
Нажмите здесь для печати.