Inhoudsopgave:

DRAADLOZE ZONNE-LAMP MET MAGNETISCHE FLEXIBELE ARM - Ajarnpa
DRAADLOZE ZONNE-LAMP MET MAGNETISCHE FLEXIBELE ARM - Ajarnpa

Video: DRAADLOZE ZONNE-LAMP MET MAGNETISCHE FLEXIBELE ARM - Ajarnpa

Video: DRAADLOZE ZONNE-LAMP MET MAGNETISCHE FLEXIBELE ARM - Ajarnpa
Video: 10 удобных настольных аксессуаров для продуктивной работы! 2024, Juli-
Anonim
DRAADLOZE ZONNE-LAMP MET MAGNETISCHE FLEXIBELE ARM
DRAADLOZE ZONNE-LAMP MET MAGNETISCHE FLEXIBELE ARM
DRAADLOZE ZONNE-LAMP MET MAGNETISCHE FLEXIBELE ARM
DRAADLOZE ZONNE-LAMP MET MAGNETISCHE FLEXIBELE ARM

Dit project is gemaakt van een kapotte lamp & nodeMCU. Deze decoratieve lamp kan in alle richtingen worden versteld en op magnetische materialen worden bevestigd of op tafel worden gezet. Het kan als volgt in twee modi worden bestuurd:

- Draadloze bedieningsmodus, zoals YouTube-link hieronder:

- Interactieve bedieningsmodus, zoals YouTube-link hieronder:

Stap 1: MATERIALENSTUK

BOM-lijst:

Afbeelding
Afbeelding

Voor de interactieve modus gebruik ik MPU6050 om gyrogegevens van NodeMCU te krijgen om de kleur van de lamp te regelen.

Materiaal foto voor dit project:

Afbeelding
Afbeelding

Stap 2: CIRCUIT

STROOMKRING
STROOMKRING

Dit is een heel eenvoudig circuit, zoals het Fritzing-schema hierboven, met 1 RGB Led gemeenschappelijk anodetype, drie limietstroomweerstanden R100 & MPU6050.

De reflector wordt gebruikt van kapotte lampen en is verbonden met de nodeMCU-basis met 2 bouten of plak ze met sterke lijm.

Installatiewerk:

Afbeelding
Afbeelding
Afbeelding
Afbeelding

Schema hieronder:

Afbeelding
Afbeelding

Stap 3: MAGNETISCHE BASIS - FLEXIBELE ARM

MAGNETISCHE BASIS - FLEXIBELE ARM
MAGNETISCHE BASIS - FLEXIBELE ARM

Flexibele arm kan worden hergebruikt van kapotte flexibele waterkranen. Zoiets:

Afbeelding
Afbeelding

Met enkele tips proberen we ze te verbinden met de permanente magneetbasis aan de onderkant van de flexibele arm. Bovenop hebben we een boorgat gemaakt voor aansluiting op onze printplaat en zonne-/batterijlader. Met deze basis kunnen we de lamp op een oppervlak plaatsen zoals tafel, vloeren ….; of het kan worden bevestigd op magnetische materialen zoals stalen pilaar, stalen structuur.

Stap 4: ZONNE-ACCULADER

ZONNE-ACCULADER
ZONNE-ACCULADER

Het kwam van een beschadigde oplaadlamp. Ik heb een aan/uit-schakelaar en voedingsdraden toegevoegd aan nodeMCU. Het heeft ook een USB-poort en een stekker voor de batterijlader.

Stap 5: ALLES SAMEN VERBINDEN

ALLES SAMEN VERBINDEN
ALLES SAMEN VERBINDEN

Alle onderdelen verbinden: NodeMCU & reflector, zonne- & batterijcellen, flexibele arm samen.

FINISH

Afbeelding
Afbeelding

OPLAADMODUS:

Afbeelding
Afbeelding

Stap 6: INTERACTIEF BESTURINGSPROGRAMMA

