Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

RGB HexMatrix IoT‑klok – Dynamische LED‑zeshoekdisplay

Onderdelen en benodigdheden

Arduino UNO 1
NodeMCU ESP8266 Breakout Board 1
NeoPixel WS2811 LED's 96 stuks
5 V 2,5 A Schakelende voeding 1

Benodigde gereedschappen en machines

  • Soldeerbout (generiek)
  • Soldeertin, loodvrij
  • Soldeervloeistof
  • Kabelsnijder, 143 mm

Apps en online diensten

  • Arduino IDE

Over dit project

De HexMatrix is een LED‑matrix met veel driehoekige pixels. Zes pixels vormen samen een zeshoek. Er zijn veel verschillende animaties die op de matrix getoond kunnen worden vanuit de FastLED‑bibliotheek. Ook heb ik cijfers van 0 tot 9 ontworpen met 10 segmenten per cijfer in de matrix en een IoT‑klok gemaakt.

Benodigdheden

  • ESP8266 of Arduino (Uno/Nano)
  • WS2811 LED (96 stuks)
  • 5 V/2 A Voeding
  • 3D‑printen

Stap 1: 3D‑printen

(Afbeeldingen van de 3D‑modellen zijn in de originele tutorial te vinden.)

Stap 2: Schakelingsaansluitingen

  • Maak alle verbindingen zoals in het schema getoond.
  • GND → − (min)
  • Vin → 5 V → + (plus)
  • DataIn → Pin 2
  • Verleng de voedingsdraden tot de laatste LED en sluit ze aan, om spanningsval over de LED's te voorkomen.

(Schema‑afbeeldingen zijn in de originele tutorial te vinden.)

Stap 3: Let op

  • Als je een Arduino‑board gebruikt, kun je alleen animaties tonen, geen tijd.
  • Als je een ESP8266‑board gebruikt, kun je tijd en andere animaties op de matrix tonen.

Stap 4: Assemblage

  • Plaats alle LED's in "slang‑volgorde" (snake‑wise).
  • Monteer alles samen.
  • Soldeer de connector op de microcontroller; de connector zit aan het uiteinde van de LED‑reeks.

(Afbeeldingen van de assemblage zijn in de originele tutorial te vinden.)

Stap 5: Programmeren

  • Klik hier voor de codes: Codes
  • Voor deze matrix heb ik drie codes gemaakt: HexMatrix.ino, clock1.ino en clock2.ino.
  • HexMatrix.ino toont animaties op de matrix en draait op elke microcontroller.
  • clock1.ino en clock2.ino draaien alleen op ESP8266‑boards.

HexMatrix.ino:

  • Open de code in de Arduino IDE.
  • Installeer de FastLED-bibliotheek via de Library Manager.
  • Selecteer het juiste board, poort en upload de code.

Clock1 en Clock2 codes:

  • Open de code in de Arduino IDE.
  • Pas de kleurwaarden aan naar wens:
// Cijferkleur (RGB)
int r = 255;
int g = 255;
int b = 255;

// Achtergrondkleur (RGB)
int br = 0;
int bg = 20;
int bb = 10;
  • Voer je Wi‑Fi‑naam en wachtwoord in:
const char* ssid = "Wifi_Naam";
const char* password = "Wachtwoord";
  • Voer de tijdzone in (bijv. India 5:30 = 5,5):
int timezone = -5.5 * 3600;
  • Selecteer boardtype ESP8266, poort en upload.

Behalve deze klokken zijn er nog veel andere animaties in de FastLED‑voorbeelden.

Code

clock1 (afgekapt)

#include <ESP8266WiFi.h>
#include <time.h>
#include <FastLED.h>

#define LED_PIN 2
#define NUM_LEDS 96
#define BRIGHTNESS 255
#define LED_TYPE WS2811
#define COLOR_ORDER RGB

CRGB leds[NUM_LEDS];

// Cijferkleur (RGB)
int r = 255, g = 255, b = 255;
// Achtergrondkleur (RGB)
int br = 0, bg = 20, bb = 10;

const char* ESP_HOST_NAME = "esp-" + ESP.getFlashChipId();
const char* ssid = "Wifi_Naam";
const char* password = "Wachtwoord";
int timezone = -5.5 * 3600;
int dst = 0;
WiFiClient wifiClient;

void connectWifi() {
  WiFi.begin(ssid, password);
  Serial.print("Connecting to ");
  Serial.println(ssid);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println();
  Serial.println("WiFi connected!");
  Serial.println(WiFi.localIP());
  Serial.println();
}

void setup() {
  Serial.begin(115200);
  delay(500);
  connectWifi();
  Serial.println();
  Serial.println("\n\nNext Loop-Step: " + String(millis()) + ":");
  configTime(timezone, dst, "pool.ntp.org", "time.nist.gov");
  FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
  FastLED.setBrightness(BRIGHTNESS);
}

