248   227   72    

Спектрометр из светодиодов на основе Arduino

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

Комплектующие

Перечислим все комплектующие, которые нам пригодятся для создания Ардуино спектрометра и используемые в этом проекте:

Компоненты оборудования

  • Arduino Uno × 1
  • Макетная плата (без пайки) × 1
  • ИК светодиод × 1
  • 5 мм светодиод: красный × 1
  • 5 мм светодиод: зеленый × 1
  • Светодиод, синий × 1
  • УФ светодиод × 1
  • Резистор 10 Ом × 5
  • Перемычки × 7
  • Наждачная бумага × 1
  • Кабель USB-A to B × 1

Программное обеспечение

И если вы дойдете до конца нашего объемного материала, то вам еще пригодится кроме Микроконтроллера детали от Microbit:

  • коннектор (на фото выше слева вверху)
  • Microbit (на фото слева посередине)
  • USB-кабель icrmo (на фото слева внизу)

Дополнительные источники света:

  • комнатный свет
  • солнечный свет через окно
  • солнечный свет снаружи
  • изменяющийся свет
  • лампа для лака для ногтей
  • УФ-фонарик (или УФ-светодиод, подключенный к батарейке типа «таблетка»)
  • ИК-фонарик (или ИК-светодиод, подключенный к батарее типа «таблетка»)
Важно! Пожалуйста, надевайте соответствующие средства защиты глаз при выполнении любых инженерных проектов или лабораторных работ.

Для создания аналогового спектрометра нам понадобятся следующие детали, опционально:

  • Призма (необязательно) (A)
  • УФ шарики (бисер, бусинки) одного цвета (B)
  • Картонная коробка (С)

Идея проекта

Находясь на орбите Земли на высоте 250 миль или более 400 км экипаж на борту Международной космической станции подвергается воздействию более высоких уровней радиации чем на Земле, поскольку они находятся за пределами защитного магнитного поля Земли.

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

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

Процесс обучения

Создание и обучение

Учащиеся строят простой спектрометр, используя светодиоды в качестве датчиков света для пяти различных цветов или длин волн видимого и невидимого для человека света: инфракрасного (ИК), красного, зеленого, синего и ультрафиолетового (УФ). Учащиеся подключают свой спектрометр к микроконтроллеру для обнаружения различных длин волн, присутствующих в различных источниках света, чтобы увидеть, как свет излучает различные длины волн и для определения источников ультрафиолетового света.

Подключение комплектующих

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

Визуализация данных

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

Измерение ультрафиолетового света с помощью бус и призмы (по желанию)

1. Поместите призму по прямой линии яркого солнечного света (это работает еще лучше, если вы выйдете на улицу).

2. Поворачивайте призму до тех пор, пока вы не преломите свет и не создадите радугу.

3. Поместите картонную коробку так, чтобы радуга попадала внутрь коробки.

4. Поместите одну бусинку в каждую полосу света, а также одну за фиолетовым и одну за красным.

5. Подождите две минуты, а затем заблокируйте свет. Запишите цвет бисера в вашей лабораторной тетради.

Измерение ультрафиолета с использованием бисера

1. Соберите УФ шарики и разделите их на три группы по десять шариков.

2. Поместите одну группу УФ-шариков внутрь рядом с окном.

3. Поместите вторую группу УФ-шариков под внутренний источник света.

4. Поместите третью группу УФ-шариков снаружи на улице.

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

Делаем спектрометр

1. Удерживая один светодиод за лампочку, отшлифуйте его, пока его верхняя часть не станет плоской.

2. Повторите это для всех светодиодных лампочек.

Почему мы шлифуем верхушки светодиодов?

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

Что такое спектрометр?

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

Схема соединения цифрового спектрометра

  1. Подсоедините перемычку между контактом 3,3 В и контактом AREF на Arduino.
  2. Подсоедините перемычку между более длинной ножкой светодиода и контактом А0.
  3. Подсоедините перемычку между контактом GND и отрицательной шиной на макете.
  4. Подсоедините 10 ом резистор между более короткой ножкой светодиода и отрицательной шиной макета.
  5. Вставьте светодиод в макет так, чтобы оба провода были в двух разных рядах. Начните с инфракрасного (ИК) светодиода.

Контрольная точка

Убедитесь, что светодиод подключен правильно и отправляет данные в Excel. Подключите Arduino к вашему компьютеру, подключите его к Data Streamer и проверьте, что данные печатаются в Radiation. Убедитесь, что показания светодиодов меняются, поместив их под источник света. Лучший способ увидеть изменения - выйти на улицу! Даже если облачно, светодиоды лучше всего реагируют на солнечный свет.

До того, как все светодиоды будут подключены, могут быть ошибочные данные, поступающие из каналов с неподключенными светодиодами. Подключаем оставшиеся светодиоды.

  1. Повторите шаги выше для всех оставшихся светодиодов. Не забудьте подключить сигнальный провод обратно к аналоговым контактам Arduino!
  2. Красный светодиод подключается к контакту A1.
    Зеленый светодиод подключается к контакту A2.
    Синий светодиод подключается к контакту A3.
    Ультрафиолетовый (УФ) светодиод подключается к контакту А4.

Финальная схема выше, нарисованная в программе Fritzing для 5-светодиодного спектрометра: ИК, красный, зеленый, синий и УФ.

Интересный факт. Тонкий слой золота на козырьке шлема астронавта защищает от опасного воздействия солнечного излучения.

Код проекта

Скопировать или скачать код проекта вы можете ниже:

// --------------------HackingSTEM EM Spectrum-------------------------------
// This project is for use with the EM spectrum lesson plan 
// available from Microsoft Education Workshop at http://aka.ms/hackingSTEM 
// 
// Overview: 
// This sketch uses LEDs as light sensors (photodiode) to detect and measure 
// different wavelengths in various types of light sources.
//
// Pins:
// Pin A0: IR LED
// Pin A1: Red LED
// Pin A2: Green LED
// Pin A3: Blue LED
// Pin A4: UV LED
//
// This project uses an Arduino UNO microcontroller board. More information can
// be found by visiting the Arduino website: 
// https://www.arduino.cc/en/main/arduinoBoardUno 
//
// Comments, contributions, suggestions, bug reports, and feature requests 
// are welcome! For source code and bug reports see: 
// http://github.com/[TODO github path to Hacking STEM] 
// 
// Copyright 2019, Jen Fox, Microsoft EDU Workshop - HackingSTEM 
// MIT License terms detailed in LICENSE.txt 
// ----------------------------------------------------------------------------

// Program variables for project sensors --------------------------------------
const int kNumberOfLeds = 5;
int kledPins[kNumberOfLeds] = {A0, A1, A2, A3, A4};

// Excel variables for storing data sent to Excel -----------------------------
int colorSensors[kNumberOfLeds] = {1, 2, 3, 4, 5};

//Serial data variables
const char kDelimiter = ',';
const int kSerialInterval = 50;
unsigned long serialPreviousTime;


// SETUP ----------------------------------------------------------------------
void setup() {
  // Initializations occur here
  Serial.begin(9600);    
  _SFR_IO8(0x35) |= 0x10;   // A condensed method for disabling the internal 
                            // pull up resistors in the Arduino.

// This function changes the reference voltage for measuring the analog voltage
// of the LEDs to a 3.3V reference. This is why we added the jumper cable 
// between 3.3V to AREF!
  analogReference(EXTERNAL); 

}

// START OF MAIN LOOP --------------------------------------------------------- 
void loop()
{
  // Process sensors
  processSensors();

  // Process and send data to Excel via serial port (Data Streamer)
  processOutgoingSerial();

}

// SENSOR INPUT CODE-----------------------------------------------------------
void processSensors() 
{
  // Read analog value of LED inputs
  for(int i = 0; i < kNumberOfLeds; i++){
    colorSensors[i] = analogRead(kledPins[i]);
  }
  
  delay(10); //short delay to prevent the Arduino from overclocking
}

// Add any specialized methods and processing code here

// OUTGOING SERIAL DATA PROCESSING CODE----------------------------------------
void sendDataToSerial()
{
  // Send data out separated by a comma (kDelimiter)
  for(int i = 0; i < kNumberOfLeds; i++){
      Serial.print(colorSensors[i]);
      Serial.print(kDelimiter);
  }

  Serial.println(); // Add final line ending character only once
}

//-----------------------------------------------------------------------------
// DO NOT EDIT ANYTHING BELOW THIS LINE
//-----------------------------------------------------------------------------

// OUTGOING SERIAL DATA PROCESSING CODE----------------------------------------
void processOutgoingSerial()
{
   // Enter into this only when serial interval has elapsed
  if((millis() - serialPreviousTime) > kSerialInterval) 
  {
    serialPreviousTime = millis(); // Reset serial interval timestamp
    sendDataToSerial(); 
  }
}

Загрузка кода Arduino

1. Установите Arduino IDE. Вы можете скачать программу по ссылке или даже через Магазин Microsoft. Следуйте инструкциям для завершения установки.

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

3. Откройте загруженный файл, чтобы запустить приложение Arduino IDE.

4. В приложении Arduino выберите: Инструменты -> Порт -> COM 3 (Arduino / Genuino Uno), для английской версии программы: Tools -> Port -> COM 3. Ваш порт может отличаться от COM3.

5. Затем выберите Инструменты -> Плата: Arduino / Genuino Uno. На английском: Tools -> Board: Arduino/Genuino Uno.

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

Создание спектрометра для micro:bit

  1. Вставьте ваш micro:bit в коннектор, затем вставьте его в макет, как показано на схеме выше.
  2. Подключите соединительный провод между длинной светодиодной ножкой и контактом 0.
  3. Подключите соединительный провод от контакта GND на вашем micro:bit к отрицательной шине на макете.
  4. Подсоедините резистор между короткой ножкой светодиода и отрицательной шиной.
  5. Вставьте светодиод в макет так, чтобы оба провода были в двух разных рядах. Начните с инфракрасного (ИК) светодиода.

Контрольная точка

Убедитесь, что светодиод подключен правильно и отправляет данные в Excel. Подключите micro:bit к компьютеру, подключите его к Data Streamer (инструкция ниже) и проверьте, что данные печатаются в Radiation. Убедитесь, что показания светодиодов меняются, поместив их под источник света. Лучший способ увидеть изменения - выйти на улицу! Даже если облачно, светодиоды лучше всего реагируют на солнечный свет.

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

  1. Повторите шаги предыдущие шаги для всех оставшихся светодиодов.
  2. Второй светодиод подключается к контакту 1.
    Третий светодиод подключается к контакту 2.
    Четвертый светодиод подключается к контакту 3.
    Пятый светодиод подключается к контакту 4.

Загрузка кода micro:bit

1. Перейдите по этой ссылке, чтобы загрузить файл кода .hex.

2. Подключите micro:bit к компьютеру с помощью USB-кабеля. Установите драйвер mbed. Если вы сделали это раньше, вам больше не придется делать это снова. Если нет, то следуйте инструкции ниже.

Серийный (последовательный) драйвер Windows

Вы можете подключить свою плату к компьютеру через USB. Всё должно работать "из коробки" в Linux и Mac OS X, но для Windows более ранней, чем Windows 10, вам, вероятно, потребуется установить драйвер последовательного порта:

  • Загрузите драйвер последовательного порта Arm Mbed для Windows.
  • Подключите устройство Arm Mbed через USB. Он монтируется как диск Mbed.
  • Закройте все окна проводника, в которых отображается диск Mbed.
  • Запустите установщик. Может занять некоторое время или отобразить несколько предупреждений о "неподписанном драйвере" или без цифровой подписи (англ. - unsigned driver).

Возможные проблемы

  • Если у вас есть несколько устройств Mbed, но последовательный порт отображается только для одного из них: убедитесь, что вы запускаете установщик для каждого устройства (подключите устройство через USB и снова запустите установщик); Windows загружает драйвер на основе серийного номера, поэтому его необходимо запускать для каждого устройства отдельно.
  • Если программа установки не работает из-за отсутствия микроконтроллеров mbed: проверьте, правильно ли подключено устройство через USB.
  • Если установщик сообщает, что mbedWinSerial_nnnnn.exe не является допустимым приложением Win32: если вы загрузили установщик с помощью Internet Explorer, попробуйте другой браузер (Firefox, Chrome).
  • Если установщик зависает: проверьте, отображает ли Windows окно «unsigned driver/permission»; они часто скрываются за другими окнами, и на панели задач ничего не указывается. Установщик продолжит работу, как только вы нажмете ОК.

3. В проводнике перейдите к micro:bit. Он будет выглядеть как внешнее запоминающее устройство (например, флэш-накопитель, жесткий диск и т.д.).

4. Откройте второе окно проводника и перейдите в папку загрузок. Убедитесь, что вы видите оба окна.

5. Выберите файл .hex в загрузках и перетащите его в окно micro:bit.

6. Когда светодиод перестает мигать, код загружен в micro:bit.

Откройте Excel и включите Data Streamer

Data Streamer с Excel 365. Подписка на 365 включает Excel и бесплатную надстройку Data Streamer.

1. Откройте Excel 365.

2. Нажмите Файл (File) и выберите Параметры (Options), расположенные внизу панели.

3. Выберите Надстройки (Add-ins) в открывшемся диалоговом окне.

4. В меню «Управление» (Manage) в нижней части открывшегося диалогового окна выберите «Надстройки COM» (COM Add-Ins) и нажмите «Перейти» (Go).

5. Установите флажок (отметьте чекбокс) для Microsoft Data Streamer в открывшемся диалоговом окне и нажмите OK.

6. Вы должны увидеть новую вкладку Data Streamer в меню Excel.

