на главную
Карта сайта
English version
Вы читаете:

Дистанционный указатель расхода воды с микроконтроллером STM32F

Измерительная техника
4 года назад

Дистанционный указатель расхода воды с микроконтроллером STM32F


Счётчики воды, с которыми работает этот указатель, должны быть оснащены контактами, замыкающимися при каждом проходе через счётчик определённой порции воды. Разрабатывался он для совместной работы с двумя универсальными счётчиками расхода воды "ЭКО НОМ СВ-15-110-И", удовлетворяющими этому требованию, на что указывает индекс И (импульсный) в их наименовании.

 

Основные технические характеристики

Число входов .....................2

Предел счёта (по каждому входу), м3 ...............99999,99

Дискретность отсчёта, м3 (л)......................0,01(10)

Напряжение питания, В ...........12

После знакомства со статьями [1 - 3] было решено строить дистанционный указатель расхода воды, используя микроконтроллер семейства STM32. Выбор был сделан в пользу готового дешёвого отладочного модуля Blue Pill китайского производства с микроконтроллером STM32F103C8T6. Его внешний вид показан на рис. 1. На две расположенные вдоль длинных сторон платы штыревые колодки выведены все выводы микроконтроллера STM32F103C8T6 и цепи питания. Имеется разъём USB для соединения с компьютером и четырёхштырьковый разъём для программирования микроконтроллера по протоколу SWD.

Микроконтроллер STM32F103C8T6

Рис. 1. Микроконтроллер STM32F103C8T6

 

За основу разработки взято устройство, описанное в [4]. Алгоритм подсчёта импульсов, обработки и коррекции показаний, выводимых на индикатор, остался прежним. Всю эту работу выполняет микроконтроллер STM32F103C8T6. Важное отличие нового устройства - возможность одновременного подключения к счётчикам холодной и горячей воды.

При этом возникла проблема, связанная с тем, что вероятен одновременный приход на входы указателя импульсов от двух счётчиков. Было также замечено, что в любом счётчике может возникнуть ситуация, когда его выходной контакт (геркон) очень долго остаётся замкнутым (например, когда нет разбора воды). Всё это может привести к пропускам счёта. В итоге показания дистанционного указателя станут отличаться от показаний самих счётчиков.

Проблема была устранена с помощью формирователя импульсов, поступающих от счётчиков воды. Он был реализован на микросхеме CD4093BE и микроконтроллере PIC12F675-I/P. Микросхема CD4093BE содержит четыре элемента 2И-НЕ с триггерами Шмитта на входах. На ней собран входной формирователь импульсов, поступающих со счётчиков воды. А микроконтроллер PIC12F675-I/P отвечает за превращение этих импульсов в пригодные для подачи на микроконтроллер STM32F103C8T6, при необходимости разнося их по времени.

Предлагаемый прибор дистанционно дублирует показания бытовых счётчиков, фиксирующих расход холодной и горячей воды. Он особенно полезен при затруднённом доступе к приборам учёта расхода воды, а в будущем - для организации автоматического мониторинга и сбора их показаний. В приборе применены два микроконтроллера. Один из них - PIC12F675-I/P, а другой принадлежит к семейству STM32F и обладает более высокими техническими характеристиками, чем микроконтроллеры PIC или AVR.

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

Для разработки программы для микроконтроллера STM32, её компиляции и отладки использована среда разработки (IDE) mikroBasic PRO for ARM v.6.2.0 [5]. Для микроконтроллера PIC12F675 использована IDE mikroBasic PRO for PIC v.7.1.0 [6]. Загрузка программы в микроконтроллер STM32F103C8T6, установленный в модуле Blue Pill, производилась с помощью программатора-отладчика ST-LINK V2 (рис. 2).

Программатор-отладчик ST-LINK V2

Рис. 2. Программатор-отладчик ST-LINK V2

 

Этот программатор подключают между разъёмом USB компьютера и разъёмом программирования модуля Blue Pill. При его использовании в IDE mikroBasic PRO for ARM нужно открыть закладку "Tools", в счётчиках воды, напряжение на выводах 2 и 6 микросхемы DD1 имеет высокий уровень, поддерживаемый резисторами R2 и R3. При срабатывании любого геркона уровень напряжения на соответствующем ему входе микросхемы становится низким. В рассматриваемом устройстве активными считаются переходы напряжения с высокого на низкий уровень. Именно по ним указатель подсчитывает порции воды, проходящие через счётчики.

Обратите внимание, что в большинстве бытовых счётчиков воды с импульсным выходом имеются два резистора сопротивлением 5 кОм и 1 кОм, включённых соответственно параллельно геркону и последовательно в выходную цепь. Такие счётчики упомянуты в [8]. На схеме рис. 3 это резисторы R1', R2' в одном счётчике и R1", R2" в другом. Они нужны для того, чтобы централизованная система дистанционного съёма показаний счётчика могла фиксировать повреждения соединительных проводов, которые нередко бывают преднамеренными. Эти резисторы невозможно удалить из счётчика, не повредив пломбу.

Схема устройства

Рис. 3. Схема устройства

 

В рассматриваемом указателе такая функция не предусмотрена. Чтобы принимать импульсы счётчиков воды даже при наличии в них указанных резисторов, сопротивления резисторов R2 и R3, соединяющих выходы счётчиков с цепью +5 В, выбраны равными 2,4 кОм. Если резисторы внутри счётчиков есть, это обеспечит уровни выходного напряжения около 3,6 В при разомкнутом герконе и около 1,5 В - при замкнутом. Если в счётчиках нет резисторов, эти уровни будут соответственно 5 В и 0 В. В обоих случаях они достаточны для переключения логических элементов-триггеров Шмитта DD1.1 и DD1.2.

Рассмотрим работу формирователя импульсов фиксированной длительности на микросхеме DD1 с момента, когда геркон SF1' в счётчике горячей воды разомкнут. Элементы DD1.1 и DD1.3 образуют одновибратор. При разомкнутом герконе уровень напряжения на выводе 2 элемента DD1.1 - высокий. Аналогичный уровень установлен и на его выводе 1, так как элемент DD1.3 в рассматриваемом случае включён как инвертор, а его входы соединены с общим проводом через резистор R8. Низкий уровень на входах он преобразует в высокий уровень на выходе. R8C6 - дифференцирующая цепь. Её постоянная времени (произведение сопротивления резистора на ёмкость конденсатора) - приблизительно 52 мс.

Допустим, геркон SF1' замкнулся и уровень напряжения на выводе 2 элемента DD1.1 стал низким. Исходя из логики работы этого элемента, на его выходе уровень становится высоким. Нарастающий перепад напряжения проходит через дифференцирующую цепь. Под его воздействием уровень на выходе элемента DD1.3 и на выводе 1 элемента становится низким. Одновибратор запущен.

Описанное состояние сохранится независимо от изменений уровня на выводе 2 элемента DD1.1 до тех пор, пока через 52 мс напряжение на входах элемента DD1.3 не упадёт до низкого уровня благодаря зарядке конденсатора C6 через резистор R8. Уровень напряжения на выходе этого элемента и выводе 1 элемента DD1.1 вновь станет высоким - формирование импульса закончено.

Однако конденсатор C6 останется заряженным, пока не разомкнутся контакты геркона SF1'. Только теперь уровень на выходе элемента DD1.1 станет низким, поэтому этот конденсатор быстро разрядится через выход элемента и диод VD1. Одновибратор готов к приёму от счётчика воды очередного импульса.

Формирование импульса длительностью 52 мс в канале холодной воды происходит аналогичным образом. Только в нём участвуют геркон SF1" и элементы DD1.2, DD1.4.

Далее импульсы длительностью 52 мс поступают на входы микроконтроллера DD2. Его основная задача - передать эти импульсы на свои выходы, укоротив их до 3 мс, но не пропустив ни одного. А поскольку поступать они могут как в разные моменты времени, так и одновременно, для дальнейшей обработки он должен разнести импульсы по времени.

Микроконтроллер DD2 работает под управлением программы, коды которой загружены из файла shaper1.hex в его FLASH-память. Работу этой программы рассмотрим по находящемуся в файле shaperl.mbas её исходному тексту. Он написан на языке mikroBasic и содержит подробный комментарий. Микроконтроллер сконфигурирован для работы от внутреннего тактового RC-генератора при включённом сторожевом таймере. Все выводы портов микроконтроллера запрограммированы как цифровые. Выводы GP4 и GP5 назначены выходами, остальные - входами.

Программа состоит из трёх основных фрагментов, начинающихся с меток L0, L1, L2, и двух вспомогательных, начинающихся с меток L11 и L22. После инициализации регистров её работа начинается с метки L0. Строки 25 и 26 устанавливают на выходах GP4 и GP5 высокие логические уровни. Далее управление передаётся в цикл (строки с 27-й по 36-ю), где в строках 28-33 происходит периодическая проверка состояния входов GP0 и GP1.

Низкий уровень на любом из этих входов означает, что в соответствующем счётчике воды замкнут геркон. При обнаружении этого факта происходит выход из цикла с переходом на метку L1 при срабатывании счётчика холодной воды (строка 31) или на метку L2 при срабатывании счётчика горячей воды (строка 34). Пока ни один из счётчиков не сработал, цикл продолжает выполняться в ожидании срабатываний.

Допустим, замкнулся геркон SF1". Вследствие этого на входе GP1 уровень стал низким, условие в строке 30 выполнено, и произошёл переход из строки 31 на метку L1. Строка 39 устанавливает на выходе GP4 низкий уровень напряжения. Строка 40 - выдержка 3 мс, по истечении которой строка 41 вновь установит на выходе GP4 высокий уровень. Таким образом, в ответ на замыкание геркона SF1" на этом выходе будет сформирован импульс низкого логического уровня длительностью 3 мс.

Далее, после выдержки длительностью 46 мс, заданной строкой 42, программа войдёт в следующий цикл (строки с 43-й по 52-ю). Строка 46 проверит уровень на входе GP0. Если он низкий, строка 47 выполнит переход на метку L11. А строка 49 проверит, не установлен ли на обоих входах GP0 и GP1 высокий уровень. При выполнении этого условия строка 50 выполнит переход на метку L0.

Таким образом, при замыкании геркона SF1" импульс длительностью 3 мс будет сформирован на выходе GP4 микроконтроллера DD2, что иллюстрируют эпюры напряжений на рис. 4. Когда по истечении 52 мс на входе GP1 микроконтроллера DD2 вновь будет установлен высокий уровень, выполнится условие в строке 49, произойдёт переход из строки 50 на метку L0. Программа в цикле будет ожидать очередных замыканий герконов.

Эпюры напряжений

Рис. 4. Эпюры напряжений

 

При замыкании в счётчике горячей воды геркона SF1' всё происходит аналогично описанному выше, но импульс длительностью 52 мс, сформированный одновибратором из элементов DD1.1 и DD1.3, приходит на вход GP0 микроконтроллера DD2, а в программе происходит переход на метку L2. Далее фрагмент программы, начинающийся с этой метки, формирует импульс длительностью 3 мс на выходе GP5 микроконтроллера DD2 (рис. 5).

Эпюры напряжений

Рис. 5. Эпюры напряжений

 

Рассмотрим, что будет при одновременном срабатывании герконов SF1' и SF1". Поскольку в этом случае низкий логический уровень установлен на двух входах (GP0 и GP1) микроконтроллера DD2, выполнение условия в строке 30 обеспечивает переход из строки 31 на метку L1. Происходит уже описанное формирование импульса длительностью 3 мс на выходе GP4 микроконтроллера DD2. Затем выполнение условия в строке 46 обеспечивает переход из строки 47 на метку L11 и формирование импульса длительностью 3 мс на выходе GP5: строка 71 - установка низкого уровня на выходе GP5, строка 72 - выдержка 3 мс, строка 73 - установка высокого уровня на GP5.

Далее программа войдёт в цикл, ограниченный строками 74 и 80. Здесь будет ещё раз проверено состояние входов GP0 и GP1, и при высоком уровне на обоих строка 78 выполнит переход на метку L0.

Формирование двух раздельных выходных импульсов в ответ на совпадающие входные показано на рис. 6. Масштаб по оси времени на рис. 4-6 - 5 мс на деление.

Эпюры напряжений

Рис. 6. Эпюры напряжений

 

На практике бывает, что взаимный сдвиг моментов замыкания двух герконов очень незначителен. Если первым сработал геркон SF1", выполнение программы пойдёт по меткам L0, L1, L11, а затем снова L0. Положение выходных импульсов будет соответствовать рис. 6. А если первым сработает геркон SF1', программа, пройдя по меткам L0, L2, L22, также возвратится к метке L0, но выходные импульсы на рис. 6 поменяются местами.

Следует заметить, что возврат на метку L0 после выполнения фрагментов программы, начинающихся метками L11 или L22, обеспечен тем, что импульсы на входах GP0 и GP1 имеют фиксированную длительность 52 мс. За это время микроконтроллер успевает сформировать выходные импульсы, а по его истечении на его входах независимо от состояния герконов будут установлены высокие уровни напряжения.

Амплитуда импульсов на выходах микроконтроллера DD2 - около 5 В, а для установленного в модуле A1 микроконтроллера A1 .DD1, на входы которого они должны поступить, допустимо напряжение лишь 3,3 В. Поэтому эти импульсы проходят через делители напряжения R13R15 и R14R16, уменьшающие их амплитуду до допустимой.

Далее они поступают на входы A0 и A1 модуля A1 (обозначения выводов этого модуля на схеме рис. 3 и в тексте соответствуют надписям на плате модуля, хорошо видимым на рис. 1). К этим же входам подключены нормально разомкнутые кнопки SB1 и SB3. Ещё одна такая кнопка SB2 подключена к входу A2. Когда она не нажата, резистор R1 поддерживает высокий уровень на этом входе. Нажатиями на указанные кнопки выполняют следующие действия:

SB1 "+" - увеличивают показания указателя;

SB2 "Уст." - переводят указатель в режим корректировки показаний;

SB3 "-" - уменьшают показания указателя.

В составе модуля A1 имеется стабилизатор напряжения, обеспечивающий напряжением +3,3 В микроконтроллер A1 .DD1 и другие элементы модуля. Более подробно об этом модуле и загрузке в него программы можно узнать в [9].

 

Программа микроконтроллера

A1.DD1 также написана на языке mikro Basic. Из файла CW_STM32v03.hex её коды должны быть загружены в программную память микроконтроллера A1.DD1. Файл CW_STM32v03.mbas содержит исходный текст этой программы.

После подачи питания происходит инициализациямикроконтроллера A1.DD1. В нём включена стабилизация частоты внутреннего тактового генератора кварцевым резонатором на 8 МГц, установленным на плате модуля A1.

Выполнение программы начинается после инициализации всех переменных. Строки 54-56 в течение 2 с выводят на индикатор HG1 первую заставку. Затем строки 58-60 на такое же время выводят вторую заставку. После выполнения строк 62-65 табло индикатора HG1 принимает вид, показанный на рис. 7.

Табло индикатора HG1

Рис. 7. Табло индикатора HG1

 

Далее управление переходит к фрагменту программы с меткой LC (строки 68-82). Её выполнение будет зациклено до тех пор, пока не появится низкий уровень на любом из входов A0-A2 модуля A1. Для контроля состояния этих входов использованы функции библиотеки Button. В них предусмотрено подавление дребезга контактов, поэтому кнопки SB1-SB3 подключены к модулю без дополнительных антидребезговых цепей.

Допустим, на входе A0 модуля появился импульс низкого логического уровня. В результате выполнения условия в строке 70 произойдёт переход из строки 70 на метку L1, с которой начинается процедура счёта импульсов и вывода результата на индикатор HG1. Здесь в строке 86 значение переменной j увеличивается на единицу. Далее в строке 87 проверяется, не достигла ли она значения 100. Если нет, управление передаётся строке 91, где выполняется преобразование переменной j в строку символов. В строках 92, 93 эти символы выводятся на отведённое им место на табло индикатора. Как видно на рис. 8, в первой строке табло, отображающей показания счётчика холодной воды, появилась единица на втором знакоместе справа от запятой. На третьем месте от запятой всегда выведена цифра 0, так как указатель работает со счётчиками воды, отсчитывающими её расход с дискретностью 0,01 м3 (10 л).

Табло индикатора HG1

Рис. 8. Табло индикатора HG1

 

Далее последовательно в строках 95, 106 и 117 происходят проверки необходимости изменения других групп цифр в выведенных на табло индикатора показаниях счётчика холодной воды. Как они выполняются, можно понять из приведённых в тексте программы комментариев. Если изменений не требуется, программа входит в цикл, ограниченный строками 126-130. В нём она ждёт появления напряжения высокого уровня на входе A0 модуля A1. Когда это произойдёт, в строке 128 будет выполнен переход к метке L0. Указатель готов к приёму следующих счётных импульсов.

При появлении счётного импульса на входе A1 модуля A1 в строке 75 происходит переход к метке L2. Здесь программа подсчитывает импульсы счётчика горячей воды и выводит результат на табло индикатора. Отличие от описанной выше работы канала холодной воды - только в именах используемых переменных.

Теперь допустим, что произошло кратковременное нажатие на кнопку SB2. На выводе 12 микроконтроллера A1.DD1 появился низкий уровень. Поэтому в строке 78 выполнилось условие, и произошёл переход из строки 80 на метку LX для редактирования первой группы цифр показаний счётчика холодной воды (в верхней строке табло индикатора). В строках 181-205 вновь происходит циклический контроль состояния кнопок. Число проверок подсчитывается в строках 198-204. Если за 150 циклов (5,25 с) не была нажата ни одна из кнопок, произойдёт переход из строки 202 на метку LC.

Строкой 179 предельная длительность короткого нажатия на кнопку SB2 ограничена до 300 мс. Допустим, нажатие длилось меньше этого значения, и программа вошла в цикл проверки состояния кнопок. После кратковременного нажатия на кнопку SB1 в строке 188 будет выполнено условие. Поэтому в строке 189 произойдёт переход на метку LXX. Строка 208 включит курсор индикатора, а в строке 209 переменная j будет увеличена на единицу. В строках 214 и 215 полученное значение будет преобразовано в строковое и выведено на индикатор. Курсор займёт позицию правее выведенной группы цифр. Затем в строке 216 произойдёт безусловный переход к метке LX.

Если теперь длительно нажать на кнопку SB1, то начнётся быстрое нарастание значения этой группы за счёт того, что будет выполняться условие в строке 188. Прекратится оно лишь после отпускания кнопки SB1. Если теперь, не дожидаясь истечения времени, оговорённого в строке 203, кратковременно нажать на кнопку SB3, из строки 194 произойдёт переход на метку LX1, затем в строке 223 будет вычтена единица из значения, выведенного в первую группу цифр на табло индикатора. Из строки 227 будет выполнен переход на метку LX. Длительное удержание кнопки SB3 нажатой приведёт к быстрому многократному вычитанию единицы из значения первой группы цифр.

Таким образом, предусмотрено два способа изменения показаний. Кратковременное нажатие на кнопку SB1 или SB3 в режиме установки приводит соответственно к их увеличению или уменьшению на единицу, а длительное - к их быстрому изменению в соответствующую сторону. Отсутствие нажатий примерно в течение 5 с приводит к возврату в основной режим.

По завершении редактирования первой группы цифр показаний счётчика холодной воды можно, не дожидаясь выключения курсора (возвращения в основной режим), ещё раз кратковременно нажать на кнопку SB2. Из строки 184 произойдёт переход на метку LX2, и появится возможность редактировать вторую группу цифр показаний счётчика холодной воды. Оно выполняется точно так же, как и редактирование первой группы. Следующие кратковременные нажатия на кнопку SB2 позволят редактировать третью и четвёртую группы цифр этих показаний, а далее - поочерёдно все группы цифр показаний счётчика горячей воды.

Если после редактирования четвёртой группы цифр показаний счётчика горячей воды снова нажать на кнопку SB2, в строке 543 произойдёт переход на метку LX, и вся процедура установки показаний может быть повторена. Выход из режима установки - прекращение нажатий на кнопку SB2. Признак входа в рабочий режим - исчезновение курсора. Нужно предупредить, что нажатия на кнопки SB1 и SB3 в рабочем режиме приводят к искажению (увеличению) показаний указателя.

Применённый в указателе ЖКИ МТ-16S2H-2YLG имеет жёлтую подсветку табло и напряжение питания +5 В, а микроконтроллер A1.DD1 питается напряжением +3,3 В. Поэтому требуется согласование уровней. Для этого были использованы так называемые толерантные к пяти вольтам выходы этого микроконтроллера, соединённые с цепью +5 В резисторами R4-R7, R10 и R11. Подборкой резистора R17 устанавливают яркость подсветки табло индикатора. А подстроечным резистором R12 добиваются оптимальной контрастности выводимых на него символов.

Вместо указанного ЖКИ можно использовать и другие с двумя строками по 16 символов и встроенным контроллером, совместимым с HD44780. Был опробован, например, ЖКИ SC1602Ac синей подсветкой, которая потребляет значительно меньший ток, чем у МТ-16S2H-2YLG. Это позволяло питать всё устройство напряжением +5 В от программатора ST-LINK, подключённого к порту USB компьютера. Но размер табло и выводимых на него символов у этого ЖКИ меньше.