void loop() {
  time_t now = time(nullptr);
  struct tm* p_tm = localtime(&now);
  Serial.print("-------------------------------------------------\n");
  Serial.print("Date & Time : ");
  Serial.print(p_tm->tm_mday);
  Serial.print("/");
  Serial.print(p_tm->tm_mon + 1);
  Serial.print("/");
  Serial.print(p_tm->tm_year + 1900);
  Serial.print(" ");
  int hour = p_tm->tm_hour;
  int minute = p_tm->tm_min;
  if (hour > 12) hour -= 12;
  Serial.print(hour);
  Serial.print(":");
  Serial.print(minute);
  Serial.print(":");
  Serial.println(p_tm->tm_sec);

  background();
  // Uur‑functies (hour12() … hour11()) en minuut‑functies (min0() … min59())
  // worden hier aangeroepen op basis van hour en minute.
  // Voorbeeld:
  if (hour == 0 || hour == 12) hour12();
  if (hour == 1) hour1();
  // ... etc.
  if (minute == 0) min0();
  if (minute == 1) min1();
  // ... etc.

  FastLED.show();
  FastLED.clear();
  FastLED.show();
}

void background() {
  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CRGB(br, bg, bb);
  }
}

/* Functies voor elk uur (hour12, hour1, … hour11) en elke minuut (min0 … min59)
   zetten specifieke LED‑indices op de cijferkleur (r,g,b).
   De volledige code is te lang voor deze weergave; download het volledige bestand. */

clock2 (met "pride" animatie op achtergrond)

#include <ESP8266WiFi.h>
#include <time.h>
#include "FastLED.h"

#if FASTLED_VERSION < 3001000
#error "Requires FastLED 3.1 or later; check github for latest code."
#endif

#define DATA_PIN 2
#define LED_TYPE WS2811
#define COLOR_ORDER RGB
#define NUM_LEDS 96
#define BRIGHTNESS 255

CRGB leds[NUM_LEDS];

int r = 255, g = 255, b = 255;
const char* ESP_HOST_NAME = "esp-" + ESP.getFlashChipId();
const char* ssid = "Wifi_Naam";
const char* password = "Wachtwoord";
int timezone = -5.5 * 3600;
int dst = 0;
WiFiClient wifiClient;

void connectWifi() { /* zelfde als clock1 */ }

void setup() { /* zelfde als clock1 */ }

void loop() {
  time_t now = time(nullptr);
  struct tm* p_tm = localtime(&now);
  // ... tijd ophalen en printen ...
  pride(); // achtergrondanimatie
  // uur‑ en minuut‑functies aanroepen zoals bij clock1
  FastLED.show();
  FastLED.clear();
  FastLED.show();
}

void pride() {
  // Kleurrijke achtergrondanimatie (FastLED voorbeeld)
  static uint16_t sPseudotime = 0, sLastMillis = 0, sHue16 = 0;
  uint8_t sat8 = beatsin88(87, 220, 250);
  uint8_t brightdepth = beatsin88(341, 96, 224);
  uint16_t brightnessthetainc16 = beatsin88(203, 25*256, 40*256);
  uint8_t msmultiplier = beatsin88(147, 23, 60);
  uint16_t hue16 = sHue16;
  uint16_t hueinc16 = beatsin88(113, 1, 3000);
  uint16_t ms = millis();
  uint16_t deltams = ms - sLastMillis;
  sLastMillis = ms;
  sPseudotime += deltams * msmultiplier;
  sHue16 += deltams * beatsin88(400, 5, 9);
  uint16_t brightnesstheta16 = sPseudotime;
  for (uint16_t i = 0; i < NUM_LEDS; i++) {
    hue16 += hueinc16;
    uint8_t hue8 = hue16 / 256;
    brightnesstheta16 += brightnessthetainc16;
    uint16_t b16 = sin16(brightnesstheta16) + 32768;
    uint16_t bri16 = (uint32_t)((uint32_t)b16 * (uint32_t)b16) / 65536;
    uint8_t bri8 = (uint32_t)(((uint32_t)bri16) * brightdepth) / 65536;
    bri8 += (255 - brightdepth);
    CRGB newcolor = CHSV(hue8, sat8, bri8);
    uint16_t pixelnumber = (NUM_LEDS - 1) - i;
    nblend(leds[pixelnumber], newcolor, 64);
  }
}

/* Uur‑ en minuut‑functies identiek aan clock1 */

Schema's

Zie bijgevoegde afbeeldingen in de originele tutorial.

Productieproces

  1. Koude Soldeerverbindingen Voorkomen: Betrouwbare Industriële Electronica Door Correcte Hitte
  2. Koekeklok: geschiedenis, vakmanschap en moderne evolutie
  3. Bouw een Beweging-gestuurde AWS IoT-knop met Raspberry Pi, PIR-sensor en MQTT
  4. GoPiGo v2 Uitbreiden op Windows 10 IoT Core voor Raspberry Pi 3
  5. Arduino POV-klok: Bouw een Persistence-of-Vision LED-display
  6. Slimme Plant IoT: Verbonden kassen bouwen met Arduino & Azure
  7. Oneindige Spiegel Klok: Oneindige Elegantie Trefst Nauwkeurige Tijd
  8. Het solderproces: professionele gids voor nauwkeurig metaalverbinden
  9. Solderen uitgelegd: typen, technieken en stapsgewijze handleiding
  10. Expertgids: probleemoplossing bij golfsolderproblemen op PCB's
  11. PCB-solderen onder de knie: Types, technieken en essentiële hulpmiddelen