Превращение старого телефона в систему подсказок для «Поиска сокровищ» на Arduino Pro Mini
Компоненты и материалы
- SparkFun Arduino Pro Mini 328 (5V/16MHz) — 1 шт.
- MP3/WAV триггер (плеер на microSD) — 1 шт.
- Старый телефон с кнопочной панелью — 1 шт.
- Макетная плата, перемычки, провода, microSD-карта — по 1 шт.
Необходимые инструменты
- Паяльница, термоусадка, термопневматический пистолет (опционально)
О проекте
Проект превращает старый стационарный телефон в интерактивный терминал для квеста/поиска сокровищ. Игрок вводит 4-значный код на клавиатуре телефона — если код верен, в трубке звучит аудиоподсказка (голос + азбука Морзе). При нажатии клавиш воспроизводится звук набора номера.
Этапы реализации
1. Определение матрицы клавиатуры
Разберите телефон, извлеките клавиатуру. Мультиметром в режиме прозвонки определите строки и столбцы. Составьте матрицу соответствия пинов клавиатуры кнопкам и пинам Arduino. В проекте используется 4 строки × 3 столбца, 5 кнопок (цифры кода + * для подтверждения).
2. Пайка проводов к клавиатуре
Припаяйте удлинители к нужным пинам клавиатуры для подключения к макетной плате.
3. Подготовка аудиофайлов
Используйте Audacity. Сгенерируйте речь (например, через Natural Readers), азбуку Морзе (онлайн-генератор), звук нажатия клавиши. Объедините, отредактируйте длительность. Экспортируйте каждый трек в MP3 с именами 001.mp3, 002.mp3… и положите в папку 01 на microSD (требование плеера).
4. Библиотеки и код
Установите библиотеки Keypad и Password (с официального Playground Arduino). Загрузите скетч, задайте свой пароль (в примере «7365»), заполните матрицу клавиш согласно вашему раскладке.
5. Сборка
Разместите Arduino, MP3-плеер, батарею (power bank) внутри корпуса телефона. Подключите динамик телефона к выходу MP3-плеера. Выведите microSD-карту наружу для удобства.
Программный код (основные фрагменты)
#include <Password.h>
#include <Keypad.h>
Password password = Password("7365");
const byte ROWS = 4, COLS = 3;
char keys[ROWS][COLS] = {
{'4','5','6'},
{'7','8','A'}, // A — заглушка
{'B','2','3'}, // B — заглушка
{'*','C','D'} // C,D — заглушки
};
byte rowPins[ROWS] = {7,5,3,8};
byte colPins[COLS] = {6,4,2};
const int dial = 13; // пин -> MP3 триггер (beep)
const int morse = 12; // пин -> MP3 триггер (clue)
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup() {
pinMode(dial, OUTPUT); digitalWrite(dial, HIGH);
pinMode(morse, OUTPUT); digitalWrite(morse, HIGH);
Serial.begin(9600);
keypad.addEventListener(keypadEvent);
}
void loop() { keypad.getKey(); }
void keypadEvent(KeypadEvent eKey) {
if (keypad.getState() == PRESSED) {
digitalWrite(dial, LOW); delay(50); digitalWrite(dial, HIGH); // beep
switch (eKey) {
case '*': checkPassword(); break;
default: password.append(eKey);
}
}
}
void checkPassword() {
if (password.evaluate()) {
digitalWrite(morse, LOW); delay(50); digitalWrite(morse, HIGH); // play clue
password.reset();
} else {
password.reset();
}
}
Схема

Производственный процесс
- Игра «UFO Attack» на Arduino UNO и матрице MAX7219 — Собираем аркаду с джойстиком Atari
- DIY-костюм «Облако»: LED-лента, Arduino Nano и детали SparkFun
- 3D RGB Arduclock — Bluetooth-часы на адресных LED с RTC
- Мониторинг состояния реки: Arduino-система контроля качества воды
- Строим Iron Man на Arduino: компоненты, сенсоры и пошаговый гайд
- Интерактивная игра с джойстиком и LED-обратной связью на Arduino
- Find Me: Умный поисковик вещей на Arduino и Bluetooth
- DIY-контроллер увлажнителя на Arduino с реле: безопасная работа с высоким напряжением
- Маленький ровер на Arduino: собираем автономного робота своими руками
- Своё рулевое управление (джойстик) для игр на Arduino