Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Итальянские словесные часы на Arduino Nano, NeoPixel, LCD и RTC

Компоненты и материалы

Arduino Nano R31
NeoPixel лента (144 LED)1
LCD 16x2 (белый на синем) с I2C модулем1
RTC (Real Time Clock)1
Тактильные кнопки 12мм (SparkFun)4
Резистор 10 кОм3
Резистор 475 Ом1
Диод 1N40073
DC-DC понижающий преобразователь (регулируемый)1
Рамка для фото RIBBA (IKEA)1
Корпус Gewiss 150×110 мм1
Алюминиевые полоски 230×10×1 мм (для сетки)1

О проекте

Мой увлечение Arduino-часами привели к созданию «Word Clock» (словесных часов). Живу в Италии — сделал на итальянском. Вдохновился туториалом «Word Clock Javelin», внес мелкие правки — и вот они, «Часы Италии»!

Помимо времени на итальянском, добавил поздравления с днями рождения семьи (включая кота). Корпус — рамка IKEA RIBBA, внутренности — из подручных материалов:

Итальянские словесные часы на Arduino Nano, NeoPixel, LCD и RTC
Итальянские словесные часы на Arduino Nano, NeoPixel, LCD и RTC

Экран (матрица букв) нарисован в Inkscape. Панель 12×12 букв, поле 200 мм. Нет 3D-принтера — сетку сделал из алюминиевых полосок, изолировал контакты LED пено-прокладкой (также разделяет свет).

Электрическая схема

Итальянские словесные часы на Arduino Nano, NeoPixel, LCD и RTC
Итальянские словесные часы на Arduino Nano, NeoPixel, LCD и RTC
Итальянские словесные часы на Arduino Nano, NeoPixel, LCD и RTC
Итальянские словесные часы на Arduino Nano, NeoPixel, LCD и RTC
Итальянские словесные часы на Arduino Nano, NeoPixel, LCD и RTC

Приложены: принципиальная схема, Fritzing-файл, топология печатной платы.

Матрица LED

Итальянские словесные часы на Arduino Nano, NeoPixel, LCD и RTC
Итальянские словесные часы на Arduino Nano, NeoPixel, LCD и RTC
Итальянские словесные часы на Arduino Nano, NeoPixel, LCD и RTC
Итальянские словесные часы на Arduino Nano, NeoPixel, LCD и RTC

Лента подключена зигзагом: слева направо вверху, потом справа налево ниже, и т.д.

Библиотеки Arduino

Пояснение кода

Код разбит на 5 основных частей:

Для точности минут добавлены индикаторы 1,2,3,4 (последние 4 минуты в 5-минутном интервале).

Пример: «SONO LE ORE DIECI E VENTI 4» = 10:24 (10:20 + 4 мин), «SONO LE DIECI MENO QUINDICI 2» = 09:47 (09:45 + 2 мин).

Сборка

Итальянские словесные часы на Arduino Nano, NeoPixel, LCD и RTC
Итальянские словесные часы на Arduino Nano, NeoPixel, LCD и RTC
  1. Разобрать рамку, вымыть стекло.
  2. Вставить печать на ацетате (прозрачная плёнка).
  3. Вставить бумажную печать.
  4. Вставить алюминиевую сетку.
  5. Вставить панель с LED.
  6. Приклеить фанерку чуть крупнее коробки управления.
  7. Закрутить коробку саморезами.

Критично точно совместить две печати (плёнку и бумагу)!

Место установки

Итальянские словесные часы на Arduino Nano, NeoPixel, LCD и RTC

Висят в гостиной — смотрятся отлично.

Код

Italian WordClock (Arduino)

/* :Project: WordClock :Author: Tiziano Bianchettin :Date: 25/09/2016 ... */
#include 
#include 
#include 
#include 

#define PIN 9
#define NUM_LEDS 144
#define GIORNO 255
#define SERA 25
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
int intBrightness;

uint32_t Red = strip.Color(255,0,0);
uint32_t Green = strip.Color(0,255,0);
uint32_t Blue = strip.Color(0,0,255);
uint32_t White = strip.Color(255,255,255);
uint32_t Yellow = strip.Color(255,255,0);
uint32_t Purple = strip.Color(60,0,255);
uint32_t Off = strip.Color(0,0,0);

LiquidCrystal_I2C lcd(0x27,16,2);
RTC_DS1307 RTC;
int P1=6, P2=7, P3=8;
int oraagg, minagg, annoagg, meseagg, dayagg, menu=0, ora;

// Массивы индексов LED для каждого слова (SONO, UNA, DUE, ... AUGURI, SIMONE, ... E, MENO, VENTI, ...)
// ... (полные массивы в исходнике)

void setup() {
  strip.begin(); strip.show();
  lcd.begin(); lcd.backlight(); lcd.clear();
  pinMode(P1,INPUT); pinMode(P2,INPUT); pinMode(P3,INPUT);
  Serial.begin(9600); Wire.begin(); RTC.begin();
  if (!RTC.isrunning()) { RTC.adjust(DateTime(__DATE__, __TIME__)); }
}

void loop() {
  if(digitalRead(P1)) { menu++; }
  if(menu==0) {
    DisplayDateTime();
    DateTime now = RTC.now();
    intBrightness = (now.hour()>=19 || now.hour()<7) ? SERA : GIORNO;
    strip.setBrightness(intBrightness);
    int timeMin = now.minute();
    int modMin = timeMin % 5;
    // Мигание слова SONO и индикаторов минут 1-4 разными цветами
    // ...
    HourClock(); MinuteClock(); Auguri(); strip.show();
  }
  // Меню настройки времени: menu 1-6 (час, мин, год, месяц, день, сохранение)
  // ...
  delay(100);
}

// Функции DisplayDateTime, DisplaySetHour, ..., HourClock, MinuteClock, Auguri, paintWord
// ... (полный код во вложении)

Полный скетч во вложении (файл Italian WordClock).

3D-модели и схемы

Векторный рисунок для печати (SVG)

wordklock_aWvuaZRw4N.svg

Схемы (Fritzing и фото)

Итальянские словесные часы на Arduino Nano, NeoPixel, LCD и RTC

wordklock_JBoZPYrsYr.fzz (Fritzing project)

Производственный процесс

  1. Умный датчик полива «Thirst Alert» на Arduino — DIY сигнализация засухи для растений
  2. Слово-часы (Word Clock) на Arduino — DIY-часы с текстовой индикацией времени
  3. Точные словесные часы: отображение времени в словах с точностью до минуты
  4. Надежный счетчик кВт·ч на Sigfox с Arduino MKR Fox 1200
  5. Bluetooth-монитор температуры на Arduino Nano с NTC-термистором
  6. Бесконтактный жестовый замок: APDS-9960 + Arduino для безопасного доступа
  7. Набор-компаньон для Arduino Nano — необходимые компоненты и инструменты для DIY-электроники
  8. Набор USB-MIDI адаптера для Arduino Micro / Leonardo — полный список деталей
  9. Гальванически разделённый аналоговый вход для Arduino на LM331 и оптопаре 4N25
  10. Точный тест времени реакции на Arduino UNO