Сообщество - TECHNO BROTHER
Добавить пост

TECHNO BROTHER

1 636 постов 12 517 подписчиков

Популярные теги в сообществе:

Генератор (AD9833) + частотомер (Arduino)

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

Генератор (AD9833) + частотомер (Arduino) Arduino, Электроника, Самоделки, Программирование, Длиннопост

AD9833 — генератор сигналов с низким энергопотреблением. Позволяет генерировать сигналы с частотой до 12.5 МГц синусоидальной, треугольной и прямоугольной формы. Управление осуществляется с использованием трехпроводного интерфейса SPI.

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

  • Цифровое программирование частоты и фазы.

  • Потребляемая мощность 12.65 мВт при напряжении 3 В.

  • Диапазон выходных частот от 0 МГц до 12.5 МГц.

  • Разрешение 28 бит (0.1 Гц при частоте опорного сигнала 25 МГц).

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

  • Напряжение питания от 2.3 В до 5.5 В.

  • Трехпроводной интерфейс SPI.

  • Расширенный температурный диапазон: от –40°C до +105°C.

  • Опция пониженного энергопотребления.

При генерации синусоидальных и треугольных импульсов амплитуда изменяется в диапазоне 38мВ…0,65В. При генерации импульсов прямоугольной формы на выходе присутствует сигнал уровня TTL.

Работа генератора контролируется при помощи 2-х кнопок и энкодера, при нажатии кнопки энкодера можно перебирать разряды и поворотом ручки энкодера можно установить число от 0 до 9 в каждом разряде. При изменении частоты генератора выход генератора отключается, после установки нужно частоты необходимо нажать кнопку «Генератор On/Off«, для изменения формы сигнала необходимо нажать кнопку «Форма сигн.». Так же при изменении формы сигнала выход генератора отключается.

Частотомер работает независимо от генератора и в управлении не нуждается.

Генератор в данном проекте ограничен максимальной частотой в 10 МГц, диапазон измерения частотомера от 0 до 6,5 МГц.

Генератор (AD9833) + частотомер (Arduino) Arduino, Электроника, Самоделки, Программирование, Длиннопост
  1. Показания частотомера

  2. Показания генератора

  3. Индикатор выходного сигнала генератора

  4. Форма сигнала

Генератор (AD9833) + частотомер (Arduino) Arduino, Электроника, Самоделки, Программирование, Длиннопост

Скетч http://rcl-radio.ru/?p=128106

Показать полностью 3

PT2258 — 6-и канальный регулятор громкости (2) (Arduino)

Ранее в http://rcl-radio.ru/?p=80541 рассматривался пример создания регулятора громкости на аудиопроцессоре PT2258 с использованием четырех разрядного семисегментного индикатора. На этой странице аналогичный проект, но в нем будет использован индикатор LCD2004 c модулем I2C.

ИМС PT2258 — шести канальный регулятор громкости с микроконтроллерным управлением. Управление PT2258 осуществляется при помощи шины I2C. Регулятор громкости обладает низким уровнем шума и малым коэффициентом нелинейных искажений. Регулировка громкости может быть как независимая для каждого канала, так и общая для всех каналов.

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

  • Напряжение питания от 5 до 10 В, 9 В — рекомендуемое

  • Ток потребления 8 мА

  • Входное сопротивление 30 кОм

  • Максимальное входное напряжение 2,8 Vrms

  • Разделение каналов 100 дБ

  • Коэффициент нелинейных искажений 0,005%

  • Диапазон регулировки громкости от -79 до 0 дБ

  • Шаг регулировки громкости 1 дБ

  • Режим MUTE

  • Отношение сигнал/шум 105 дБ