De kleur verandert wanneer we de flexibele arm aanpassen of de lamp draaien.

INTERACTIEVE LAMP

#erbij betrekken
// MPU6050 Slave-apparaatadres
const uint8_t MPU6050SlaveAddress = 0x68;
// Selecteer SDA- en SCL-pinnen voor I2C-communicatie - Pin standaard in WIRE LIBRARY: SCL - D1 & SDA - D2 op NODEMCU
// const uint8_t SCL = D1;
// const uint8_t SDA = D2;
const int R = 14;
const int G = 12;
const int B = 13;
// MPU6050 weinig configuratieregisteradressen
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, Temperatuur, GyroX, GyroY, GyroZ;
ongeldige setup() {
pinMode(R, UITGANG);
pinMode (G, UITGANG);
pinMode (B, UITGANG);
//Serial.begin (9600);
Wire.begin (SDA, SCL);
MPU6050_Init();
}
lege lus() {
uint16_t Bijl, Ay, Az, T, Gx, Gy, Gz;
uint16_t Rood, Groen, Blauw;
Read_RawValue (MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_XOUT_H);
// Neem absolute waarde
Ax = mijnAbs(AccelX);
Ay = mijnAbs(AccelY);
Az = mijnAbs(AccelZ);
// Schaal binnen bereik
Rood = kaart (Ax, 0, 16384, 0, 1023);
Groen = kaart (Ay, 0, 16384, 0, 1023);
Blauw = kaart (Az, 0, 16384, 0, 1023);
// Seriële afdruk om te controleren
//Serial.print("Rood: "); Serieafdruk (Rood);
//Serial.print ("Groen: "); Serial.print (Groen);
//Serial.print ("Blauw: "); Serieafdruk (Blauw);
// Schrijf analoog naar LED
analoogWrite(R, Rood); // R
analoogWrite(G, Groen); // G
analoogWrite(B, Blauw); // B
vertraging (200);
}
void I2C_Write (uint8_t deviceAddress, uint8_t regAddress, uint8_t data){
Wire.beginTransmission (apparaatadres);
Wire.write (regAdres);
Wire.write (gegevens);
Wire.endTransmission();
}
// Lees alle 14 registers
void Read_RawValue (uint8_t deviceAddress, uint8_t regAddress){
Wire.beginTransmission (apparaatadres);
Wire.write (regAdres);
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());
Temperatuur = (((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());
}
// Configureer MPU6050
ongeldige MPU6050_Init(){
vertraging (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);//set +/- 250 graden/seconde volledige schaal
I2C_Write (MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_CONFIG, 0x00);// set +/- 2g volledige schaal
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);
}
// Absolute waarde
float myAbs(floating in){
retourneer (in)>0?(in):-(in);
}

bekijk rawINTERACTIVE LAMP PROGRAMMA gehost met ❤ door GitHub

Stap 7: DRAADLOOS BESTURINGSPROGRAMMA EN ANDROID-TOEPASSING

DRAADLOOS BESTURINGSPROGRAMMA EN ANDROID-TOEPASSING
DRAADLOOS BESTURINGSPROGRAMMA EN ANDROID-TOEPASSING

Op een andere manier kunnen we de Android-app gebruiken om RGB LED te bedienen met Android in WiFi-netwerk. Link Android App:NODEMCU controle RGB LED APP

Voor Arduino-programma kunt u verwijzen naar:

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

Na het uploaden van het programma naar NodeMCU, geeft de eerste run ons het IP-adres van de NodeMCU op seriële afdruk. In mijn geval is dat: 192.164.1.39 op poort 80.

Afbeelding
Afbeelding

Nu kunnen we de draadloze lamp bedienen met een laptop/tablet/mobiele telefoon door het adres hierboven in te voeren in Internet Explorer.

Afbeelding
Afbeelding

Of met de Android-app:

Afbeelding
Afbeelding

Stap 8: ENKELE FOTO'S

Aanbevolen: