Inhoudsopgave:

Lichtintensiteit plotten met Arduino en Python's Arduino Master Library - Ajarnpa
Lichtintensiteit plotten met Arduino en Python's Arduino Master Library - Ajarnpa

Video: Lichtintensiteit plotten met Arduino en Python's Arduino Master Library - Ajarnpa

Video: Lichtintensiteit plotten met Arduino en Python's Arduino Master Library - Ajarnpa
Video: Как использовать инфракрасный датчик расстояния Sharp с Arduino (скачать код) 2024, December
Anonim
Lichtintensiteit plotten met behulp van Arduino en Python's Arduino Master Library
Lichtintensiteit plotten met behulp van Arduino en Python's Arduino Master Library

Arduino is een economisch maar zeer efficiënt en functioneel hulpmiddel, waardoor het programmeren in Embedded C het proces van het maken van projecten vervelend maakt! Arduino_Master-module van Python vereenvoudigt dit en laat ons berekeningen uitvoeren, afvalwaarden verwijderen en een grafiek plotten voor een visuele weergave van gegevens.

Als je deze module nog niet kent, installeer hem dan met het commando pip install Arduino_Master

Maak je geen zorgen als je niet weet hoe je deze module moet gebruiken, bezoek deze link => Arduino_Master

De code voor dit project zal echter altijd beschikbaar zijn in deze instructable.

Benodigdheden

Voor dit project heb je het volgende nodig:

  1. Een Arduino
  2. Een lichtafhankelijke weerstand (LDR) en
  3. Python 3 geïnstalleerd op uw computer.

Stap 1: Uw circuit bouwen:

Uw circuit bouwen
Uw circuit bouwen

We zullen pin A1 van Arduino gebruiken om invoergegevens te krijgen. Je kunt ook de 5V- en GND-pinnen van Arduino gebruiken in plaats van de batterij. Maak de verbinding als volgt:

  1. Sluit het ene uiteinde van de LDR aan op de positieve pool van een 5V-batterij of op de 5V-pin van de Arduino.
  2. Sluit het andere uiteinde van de LDR parallel aan op pin A1 en de negatieve pool van de batterij of GND-pin van Arduino.
  3. Gebruik een weerstand om ervoor te zorgen dat niet alle stroom naar de GND stroomt, waardoor u geen sterk genoeg signaal krijgt om te voelen bij de A1-aansluiting van de Arduino. (Ik gebruik een weerstand van 10k ohm).

Stap 2: Programmeren van uw Arduino:

Arduino_Master-module gebruikt seriële monitor van de Arduino om gegevens te verzenden en te ontvangen. Het voordeel van het gebruik van deze module is dat je, als je eenmaal je Arduino hebt geprogrammeerd, het python-programma alleen voor verschillende projecten kunt wijzigen, omdat programmeren in python relatief eenvoudiger is!

Code:

// LDR_1 variabele wordt gebruikt om pin A1 van Arduino aan te duiden.

int LDR_1 = A1;

// Gegevens ontvangen van A1 worden opgeslagen in LDR_Value_1.

zweven LDR_Value_1;

String-ingang;

ongeldige setup()

{ pinMode(LDR_1, INPUT); // LDR_1 is ingesteld als een INPUT-pin. Serieel.begin(9600); // Communicatie baudrate is ingesteld op 9600. }

lege lus()

{ if(Serial.available()>0) // als er input beschikbaar is in de seriële monitor, ga dan verder. { input=Serial.readString(); // Lees de invoer als een string. if(input=="DATA") { LDR_Value_1=analogRead (LDR_1) * (5.0 / 1023.0); // (5 / 1023) is de conversiefactor om de waarde in Volt te krijgen. Serial.println(LDR_Value_1); // Als de invoer gelijk is aan "DATA", lees dan de invoer van LDR_1 en druk deze af op de seriële monitor. } anders int i=0; // als invoer niet gelijk is aan "DATA", niets doen! }

}

Stap 3: Python programmeren om gegevens van Arduino te plotten:

Elke LDR zou zijn eigen weerstandswaarden hebben en we moeten niet vergeten dat geen enkele elektronische component ooit exact identiek is in werking. Dus eerst moeten we de spanning vinden bij verschillende lichtintensiteiten.

Upload het volgende programma naar uw python IDE en voer het uit:

Doe dit voor verschillende lichtintensiteiten en trek met behulp van de grafiek een conclusie, bijvoorbeeld als de intensiteit minder dan 1 is, is de kamer te donker. Voor een intensiteit tussen 1 en 2 is de kamer behoorlijk donker. Bij een intensiteit groter dan 2 wordt het licht ingeschakeld.

# Arduino_Master-module importeren

van Arduino_Master import *

# gegevens verzamelen

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

# limiet is ingesteld op 5 omdat we een 5V-batterij gebruiken.

# De waarden plotten

Graph(data, stl='dark_background', label='Lichtintensiteit')

Stap 4: Laatste programma om de intensiteit van het licht in een kamer te controleren

Nadat u tot een conclusie bent gekomen op basis van de gegevens die u hebt gekregen, uploadt u het volgende programma en zorgt u ervoor dat u de limieten wijzigt volgens uw conclusie.

# Arduino_Master-module importeren

van Arduino_Master import # gegevens verzamelen data=filter(ardata(8, squeeze=False, dynamic=True, msg="DATA", lines=50), Expected_type='num', limit=[0, 5]) #classifying data gebaseerd op conclusie info= for i in range(len(data)): intensity=data if intensity 1 and intensity=2: info.append('Light ON') # De grafiek plotten. compGraph(data, info, stl='dark_background', label1='Lichtintensiteit', label2='State')

Stap 5: Resultaat:

Resultaat
Resultaat

Het programma zou een minuut of twee nodig hebben om te draaien, aangezien u 50 onmiddellijke waarden van Arduino leest.

Als je het proces wilt versnellen, probeer dan de line-parameter van de ardata-functie te wijzigen. Maar onthoud dat hoe minder waarnemingen, hoe minder de kwaliteit van de gegevens zou zijn.

Opmerking: als de volledige grafiek in de bovenstaande afbeelding niet zichtbaar is, raadpleegt u de grafiek boven het gedeelte Inleiding.

Aanbevolen: