LumiCube: un assistant d'éclairage pour espace de travail: 8 étapes (avec photos)

LumiCube: un assistant d'éclairage pour espace de travail: 8 étapes (avec photos)

Table des matières:

Anonim

Vous êtes-vous déjà senti mal à l'aise ou difficile de vous concentrer lorsque vous travaillez / étudiez dans un espace de travail? Saviez-vous que l'éclairage (intensité et couleur de la lumière) dans notre espace de travail peut affecter la qualité du travail, la vitesse de travail, notre humeur, notre productivité globale et la santé humaine?

Pour assurer notre confort et notre productivité, l'éclairage doit être réglé correctement en fonction de l'activité / tâche de travail exacte. Mais, comment pouvons-nous déterminer si l'éclairage est bon ou non pour la tâche?

LumiCube est un assistant d'éclairage pour notre espace de travail, il peut nous aider à connaître facilement l'éclairage actuel dans l'espace de travail:

  • intensité lumineuse et température de couleur.
  • quel type d'activité est approprié sous l'éclairage.
  • comment définir un bon éclairage pour la tâche en cours.

Solution de conception:

LumiCube a essentiellement deux modes: le mode travail et le mode détente.

En mode travail:

  • mesurer et afficher en temps réel l'intensité lumineuse et la température de couleur.
  • informer quel type d'activité de travail est approprié sous l'éclairage.
  • Cela implique comment configurer un bon éclairage pour différentes tâches.
  • fournir des informations météo: description de la température et de la météo.
  • donner des conseils sur les vêtements et l'équipement de plein air

Le mode relax est en fait créé pour mon problème personnel. Parce que je ne me préparais pas toujours bien avant de sortir, surtout quand j'étais occupé au travail. En outre, il est assez pénible de sortir mon téléphone portable et d’ouvrir l’application météo. Grâce à l'idée et au design de Julien Vanier - une horloge météo fantaisiste, j'ai décidé de la mettre en œuvre pour moi-même.

Le processus de travail global est passé par 7 étapes: exploration des connaissances, prototypage, implémentation matérielle, développement logiciel, conception de l’aspect, tests et assemblage.

Provisions:

Étape 1: Exploration des connaissances

Cherchez des conseils fiables sur l'intensité de la lumière et la température de couleur recommandées pour différents degrés de traitement de l'information visuelle et trouvez un capteur de lumière approprié pour mesurer l'intensité de la lumière et la température de couleur.

Selon les indications relatives aux niveaux de lumière recommandés (Illuminace) pour les espaces extérieurs et intérieurs fournis par NOAO, quatre intensités lumineuses ont été définies pour différentes tâches:

  1. Travail facile: 250 lux
  2. Travail de bureau normal, travail sur ordinateur: 500 lux
  3. Travaux de dessin normaux, Travaux mécaniques: 1000 lux
  4. Dessin détaillé, Travail mécanique détaillé: 1500 lux

Selon les indications fournies par Westinghouse Electric Corporation, trois plages de températures de couleur de la lumière ont été définies pour différentes ambiances de travail:

  1. Confortable: 2000-3000 Kelvin
  2. Brillant: 3100-4500 Kelvin
  3. Revigorant: 4600-6500 Kelvin

Capteur de lumière approprié pour mesurer l'intensité de la lumière et la température de couleur:

Capteur de couleur Adafruit RVB avec filtre IR et LED blanche - TCS34725

Étape 2: Prototypage - Esquisse

Concevez le produit global en dessinant.

Tableau de contrôle: il y aura un interrupteur d'alimentation et un interrupteur de mode sur la face supérieure. Le capteur de lumière sera également placé sur la face supérieure afin d’être correctement exposé à la lumière et de mesurer l’intensité de la lumière et la température de couleur avec moins d’erreurs.

En mode travail: Deux types d’informations d’éclairage (intensité lumineuse et température de couleur) sont présentées sur la face avant via un anneau LED NeoPixel. Lorsque le sélecteur de mode situé sur la face supérieure est réglé sur "travail", le capteur de lumière commence à mesurer l'intensité de la lumière et la température de couleur de l'environnement d'éclairage actuel. La LED NeoPixel s’allumera en fonction de l’intensité lumineuse et de la température de couleur en temps réel. Quatre icônes de tâche de travail, signifiant lecture, travail de bureau normal, travail de dessin normal et travail détaillé, sont placées près de la moitié supérieure de l'anneau pour différentes intensités lumineuses. Trois icônes d'ambiance de travail, signifiant chaleureuse, lumineuse et vivifiante, sont placées près de la moitié inférieure pour une plage de température de couleur différente.

Mode Relax: Lorsque le sélecteur de mode situé sur la face supérieure est réglé sur "Relax", l'écran affiche la température actuelle. De plus, l’anneau LED NeoPixel présentera l’icône météo et les conseils correspondants relatifs aux vêtements et à l’équipement de plein air.

Étape 3: Implémentation matérielle

L'électronique principale:

  • Anneau NeoPixel - 24 LED RVB 5050 avec pilotes intégrés * 1
  • Anneau NeoPixel - 16 LED RVB 5050 avec pilotes intégrés * 1
  • Écran OLED série, 0,96 "* 1
  • Capteur de couleur RVB avec filtre IR et DEL blanche - TCS34725 * 1
  • 4 supports de piles AA * 1
  • Batterie AA * 4
  • Commutateur SPDT * 2
  • Photon avec en-têtes * 1

Étape 4: Développement de logiciels

Outil de développement: Particule Web IDE

Bibliothèques incluses:

  • Arduino (0.0.10)
  • Adafruit_TCS34725 (1.0.0)
  • Adafruit_SSD1306 (0.0.2)
  • SparkJson (0.0.2)
  • NeoPixel (0.0.14)