PT2258 — 6-и канальный регулятор громкости (2) (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Схема регулятора громкости достаточно проста, выводы 4 и 17 (CODE2 и CODE1) в зависимости от подключения к GND или VCC позволяют изменять адрес микросхемы при работе с I2C шиной, что дает возможность подключения других утс-в на шину I2С, у которых нет возможности изменить адрес:

  • CODE1 = GND, CODE2 = GND 80H

  • CODE1 = GND, CODE2 = VCC 84H

  • CODE1 = VCC, CODE2 = GND 88H

  • CODE1 = VCC, CODE2 = VCC 8CH

Библиотека PT2258  поддерживает адрес 0х88, если возникнет необходимость изменить адрес шины I2C, то потребуется корректировка адреса в библиотеке:

Файл — PT2258.h

PT2258 — 6-и канальный регулятор громкости (2) (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

В платформе Arduino адрес I2C 7 бит, поэтому вместо 0х88 (0B10001000), указывается 0х44 (0B1000100).

Регулятор громкости на PT2258 содержит следующие компоненты:

  • Плата Arduino Nano

  • Дисплей LCD2004 с модулем I2C

  • Часы реального времени DS3231

  • Энкодер KY-040

  • Три тактовые кнопки

  • ИК-датчик VS1838B

Схема регулятора громкости

PT2258 — 6-и канальный регулятор громкости (2) (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Основные функциональные возможности регулятора громкости:

  • Основное меню:

    • Регулировка громкости 64 уровня (64 дБ), осуществляется при помощи энкодера и ИК пульта

    • Вывод даты и времени

PT2258 — 6-и канальный регулятор громкости (2) (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост
  • Второе меню (для перехода в меню нажать кнопку SET, нажимая на кнопку энкодера можно перебирать пункты меню)

    • По канальная регулировка аттенюаторов выходов в диапазоне от 0 до 15 дБ

    • Регулировка яркости подсветки дисплея в обычном режиме и в режиме STANDBY

PT2258 — 6-и канальный регулятор громкости (2) (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост
  • Меню коррекции времени

    • Режим установки-корректировки времени:
      Нажать и удерживать кнопку энкодера, далее нажать кнопку SET, после появится меню корректировки времени, параметры перебираются кнопкой энкодера, ручка энкодера меняет выбранный параметр.

PT2258 — 6-и канальный регулятор громкости (2) (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост
  • Режим MUTE, активируется при помощи кнопки MUTE или ИК пульта

PT2258 — 6-и канальный регулятор громкости (2) (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост
  • Режим STANDBY, активируется при помощи кнопки или ИК пульта

PT2258 — 6-и канальный регулятор громкости (2) (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Так как предусмотрена управляемая яркость подсветки дисплея, то можно установить яркость подсветки в основном  режиме и в режиме STANDBY (как правило с пониженной яркостью подсветки), регулировка яркости подсветки осуществляется в меню №2.

Подсветка — убрать перемычку с модуля I2C PCF8574 и подключить вывод модуля к цифровому выходу Arduino D6. Перед подключением замерить ток подсветки который не должен превышать 20 мА (у моего модуля ток не более 15 мА, замер производить между контактами перемычки).

PT2258 — 6-и канальный регулятор громкости (2) (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Максимальный выходной ток одного выхода Arduino Nano не должен превышать 40 мА.

ИК пульт дублирует работу энкодера и кнопок. Для управления регулятором подойдет практически любой пульт ИК, для поддержки Вашего пульта необходимо прописать коды кнопок в скетч:

#define POWER 0x33B800FF

#define VOLUME_UP 0x33B8E01F

#define VOLUME_DW 0x33B810EF

#define MUT 0x33B8946B

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

PT2258 — 6-и канальный регулятор громкости (2) (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Скетч - http://rcl-radio.ru/?p=128120

Показать полностью 10

Регулятор громкости и тембра на LC75421M (Arduino)

Ранее в http://rcl-radio.ru/?p=128799 был показан пример тестового запуска аудиопроцессора LC75421M, на этой странице будет показан пример практического применения аудиопроцессора в качестве регулятора громкости и тембра.

Регулятор громкости и тембра на LC75421M содержит следующие компоненты:

  • Аудиопроцессор LC75421M

  • Плата Arduino Nano (Atmega328)

  • Энкодер KY-040 (модуль)

  • Три тактовые кнопки

  • Модуль часов реального времени DS3231

  • ИК-датчик VS1838B

  • Пульт ДУ (NEC)

  • Дисплей LCD1602 с модулем I2C

Регулятор громкости и тембра на LC75421M обладает следующими характеристиками:

  • Регулировка громкости от -76 до 0 дБ (шаг 1 дБ)

  • Регулировка баланса ±4 дБ

  • Регулировка BASS от 0 до 14 шагов (±11.9 дБ)

  • Регулировка TREBLE от 0 до 14 шагов (±11.9 дБ)

  • Регулировка SUPER BASS от 0 до 10 шагов (0…+20 дБ)

  • 5-и канальный селектор входов с независимой регулировкой предусилителя от 0 до 18,75 дБ

  • Режим MUTE

  • Режим STANDBY

  • Часы с коррекцией времени

  • Напряжение питания от 7,5 до 10 В

  • Изменение яркости подсветки

Основное управление параметрами аудиопроцессора будет осуществляться при помощи энкодера (KY-040) и 3-х кнопок, так же будет применен ИК пульт который будет дублировать энкодер и кнопки управления. Вся информация будет выводится на дисплей LCD1602 + I2C (I2C модуль на базе микросхем PCF8574 позволяют подключить символьный дисплей 1602 к плате Arduino всего по двум проводам SDA и SCL (А4 и А5), что дает возможность не использовать цифровые выходы Arduino при подключении дисплея.)

Громкость

Регулятор громкости и тембра на LC75421M (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

BASS

Регулятор громкости и тембра на LC75421M (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

SUPER BASS

Регулятор громкости и тембра на LC75421M (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

TREBLE

Регулятор громкости и тембра на LC75421M (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Баланс

Регулятор громкости и тембра на LC75421M (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Часы (работаю в режиме STANDBY)

Регулятор громкости и тембра на LC75421M (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Коррекция времени часов: в режиме STANDBY нажать и удерживать кнопку энкодера, далее нажать кнопки INPUT,  MUTE для изменения времени часов, минут.

Так же предусмотрено изменение яркости дисплея в режиме STANDBY: выход D6 Arduino подключить к пину управления подсветки:

Регулятор громкости и тембра на LC75421M (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Подсветка — убрать перемычку с модуля I2C PCF8574 и подключить вывод модуля к цифровому выходу Arduino D6. Перед подключением замерить ток подсветки который не должен превышать 20 мА (у моего модуля ток не более 15 мА, замер производить между контактами перемычки).

Максимальный выходной ток одного выхода Arduino Nano не должен превышать 40 мА.

Яркость подсветки можно настроить через скетч:

#define BRIG_L 50

#define BRIG_H 250

  • BRIG_L — яркость в режиме STANDBY (0-250)

  • BRIG_H — яркость в рабочем режиме (0-250)

Схема подключения аудиопроцессора

Схема блока управления

Регулятор громкости и тембра на LC75421M (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

ИК пульт дублирует работу энкодера и кнопок. Для управления регулятором подойдет практически любой пульт ИК, для поддержки Вашего пульта необходимо прописать коды кнопок в скетч:

#define IR_2 0x2FDB24D // Кнопка menu

#define IR_4 0x2FD906F // Кнопка >

#define IR_5 0x2FDF20D // Кнопка <

#define IR_6 0x2FD6A95 // Кнопка IN

#define IR_7 0x2FDF00F // Кнопка MUTE

#define IR_8 0x2FD00FF // Кнопка STANDBY (POWER)

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

Регулятор громкости и тембра на LC75421M (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Скетч:

Показать полностью 9

Регулятор громкости и тембра на LC75421M + 0.96 I2C 128X64 OLED (Arduino)

Ранее в статье рассматривался пример создания на основе аудиопроцессора LC75421M регулятора громкости и тембра с использованием дисплея LCD1602 + I2C, в этой статье аналогичный пример, но с использованием дисплея 0.96′ I2C 128X64 OLED.

Регулятор громкости и тембра на LC75421M + 0.96 I2C 128X64 OLED (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

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

Управление OLED дисплеем в данном примере осуществляется при помощи шины I2C.

Параметры дисплея SSD1306:

  • Технология дисплея: OLED

  • Разрешение дисплея: 128 на 64 точки

  • Диагональ дисплея: 0,96 дюйма

  • Угол обзора: 160°

  • Напряжение питания: 2.8 В ~ 5.5 В

  • Мощность: 0,08 Вт

  • Габариты: 27.3 мм х 27.8 мм х 3.7 мм

Регулятор громкости и тембра на LC75421M + 0.96 I2C 128X64 OLED (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Регулятор громкости содержит два основных блока, первый блок микроконтроллерный (Arduino Nano) с органами управления и индикации, второй блок плата аудиопроцессора.

Регулятор громкости и тембра на LC75421M обладает следующими характеристиками:

  • Регулировка громкости от -76 до 0 дБ (шаг 1 дБ)

  • Регулировка баланса ±4 дБ

  • Регулировка BASS от 0 до 14 шагов (±11.9 дБ)

  • Регулировка TREBLE от 0 до 14 шагов (±11.9 дБ)

  • Регулировка SUPER BASS от 0 до 10 шагов (0…+20 дБ)

  • 5-и канальный селектор входов с независимой регулировкой предусилителя от 0 до 18,75 дБ

  • Режим MUTE

  • Режим STANDBY

  • Часы с коррекцией времени

  • Напряжение питания от 7,5 до 10 В

Основное управление параметрами аудиопроцессора будет осуществляться при помощи энкодера (KY-040) и 3-х кнопок, так же будет применен ИК пульт который будет дублировать энкодер и кнопки управления.

Коррекция времени часов: в режиме STANDBY нажать и удерживать кнопку энкодера, далее нажать кнопки INPUT,  MUTE для изменения времени часов, минут.

Схема подключения аудиопроцессора

Регулятор громкости и тембра на LC75421M + 0.96 I2C 128X64 OLED (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Схема блока управления

Регулятор громкости и тембра на LC75421M + 0.96 I2C 128X64 OLED (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

ИК пульт дублирует работу энкодера и кнопок. Для управления регулятором подойдет практически любой пульт ИК, для поддержки Вашего пульта необходимо прописать коды кнопок в скетч:

#define IR_2 0x2FDB24D // Кнопка menu

#define IR_4 0x2FD906F // Кнопка >

#define IR_5 0x2FDF20D // Кнопка <

#define IR_6 0x2FD6A95 // Кнопка IN

#define IR_7 0x2FDF00F // Кнопка MUTE

#define IR_8 0x2FD00FF // Кнопка STANDBY (POWER)

Для получения кодов кнопок Вашего пульта загрузите скетч:

#include <boarddefs.h> // входит в состав библиотеки IRremote
#include <IRremote.h> // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip

IRrecv irrecv(12); // указываем вывод модуля IR приемника
decode_results ir;

void setup(){
irrecv.enableIRIn();
Serial.begin(9600);
}

void loop(){
if ( irrecv.decode( &ir )) {Serial.print(«0x»);Serial.println( ir.value,HEX);irrecv.resume();}
}

Далее откройте монитор порта, в котором при нажатии кнопки пульта Вы увидите коды кнопок.

Регулятор громкости и тембра на LC75421M + 0.96 I2C 128X64 OLED (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Скетч - http://rcl-radio.ru/?p=128826

Показать полностью 4

Радио модули NRF24L01 (ARDUINO)

Радио модули NFR24L01 работают в диапазоне частот 2.4-2.5 ГГц, поддерживают передачу данных до 2 Мбит/с и могут работать на 125 каналах. Радио модули выпускаются малой мощности (до 100 метров или около 30 метров в помещении) и с усилителем к которому можно подключить внешнюю антенну (до 1000 м).

Один модуль способен поддерживать связь сразу с шестью приемниками или передатчиками, то есть можно объединить сразу семь устройств в общую радиосеть на частоте 2,4 ГГц. Скорость беспроводного соединения можно настраивать: 250kbps, 1Mbps или 2Mbps, а так же можно изменять мощность в пережиме передатчика от -18dBm до 0dBm.

Радио модули NRF24L01 (ARDUINO) Arduino, Электроника, Самоделки, Программирование, Длиннопост

Основные параметры радио модуля NRF24L01

  • Напряжение питания от 1.9 В до 3.6 В

  • Потребляемый ток при мощности 0dBm 11.3 мА

  • Потребляемый ток при передачи 2 Мбит 13.5 мА

  • Частота 2,4 – 2,525 ГГц

  • Скорость передачи: 250 Кбит, 1 Мбит или 2Mбит

  • Программируемая выходная мощность: 0, -6, -12 и -18 dBm

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

Радио модули NRF24L01 (ARDUINO) Arduino, Электроника, Самоделки, Программирование, Длиннопост

При передачи сигнала радио модуль NRF24L01 кратковременно может потреблять большой ток, поэтому рекомендуется по питанию установить электролитический конденсатор емкость от 10 до 220 мкФ.

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

Перед загрузкой скетчей Вам понадобятся следующие библиотеки:

Тестовый скетч

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

ПЕРЕДАТЧИК

#include <SPI.h>

#include <nRF24L01.h>

#include <RF24.h>

RF24 radio(9, 10); // (CE, CSN)

int data[2]; 

void setup(){

radio.begin();

radio.setChannel(5); // канал от 0 до 125

radio.setDataRate (RF24_1MBPS); // RF24_250KBPS, RF24_1MBPS, RF24_2MBPS

radio.setPALevel (RF24_PA_HIGH); // RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm

radio.openWritingPipe (0xA0A0A0A001);

}

void loop(){

data[0] = 1234;

data[1] = 5678;

radio.write(&data, sizeof(data));

delay(1000);

}

ПРИЕМНИК

#include <SPI.h>

#include <nRF24L01.h>

#include <RF24.h>

RF24 radio(9, 10); // (CE, CSN) 

int data[2]; 

void setup(){

delay(1000);

Serial.begin(9600);

radio.begin();

radio.setChannel(5); // канал от 0 до 125 radio.setDataRate (RF24_1MBPS); // RF24_250KBPS, RF24_1MBPS, RF24_2MBPS

radio.setPALevel (RF24_PA_HIGH); // RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm r

adio.openReadingPipe (1, 0xA0A0A0A001);

radio.startListening (); // radio.stopListening ();

}

void loop(){

if(radio.available()){

radio.read(&data, sizeof(data));

Serial.println(data[0]);

Serial.println(data[1]);

} }

Радио модули NRF24L01 (ARDUINO) Arduino, Электроника, Самоделки, Программирование, Длиннопост

Управление 4-я реле

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

Радио модули NRF24L01 (ARDUINO) Arduino, Электроника, Самоделки, Программирование, Длиннопост

ПЕРЕДАТЧИК

#include <SPI.h>

#include <nRF24L01.h>

#include <RF24.h>

RF24 radio(9, 10); // (CE, CSN) 

int data_reg;

bool w1,w2,w3,w4; 

void setup(){

delay(1000);

Serial.begin(9600);

radio.begin();

radio.setChannel(5); // канал от 0 до 125

radio.setDataRate(RF24_250KBPS); // RF24_250KBPS, RF24_1MBPS, RF24_2MBPS

radio.setPALevel(RF24_PA_MIN); // RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm

radio.openWritingPipe(0xA1A1A1A102);

pinMode(2,INPUT_PULLUP);

pinMode(3,INPUT_PULLUP);

pinMode(4,INPUT_PULLUP);

pinMode(5,INPUT_PULLUP);

}


void loop(){

if(digitalRead(2)==LOW && w1==0){

w1=1;

data_reg |= (1<<0);

delay(200);

}

if(digitalRead(2)==LOW && w1==1){

w1=0;

data_reg &=~(1<<0);

delay(200);

if(digitalRead(3)==LOW && w2==0){

w2=1;

data_reg |= (1<<1);

delay(200);

}

if(digitalRead(3)==LOW && w2==1){

w2=0;

data_reg &=~(1<<1);

delay(200);

if(digitalRead(4)==LOW && w3==0){

w3=1;

data_reg |= (1<<2);

delay(200);

}

if(digitalRead(4)==LOW && w3==1){

w3=0;

data_reg &=~(1<<2);

delay(200);

if(digitalRead(5)==LOW && w4==0){

w4=1;

data_reg |= (1<<3);

delay(200);

}

if(digitalRead(5)==LOW && w4==1){

w4=0;

data_reg &=~(1<<3);

delay(200);

radio.write(&data_reg, sizeof(data_reg));

Serial.println(data_reg);

delay(100);

}

ПРИЕМНИК

#include <SPI.h>

#include <nRF24L01.h>

#include <RF24.h>

RF24 radio(9, 10); // (CE, CSN) 

int data_old,data;

unsigned long times; 

void setup(){

delay(1000);

Serial.begin(9600);

pinMode(2,OUTPUT);

pinMode(3,OUTPUT);

pinMode(4,OUTPUT);

pinMode(5,OUTPUT);

radio.begin();

radio.setChannel(5); // канал от 0 до 125 radio.setDataRate(RF24_250KBPS); // RF24_250KBPS, RF24_1MBPS, RF24_2MBPS

radio.setPALevel(RF24_PA_MIN); // RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm

radio.openReadingPipe(1, 0xA1A1A1A102);

radio.startListening();

}

void loop(){

if(radio.available()){

radio.read(&data, sizeof(data));

Serial.println(data); 

if(((data >> 0) & 1) ==1){

digitalWrite(2,HIGH);

}

else{digitalWrite(2,LOW);

}

if(((data >> 1) & 1) ==1){

digitalWrite(3,HIGH);

}

else{digitalWrite(3,LOW);

}

if(((data >> 2) & 1) ==1){

digitalWrite(4,HIGH);

}

else{digitalWrite(4,LOW);

}

if(((data >> 3) & 1) ==1){

digitalWrite(5,HIGH);

}

else{

digitalWrite(5,LOW);

} } }

Примеры использования

Электронный термометр DS18B20

В следующем примере к передатчику подключен цифровой датчик температуры DS18B20, передатчик передает температуру, а приемник выводит ее на дисплей LCD1602_I2C. В момент получения информации на экран выводится символ «*».

Радио модули NRF24L01 (ARDUINO) Arduino, Электроника, Самоделки, Программирование, Длиннопост
Радио модули NRF24L01 (ARDUINO) Arduino, Электроника, Самоделки, Программирование, Длиннопост

Терморегулятор

Радио модули NRF24L01 (ARDUINO) Arduino, Электроника, Самоделки, Программирование, Длиннопост

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

Базовый модуль терморегулятора содержит дисплей LCD1602 с модулем I2C и энкодер для установки температуры регулирования. Модуль датчика и управления нагревательным элементом измеряет температуру и каждые 2 секунды передает ее значение в базовый модуль, базовый модуль получает значение температуры и выводит ее на дисплей, при помощи энкодера в базовом модуле можно изменить температуру регулирования, температура регулирования каждые 2 секунды передается в модуль датчика. Оба модуля основное время работают как приемники и раз в 2 секунды переходят в режим передатчика передавая необходимую информацию. Модуль датчика в зависимости от текущей температуры и температуры регулирования управляет цифровым выходом D3 к который может управлять нагревательным элементом.

Радио модули NRF24L01 (ARDUINO) Arduino, Электроника, Самоделки, Программирование, Длиннопост
  • Температура регулирования

  • Индикатор получения информации (в момент приема выводится символ *)

    Скетчи - http://rcl-radio.ru/?p=128866

Показать полностью 7

Аудиопроцессор PT2315 (Arduino)

ИМС PT2315 (аналог TDA7315) представляет собой простой стерео аудиопроцессор, который позволяет регулировать громкость и тембр.

Аудиопроцессор PT2315 (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Основные параметры аудиопроцессора PT2315:

  • Напряжение питания от 6 до 10 В

  • Ток потребления от 30 до мА

  • Максимальное входное напряжение 2,5 Vrms

  • Коэффициент гармоник 0,07 %

  • Разделение каналов 85 дБ

  • Отношение сигнал/шум 95 дБ

  • Регулировка громкости от -70 до 0 дБ с шагом регулировки 1,25 дБ

  • Регулировка тембра (BASS, TREBLE) ±14 дБ с шагом регулировки 2 дБ

  • Аттенюаторы выходов (CHL, CHR) от 0 до 30 дБ с шагом регулировки 1,25 дБ

  • Управление I2C

Библиотека — https://github.com/liman324/PT2315.git

Тестовый скетч:

#include <Wire.h>

#include <PT2315.h> 

PT2315 pt; 

void setup() {

Serial.begin(9600);

delay(600);

audio();

void loop() {  }

void audio(){

pt.set_volume(0); // int 0...56 === 0...-70 dB step 1.25 dB

pt.set_att_l(0); // int 0...24 === 0...-30 db step 1.25 dB

pt.set_att_r(0); // int 0...24 === 0...-30 db step 1.25 dB

pt.set_loudness(1); // bool 0...1 = on...off

pt.setBass(0); // int -7...+7 === -14...+14 dB step 2 dB

pt.setTreble(7); // // int -7...+7 === -14...+14 dB step 2 dB

}

На базе Adruino Nano используя аудиопроцессор PT2315 можно собрать простой регулятор громкости и тембра.

Аудиопроцессор PT2315 (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Регулятор громкости позволяет регулировать громкость, тембр НЧ, тембр ВЧ и баланс, так же поддерживает функцию MUTE.

Аудиопроцессор PT2315 (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост
Аудиопроцессор PT2315 (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

ИК пульт дублирует работу энкодера и кнопу MUTE. Для управления регулятором подойдет практически любой пульт ИК, для поддержки Вашего пульта необходимо прописать коды кнопок в скетч:

#define IR2 0x2FDB24D // button encoder

#define IR3 0x2FDF00F // mute

#define IR4 0x2FD906F // >>>

#define IR5 0x2FDF20D // <<<

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

Аудиопроцессор PT2315 (Arduino) Arduino, Электроника, Программирование, Самоделки, Аудиотехника, Длиннопост

Скетч http://rcl-radio.ru/?p=128899

Показать полностью 5

АЦП AD7793 (Arduino)

AD7793 — малошумящий 24-разрядный сигма-дельта АЦП с тремя дифференциальными аналоговыми входами.

АЦП AD7793 (Arduino) Arduino, Электроника, Самоделки, Программирование, Длиннопост

АЦП AD7793 предназначен для высокоточного измерения постоянного напряжения, может применяться для измерения напряжения термопар и других датчиков с выходным напряжением в несколько единиц или десятков мВ. Так имеет два выхода стабилизированного тока для питания термометров сопротивления.

Входное напряжение АЦП ограничено напряжением опорного источника питания которое может иметь значения 1,25 или 2,5 В. В данной статье рассмотрен пример использования внутреннего источника опорного  напряжения которое имеет значение 1,17 В.

АЦП имеет три дифференциальных входа, вход IN3 может использоваться как вход для подачи внешнего опорного напряжения. Входы АЦП могут работать в дифференциальном и несимметричном режиме.

Схема подключения к Arduino

АЦП AD7793 (Arduino) Arduino, Электроника, Самоделки, Программирование, Длиннопост

Характеристики AD7793:

  • Напряжение питания цифровое от 2,7 до 5,25 В

  • Напряжение питания аналоговое от 2,7 до 5,25 В

  • Эффективное разрешение до 23 бит

  • Ток потребления 400 мкА

  • Ток потребления в режиме ожидания не более 1 мкА

  • Частота измерения от 4,17 Гц до 500 Гц

  • 3 дифференциальных входа

  • Внутренний источник опорного напряжения 1.17 ± 0.01%

  • Режим измерения напряжения аналогового питания

  • Встроенный датчик температуры (точность ±2°С, необходима калибровка)

  • Самокалибровка шкалы измерения и нуля

  • Два источника тока для питания датчиков

  • Встроенный программируемый усилитель входного сигнала с множителем от 1 до 128

Разрешение в зависимости от множителя входного усилителя (bit) и режима работы входа (Uref = 2.5 V)

несимметричный (дифференциальный) вход

АЦП AD7793 (Arduino) Arduino, Электроника, Самоделки, Программирование, Длиннопост

Разрешение в зависимости от множителя входного усилителя (мкВ) (Uref = 2.5 V)

АЦП AD7793 (Arduino) Arduino, Электроника, Самоделки, Программирование, Длиннопост

Управление АЦП 4-проводное SPI, используются пины CS, DOUT, DIN, SCLK. Режим работы шины SPI показаны на рисунках (чтение/запись)

АЦП AD7793 (Arduino) Arduino, Электроника, Самоделки, Программирование, Длиннопост
АЦП AD7793 (Arduino) Arduino, Электроника, Самоделки, Программирование, Длиннопост

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

При чтении после перевода сигнала разрешения работы CS в низкий уровень необходимо дождаться сигнала готовности АЦП, как только уровень DOUT/RDY станет низким, можно считывать данные. Считывание бита происходит на восходящем фронте синхроимпульса.

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

АЦП AD7793 (Arduino) Arduino, Электроника, Самоделки, Программирование, Длиннопост

Communications Register During a Write Operation — регистр связи (Write)

АЦП AD7793 (Arduino) Arduino, Электроника, Самоделки, Программирование, Длиннопост

При записи или чтении регистров сначала необходимо воспользоваться регистром связи. В нем задается адрес для чтения или записи последующего регистра.

Status Register During a Read Operation — регистр состояния (Read)

АЦП AD7793 (Arduino) Arduino, Электроника, Самоделки, Программирование, Длиннопост
  • RDY — бит готовности АЦП к считываю данных

  • ERR — ошибка считывания

  • 0/1 — тип чипа (AD7792/AD7793)

  • CH0…CH2 — индикатор активного входа

Mode Register — регистр режима (Raad/Write)

АЦП AD7793 (Arduino) Arduino, Электроника, Самоделки, Программирование, Длиннопост

16-и битный регистр содержит основные настройки работы АЦП

  • U/B — дифференциальный / несимметричный вход

  • G0…G2 — коэффициент усиления усилителя

  • BUF — буферизация

  • REFSEL — выбор внутреннего или внешнего источника опорного напряжения

Data Register — регистр данных (Read)

24-х битный регистр данных, доступен только для чтения

ID Register — Идентификационный регистр (Read)

Идентификационный номер для AD7792/AD7793 сохраняется в реестре идентификаторов.

IO Register — (Raad/Write)

АЦП AD7793 (Arduino) Arduino, Электроника, Самоделки, Программирование, Длиннопост

Регистр для управления источниками тока.

OFFSET Register — регистр смещения (Raad/Write)

24-х битный регистр, содержит коэффициент смещения шкалы.

FULL-SCALE Register — масштабный регистр (Raad/Write)

24-х битный регистр, содержит калибровочные коэффициенты шкалы.

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

Читать дальше - http://rcl-radio.ru/?p=128932

Показать полностью 10

Самая маленькая контролька на Arduino

Помогите добить до 50 подпискиков.

Отличная работа, все прочитано!