Data Streamer с настольной версией Excel 365. В течение ограниченного времени Data Streamer можно использовать с настольной версией Excel 2016. Загрузите Data Streamer из Microsoft Store (Магазин Майкрософт). После установки Data Streamer будет автоматически включен в Excel.

Получение данных в Excel

Откройте книгу Excel Radiation. Если вы еще этого не сделали, загрузите книгу Excel по ссылке.  Чтобы увидеть данные в реальном времени, выполните следующие действия:

  1. Подключите микроконтроллер к USB-порту вашего компьютера.
  2. Нажмите Подключить устройство (Connect), чтобы подключить микроконтроллер к Excel.
  3. Откройте вкладку «Data Streamer» в меню Excel.
  4. Нажмите Start Data, чтобы начать чтение данных в Excel

  • Чтобы подключить устройство, подключите его к компьютеру через USB и нажмите «Подключить устройство» (Connect a Device).
  • Если вы записали и сохранили файл данных (.csv), вы можете импортировать его с помощью этой кнопки (Import Data File).
  • После подключения устройства выберите «Start Data», чтобы начать потоковую передачу данных в Excel. Если вы не нажмете «Start Data», когда ваше устройство подключено, вы не увидите никаких активных данных.

Устранение неисправностей Arduino

Ваша плата Arduino подключена, но вы не получаете никаких данных или данные не отвечают? Выполните следующие действия, чтобы устранить проблему.

Убедитесь, что Arduino считывает данные в Data Streamer:

  • На вкладке Data Streamer нажмите «Подключить устройство» и выберите плату Arduino.
  • Нажмите «Start Data» и перейдите на вкладку «Данные в» (Data In). Если она успешно подключена, вы увидите цифр на экране.

Убедитесь, что код Arduino был успешно загружен на плату. Программа Arduino должна сказать «Uploaded Successful» в нижней строке состояния, и вы должны увидеть мигание индикаторов Arduino на плате.

Убедитесь, что все провода заземления (GND) подключены к одной точке.

Проверьте полярность или ориентацию ваших светодиодов. Более длинный светодиодный провод должен быть подключен к контактам аналогового входа.

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

Убедитесь, что все детали правильно подключены к макету. Проверьте один светодиод за одним. После того, как вы проверили электрические соединения светодиодов, проверьте показания в Excel и посмотрите, не изменятся ли показания на солнце.

Устранение неисправностей micro:bit

Ваша плата micro:bit подключена, но вы не получаете никаких данных или данные не отвечают? Выполните следующие действия, чтобы помочь устранить проблему.

Убедитесь, что micro:bit выполняет чтение в Data Streamer.

  • На вкладке Data Streamer нажмите «Подключить устройство» и выберите плату Arduino.
  • Нажмите «Start Data» и перейдите на вкладку «Данные в» (Data in). Если всё успешно, вы увидите печать цифр на экране.

Убедитесь, что код micro:bit был успешно загружен на плату.

  • Перетащите код (.hex файл) в micro:bit (смотрите выше) и проверьте, что индикаторы платы мигают. Когда индикаторы остановятся, код загружен.

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

Проверьте полярность или ориентацию ваших светодиодов. Более длинный светодиодный провод должен быть подключен к контактам аналогового входа.

Убедитесь, что все детали правильно подключены к макету.

Проверьте один светодиод за одним. После того, как вы проверили электрические соединения светодиодов, проверьте показания в Excel и посмотрите, не изменятся ли показания на солнце.

Сбор данных спектрометра

Скачайте настроенную книгу Excel по этой ссылке. Ниже на скриншоте примерный вид - нажмите для увеличения.

Текущие данные видны на левом графике. Здесь мы также калибруем или обнуляем наши датчики. Гистограмма показывает средние показания датчиков, а линия показывает мгновенные показания. Для калибровки датчиков поместите спектрометр в коробку и закройте крышку. Разрешить считывание показаний в течение 10 секунд, а затем нажмите кнопку калибровки.

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

Получив показания для определенного источника света, нажмите "Сохранить пробу" (Save trial) на нужной диаграмме, чтобы сохранить текущие данные в диаграмме для сравнения с другими источниками света. Пометьте источник света для каждого испытания в верхней части таблицы.

Измерение света с помощью спектрометра

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

2. Поместите спектрометр на подоконник, подождите 10 секунд и сохраните данные.

3. Поместите спектрометр под тот же внутренний источник света, который вы использовали для УФ бисера, подождите 10 секунд и сохраните данные.

4. Выведите спектрометр и компьютер наружу, подождите 10 секунд и сохраните последнюю пробу.

На этом всё. Материал получился большим, но надеемся, что очень полезным.

Ардуино+