Триадный спектроскопический датчик (Triad Spectroscopy Sensor) AS7265x от компании Sparkfun — это мощный оптический спектральный датчик для изучения световых характеристик. Мы можем соединить датчик AS7265x с платой Arduino и любым другим современным микроконтроллером. Используя триадный спектроскопический датчик AS7265x, мы можем создать свой собственный спектрофотометр. Датчик способен измерять и характеризовать как различные типы материалов поглощают или отражают 18 различных частот света в диапазоне от 410 нм до 940 нм. Также ранее на нашем сайте мы рассматривали подключение к Arduino датчика цвета TCS3200, который также может измерять цветовую частоту.
Термин «спектроскопия» означает изучение взаимодействия между веществом и электромагнитным излучением в зависимости от длины волны или частоты излучения. Проще говоря, спектроскопия — это точное изучение цвета, обобщенное от видимого света до всех полос электромагнитного спектра. Выполняя это рассечение и анализ света объекта, исследователь может сделать вывод о физических свойствах этого объекта, таких как температура, масса, светимость и состав.
В этой статье мы соединим датчик спектроскопии AS7265x с платой Arduino и считаем основные показания всех 18 каналов. Мы также будем считывать необработанные данные, а также температуру. Поскольку это базовое руководство для начинающих по AS7265x, мы узнаем о конструкции, работе, внутренней архитектуре и всех других функциях датчика. Датчик сделан из комбинации видимых, УФ и ИК светодиодов или 3 различных датчиков, таких как AS72651 (УФ), AS72652 (ВИД) и AS72653 (БИК), поэтому он и называется датчиком триадной спектроскопией.
Необходимые компоненты
- Плата Arduino Nano (купить на AliExpress).
- Триадный спектрометрический датчик AS7265x (купить на AliExpress).
- Источник питания постоянного тока 5 В.
- Макетная плата.
- Соединительные провода.
Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158
Что такое световая спектроскопия?
Термин «спектроскопия» — это метод, который использует излучение для получения информации о структуре и свойствах вещества. Основной принцип спектроскопического метода заключается в том, чтобы направить луч электромагнитного излучения на образец материала и наблюдать, как он реагирует на такой стимул. Реакция обычно регистрируется как функция длины волны излучения. График реакции как функции длины волны называется спектром.
Применение спектроскопии
Спектроскопия используется в физической и аналитической химии для обнаружения, определения или количественной оценки молекулярного или структурного состава образца. Каждый тип молекулы и атома будет отражать, поглощать или испускать электромагнитное излучение своим собственным характерным способом. Спектроскопия использует эти характеристики для вывода и анализа состава образца.
Ниже приведены некоторые области применения спектроскопии.
1. Определение атомной структуры образца.
2. Определение метаболической структуры мышцы.
3. Мониторинг содержания растворенного кислорода в водных экосистемах.
4. Изучение спектральных линий излучения далеких галактик.
5. Изменение структуры лекарств для повышения эффективности.
6. Характеристика белков.
7. Анализ питательных веществ почвы.
8. Анализ дыхательных газов в больницах.
Триадный датчик спектроскопии AS7265x
AS7265x — это простейший триадный датчик спектроскопии от компании Sparkfun, который также можно назвать спектрофотометром. Датчик образован путем объединения трех датчиков AS72651, AS72652 и AS72653. AS72651 предназначен для измерения видимого спектра света. Аналогично, AS72652 предназначен для измерения УФ-излучения. AS72653 — это ИК-датчик для измерения ИК-излучения. Датчик также имеет 4 Мбит EEPROM, которая загружается прошивкой, управляющей системой. EEPROM считывается AS72651 при включении питания.
Спектральный датчик спектроскопии AS7265x обнаруживает свет с длиной волны от 410 нм до 940 нм. Датчик способен измерять 18 отдельных частот света с точностью до 28,6 нВт/см2 и точностью +/-12%. Датчик работает при типичном напряжении 3,3 В. Датчик имеет контакты I2C такие как SDA (последовательные данные) и SCL (линия синхронизации) и имеет адрес I2C 0x49. Скорость передачи данных для датчика по умолчанию составляет 115200 бод.
Датчик также имеет интерфейс UART, доступ к которому можно получить, выполнив простые модификации оборудования. Последовательный интерфейс использует набор команд AT, который можно найти в AS7265x Datasheet.
Светодиоды на датчике AS7265x
Датчик содержит 3 различных светодиода, а именно белый светодиод (5700K), УФ-светодиод (405 нм) и ИК-светодиод (875 нм). Основное назначение этих светодиодов — осветить целевой объект максимально возможной полосой видимого или невидимого света.
Помимо 3 светодиодов подсветки, датчик имеет светодиод питания и светодиод состояния. Синий светодиод состояния отображает различные состояния датчика AS72651. Этот светодиод можно отключить с помощью библиотеки SparkFun. Красный светодиод питания предназначен для индикации того, правильно ли включена плата или нет. Вы можете отключить красный светодиод, перерезав соседнюю перемычку, если красный свет мешает показаниям датчика.
UART/I2C интерфейс AS7265x
По умолчанию датчик включен с интерфейсом I2C. Адрес I2C для датчика 0x49. Все, что вам нужно, это подключить датчик к выводу I2C любого микроконтроллера и считать данные с помощью библиотеки Sparkfun.
Для этой платы также доступен последовательный интерфейс UART. Вы можете использовать команды AT для доступа к последовательным данным. Список команд AT можно найти в техническом описании AS7265x. Чтобы включить последовательный интерфейс и отключить интерфейс I2C, необходимо изменить положение двух перемычек.
1. Перемычка I2C на передней части платы должна быть открыта, чтобы удалить подтягивающие резисторы с линий TX и RX.
2. Перемычка JP2 на задней части платы должна быть закрыта перемычкой для пайки.
Чтение последовательных данных с AS7265x с помощью AT-команд
Для чтения последовательных данных с AS7265x вам необходимо сначала включить интерфейс UART, используя указанный выше метод. Затем подключите модуль FTDI к датчику. Serial Basic по умолчанию установлен на 3,3 В, поэтому подключите 3,3 В к VCC и используйте логические сигналы 3,3 В на контактах UART.
Последовательный интерфейс работает со скоростью 115200 бод. Чтобы проверить соединение, откройте Serial Monitor (окно монитора последовательной связи) в Arduino IDE или Putty Terminal. Отправьте команду «AT» и дождитесь ответа «OK».
Из таблицы данных вы можете получить все AT-команды. Вы можете отправлять их по одной. Некоторые AT-команды приведены ниже.
1. AT : получить ответ.
2. ATVERSW : вернуть номер текущей версии программного обеспечения.
3. ATVERHW : вернуть системное оборудование в виде шестнадцатеричного значения в формате PRDTx, где P=PartID, R=ChipRevision, DT=DeviceType.
4. ATTEMPT : прочитать текущую температуру устройства в градусах Цельсия.
5. ATDATA : прочитать все шесть необработанных значений для каждого устройства (<65535).
6. ATCDATA : прочитать все шесть калиброванных значений для каждого устройства. Возвращает 32-битные значения с плавающей точкой, разделенные запятыми
Вы можете протестировать и другие AT-команды и реакцию на них, обратившись к техническому описанию.
Схема проекта
Схема подключения триадного спектроскопического датчика AS7265x к плате Arduino представлена на следующем рисунке.
Подключите вывод 3,3 В датчика AS7265x к выводу 3,3 В Arduino, а GND датчика - к GND Arduino. Также подключите выводы Serial Data (SDA) и Serial Clock (SCL) датчика AS7265x к контактам A4 и A5 платы Arduino соответственно. Я использовал плату Arduino Nano для подключения датчика AS7265x. Вы можете использовать любую другую плату Arduino.
После завершения подключения оборудования вы можете приступить к программированию платы Arduino и узнать больше об интеллектуальном спектральном датчике AS7265x.
Библиотека Arduino AS7265x
Датчик AS7265x разработан компанией Sparkfun. Поэтому они написали библиотеку Arduino для чтения со спектрального датчика AS7265x. Самый простой способ установить библиотеку — выполнить поиск SparkFun Spectral Triad в менеджере библиотек Arduino.
Вы также можете скачать эту библиотеку с Github. Эта библиотека Arduino может быть использована для управления спектральными датчиками Sparkfun AS7265x , которые можно настроить через интерфейс I2C.
Исходный код 1: Базовое чтение всех 18 каналов
В этом примере все 18 показаний, от 372 нм до 966 нм , передаются по интерфейсу I2C и выводятся на последовательный порт.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
#include "SparkFun_AS7265X.h" AS7265X sensor; void setup() { Serial.begin(9600); Serial.println("AS7265x Spectral Triad Example"); if(sensor.begin() == false) { Serial.println("Sensor does not appear to be connected. Please check the wiring. Freezing..."); while(1); } Serial.println("A,B,C,D,E,F,G,H,I,J,K,L,R,S,T,U,V,W"); } void loop() { sensor.takeMeasurements(); //This is a hard wait while all 18 channels are measured Serial.print(sensor.getCalibratedA()); Serial.print(","); Serial.print(sensor.getCalibratedB()); Serial.print(","); Serial.print(sensor.getCalibratedC()); Serial.print(","); Serial.print(sensor.getCalibratedD()); Serial.print(","); Serial.print(sensor.getCalibratedE()); Serial.print(","); Serial.print(sensor.getCalibratedF()); Serial.print(","); Serial.print(sensor.getCalibratedG()); Serial.print(","); Serial.print(sensor.getCalibratedH()); Serial.print(","); Serial.print(sensor.getCalibratedI()); Serial.print(","); Serial.print(sensor.getCalibratedJ()); Serial.print(","); Serial.print(sensor.getCalibratedK()); Serial.print(","); Serial.print(sensor.getCalibratedL()); Serial.print(","); Serial.print(sensor.getCalibratedR()); Serial.print(","); Serial.print(sensor.getCalibratedS()); Serial.print(","); Serial.print(sensor.getCalibratedT()); Serial.print(","); Serial.print(sensor.getCalibratedU()); Serial.print(","); Serial.print(sensor.getCalibratedV()); Serial.print(","); Serial.print(sensor.getCalibratedW()); Serial.print(","); Serial.println(); } |
После загрузки кода откройте Serial Monitor (окно монитора последовательной связи). Датчик считает данные всех 18 каналов и быстро отобразит их в окне монитора последовательной связи.
Исходный код 2: Базовое считывание с помощью светодиодов
В этом примере считываются все 18 показаний и по мере их выполнения мигают светодиоды подсветки.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
#include "SparkFun_AS7265X.h" AS7265X sensor; #include <Wire.h> void setup() { Serial.begin(9600); Serial.println("AS7265x Spectral Triad Example"); Serial.println("Point the Triad away and press a key to begin with illumination..."); while(Serial.available() == false) {} //Do nothing while we wait for user to press a key Serial.read(); //Throw away the user's button if(sensor.begin() == false) { Serial.println("Sensor does not appear to be connected. Please check wiring. Freezing..."); while(1); } sensor.disableIndicator(); //Turn off the blue status LED Serial.println("A,B,C,D,E,F,G,H,I,J,K,L,R,S,T,U,V,W"); } void loop() { sensor.takeMeasurementsWithBulb(); //This is a hard wait while all 18 channels are measured Serial.print(sensor.getCalibratedA()); Serial.print(","); Serial.print(sensor.getCalibratedB()); Serial.print(","); Serial.print(sensor.getCalibratedC()); Serial.print(","); Serial.print(sensor.getCalibratedD()); Serial.print(","); Serial.print(sensor.getCalibratedE()); Serial.print(","); Serial.print(sensor.getCalibratedF()); Serial.print(","); Serial.print(sensor.getCalibratedG()); Serial.print(","); Serial.print(sensor.getCalibratedH()); Serial.print(","); Serial.print(sensor.getCalibratedI()); Serial.print(","); Serial.print(sensor.getCalibratedJ()); Serial.print(","); Serial.print(sensor.getCalibratedK()); Serial.print(","); Serial.print(sensor.getCalibratedL()); Serial.print(","); Serial.print(sensor.getCalibratedR()); Serial.print(","); Serial.print(sensor.getCalibratedS()); Serial.print(","); Serial.print(sensor.getCalibratedT()); Serial.print(","); Serial.print(sensor.getCalibratedU()); Serial.print(","); Serial.print(sensor.getCalibratedV()); Serial.print(","); Serial.print(sensor.getCalibratedW()); Serial.print(","); Serial.println(); } |
После загрузки кода отправьте любую команду, нажав клавишу из Serial Monitor. Светодиод начнет светиться и датчик считает все 18 значений. Мы рекомендуем вам держать датчик подальше от глаз, светодиоды слишком яркие.
Исходный код 3: Чтение необработанных значений
В этом примере показано как выводить необработанные значения датчиков. Это, вероятно, никогда не понадобится, поскольку калиброванные значения настраиваются на каждый датчик. Но это работает быстрее (2 байта на канал вместо 4).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
#include "SparkFun_AS7265X.h" //Click here to get the library: http://librarymanager/All#SparkFun_AS7265X AS7265X sensor; #include <Wire.h> void setup() { Serial.begin(9600); Serial.println("AS7265x Spectral Triad Example"); if(sensor.begin() == false) { Serial.println("Sensor does not appear to be connected. Please check the wiring. Freezing..."); while(1); } //Once the sensor is started we can increase the I2C speed Wire.setClock(400000); sensor.disableIndicator(); Serial.println("A,B,C,D,E,F,G,H,I,J,K,L,R,S,T,U,V,W"); } void loop() { sensor.takeMeasurementsWithBulb(); //This is a hard wait while all 18 channels are measured Serial.print(sensor.getA()); Serial.print(","); Serial.print(sensor.getB()); Serial.print(","); Serial.print(sensor.getC()); Serial.print(","); Serial.print(sensor.getD()); Serial.print(","); Serial.print(sensor.getE()); Serial.print(","); Serial.print(sensor.getF()); Serial.print(","); Serial.print(sensor.getG()); Serial.print(","); Serial.print(sensor.getH()); Serial.print(","); Serial.print(sensor.getI()); Serial.print(","); Serial.print(sensor.getJ()); Serial.print(","); Serial.print(sensor.getK()); Serial.print(","); Serial.print(sensor.getL()); Serial.print(","); Serial.print(sensor.getR()); Serial.print(","); Serial.print(sensor.getS()); Serial.print(","); Serial.print(sensor.getT()); Serial.print(","); Serial.print(sensor.getU()); Serial.print(","); Serial.print(sensor.getV()); Serial.print(","); Serial.print(sensor.getW()); Serial.print(","); Serial.println(); } |
Тестирование работы этого кода показано на следующем рисунке.
Исходный код 4: Считывание температуры микросхем
В этом примере показано, как считывать температуру микросхем.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#include "SparkFun_AS7265X.h" AS7265X sensor; #include <Wire.h> void setup() { Serial.begin(9600); Serial.println("AS7265x Spectral Triad Example"); if(sensor.begin() == false) { Serial.println("Sensor does not appear to be connected. Please check wiring. Freezing..."); while(1); } //Once the sensor is started we can increase the I2C speed Wire.setClock(400000); } void loop() { int oneSensorTemp = sensor.getTemperature(); //Returns the temperature of master IC Serial.print("Main IC temp: "); Serial.println(oneSensorTemp); float threeSensorTemp = sensor.getTemperatureAverage(); //Returns the average temperature of all three ICs Serial.print("Average IC temp: "); Serial.println(threeSensorTemp, 2); Serial.println(""); delay(3000); } |
Тестирование работы этого кода показано на следующем рисунке.
Это 4 примера, которые могут быть вам полезны для изучения основ триадного спектроскопического датчика AS7265x. Вы можете найти еще несколько примеров в его библиотеке.