Table des matières:

LAMPE SOLAIRE SANS FIL AVEC BRAS FLEXIBLE MAGNÉTIQUE : 8 étapes (avec photos)
LAMPE SOLAIRE SANS FIL AVEC BRAS FLEXIBLE MAGNÉTIQUE : 8 étapes (avec photos)

Vidéo: LAMPE SOLAIRE SANS FIL AVEC BRAS FLEXIBLE MAGNÉTIQUE : 8 étapes (avec photos)

Vidéo: LAMPE SOLAIRE SANS FIL AVEC BRAS FLEXIBLE MAGNÉTIQUE : 8 étapes (avec photos)
Vidéo: Les Distributeurs Ne Veulent Pas Que Vous Sachiez Ça 2024, Novembre
Anonim
LAMPE SOLAIRE SANS FIL AVEC BRAS FLEXIBLE MAGNÉTIQUE
LAMPE SOLAIRE SANS FIL AVEC BRAS FLEXIBLE MAGNÉTIQUE
LAMPE SOLAIRE SANS FIL AVEC BRAS FLEXIBLE MAGNÉTIQUE
LAMPE SOLAIRE SANS FIL AVEC BRAS FLEXIBLE MAGNÉTIQUE

Ce projet a été réalisé à partir d'une lampe cassée et d'un nodeMCU. Cette lampe décorative peut être ajustée dans toutes les directions et fixée sur des matériaux magnétiques ou posée sur la table. Il peut être contrôlé en deux modes comme suit:

- Mode de contrôle sans fil, comme lien YouTube ci-dessous:

- Mode de contrôle interactif, comme lien YouTube ci-dessous:

Étape 1: Nomenclature

Liste de nomenclature:

Image
Image

Pour le mode interactif, j'utilise MPU6050 pour obtenir des données gyroscopiques de NodeMCU afin de contrôler la couleur de la lampe.

Image des matériaux pour ce projet:

Image
Image

Étape 2: CIRCUIT

CIRCUIT
CIRCUIT

C'est un circuit très simple, comme le schéma de Fritzing ci-dessus, avec 1 type d'anode commune à LED RVB, trois résistances de courant limite R100 et MPU6050.

Le réflecteur est utilisé à partir de toutes les lampes cassées et connecté à la base nodeMCU par 2 boulons ou collez-les avec de la colle forte.

Travaux d'installation:

Image
Image
Image
Image

Schéma ci-dessous:

Image
Image

Étape 3: BASE MAGNÉTIQUE - BRAS FLEXIBLE

BASE MAGNÉTIQUE - BRAS FLEXIBLE
BASE MAGNÉTIQUE - BRAS FLEXIBLE

Le bras flexible peut être réutilisé à partir de robinets flexibles cassés. Quelque chose comme ca:

Image
Image

Avec quelques astuces, nous essayons de les connecter à la base de l'aimant permanent au bas du bras flexible. Sur le dessus, nous avons percé un trou pour connecter notre carte de circuit imprimé et notre chargeur solaire/batterie. Avec cette base, nous pouvons mettre la lampe sur une surface comme une table, des sols….; ou il peut être fixé sur des matériaux magnétiques comme un pilier en acier, une structure en acier.

Étape 4: SOLAIRE – CHARGEUR DE BATTERIE

SOLAIRE – CHARGEUR DE BATTERIE
SOLAIRE – CHARGEUR DE BATTERIE

Cela venait d'une lampe de charge endommagée. J'ai ajouté un interrupteur marche/arrêt et une alimentation électrique au nodeMCU. Il dispose également d'une prise de port USB et d'une prise pour chargeur de batterie.

Étape 5: CONNECTER TOUS ENSEMBLE

CONNECTEZ TOUS ENSEMBLE
CONNECTEZ TOUS ENSEMBLE

Connexion de toutes les pièces: NodeMCU et réflecteur, cellules solaires et de batterie, bras flexible ensemble.

TERMINER

Image
Image

MODE DE CHARGE

Image
Image

Étape 6: PROGRAMME DE CONTRLE INTERACTIF

La couleur sera modifiée lorsque nous ajustons le bras flexible ou faisons pivoter la lampe.

LAMPE INTERACTIVE

#comprendre
// Adresse du périphérique esclave MPU6050
const uint8_t MPU6050SlaveAddress = 0x68;
// Sélectionnez les broches SDA et SCL pour la communication I2C - Broche par défaut dans WIRE LIBRARY: SCL - D1 & SDA - D2 sur NODEMCU
// const uint8_t SCL = D1;
// const uint8_t SDA = D2;
const int R = 14;
const entier G = 12;
const int B = 13;
// MPU6050 quelques adresses de registre de configuration
const uint8_t MPU6050_REGISTER_SMPLRT_DIV = 0x19;
const uint8_t MPU6050_REGISTER_USER_CTRL = 0x6A;
const uint8_t MPU6050_REGISTER_PWR_MGMT_1 = 0x6B;
const uint8_t MPU6050_REGISTER_PWR_MGMT_2 = 0x6C;
const uint8_t MPU6050_REGISTER_CONFIG = 0x1A;
const uint8_t MPU6050_REGISTER_GYRO_CONFIG = 0x1B;
const uint8_t MPU6050_REGISTER_ACCEL_CONFIG = 0x1C;
const uint8_t MPU6050_REGISTER_FIFO_EN = 0x23;
const uint8_t MPU6050_REGISTER_INT_ENABLE = 0x38;
const uint8_t MPU6050_REGISTER_ACCEL_XOUT_H = 0x3B;
const uint8_t MPU6050_REGISTER_SIGNAL_PATH_RESET = 0x68;
int16_t AccelX, AccelY, AccelZ, Température, GyroX, GyroY, GyroZ;
void setup() {
pinMode(R, SORTIE);
pinMode(G, SORTIE);
pinMode(B, SORTIE);
//Serial.begin(9600);
Wire.begin(SDA, SCL);
MPU6050_Init();
}
boucle vide() {
uint16_t Ax, Ay, Az, T, Gx, Gy, Gz;
uint16_t Rouge, Vert, Bleu;
Read_RawValue (MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_XOUT_H);
// Prend la valeur absolue
Ax = mesAbs(AccelX);
Ay = mesAbs(AccelY);
Az = mesAbs(AccelZ);
// Échelle dans la plage
Rouge = carte(Ax, 0, 16384, 0, 1023);
Vert = carte(Ay, 0, 16384, 0, 1023);
Bleu = carte(Az, 0, 16384, 0, 1023);
// Impression en série à vérifier
//Série.print("Rouge: "); Serial.print(Rouge);
//Série.print("Vert: "); Serial.print(Vert);
//Série.print("Bleu: "); Serial.print (Bleu);
// Ecriture analogique sur LED
analogWrite(R, Rouge); // R
analogWrite(G, Vert); // G
analogWrite(B, Bleu); //B
retard (200);
}
void I2C_Write(uint8_t deviceAddress, uint8_t regAddress, uint8_t data){
Wire.beginTransmission(deviceAddress);
Wire.write(regAddress);
Wire.write(données);
Wire.endTransmission();
}
// Lecture des 14 registres
void Read_RawValue(uint8_t deviceAddress, uint8_t regAddress){
Wire.beginTransmission(deviceAddress);
Wire.write(regAddress);
Wire.endTransmission();
Wire.requestFrom(deviceAddress, (uint8_t)14);
AccelX = (((int16_t)Wire.read()<<8) | Wire.read());
AccelY = (((int16_t)Wire.read()<<8) | Wire.read());
AccelZ = (((int16_t)Wire.read()<<8) | Wire.read());
Température = (((int16_t)Wire.read()<<8) | Wire.read());
GyroX = (((int16_t)Wire.read()<<8) | Wire.read());
GyroY = (((int16_t)Wire.read()<<8) | Wire.read());
GyroZ = (((int16_t)Wire.read()<<8) | Wire.read());
}
// Configurer le MPU6050
void MPU6050_Init(){
retard (150);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_SMPLRT_DIV, 0x07);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_PWR_MGMT_1, 0x01);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_PWR_MGMT_2, 0x00);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_CONFIG, 0x00);
I2C_Write (MPU6050SlaveAddress, MPU6050_REGISTER_GYRO_CONFIG, 0x00); // définir +/- 250 degrés/seconde pleine échelle
I2C_Write (MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_CONFIG, 0x00); // définir +/- 2g pleine échelle
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_FIFO_EN, 0x00);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_INT_ENABLE, 0x01);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_SIGNAL_PATH_RESET, 0x00);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_USER_CTRL, 0x00);
}
// Valeur absolue
flotter mesAbs(flotter){
return (in)>0?(in):-(in);
}

voir rawPROGRAMME DE LAMPE INTERACTIVE hébergé avec ❤ par GitHub

Étape 7: PROGRAMME DE CONTRLE SANS FIL ET APPLICATION ANDROID

PROGRAMME DE CONTRLE SANS FIL ET APPLICATION ANDROID
PROGRAMME DE CONTRLE SANS FIL ET APPLICATION ANDROID

Une autre façon, nous pouvons utiliser l'application Android pour contrôler les LED RVB avec Android dans le réseau WiFi. Lien App Android: APP LED RVB de contrôle NODEMCU

Pour le programme Arduino, vous pouvez vous référer à:

microcontrollerkits.blogspot.com/2016/05/es…

Après avoir téléchargé le programme sur NodeMCU, la première exécution nous donnera l'adresse IP du NodeMCU lors de l'impression série. Dans mon cas, c'est: 192.164.1.39 au port 80.

Image
Image

Maintenant, nous pouvons contrôler la lampe sans fil avec un ordinateur portable/tablette/téléphone portable en entrant l'adresse ci-dessus dans Internet Explorer.

Image
Image

Ou en utilisant l'application Android:

Image
Image

Étape 8: QUELQUES IMAGES

Conseillé: