- •Содержание
- •Техническое задание
- •Введение
- •Разработка алгоритма
- •Математический алгоритм
- •Разработка схем алгоритмов
- •2. Разработка программы
- •2.1 Разработка программы на пк.
- •2.2 Разработка программы на микроконтроллер.
- •Вычислительный эксперимент
- •3.1 Программа разработанная на языке с#.
- •4.3 Обращение к программе
- •Входные и выходные данные
- •Руководство пользователя
- •Заключение
- •Список литературы
- •Приложение а Текст программы на пк.
- •Приложение б Текст программы на микроконтоллер.
Разработка схем алгоритмов
Д ля дальнейшей работы необходимо построить следующие алгоритмы: алгоритм работы программы в целом, и алгоритм обучения нейросети. Обобщенная схема алгоритма программы, распознающей 2 класса чисел с помощью искусственной нейросети на микроконтроллере, представлена на рисунке 2.
Рисунок 2 - Обобщенная схема алгоритма программы.
Распознавание классов на микроконтроллере
Рисунок 2 – Продолжение.
Алгоритм обучения нейросети представлен на рисунке 3.
Рисунок 4 – Схема алгоритма обучения нейросети
2. Разработка программы
Для запуска этой программы предварительно была записана прошивка в микроконтроллер, которая разрабатывалась в среде Keyl 4. Затем соединяются выводы PC10 и РС11 микроконтроллера с выводами Rx и Tx соответственно любого преобразователя компьютерных интерфейсов в UART, на плате с соответствующими элементами. После этого подключается USB-кабель к отладочной плате, тем самым подавая питание на микроконтроллер.
Следующим шагом является запуск программы на ПК. Для этого нужно иметь установленную версию Windows XP/Vista/7. Данная программа разрабатывалась в среде MSVisualC# 2010(Microsoft .NET Framework 4.0).
2.1 Разработка программы на пк.
Для работы использовались следующие пространства имен:
System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Text;
System.Windows.Forms;
System.Threading;
System.IO;
System.IO.Ports;
Для создания программы на ПК были использованы:
class Neyro – класс работающий с нейросетью.
class Form1 : Form – класс диалогового окна, наследуемый от стандартного класса Form.
public int[] Vihod(int kol, int kl) - метод, формирующий целевой вектор.
public void Korekt() - метод, коректирующий синапсы.
public void Rez() – метод вычисления результата нейросети.
public void CreateNS() – метод, создающий нейросеть.
public void Obuchenie(string file, StreamWriter sw1) – метод, обучающий нейросеть определенному классу чисел.
private void grafic() – метод, рисующий график.
Текст программы представлен в приложении А.
2.2 Разработка программы на микроконтроллер.
Для создания программы на микроконтроллере STM32F407VG были использованы:
Функции:
void delay(int n) – функция задержки.
void InitUart4(void) – инициализация UART.
void InitPorts() – инициализация портов.
void InitNeyro() – инициализация и создание модели нейросети.
void CreateNeyro(Neyro* nr) – функция заполнения матриц весовых коэффициентов малыми случайными значениями.
void Res(Neyro* nr) – функция расчета выходных значений нейросети.
void Write_koef(Neyro* nr, const double *buf) - функция записи весовых коэффициентов в матрицы принятых с ПК.
void Write_vvod(Neyro* nr, const double *buf) – функция формирования входных значений нейросети принятых данных с ПК.
void Klass(Neyro* nr) – функция определения класса чисел по выходным значениям нейросети.
Прерывания:
void UART4_IRQHandler() – перывание по приему данных через UART интерфейс.
void SysTick_Handler() - прерывание по переполнению таймера SysTick.
Текст программы представлен в приложении Б.