Cuprins:

Plot de intensitate a luminii folosind Arduino și Python Arduino Master Library: 5 pași
Plot de intensitate a luminii folosind Arduino și Python Arduino Master Library: 5 pași

Video: Plot de intensitate a luminii folosind Arduino și Python Arduino Master Library: 5 pași

Video: Plot de intensitate a luminii folosind Arduino și Python Arduino Master Library: 5 pași
Video: Controlul intensității luminii folosind LDR și matrice de LED-uri 2024, Noiembrie
Anonim
Plotarea intensității luminii utilizând Arduino și Python Arduino Master Library
Plotarea intensității luminii utilizând Arduino și Python Arduino Master Library

Arduino fiind un instrument economic, dar extrem de eficient și funcțional, programarea acestuia în Embedded C face procesul de realizare a proiectelor obositor! Modulul Arduino_Master al Python simplifică acest lucru și ne permite să efectuăm calcule, să eliminăm valorile gunoiului și să trasăm un grafic pentru o reprezentare vizuală a datelor.

Dacă nu știți încă despre acest modul, instalați-l folosind comanda pip install Arduino_Master

Nu vă faceți griji dacă nu știți cum să utilizați acest modul, vizitați acest link => Arduino_Master

Cu toate acestea, codul pentru acest proiect va fi întotdeauna disponibil în acest instructable.

Provizii

Pentru acest proiect, veți avea nevoie de următoarele:

  1. Un Arduino
  2. Un rezistor dependent de lumină (LDR) și
  3. Python 3 instalat pe computer.

Pasul 1: Construirea circuitului dvs.:

Construirea circuitului tău
Construirea circuitului tău

Vom folosi pinul A1 al Arduino pentru a obține date de intrare. De asemenea, puteți utiliza pinii 5V și GND ai Arduino în locul bateriei. Faceți conexiunea după cum urmează:

  1. Conectați un capăt al LDR la terminalul pozitiv al unei baterii de 5V sau la pinul de 5V al Arduino.
  2. Conectați celălalt capăt al LDR în paralel cu pinul A1 și borna negativă a bateriei sau pinul GND al Arduino.
  3. Folosiți un rezistor pentru a vă asigura că tot curentul nu curge către GND, ceea ce vă va determina să nu obțineți un semnal suficient de puternic pentru a detecta la terminalul A1 al Arduino. (Folosesc un rezistor de 10k ohmi).

Pasul 2: Programarea Arduino:

Modulul Arduino_Master utilizează Serial Monitor al Arduino pentru a trimite și primi date. Avantajul utilizării acestui modul este că, odată ce vă programați Arduino, puteți schimba singur programul Python pentru diferite proiecte, deoarece programarea în Python este relativ mai ușoară!

Cod:

// Variabila LDR_1 este utilizată pentru a indica pinul A1 al Arduino.

int LDR_1 = A1;

// Datele primite de la A1 vor fi stocate în LDR_Value_1.

float LDR_Value_1;

Intrare șir;

configurare nulă ()

{pinMode (LDR_1, INPUT); // LDR_1 este setat ca pin INPUT. Serial.begin (9600); // Debitul de comunicare este setat la 9600.}

bucla nulă ()

{if (Serial.available ()> 0) // dacă există o intrare disponibilă pe monitorul serial, continuați. {input = Serial.readString (); // Citiți intrarea ca un șir. if (input == "DATA") {LDR_Value_1 = analogRead (LDR_1) * (5.0 / 1023.0); // (5/1023) este factorul de conversie pentru a obține valoare în volți. Serial.println (LDR_Value_1); // Dacă intrarea este egală cu „DATA”, atunci citiți intrarea din LDR_1 și imprimați-o pe monitorul serial. } else int i = 0; // dacă intrarea nu este egală cu „DATA”, nu faceți nimic! }

}

Pasul 3: Programarea Python pentru graficarea datelor de la Arduino:

Fiecare LDR ar avea propriile sale valori de rezistență și trebuie să ne amintim că nu la componentele electronice sunt întotdeauna exact identice în funcționare. Astfel, mai întâi trebuie să găsim tensiunea la diferite intensități de lumină.

Încărcați următorul program în IDE-ul dvs. python și rulați-l:

Faceți acest lucru pentru diferite intensități de lumină și, folosind graficul, trageți o concluzie, de exemplu, dacă intensitatea este mai mică de 1, camera este prea întunecată. Pentru intensitate între 1 și 2, camera este considerabil întunecată. Pentru intensitate mai mare de 2, lumina este pornită.

# Importul modulului Arduino_Master

din importul Arduino_Master *

# colectarea datelor

date = filter (ardata (8, squeeze = False, dynamic = True, msg = "DATA", lines = 30), expected_type = 'num', limit = [0, 5])

# limita este setată la 5, deoarece utilizăm o baterie de 5V.

# Trasarea valorilor

Grafic (date, stl = 'întuneric_fundament', etichetă = 'Intensitate luminoasă')

Pasul 4: Program final pentru verificarea intensității luminii într-o cameră

După ce ați ajuns la o concluzie din datele obținute, încărcați următorul program și asigurați-vă că modificați limitele conform concluziei dvs.

# Importul modulului Arduino_Master

din Arduino_Master import # colectarea datelor = filter (ardata (8, squeeze = False, dynamic = True, msg = "DATA", lines = 50), expected_type = 'num', limit = [0, 5]) #classifying data pe baza concluziei info = pentru i în interval (len (date)): intensitate = date dacă intensitatea 1 și intensitatea = 2: info.append („Lumina aprinsă”) # Plotarea graficului. compGraph (date, informații, stl = 'fundal_intunecat', etichetă1 = 'Intensitate luminoasă', etichetă2 = 'Stat')

Pasul 5: Rezultat:

Rezultat
Rezultat

Programul ar dura un minut sau două pentru a rula, deoarece citiți 50 de valori instantanee din Arduino.

Dacă doriți să accelerați procesul, încercați să modificați parametrul liniilor funcției ardata. Dar amintiți-vă că cu cât observațiile sunt mai mici, cu atât calitatea datelor ar fi mai mică.

Notă: Dacă graficul complet din imaginea de mai sus nu este vizibil, consultați graficul de deasupra secțiunii Introducere.

Recomandat: