Главная страница
Навигация по странице:

  • Анализ технического задания Общие сведения

  • Используемые модули и их характеристики

  • Структурная схема устройства

  • Описание элементов системы Управляющая плата Arduino Nano

  • Радиомодуль nRF 24 L 01

  • Дисплей LCD 1602 Жидкокристаллический дисплей (Liquid Crystal Display )

  • Проектирование программного обеспечения приёмника Этапы разработки программного обеспечения

  • Описание библиотек Библиоткека LiquidCrystal

  • Библиоткека RadioHead

  • Формат получаемых данных

  • Список использованной литературы

  • Приложение А – Подключение LCD 1602

  • Приложение Б – Подключение nRF 24 L 01

  • Наименование

  • Приложение В – Текст программы

  • Приложение Г – Структурная схема устройства Приложение Д – Блок-схема алгоритма

  • Проектирование программного обеспечения приемника для опроса датчиков параметров жизнеобеспечения. КП2-1. Реферат Объем курсовой работы составляет 29 страниц


    Скачать 1.05 Mb.
    НазваниеРеферат Объем курсовой работы составляет 29 страниц
    АнкорПроектирование программного обеспечения приемника для опроса датчиков параметров жизнеобеспечения
    Дата03.06.2021
    Размер1.05 Mb.
    Формат файлаdocx
    Имя файлаКП2-1.docx
    ТипРеферат
    #213684


    Реферат
    Объем курсовой работы составляет 29 страниц.

    Ключевые слова: Arduino, приемник, жизнеобеспечение, nRF24L01, LCD 1602.

    Объектом исследования является приемопередатчик в системе жизнеобеспечения.

    Цель курсового проекта – создать устройство, выводящее данные о состоянии пульса человека и температуре в комнате.

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

    Содержание

    Введение…………………………………………………………………….5

    1. Анализ технического задания………………………………………….6

      1. Общие сведения……………………………………………….…….6

      2. Используемые модули и их характеристики……………….……..6

      3. Требования к системе………………………………………………7

    2. Структурная схема устройства………………………………………...8

    3. Элементная база………………………………………………………...9

      1. Описание элементов системы……………………………………...9

    4. Проектирование программного обеспечения приёмника…………..13

      1. Этапы разработки программного обеспечения……….…………13

      2. Описание библиотек………………………………………………16

    5. Алгоритмы……………………………………………………………..18

    6. Макетирование………………………………………………………...19

    7. Формат получаемых данных………………………………………… 20

    Заключение………………………....……………………………………..21

    Список использованной литературы…………………………………….22

    Приложение А – Подключение LCD 1602………………...………….....23

    Приложение Б – Подключение nRF24L01…………………………..…..25

    Приложение В – Код программы……………….………………...……..26

    Приложение Г – Структурная схема устройства………………...……..28

    Приложение Д – Блок-схема алгоритма………..………………...……..29


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

    - система обеспечения газового состава;

    - система водообеспечения;

    - система санитарно-гигиенического обеспечения;

    - системы обеспечения питанием;

    - система обеспечения теплового режима

    и т.д.

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

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



    1. Анализ технического задания




      1. Общие сведения

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

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


      1. Используемые модули и их характеристики




        1. Радиомодуль NRF24L01

    Технические характеристики радиомодуля:

    - частота передачи/приема: 2.4ГГц; 
    - расстояние передачи/приема: до 100м, в помещении - до 30 м; 
    - скорость передачи: 250kbps, 1Mbps и 2Mbps; 
    - модуляция: GFSK; 
    - чувствительность приемника: -82 dBm; 
    - максимальная выходная мощность: 0 dBm; 
    - коэффициент усиления антенны: 2dBm; 
    - количество каналов: 126; 
    - интерфейс: SPI; 
    - напряжение питания: 3.3В.


        1. Дисплей LCD 1602

    Технические характеристики дисплея:

    - символьный тип отображения, есть возможность загрузки символов;

    - светодиодная подсветка;

    - контроллер HD44780;

    - напряжение питания 5В;

    - формат 16х2 символов;

    - диапазон рабочих температур от -20С до +70С, диапазон температур хранения от -30С до +80 С;

    - угол обзора 180 градусов.


      1. Требования к системе


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

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

    Для реализации данного задания используются микро ЭВМ Arduino Nano, дисплей LCD 1602, радиомодуль nRF24L01.

    Так как проектируемое устройство является самостоятельной, конструктивно и функционально законченной единицей, то его сборка предполагается в отдельном корпусе, в котором смонтированы все элементы.
    Разработка программного обеспечения производится в среде IDE Arduino.


    1. Структурная схема устройства


    В приложении 3 и на схеме ниже представлена структурная схема устройства.

    На схеме изображён узел связи. Основным управляющим элементом

    является Arduino Nano, к нему подключен радиомодуль nRF24L01, который принимает данные от передатчика, и дисплей LCD 1602, который выводит эти данные.



    1. Элементная база


    Правильно выбранная элементная база [1] обеспечивает снижение вероятности появления неполадок, высокие результаты и надежность функционирования.

    Модули, использованные в данном случае, имеют определенные условия эксплуатации и ряд технических характеристик, приведённых в таблице ниже.
    Таблица 1 – Условия эксплуатации элементов системы


    Элемент

    Диапазон рабочих температур, С̊


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


    Потребляемый ток, мА

    Arduino Nano

    -40..+85

    5

    40

    NRF24L01

    -40..+85

    3,3

    13,5

    LCD 1602

    -20..+70

    5

    1,2



      1. Описание элементов системы


    Управляющая плата Arduino Nano
    Построена на микроконтроллере ATmega328, имеет 32 кБ флеш-памяти для хранения кода программы (2 кБ используется для хранения загрузчика), 2 кБ оперативной памяти. Arduino Nano может получать питание через подключение Mini-B USB, или от нерегулируемого 6-20 В (вывод 30), или регулируемого 5 В (вывод 27), внешнего источника питания. Платформа программируется посредством ПО Arduino.



    Рисунок 1 – Внешний вид Arduino Nano

    Радиомодуль nRF24L01
    На плате nRF24L01 [2] встроен демодулятор, синтезатор частот и усилитель сигнала. Дальность действия модуля Arduino nRF24L01 до 30 метров, а в версии с усилителем и антенной до 1000 метров в прямой видимости. Модуль может использовать 127 каналов связи, отличающихся частотой сигнала — от 2,4 ГГц до 2,483 ГГц. Скорость беспроводного соединения можно настраивать: 250kbps, 1Mbps или 2Mbps.

    С помощью nRF24L01 можно создать многоканальную связь. Т.е. можно объединить в общую сеть до 7 устройств, которые могут одновременно принимать и отправлять сигнал.

    Модуль работает по интерфейсу SPI, соответственно подключать модуль nRF24L01 следует к определенным портам микроконтроллера. Для наладки связи между двумя Ардуино, потребуется, как минимум два беспроводных радио модуля. Одну плату нужно настроить, как приемник сигнала (receiver), а вторую, как передатчик (transmitter).


    Рисунок 2 – Внешний вид nRF24L01
    Дисплей LCD 1602
    Жидкокристаллический дисплей (Liquid Crystal DisplayLCD 1602 является хорошим выбором для вывода строк символов в различных проектах.

    Основывается на базе контроллера HD44780. Размерность - 16x02 (т.е. по 16 символов в двух строках). Разрешение же самих символов - 5x8 точек.

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


    Рисунок 3 – Внешний вид LCD 1602


    1. Проектирование программного обеспечения приёмника




      1. Этапы разработки программного обеспечения


    Разработка программного обеспечения проводилась в три этапа и рассматривалось на примере подключения к Arduino Uno.

    Первый этап – подключение дисплея к плате Arduino и проверка его работоспособности.

    Плата Arduino подключается к компьютеру через USB провод. Все операции производятся в среде разработки Arduino IDE.


    Рисунок 4 – Пример подключения LCD 1602


    Схема подключения приведена в приложении 1.
    Код программы для вывода на экран фразы «Osnovy progr v IK» (См. ниже).
    #include // Лобавляем необходимую библиотеку

    LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7)
    void setup(){

    lcd.begin(16, 2); // Задаем размерность экрана
    lcd.setCursor(0, 0); // Устанавливаем курсор в начало 1 строки

    lcd.print("Osnovy progr"); // Выводим текст

    lcd.setCursor(0, 1); // Устанавливаем курсор в начало 2 строки

    lcd.print("v IK"); // Выводим текст

    }
    void loop(){

    }
    Второй этап: подключение и тестирование радиомодуля nRF24L01.


    Рисунок 4 – Пример подключения nRF24L01

    Схема подключения приведена в приложение 2.
    Код программы для общения между приемником и передатчиком (См. ниже).
    #include

    #include

     

    // создаем экземпляр класса для трансивера:

    RH_NRF24 nrf24;

     

    void setup()

    {

      Serial.begin(9600);

      while (!Serial); // ждем подключения последовательного порта

          

      if (!nrf24.init())

        Serial.println("init failed");  //  "инициализациянеудалась"

      

     if (!nrf24.setChannel(1)) // установка канала

        Serial.println("setChannel failed");

        //  "не удалось выполнить функцию setChannel()"

     if (!nrf24.setRF(RH_NRF24::DataRate2Mbps,  

          RH_NRF24::TransmitPower0dBm))

        Serial.println("setRF failed");    

        //  "не удалось выполнить функцию setRF()"

    }

     

     

    void loop()

    {

      Serial.println("Sending to nrf24_server");  //  "Отправкаданныхна nrf24_server"

      // отправляем сообщение на nrf24_server:

      uint8_t data[] = "Hello World!";  //  "Привет, мир!"

      nrf24.send(data, sizeof(data));

     

      nrf24.waitPacketSent(); // теперь ждем ответа:

      uint8_t buf[RH_NRF24_MAX_MESSAGE_LEN];

      uint8_t len = sizeof(buf);

     

      if (nrf24.waitAvailableTimeout(500))

      {

        // ответное сообщение уже должно прийти:  

        if (nrf24.recv(buf, &len))

        {

          Serial.print("got reply: ");  //  "получилиответ: "

          Serial.println((char*)buf);

        }

        else

        {

          Serial.println("recv failed");  // "не удалось выполнить функцию recv()"

        }

      }

      else

      {

        Serial.println("No reply, is nrf24_server running?");

        //  "Ответа нет, nrf24_server вообще запущен?"

      }

      delay(400);

    }

    Третий этап: сборка конечного устройства.

    Схемы подключения приведены в приложении А и приложении Б.

    Текст программы приведен в приложении В.



      1. Описание библиотек


    Библиоткека LiquidCrystal

    Данная библиотека [3] позволяет Ардуино управлять различными жидкокристаллическими дисплеями (LCD).

    Функции:

    LiquidCrystal - Создает переменную типа LiquidCrystal. Управление LCD-экраном может осуществляться по 4-х или по 8-проводной схеме. В первом случае следует пропустить параметры d0-d3, оставив соответствующие выводы не подключенными. Вывод RW можно также не подключать к Ардуино и соединить его напрямую с землей. В этом случае параметр rw в функции можно не указывать.

    begin() - инициализирует интерфейс для взаимодействия с LCD-экраном и задает размеры (ширину и высоту) области вывода экрана. При работе с LCD-дисплеем, функция begin() должна вызываться первой и предшествовать другим командам из библиотеки LiquidCrystal.

    setCursor() - Позволяет задать позицию курсора на LCD-экране; т.е. устанавливает позицию, в которой будет выводиться последующий текст.

    print() - выводит текст на LCD-экран.
    Библиотека SPI

    Последовательный периферийный интерфейс (SPI) - это синхронный протокол последовательной передачи данных, используемый для связи микроконтроллера с одним или несколькими периферийными устройствами. Интерфейс SPI отличается относительно высокой скоростью и предназначен для связи близко расположенных устройств. Он также может использоваться для взаимодействия двух микроконтроллеров.
    Библиоткека RadioHead

    Функции:

    nrf24.init() – вызов функции инициализации.

    nrf24.setChannel() – выбор канала.

    nrf24.setRF() – настройка скорости обмена.

    nrf24.send(data, sizeof(data)) – отправление в эфир сообщения из «data», имеющее его собственный размер.

    nrf24.waitAvailableTimeout() – устанавливает промежуток между сигналами.

    nrf24.waitPacketSent() – ожидание отправления пакета.

    1. Алгоритмы


    Программа содержит секции (модули) setup() и loop().

    В секции setup():

    - задается скорость обмена данными;

    - задается номер канала и проверяется его работоспособность.

    В секции loop():

    - задается размерность экрана;

    - проверяется, передается ли сигнал;

    - выполняется вывод информации на дисплей;

    - устанавливается время промежутков между сигналами.
    Блок-схема алгоритма приведена в приложении Д.

    1 и 2 элементы блок-схемы относятся к секции setup(). Остальные – к секции loop().


    1. Макетирование


    Макетирование происходило в несколько этапов.

    На первом этапе производилось подключение дисплея LCD 1602 к Arduino Nano на макетной плате по схеме, приведенной в приложении А. Так же производилось тестирование работоспособности дисплея.

    На втором этапе к Arduino был подключен радиопередатчик nRF24L01 по схеме, приведенной в приложении В.


    Рисунок 5 – Фото готового устройства

    1. Формат получаемых данных


    Информационная посылка для получения данных о температуре имеет вид:

    Таблица 2 – Информационная посылка «Температура»

    01

    02

    03

    Z

    T1

    T2


    Здесь верхняя строка содержит нумерацию байтов, а нижняя –расшифровку их смыслового наполнения:

    Z – знак температуры (+ или -);

    Т1, Т2 – символы, отображающие температуру.
    Информационная посылка для получения данных о пульсе имеет вид:

    Таблица 3 – Информационная посылка «Пульс»

    01

    02

    03

    P1

    P2

    P3



    Расшифровка наполнения нижней строки:

    P1, P2, P3 – символы, отображающие пульс.
    И в первом, и во втором случае для передачи необходимо подготовить информационный пакет, содержащий 3 байта.


    Заключение
    В результате выполнения курсового проекта были выполнены задачи, поставленные в техническом задании. Было создано устройство, способное выводить на дисплей данные, полученные от передатчика. Система, разработанная в рамках курсового проекта, является прототипом системы жизнеобеспечения. Расширение функциональных возможностей может быть осуществлено путем добавления новых датчиков и модулей.

    Список использованной литературы
    1. Платформа Arduino [Электронный ресурс]. URL: http://arduino.ru/

    2. Описание модуля nRF24L01 [Электронный ресурс]. URL: http://wikihandbk.com/wiki/Arduino:Примеры/Гайд_по_использованию_радиочастотного_трансивера_nRF24L01_(2,4_ГГц)_с_Arduino

    3. Подробное описание библиотек Arduino [Электронный ресурс]. URL: https://doc.arduino.ua/ru/prog/Libraries

    4. Сайт Arduino-DIY [Электронный ресурс]. URL: http://arduino-diy.com/

    1. Массимо, Б. Arduino для начинающих волшебников [Текст]/Б. Массимо-

    М.:VSD, 2012. – 128 с.




    контакта

    Наименование

    контакта

    Контакт на плате Arduino

    1

    VSS

    GND

    2

    VDD

    +5V

    3

    V0

    Контраст – на средний вывод потенциометра

    4

    RS

    D7 Arduino

    5

    R/W

    GND

    6

    E

    D6 Arduino

    7-14

    D0-D7

    D0-D3 – не подключены; D4-D7 – подключены к контактам D5-D2 Ардуино

    15

    A

    Анод подсветки, подключается к +5В

    16

    K

    Катод подсветки, подключается к земле через резистор 220Ом

    Приложение А – Подключение LCD 1602
    Таблица 4 – Подключение LCD 1602


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





    LCD 1602




    D7

    14




    D6

    13




    D5

    12




    D4

    1 1




    D3

    10




    D2

    9




    D1

    8




    D0

    7




    E

    6




    R/W

    5




    RS

    4




    V0

    3




    VDD

    2




    VSS

    1














    Arduino




    D7

    D6

    D5

    D4

    D3

    D2

    GND

    +5V










    +5V

    Приложение Б – Подключение nRF24L01
    Таблица 5 – Подключение nRF24L01

    Наименование

    контакта

    Контакт на плате Arduino

    GND

    GND

    VCC

    +3.3V

    CE

    7

    CSN

    8

    MOSI

    11

    MISO

    12

    SCK

    13

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



    Arduino




    13

    12

    11

    7

    8

    GND

    3V3













    nRF24L01




    SCK




    MISO




    MOSI




    CE




    CSN




    VCC




    GND











    Приложение В – Текст программы
    #include

    #include

    #include // Лобавляем необходимые библиотеки

    LiquidCrystal lcd(7,6,5,4,3,2); // (RS, E, DB4, DB5, DB6, DB7)

    RH_NRF24 nrf24;
    void setup()

    {

    Serial.begin(9600);

    while (!Serial);   
    if (!nrf24.init())

    Serial.println("init failed");

    if (!nrf24.setChannel(5)) // установка канала

    Serial.println("setChannel failed"); // ошибка

    if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm))

    Serial.println("setRF failed");

    }
    void loop()

    {

    {

    lcd.begin(16, 2); // Задаем размерность экрана

    Serial.println("Sending to nrf24_server");

    uint8_t data[] = "zapros t";

    nrf24.send(data, sizeof(data));

    nrf24.waitPacketSent();

    uint8_t buf[RH_NRF24_MAX_MESSAGE_LEN];

    uint8_t len = sizeof(buf);
    if (nrf24.waitAvailableTimeout(5000))

    {

    if (nrf24.recv(buf, &len))

    {

    lcd.setCursor(0, 0);

    lcd.print("temperatura:");

    lcd.println((char*)buf);

    Serial.println((char*)buf);

    }

    else

    {

    Serial.println("recv failed");

    }

    }

    else

    {

    Serial.println("No reply, is nrf24_server running?");

    }

    delay(1000);

    }

    {

    lcd.begin(16, 2); // Задаем размерность экрана

    Serial.println("Sending to nrf24_server");

    uint8_t data[] = "zapros puls";

    nrf24.send(data, sizeof(data));

    nrf24.waitPacketSent();

    uint8_t buf[RH_NRF24_MAX_MESSAGE_LEN];

    uint8_t len = sizeof(buf);
    if (nrf24.waitAvailableTimeout(5000))

    {

    if (nrf24.recv(buf, &len))

    {

    lcd.setCursor(0, 1);

    lcd.print("puls:");

    lcd.println((char*)buf);

    Serial.println((char*)buf);

    }

    else

    {

    Serial.println("recv failed");

    }

    }

    else

    {

    Serial.println("No reply, is nrf24_server running?");

    }

    delay(1000);

    }

    }

    Приложение Г – Структурная схема устройства




    Приложение Д – Блок-схема алгоритма





    написать администратору сайта