Все детали указателя, кроме ЖКИ HG1 и разъёмов X1 и X2, размещены на макетной плате размерами 90x68 мм. На ней же на разъёмах установлен модуль A1, а на противоположной остальным деталям стороне платы находятся кнопки SB1-SB3 с толкателями высотой 13 мм, выступающими над лицевой панелью корпуса указателя. Для микроконтроллера PIC12F675-I/P на плате предусмотрена панель.

Внешние размеры корпуса указателя - 150x119x43 мм, плата закреплена в нём винтами М3, как показано на рис. 9. Аналогично над ней закреплён ЖКИ HG1. На крышке корпуса находятся X1 - стандартное гнездо питания 2,1x5,5 мм и штыревая часть разъёма X2 (DB-9M). Кабель, соединяющий счётчики с указателем, заканчивается ответной частью этого разъёма DB-9F в корпусе DP-9C-G. Внешний вид устройства показан на рис. 10.

Плата в корпусе

Рис. 9. Плата в корпусе

 

Внешний вид устройства

Рис. 10. Внешний вид устройства

 

После изготовления указателя может оказаться, что длительность импульсов, генерируемых одновибрато-рами на микросхеме DD1, отличается от "теоретических" 52 мс. Это связано с разбросом параметров применённых деталей. Поэтому её рекомендуется проверить и подобрать сопротивление резисторов R8, R9 и ёмкость конденсаторов C6 и C7 так, чтобы обеспечить одинаковую и равную 52 мс длительность этих импульсов.

Недостатком рассмотренного дистанционного указателя расхода воды я считаю отсутствие записи показаний в память и возможности просмотра истории их изменения на ЖКИ. Ещё один недостаток - отсутствие резервного источника питания, что приводит к потере показаний при случайном отключении основного питания.

Его важное достоинство - возможность расширения функций за счёт обновления программного обеспечения. Установка внешней микросхемы EEPROM позволит решить задачу записи и повторного вывода показаний на ЖКИ. Возможности модуля Blue Pill позволят не только отказаться от второго микроконтроллера, но и реализовать часы реального времени и к их показаниям записанную в память информацию.

Можно дополнить указатель, например, радиомодулем, позволяющим без проводов передавать показания счётчиков воды в компьютер или даже в Интернет. Проблему сбоев при отключении питания можно устранить, предусмотрев в указателе аккумулятор с узлом управления зарядкой и разрядкой. В целом я считаю, что указатель получился простым и надёжным. В случае сбоя его показания легко восстановить с помощью кнопок.

Как было упомянуто выше, можно питать указатель напряжением 5 В. При этом контрастность табло индикатора остаётся достаточной, но для чтения показаний необходимо внешнее освещение, поскольку подсветка табло не работает. На практике потребление тока от источника 5 В не превышало 23 мА с учётом не показанного на схеме дополнительного светодиода-индикатора наличия питающего напряжения. При питании напряжением + 12 В через разъём X1 потребляемый ток - 65 мА. Но при этом подсветка табло ЖКИ работает.

Программы для микроконтроллеров находятся здесь

Литература

1. Николаев А. Микроконтроллеры с ядром Cortex. - Радио, 2018, № 6, с. 41-44.

2. Николаев А. Отладочные платы для STM32F. - Радио, 2019, № 9, с. 20-23.

3. Николаев А. Средства разработки программ для микроконтроллеров на основе ядра Cortex. - Радио, 2020, № 1, с. 10-15.

4. Ткачук М. Дистанционный указатель расхода воды. - Радио, 2013, № 1, с. 28-30.

5. mikroBasic PRO for ARM. - URL: https:// www.mikroe.com/mikrobasic-arm (23.04.2020).

6. mikroBasic PRO for PIC. - URL: https:// www.mikroe.com/mikrobasic-pic (23.04.2020).

7. Hardware Development Tools for STM32. - URL: https://www.st.com/en/development-tools/hardware-development-tools-for-stm32.html#products (23.04.2020).

8. Каменев Н. Повторитель показаний бытовых счётчиков воды. - Радио, 2015, № 12, с. 28.

9. Урок 2. Плата STM32F103C8T6. Загрузка программы во FLASH-память микроконтроллера через системный бутло-адер. - URL: http://mypractic.ru/urok-2-plata-stm32f103c8t6-zagruzka-program-my-vo-flash-pamyat-mikrokontrollera-cherez-sistemnyj-butloader.html (23.04.2020).

Автор: М.Ткачук, г. Алматы, Казахстан


Рекомендуем к данному материалу ...