Bonjour, chers lecteurs, je voudrais vous présenter ma version du projet d'éclairage automatique des escaliers basé sur le contrôleur Arduino Pro Mini. Peut-être que pour quelqu'un cet article deviendra la base de leurs propres projets, mais pour moi ce sera agréable de lire une critique stricte dans les commentaires.Objectif du projet: monter l'éclairage de l'escalier au deuxième étage dans les conditions suivantes.- L'automatisation ne fonctionne que dans l'obscurité.
- .
- .
- .
J'ai utilisé l'Arduino Pro Mini familier comme contrôleur.Tout d'abord, à propos de l'escalier lui-même, le nombre de marches est de 11, la largeur est de 550 mm. Au total, vous avez besoin de 6 m de bande LED (commandée 2 pièces de 5 m 5050 SMD), avec un degré de protection IP67 (c'est-à-dire une protection contre la poussière et l'eau), afin que vous puissiez essuyer la poussière et ne pas penser à la tension ou aux dommages bande.Après avoir connecté une bande de LED de 5 mètres, le courant à travers elle s'est avéré être seulement de 2,5 A, c'est-à-dire que pour une bande de LED de 6 mètres, une alimentation de 36 W est nécessaire. Le choix s'est porté sur l'alimentation chinoise 12 V 8,3 A 100 watts. 100, bien sûr, beaucoup, mais 12 V étaient nécessaires pour un autre projet, donc je me suis connecté.J'ai utilisé un simple circuit de réduction de tension utilisant le stabilisateur de tension L7805CV et deux condensateurs en céramique 0,1 μF et 0,33 μF comme alimentation pour le contrôleur lui-même, ainsi que les capteurs (alimentation 5 V).
En tant que capteurs de détection de mouvement, il s'est arrêté sur les capteurs à ultrasons HC-SR04, car ils émettent un faisceau étroit d'impulsions ultrasonores et vous pouvez régler la distance de réponse. Ainsi, il peut être réglé pour suivre l'intersection de l'élan dans les première et dernière étapes. Entrez dans les détails des caractéristiques, la méthode de connexion, le principe du capteur, je ne vois pas le point sur Internet beaucoup d'informations à leur sujet.Le problème de la mesure de l'éclairage a également été résolu tout simplement à l'aide d'un circuit diviseur de tension dans lequel la photorésistance Gl5516 est utilisée comme résistance variable.Ensuite, considérez le nombre de contacts utilisés: 11 numériques pour les étapes, 4 pour deux capteurs et un analogique pour mesurer l'éclairage. Un total de 15 numériques, ce qui ne nous donne pas Arduino. Sans y réfléchir à deux fois, j'ai utilisé la puce 74NS595N, ou plutôt une cascade de deux registres à décalage pour augmenter le nombre de sorties numériques Arduino.Après avoir lu la littérature et les opinions sur les jambons, j'ai mis un condensateur céramique 0,1 μF sur la 12e jambe du premier registre STcp, censé minimiser le bruit lorsqu'une impulsion de «verrouillage» est appliquée. Lorsque je teste la cascade «sur la table», cela fonctionne vraiment mieux avec le condensateur, surtout lorsque je fournis pour la première fois du courant au microcircuit.C'est une chose de connecter une charge légère, comme une LED, à un Arduino, une autre chose est de connecter un morceau de bande LED de 500 à 550 mm de long (le courant maximum de la sortie numérique Arduino est de 40 mA). La puce ULN2003A (assemblage Darlington) s'est avérée être plus accessible pour moi, le courant maximal à travers une sortie étant de 0,5 A.
Je tiens à noter que la broche Echo du deuxième capteur vient à la 13e broche de l'Arduino, sur laquelle se trouve la LED du contrôleur lui-même.Cela a été fait exprès, par commodité, au moment où la condition «est-il suffisamment sombre pour commencer à interroger les capteurs?».J'ai dessiné le tableau dans Sprint-Layout. Il a souligné que le microcircuit et le contrôleur avaient été retirés, soudé les prises SCS-14 et 16, ainsi que la prise de la carte PBS 2 × 12 2.54. Le seul point négatif était de cambrer les pattes des puces 74NC595N dans l'autre sens.
Esquisse
Lors de la compilation de l'esquisse, une seule bibliothèque ultrasonique a été utilisée (pour travailler avec les capteurs HC-SR04) et cela a pu être supprimé. J'ai dû bricoler avec des opérations de bits, car il est nécessaire de charger deux octets dans la cascade de registres à décalage d'une certaine manière (dans le croquis, j'ai fait des explications claires).Esquisse// *** V1***
//
#include "Ultrasonic.h"
//
#define Trig_1 10 // .
#define Echo_1 11
#define Trig_2 12 // .
#define Echo_2 13
#define Ds 8 // Ds/SDI 75HC595N_1.
#define STcp 7 // STcp/RCLK 75HC595_1, 2.
#define SHcp 6 // SHcp/SRCLK 75HC595_1, 2.
#define LDR A0 // .
Ultrasonic Sensor_1(Trig_1, Echo_1); // .
Ultrasonic Sensor_2(Trig_2, Echo_2); // .
//
const int Limit = 100; // .
const float Min_Disrance = 50.0; /* ,
55 .*/
boolean Up_Sensor_Started = false; // .
boolean Down_Sensor_Started = false; // .
const int Read_Delay = 50; // .
unsigned int leds = 0; // .
const int N = 10; /* .
! 14- 2 .*/
const int T_Ladder = 3000; // .
const int T_Stair = 500; // .
void setup()
{
pinMode(Ds, OUTPUT);
pinMode(STcp, OUTPUT);
pinMode(SHcp, OUTPUT);
// Serial.begin(9600); // 9600 .
}
void loop()
{
int LDR_Value = analogRead(LDR); // .
// Serial.println(LDR_Value); // 0 1023.
if(LDR_Value < Limit) // " ?".
{
Down_Sensor(); // .
if(Down_Sensor_Started) // .
// , ...
{
Down_Sensor_Started = false; // .
Up_Sensor_Started = false;
Turing_Upward(); // .
}
else
// ...
{
Up_Sensor(); // ...
if(Up_Sensor_Started) // .
// , ...
{
Down_Sensor_Started = false; // .
Up_Sensor_Started = false;
Turing_Downward(); // .
}
}
delay(Read_Delay); // .
}
}
//
void Up_Sensor()
{
if((Sensor_1.Ranging(CM) < Min_Disrance) && (Sensor_1.Ranging(CM) > 0))
// , ...
{
Up_Sensor_Started = true; // .
}
}
//
void Down_Sensor()
{
if((Sensor_2.Ranging(CM) < Min_Disrance) && (Sensor_2.Ranging(CM) > 0))
// , ...
{
Down_Sensor_Started = true; // .
}
}
//
void updateShiftRegister()
{
digitalWrite(STcp, LOW); // .
byte First = lowByte(leds); /* ,
shiftOut 8 .*/
byte Second = highByte(leds);
shiftOut(Ds, SHcp, MSBFIRST, Second); // 1- .
shiftOut(Ds, SHcp, MSBFIRST, First); // 2- .
digitalWrite(STcp, HIGH); // .
}
//
void Turing_Upward()
{
for (int i = 0; i <= N; i++)
{
bitSet(leds, i); // N 1 ( HIGH).
updateShiftRegister(); // .
delay(T_Stair); // .
}
// Serial.println(leds, BIN); // .
delay(T_Ladder); // .
leds = 0; // .
updateShiftRegister(); // .
}
//
void Turing_Downward()
{
for (int i = N; i >= 0; i--)
{
bitSet(leds, i); // N 1 ( HIGH).
updateShiftRegister(); // .
delay(T_Stair); // .
}
delay(T_Ladder); // .
leds = 0; // .
updateShiftRegister(); // .
}
Caractéristiques de montage
Maintenant, à propos de l'installation, il est préférable de placer la bande LED dans un profil spécialement créé pour elle, mais son coût est assez élevé. J'ai pris un câble 12 × 12 canaux, coupé l'excédent avec un couteau de bureau chauffé au rouge, et ce qui s'est produit est arrivé.
Pour cacher les capteurs HC-SR04, j'ai trouvé un boîtier IEK de 20 mm pour eux.
L'installation du blindage n'a pas été difficile non plus, puisque l'installation de borniers à vis était prévue à l'avance sur la carte.
Résumé
Le projet résultant a satisfait toutes les tâches, pendant le fonctionnement de l'automatisation, aucun échec ou commentaire n'a été remarqué.La seule chose, à mon avis, pourrait être de rendre le bouclier plus compact et de le fermer complètement des mains indiscrètes.Paquet de paquet
Contrôleur Arduino Pro Mini Atmega 328 5V 16MHz | 1 |
Capteur à ultrasons HC-SR04 | 2 |
Alimentation 12 V 8,3 A 100 W | 1 |
Ruban LED 5050 SMD 5 m IP65 | 2 |
Chip 74NS595N | 2 |
Circuit intégré ULN2003A | 2 |
Emplacement PBS 1 × 40 2,54 | 1 |
Fil MGShV 0,75 | |
Câble PUNP 2 × 2,5 | |
Câble téléphonique SHTLP-4 0,12 × 7 | |
1 Un disjoncteur unipolaire | 1 |
Disjoncteur unipolaire 10 A | 1 |
Photorésistance Gl5516 | 1 |
Régulateur de tension L7805CV | 1 |
Condensateur céramique 0,33 uF | 1 |
Condensateur céramique 0,1 uF | 2 |
Résistance 10k ohms | 1 |
Prise pour puce SCS-14 | 2 |
Prise pour SCS-16 | 2 |
Boîte de distribution IEK 20 mm | 2 |
Bornier à vis à deux broches | 13 |
Fibre de verre 95 × 105 mm | |
Textolite | |
SRK à travers le terminal de passage | 12 |
Canal de câble 12 × 12 × 2000 | |
Canal de câble 16 × 16 × 2000 | |
Consommables (hot melt, colle Moment Crystal, soudure, colophane, flux TAGS) | |
Fixations (boulons, écrous, vis, chevilles, pinces) | |
Merci de votre attention.