О проекте
Материалы из ветки «Перевод и использование Arduino»: перевод состава двух наборов, назначение компонентов, подключения к UNO и ИК-передатчик на транзисторе. Количества взяты с фотографий комплектации, а не из предположений о любом наборе.
Это учебные эксперименты с отдельными модулями. Одни и те же пины повторяются в разных примерах: схемы не нужно соединять одновременно. Модель и распиновку конкретного модуля проверяют перед подачей питания.
Стартовый комплект UNO
Справочные фотографии типовых компонентов. Модель, корпус и распиновка вашей партии могут отличаться; подключение проверяйте по маркировке, не по фотографии.
| Название на фото | Количество | Для чего |
|---|---|---|
| UNO R3 CH340 | 1 | Плата для загрузки скетчей и управления входами/выходами. |
| Sound sensor | 1 | Датчик звука: хлопки и относительный уровень сигнала, не шумомер. |
| DHT11 | 1 | Температура и влажность воздуха. |
| Soil moisture | 1 | Резистивный датчик влажности почвы; нужна калибровка. |
| Water level | 1 | Проводящие дорожки определяют наличие/уровень воды. |
| 7-segment display | 1 | Одноразрядный индикатор цифр; проверить общий анод/катод. |
| 74HC595 | 1 | Сдвиговый регистр: восемь выходов с тремя управляющими линиями. |
| Active buzzer | 1 | Активный зуммер с собственным генератором. |
| Passive buzzer | 1 | Пассивный зуммер для мелодий и tone(). |
| Potentiometer | 2 | Регулируемый делитель напряжения для A0. |
| Breadboard 830 | 1 | Макетная плата без пайки; проверить разрывы шин питания. |
| Dupont M/F | 20 | Провода «папа–мама» для соединения модулей. |
| Dupont M/M | 20 | Провода «папа–папа» для макетной платы. |
| USB cable | 1 | Питание и загрузка программы; кабель должен передавать данные. |
| Push button | 5 | Кнопки ввода; удобно использовать INPUT_PULLUP. |
| Tilt switch | 1 | Механический датчик наклона. |
| Photoresistor | 2 | Фоторезистор для измерения относительной освещённости. |
| Thermistor | 2 | Терморезистор; для °C нужны характеристики конкретного NTC. |
| RGB LED | 1 | Три цвета в одном корпусе; три отдельных резистора. |
| LED | 25 | Обычные светодиоды; каждый с ограничением тока. |
| Resistors | 100 | Ограничение тока и делители; номинал проверить перед сборкой. |
37 модулей: назначение и пины
Справочные фотографии типовых компонентов. Модель, корпус и распиновка вашей партии могут отличаться; подключение проверяйте по маркировке, не по фотографии.
Для модулей, рассчитанных на 5 В: VCC/+ → 5V UNO, GND/− → GND UNO. Таблица указывает сигнальные соединения. Не угадывайте порядок трёх выводов по внешнему виду: он различается. AO — аналоговый выход, DO/OUT — цифровой выход, S — сигнал, IN — управляющий вход.
| № / имя на фото | Назначение | Сигнал UNO | Особенность | Скетч |
|---|---|---|---|---|
| 1. Joystick | Джойстик: две оси и кнопка | VRx → A0; VRy → A1; SW → D2 | Кнопка INPUT_PULLUP. | joystick |
| 2. Flame | Датчик ИК-излучения пламени | AO → A0 / DO → D2 | Не противопожарная сигнализация. | analog_input / digital_input |
| 3. RGB LED | Смешение трёх цветов | R → D9; G → D10; B → D11 | По 330 Ом на канал; общий анод требует инверсии. | rgb |
| 4. Heartbeat | Оптический эксперимент с пульсом | S → A0 | Не медицинский прибор; сырой сигнал не равен BPM. | analog_input |
| 5. Light Cup | Наклон и светодиод | S → D2; L → D9, если есть | Проверить отдельные выводы датчика и LED. | digital_input |
| 6. Hall magnetic | Обнаружение магнита | S/DO → D2 | Цифровой выход, полярность зависит от платы. | digital_input |
| 7. Relay | Коммутация низковольтной нагрузки | IN → D7 | Только готовый модуль с драйвером; без 230 В. | relay_safe |
| 8. Linear Hall | Аналоговый магнитный сигнал | AO/S → A0 | Без магнита часто около середины шкалы. | analog_input |
| 9. SMD RGB | RGB на плате | R → D9; G → D10; B → D11 | Проверить резисторы и общий вывод. | rgb |
| 10. 7 color flash | Автоматическая смена цветов | По маркировке питания | Не считать вход S логическим; проверить ток и резистор. | — |
| 11. Tilt switch | Наклон | S → D2 | Контактный датчик может дребезжать. | digital_input |
| 12. TEMP18B20 | Температура DS18B20 | DATA → D2 | Подтяжка 4,7 кОм к 5 В, если её нет на модуле. | ds18b20 |
| 13. Big sound | Микрофон и порог хлопка | AO → A0 / DO → D2 | Это не калиброванные децибелы. | analog_input / digital_input |
| 14. Touch | Датчик касания | S → D2 | Уровень покоя зависит от модели. | digital_input |
| 15. Two-color LED | Двухцветный светодиод | R → D9; G → D10 | Отдельный резистор каждого канала. | rgb, только R/G |
| 16. Laser emit | Лазерный излучатель | Питание через транзисторный ключ | Не подключать силовой вход к GPIO; не направлять в глаза. | — |
| 17. Ball switch | Шариковый датчик положения | S → D2 | Проверить контакт и дребезг. | digital_input |
| 18. Analog temp | NTC с аналоговым выходом | AO/S → A0 | Для °C нужны параметры и схема делителя. | analog_input |
| 19. Small sound | Компактный датчик звука | AO → A0 или DO → D2 | Не соединять AO и DO вместе. | analog_input / digital_input |
| 20. Digital temp | Порог температуры на компараторе | DO → D2 | Выход 0/1, не цифровое значение °C. | digital_input |
| 21. Small two-color | Малый двухцветный LED | R → D9; G → D10 | Проверить общий анод/катод и резисторы. | rgb, только R/G |
| 22. Button | Кнопка на модуле | S → D2 | Для голой кнопки: D2–кнопка–GND, INPUT_PULLUP. | button |
| 23. Photoresistor | Освещённость | AO/S → A0 | Сырой уровень, не люксы. | analog_input |
| 24. IR emission | ИК-передатчик | Управление → D3 | Для голого ИК-LED нужен резистор и транзисторный ключ. | ir_send_nec |
| 25. Tracking | Линия и отражение | OUT → D2 | Настроить порог на своей поверхности. | digital_input |
| 26. Active buzzer | Фиксированный звуковой сигнал | S → D8, для логического входа | Мощный/голый зуммер — через драйвер, не прямо GPIO. | active_buzzer |
| 27. Reed switch | Геркон, датчик магнита | S → D2 | Контактам нужна подтяжка; на модуле может быть. | digital_input |
| 28. Shock | Вибрация | S → D2 | Короткие импульсы могут пропускаться при опросе. | digital_input |
| 29. Temp & humidity | DHT11: температура и влажность | DATA → D2 | Опрос раз в 2 секунды; подтяжка DATA при необходимости. | dht11 |
| 30. IR receive | Приём команд пульта | OUT → D2 | Проверить напряжение и порядок выводов приёмника. | ir_receive |
| 31. Avoid | ИК-датчик препятствия | OUT → D2 | Отражение зависит от цвета, света и расстояния. | digital_input |
| 32. Passive buzzer | Тоны разной частоты | S → D8 | Проверить допустимый ток; tone() может конфликтовать с IR/PWM. | passive_buzzer |
| 33. Mini reed | Малый геркон | S → D2 | Состояние зависит от магнита. | digital_input |
| 34. Rotary encoder | Поворот и нажатие | CLK → D2; DT → D3; SW → D4 | Для устойчивого счёта нужен декодер с подавлением дребезга. | encoder_signals |
| 35. Analog Hall | Аналоговый датчик Холла | AO/S → A0 | Тип и чувствительность уточнить по маркировке. | analog_input |
| 36. Tap | Удар/стук | S → D2 | Отличать импульс от постоянного уровня. | digital_input |
| 37. Light blocking | Оптопрерыватель | OUT/S → D2 | Флажок перекрывает щель датчика. | digital_input |
Первый запуск UNO
- Начните с USB-питания, без внешнего блока и нагрузок. Подключите плату кабелем с передачей данных.
- В Arduino IDE выберите Arduino Uno и порт вашей платы. CH340 — USB–последовательный преобразователь; если порт не появился, проверьте кабель и драйвер производителя.
- Загрузите встроенный Blink, затем led_blink из архива. Для внешнего LED: D8 → 330 Ом → анод, катод → GND.
- Для примеров с Serial откройте монитор порта на 9600 бод. Вход A0 обычно даёт 0–1023; это ещё не градусы, проценты, люксы или BPM.
- Меняйте проводку при отключённом питании. Сначала проверьте один модуль, затем собирайте комбинацию с новым распределением пинов.
На входы и линию 5V нельзя подавать 12 В. Этот проект описывает UNO R3 на ATmega328P, не UNO R4 и не ESP32.
Базовые подключения
| Компонент | Подключение | Пример |
|---|---|---|
| Потенциометр | Крайние выводы → 5V и GND; средний движок → A0. | analog_input |
| Кнопка без модуля | D2 → кнопка → GND; режим INPUT_PULLUP. Нажатие даёт LOW. | button |
| Фоторезистор | 5V → LDR → узел A0 → 10 кОм → GND. | analog_input |
| Терморезистор NTC | 5V → NTC → узел A0 → 10 кОм → GND; °C только после определения R25/B. | analog_input |
| RGB, общий катод | Катод → GND; R/G/B через отдельные 330 Ом → D9/D10/D11. | rgb |
| RGB, общий анод | Анод → 5V; каналы через отдельные 330 Ом → D9/D10/D11; COMMON_ANODE=true. | rgb |
| Влажность почвы / вода | Выход аналогового модуля → A0, питание по маркировке; калибровать сухое/влажное состояние. | analog_input |
| 7-сегментный индикатор | Определить общий анод/катод и выводы a–g; отдельный резистор каждого сегмента. | Нет универсальной распиновки |
У макетной платы длинные шины питания могут быть разорваны посередине. Проверьте их мультиметром. Резистивные датчики воды/почвы корродируют при постоянном питании; включайте на время измерения и не используйте для питьевой воды или опасных жидкостей.
74HC595 и индикаторы
| Вывод 74HC595 | UNO |
|---|---|
| 16 VCC | 5V |
| 8 GND | GND |
| 14 SER / DS | D11 |
| 11 SRCLK / SH_CP | D12 |
| 12 RCLK / ST_CP | D8 |
| 10 SRCLR / MR | 5V |
| 13 OE | GND |
Между VCC и GND рядом с микросхемой поставьте 100 нФ. Для начального теста используйте один светодиод за раз: QA/QB/… → 1 кОм → анод LED, катод → GND. Скетч shift_register перемещает единственный включённый бит.
74HC595 не силовой драйвер. Соблюдайте ток каждого выхода и суммарный ток по паспорту микросхемы. Для яркого многосегментного дисплея нужен подходящий драйвер, а не уменьшение резисторов наугад. Распиновка 7-сегментного индикатора определяется по его маркировке.
Датчики и библиотеки
Установите через менеджер библиотек Arduino IDE: DHT sensor library by Adafruit и её зависимость Adafruit Unified Sensor; DallasTemperature и OneWire; IRremote для примеров ИК. Остальные примеры используют стандартное ядро Arduino.
- DHT11: VCC → 5V, GND → GND, DATA → D2. На голом датчике нужна подтяжка DATA согласно его документации; на модуле она часто уже есть. dht11 проверяет ошибку чтения и ждёт 2 секунды.
- DS18B20: VDD → 5V, GND → GND, DATA → D2, подтяжка DATA 4,7 кОм к 5V при её отсутствии. Не угадывайте выводы TO-92 или цвета проводов.
- Цифровой датчик температуры с компаратором не DS18B20: он выдаёт только состояние порога.
- Примеры tone(), PWM и IR запускаются отдельно. Перед объединением проверьте конфликты таймеров для UNO и установленной версии IRremote.
ИК-передатчик и кондиционер
ИК-приёмник: питание по паспорту, GND общий, OUT → D2. Скетч ir_receive показывает распознанные команды обычного пульта. Передатчик ir_send_nec выдаёт учебные данные NEC с D3; это не универсальная команда кондиционера.
Транзисторный ключ для отдельного ИК-светодиода
| Откуда | Куда |
|---|---|
| D3 UNO | Через 1 кОм → B (база) BC337 |
| B BC337 | Через 10 кОм → E (эмиттер) |
| E BC337 | GND UNO и минус питания |
| C BC337 | Катод ИК-светодиода |
| +5V | Через рассчитанный резистор R → анод ИК-светодиода |
BC337 и дополнительные резисторы не подтверждены в составе набора: их может понадобиться приобрести отдельно. Проверьте выводы B/C/E по паспорту именно своего транзистора. Не определяйте их только по плоской стороне корпуса.
R = (5 В − Vf светодиода − VCE транзистора) / выбранный ток. Например, при Vf=1,2 В, VCE≈0,2 В и токе 20 мА расчёт даёт 180 Ом. Это пример расчёта, не характеристика неизвестного LED: ток, импульсы и номинал обязательно сверяют с его паспортом. Резистор не убирать; для двух LED нужны отдельные ветви с резисторами. Дальность зависит от излучателя, направления, приёмника и тока и здесь не проверена.
Почему нельзя просто послать NEC на кондиционер
Многие кондиционеры передают полное состояние — температуру, режим, скорость и другие поля. Нужны точные марка/модель, поддерживаемый протокол либо корректно записанный сигнал, подходящая несущая и достаточная память. IRremoteESP8266 предназначена для ESP8266/ESP32, не для UNO. Для реального кондиционера сначала проверяют поддержку модели в библиотеке; готовой прошивки для неизвестной модели здесь нет. ИК-управление не требует вскрывать сетевую часть кондиционера.
15 примеров скетчей
В архиве 15 независимых скетчей. Открывайте файл .ino из одноимённой папки, выбирайте UNO. Не загружайте все примеры как вкладки одного скетча.
led_blink
Внешний LED с 330 Ом, D8.
const byte LED_PIN = 8;
void setup() { pinMode(LED_PIN, OUTPUT); }
void loop() {
digitalWrite(LED_PIN, HIGH); delay(500);
digitalWrite(LED_PIN, LOW); delay(500);
}
analog_input
A0: потенциометр, аналоговый выход или делитель.
void setup() { Serial.begin(9600); }
void loop() {
Serial.println(analogRead(A0));
delay(100);
}
digital_input
D2: цифровой выход готового модуля. Для сухого контакта нужна подтяжка.
void setup() {
Serial.begin(9600);
pinMode(2, INPUT); // Powered module output, not a floating contact.
}
void loop() {
Serial.println(digitalRead(2));
delay(50);
}
button
Кнопка D2–GND, внутренняя подтяжка.
void setup() { Serial.begin(9600); pinMode(2, INPUT_PULLUP); }
void loop() {
Serial.println(digitalRead(2) == LOW ? "PRESSED" : "RELEASED");
delay(50);
}
joystick
Оси A0/A1, кнопка D2.
void setup() { Serial.begin(9600); pinMode(2, INPUT_PULLUP); }
void loop() {
Serial.print(analogRead(A0)); Serial.print(' ');
Serial.print(analogRead(A1)); Serial.print(' ');
Serial.println(digitalRead(2)); delay(100);
}
rgb
Три отдельных резистора; вариант общего анода выбирается константой.
const bool COMMON_ANODE = false;
void channel(byte pin, byte value) {
analogWrite(pin, COMMON_ANODE ? 255 - value : value);
}
void setup() { pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); }
void loop() {
channel(9,255); channel(10,0); channel(11,0); delay(800);
channel(9,0); channel(10,255); channel(11,0); delay(800);
channel(9,0); channel(10,0); channel(11,255); delay(800);
}
active_buzzer
Только логический вход модуля с драйвером.
// For a module with a logic input and a driver only.
const byte BUZZER = 8;
const bool ACTIVE_LOW = false;
void setup() {
digitalWrite(BUZZER, ACTIVE_LOW ? HIGH : LOW);
pinMode(BUZZER, OUTPUT);
}
void loop() {
digitalWrite(BUZZER, ACTIVE_LOW ? LOW : HIGH); delay(100);
digitalWrite(BUZZER, ACTIVE_LOW ? HIGH : LOW); delay(1900);
}
passive_buzzer
Пассивный зуммер допустимого тока на D8.
void setup() { pinMode(8, OUTPUT); }
void loop() {
tone(8, 1000); delay(200);
noTone(8); delay(1800);
}
relay_safe
Модуль реле на D7 без нагрузки; пример оставляет его выключенным.
// No load connected. Confirm module polarity before power-up.
const byte RELAY_PIN = 7;
const bool ACTIVE_LOW = true;
void setup() {
digitalWrite(RELAY_PIN, ACTIVE_LOW ? HIGH : LOW);
pinMode(RELAY_PIN, OUTPUT);
}
void loop() {} // This example leaves the relay OFF, it does not switch a load.
encoder_signals
Сырые CLK/DT/SW, не готовый счётчик оборотов.
// Raw signals only, not a debounced rotation counter.
void setup() {
Serial.begin(9600);
pinMode(2, INPUT_PULLUP); pinMode(3, INPUT_PULLUP); pinMode(4, INPUT_PULLUP);
}
void loop() {
Serial.print(digitalRead(2)); Serial.print(' ');
Serial.print(digitalRead(3)); Serial.print(' ');
Serial.println(digitalRead(4)); delay(20);
}
shift_register
74HC595: только один LED за раз, по 1 кОм.
const byte DATA_PIN = 11, CLOCK_PIN = 12, LATCH_PIN = 8;
void setup() {
pinMode(DATA_PIN, OUTPUT); pinMode(CLOCK_PIN, OUTPUT); pinMode(LATCH_PIN, OUTPUT);
}
void loop() {
for (byte bit = 0; bit < 8; bit++) {
digitalWrite(LATCH_PIN, LOW);
shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, byte(1U << bit));
digitalWrite(LATCH_PIN, HIGH); delay(300);
}
}
dht11
DHT11 и Adafruit DHT/Unified Sensor.
#include <DHT.h>
DHT dht(2, DHT11);
void setup() { Serial.begin(9600); dht.begin(); }
void loop() {
delay(2000);
float humidity = dht.readHumidity(), temperature = dht.readTemperature();
if (isnan(humidity) || isnan(temperature)) { Serial.println("DHT read failed"); return; }
Serial.print(temperature); Serial.print(" C; ");
Serial.print(humidity); Serial.println(" %");
}
ds18b20
DS18B20 и OneWire/DallasTemperature.
#include <OneWire.h>
#include <DallasTemperature.h>
OneWire bus(2);
DallasTemperature sensors(&bus);
void setup() { Serial.begin(9600); sensors.begin(); }
void loop() {
sensors.requestTemperatures();
float value = sensors.getTempCByIndex(0);
if (value == DEVICE_DISCONNECTED_C) Serial.println("Sensor disconnected");
else { Serial.print(value); Serial.println(" C"); }
delay(1000);
}
ir_receive
IRremote, OUT приёмника D2.
#include <IRremote.hpp>
void setup() { Serial.begin(9600); IrReceiver.begin(2, DISABLE_LED_FEEDBACK); }
void loop() {
if (IrReceiver.decode()) {
IrReceiver.printIRResultShort(&Serial);
IrReceiver.resume();
}
}
ir_send_nec
IRremote, D3 через ключ; только учебная команда NEC.
#define IR_SEND_PIN 3
#include <IRremote.hpp>
void setup() { IrSender.begin(); }
void loop() {
IrSender.sendNEC(0x00, 0x45, 0); // Test data, NOT an arbitrary AC command.
delay(3000);
}
Ограничения и проверка
- Реле: только низковольтные учебные нагрузки. Не подключайте сеть 230 В к макетной плате. Голая катушка не подключается напрямую к пину.
- GPIO — сигнал управления, не источник питания двигателя, лазера или мощного зуммера. Для нагрузки нужен подходящий драйвер и общий GND.
- Лазер нельзя направлять в глаза, людей и зеркальные поверхности. Не включайте неизвестный модуль без проверки питания и тока.
- Flame и Heartbeat не заменяют сертифицированный пожарный/медицинский прибор.
- Датчики Холла могут считать импульсы, но вычисление RPM требует числа магнитов и периода измерения. Не закрепляйте незакреплённые/несбалансированные магниты на быстром вентиляторе.
- На фотографиях нет точной распиновки каждой платы. Пины, активный уровень, напряжение, номиналы и библиотеки проверяют для своей комплектации.
Материалы подготовлены по ветке; физическая проверка всех 37 модулей и управления кондиционером не заявляется. Подтверждение работы предыдущего стробоскопа к Arduino KIT не относится.
Источники
Основа: ветка «Перевод и использование Arduino» и две фотографии комплектации. Совместимость плат и библиотек сверена с документацией разработчиков 10 октября 2026 года.