Giftduino: идеальный набор Arduino для подарков — проект для хоббистов и педагогов
Компоненты и материалы
- Arduino UNO — 1 шт.
- Датчик Холла A1302 — 1 шт.
- Пьезо-динамик 12 мм (2.048 кГц) — 1 шт.
- Графический LCD Nokia 5110 (84×48) — 1 шт.
- Магнит (неодимовый, небольшой) — 1 шт.
- Макетная плата и провода
- Корпус: 3D-печать (STL-файлы) или ПВХ-картон, дерево, стекло — на ваш вкус
Приложения и сервисы
- circuito.io — автоматическая генерация схемы подключения и тестового кода
- Arduino IDE — загрузка прошивки
О проекте
Giftduino — это «волшебная» коробка-подарок, которая оживает при открывании. Секрет кроется в датчике Холла, реагирующем на изменение магнитного поля. Магнит крепится на крышку коробка: когда крышка открывается, датчик срабатывает, запуская анимацию на дисплее Nokia 5110 и мелодию на пьезо-динамике.
Электроника: новые компоненты на circuito.io
Проект использует два относительно новых компонента в библиотеке circuito.io: датчик Холла и графический LCD Nokia 5110. Датчик Холла выдает сигнал при изменении магнитного поля — именно это происходит, когда магнит на крышке удаляется от датчика в корпусе.
Шаг 1: Сборка компонентов
Перейдите по «магической ссылке» circuito.io (указана в проекте), компоненты уже предварительно выбраны. Нажмите Generate — вы получите полный список деталей (включая резисторы, конденсаторы) и пошаговую инструкцию по сборке.
С circuito.io можно легко заменить компоненты:
- Пьезо-динамик → светодиод
- Датчик Холла → ультразвуковой дальномер
- Сетевой адаптер → батарея 9V (для автономности)
- Nokia 5110 → символьный LCD 16×2
Шаг 2: Проведение проводов
После генерации на circuito.io прокрутите вниз до раздела «Wiring». Пошаговый гид показывает, как соединить всё на макетной плате. Выглядит сложно, но если следовать инструкции по шагам — всё просто.
Шаг 3: Программный код
- Скачайте код с circuito.io (раздел Code) и распакуйте.
- Откройте в Arduino IDE и загрузите в Arduino — это тестовый скетч для проверки проводки.
- Затем замените содержимое вкладки
firmware.inoна финальный код из этого руководства (см. ниже). - В коде есть комментарии: можно изменить мелодию, пиксельную анимацию, порог срабатывания.
- Загрузите обновленный скетч.
Шаг 4: Изготовление коробка
Корпус в оригинале — комбинация 3D-печатных деталей и ПВХ-картона. Но вы можете использовать любые материалы: дерево, стекло, акрил, сделать любую форму и размер. STL-файлы для 3D-печати есть в разделе «Custom parts».
Шаг 5: Финальная сборка
- Установите Arduino с шилдом внутрь коробка.
- Приклейте магнит на внутреннюю сторону крышки напротив датчика Холла.
- Прокладьте гибкую стальную нить между крышкой и корпусом (чтобы крышка не отваливалась).
Результат
Получается уникальный интерактивный подарок. Поделитесь фото/видео на странице проекта или в Facebook!
Финальный скетч (вставляется в firmware.ino):
#include "Arduino.h"
#include "HallA1302.h"
#include "AnalogReader.h"
#include "Adafruit_GFX.h"
#include "Adafruit_PCD8544.h"
#include "TimerFreeTone.h"
#include "Speaker.h"
#define HALLA_PIN_VOUT A3
#define NOKIALCD_PIN_DC 4
#define NOKIALCD_PIN_CS 2
#define NOKIALCD_PIN_RST 3
#define PIEZOSPEAKER_PIN_SIG 5
#define LCD_CONTRAST 70
#define LCD_SIZE_COL 84
#define LCD_SIZE_ROW 48
unsigned int piezoSpeakerHoorayLength = 6;
unsigned int piezoSpeakerHoorayMelody[] = {NOTE_C4, NOTE_E4, NOTE_G4, NOTE_C5, NOTE_G4, NOTE_C5};
unsigned int piezoSpeakerHoorayNoteDurations[] = {8, 8, 8, 4, 8, 4};
HallA1302 hallA(HALLA_PIN_VOUT);
Adafruit_PCD8544 nokiaLcd(NOKIALCD_PIN_DC, NOKIALCD_PIN_CS, NOKIALCD_PIN_RST);
Speaker piezoSpeaker(PIEZOSPEAKER_PIN_SIG);
void setup() {
Serial.begin(9600);
Serial.println("start");
nokiaLcd.begin(LCD_SIZE_COL, LCD_SIZE_ROW);
nokiaLcd.setContrast(LCD_CONTRAST);
}
void loop() {
int hallAVal = hallA.read();
Serial.println(hallAVal);
// Коробка открыта, если магнит убран (значение отклонилось от 512)
if (abs(hallAVal - 512) < 50) {
delay(500);
nokiaLcd.clearDisplay();
nokiaLcd.setRotation(2);
nokiaLcd.setTextColor(BLACK);
nokiaLcd.setTextSize(1);
nokiaLcd.print(" Surprise !");
nokiaLcd.setTextSize(2);
// Рисуем смайлик примитивами
nokiaLcd.drawCircle(37, 15, 3, BLACK); // левый глаз
nokiaLcd.drawCircle(41, 15, 3, BLACK); // правый глаз
nokiaLcd.drawRect(25, 22, 30, 20, BLACK); // рот
nokiaLcd.drawRect(22, 18, 36, 5, BLACK); // волосы/брови
nokiaLcd.drawRect(37, 22, 5, 20, BLACK); // нос
nokiaLcd.display();
piezoSpeaker.playMelody(piezoSpeakerHoorayLength, piezoSpeakerHoorayMelody, piezoSpeakerHoorayNoteDurations);
delay(10000); // 10 секунд шоу
}
}
Производственный процесс
- Понимание кожного эффекта: влияние на проводники переменного тока и применение в РЧ
- Создание аудио-эффектов, управляемых датчиками, с набором Satellite CCRMA
- Высокоскоростная фотография капель воды на Arduino Nano — DIY-триггер для вспышки
- Компактная метеостанция: Arduino Nano + ESP8266, BMP280, OLED / Nokia 5110 LCD
- Измерение массы Земли с Arduino: пошаговое руководство по DIY
- Подключение датчика пульса MAX30100 к Arduino: Пошаговое руководство
- Создание приложения Fridgeye с дисплеем Nextion: пошаговое руководство
- Оптимальный тепловой насос для водонагревателя: энергоэффективные решения горячей воды
- Почему токарный станок с коробчатыми направляющими — оптимальный выбор для точности и производительности
- Датчики Холла: принцип работы, применение и конструкция