La programmation

Créez Webhook pour demander des informations météo à OpenWeatherMap API dans l'onglet Intégrations de la console Particle. Appliquer l'appid et l'API météo sur OpenWeatherMap.org Obtenez l'appel actuel de l'API météo avec le code postal et appid, par exemple, http://samples.openweathermap.org/data/2.5/weather?zip=94040,us&appid=b6907d289e10d714a6e6b6a7e6b6a7e8b6a7e7e7a7e7a7e7a7e.html. Cette réponse de l'API sera au format JSON.

Particle Console-> onglet Intégration-> Nouvelle intégration-> Webhook: définissez le Webhook weatherinfo, l’URL doit être l’appel actuel de l’API météo. LumiCube n’ayant besoin que de la description météo et de la température, vous pouvez utiliser des modèles de moustache pour traiter les données JSON dans la réponse Webhook. Par conséquent, dans les paramètres avancés du Webhook, définissez le modèle de réponse comme suit: "{{#weather}} {{0.main}} ~ {{/ weather}} {{# main}} {{temp}} ~ {{ /principale}}". Et puis enregistrez le Webhook.

Dans le code, définissez les variables pour le Webhook et les données météorologiques:

unsigned long request_interval = 1000 * 60 * 15; // demande des informations météo à openweathermap toutes les 15 min. unsigned long lastReq = 0; bool ifUpdate = false; // pour la mise à jour des informations météo String wx_main = ""; String wx_temp = ""; // pour stocker les informations météo de la dernière mise à jour String main = "loading"; température de flottement = 0,0;

Abonnez-vous à l'événement de réponse dans setup () en utilisant:

Particle.subscribe ("hook-response / weatherInfo", myHandler, MY_DEVICES);

Définissez la fonction myHandler pour gérer la réponse webhook comme suit:

void myHandler (événement const char *, données const char *) {

String str = String (data); char strBuffer 256 = ""; str.toCharArray (strBuffer, 256); wx_main = strtok (strBuffer, "" ~ "); wx_temp = strtok (NULL," ~ "); ifUpdate = true; return;}

Déclenchez le Webhook pour demander les informations météo en utilisant:

Particle.publish ("weatherInfo", PRIVATE);

Initialisez deux anneaux NeoPixel LED, écran OLED, capteur de lumière RGB, commutateur de mode dans le code en fonction du circuit:

// IMPORTANT: Définissez le nombre de pixels, le code PIN et le type pour la sonnerie de 24 pixels.

#define PIXEL_COUNT 24 #define PIXEL_PIN D6 #define PIXEL_TYPE WS2812B

// IMPORTANT: Définissez les pixels COUNT, PIN et TYPE pour les 16 anneaux néopixels #define PIXEL_COUNT_S 16 #define PIXEL_PIN_S D2 #define PIXEL_TYPE_S WS2812B

// utilise le SPI du matériel pour l'écran OLED #define OLED_DC D3 #define OLED_CS D4 #define OLED_RESET D5

// initialise deux anneaux neopixel Adafruit_NeoPixel strip = Adafruit_NeoPixel (PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE); Adafruit_NeoPixel strip_s = Adafruit_NeoPixel (PIXEL_COUNT_S, PIXEL_PIN_S, PIXEL_TYPE_S);

// écran d'initialisation OLED Adafruit_SSD1306 display (OLED_DC, OLED_RESET, OLED_CS); char buf 64;

// initialise le capteur de lumière rgb Adafruit_TCS34725 tcs = Adafruit_TCS34725 (TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X); double r, g, b, l, c; bool init = false;

// commutateur de mode int switchPin = A0;

Principales caractéristiques dans chaque boucle du code:

Vérifiez l'état du commutateur de mode.

Si l'état du commutateur de mode est BAS, défini comme mode de travail de LumiCube:

Lisez les valeurs du capteur de lumière RVB en utilisant:

void getRawData (uint16_t * r, uint16_t * g, uint16_t * b, uint16_t * c);

Calculez l'intensité lumineuse et la température de couleur en utilisant:

uint16_tcalculerCouleurTempérature (uint16_t r, uint16_t g, uint16_t b); uint16_t CalculateLux (uint16_t r, uint16_t g, uint16_t b);

Selon l'intensité de la lumière et la température de couleur, allumez NeoPixels sur les 24 NeoPixel en utilisant:

strip.setPixelColor (i, r, g, b);

Si l'état du commutateur de mode est HIGH, défini comme mode de relaxation de LumiCube:

Déclenchez le Webhook pour demander et mettre à jour les informations météo toutes les 15 minutes

Afficher la température météo sur l’écran OLED:

// affichage de la température sur l'écran OLED

display.setTextSize (3); display.setTextColor (WHITE); display.setCursor (0,0); snprintf (buf, sizeof (buf), "Temp"); display.println (buf); snprintf (buf, sizeof (buf), "% 0,1f C", temp); display.println (buf);

Selon la météo et la température, allumez NeoPixels sur le 16 NeoPixel en utilisant:

strip_s.setPixelColor (i, r, g, b);

Le code complet se trouve dans le fichier lumicube.ino.

Étape 5: Conception de l'apparence

Utilisez Adobe Illustrator pour concevoir l'apparence de LumiCube: 4,5 x 4,5 x 4,5 pouces.

Découpez au laser le motif à l'aide de Birchwood de pouce

Étape 6: test

Laissez Photon se connecter au nuage et y insérer le code via Particle Web IDE.

Déboguez et assurez-vous que les informations sur l'éclairage et la météo sont affichées correctement.

Étape 7: Assemblage

Assemblez l'électronique avec le cube en bois.

Étape 8: Prototype final