Circuite

Cum se construiește un robot - Lecția 6: Construiți un robot Arduino care poate monitoriza densitatea CO2: 11 pași

Diseño y Construcción de un Robot Humanoide (Malakabot 2017)

Diseño y Construcción de un Robot Humanoide (Malakabot 2017)

Cuprins:

Anonim

Acesta este cel de-al cincilea tutorial al seriei "Cum se construiește un robot". În acest tutorial, vom combina platforma robotului cu senzorul de CO2, astfel încât să puteți detecta densitatea de CO2 a unei anumite zone.

La fel ca ultimele patru tutoriale, aici este folosit un set de robot Arduino (Pirate: Arduino Mobile Robot Kit 4WD cu Bluetooth 4.0).

Lecții Meniu:

Lecția 1: Introducere

Lectia 2: Construieste un robot de baza arduino

Lectia 3: Construieste un Robot Arduino de urmarire a liniei

Lectia 4: Construieste un Robot Arduino care ar putea evita obstacolele

Lectia 5: Construieste un Robot Arduino cu efecte de lumina si sunet

Lectia 6: Construieste un Robot Arduino care ar putea monitoriza mediul

Lectia 7: Construieste un Robot Arduino controlat cu Bluetooth

Componente hardware

Senzor de gaz CO2 pentru Arduino × 1

Furnituri:

Pasul 1:

Senzor tactil digital × 1

Pasul 2:

Scut protector LCD pentru Arduino × 1

Pasul 3:

M3 * 6mm coloane de nailon și cravate-wraps

Pasul 4:

INSTRUCȚIUNE DE ASAMBLARE:

PASUL 1: Adăugați senzorul tactil

Există două găuri pe senzorul de atingere pentru fixarea coloanelor din nailon.

Fixați coloanele din nailon. Nu suprasolicitați aceste coloane.

Pasul 5:

Apoi atașați senzorul tactil de pe placă.

Pasul 6:

PASUL 2: Adăugați ecranul LCD

Glisați țărmurile în cele patru găuri ale ecranului LCD și fixați-le. Tăiați partea rămasă a cravatelor.

Pasul 7:

PASUL 3: Adăugați senzorul de CO2

Fixați coloanele de nailon pe senzorul de CO2. Atașați senzorul de CO2 pe plăcuța senzorului.

Pasul 8:

Aproape ai terminat asamblarea. Nu fixați placa superioară pe platformă, deoarece trebuie să lucrăm mai târziu la conexiunea circuitului.

Pasul 9:

CONECTAREA HARDWARE-ULUI:

Țineți cablurile în ordine.

Interfața este colorată după cum urmează:

Roșu indică alimentarea

Negrul indică pământul

Albastrul indică un pin de intrare analogic

Verde indică Pin digital I / O

Monitorul LCD trebuie conectat la VCC, GND, SCL și SDA în ordinea respectivă.

Pasul 10:

CODIFICAREA

Găsiți codul numit DHT11_Display.ino și descărcați-l. Nu uitați biblioteca pentru LiquidCrystal_I2C și CO2.

Pasul 11:

După descărcarea cu succes a codului, densitatea CO2 în timp real va fi afișată pe ecranul LCD. Senzorul tactil are două funcții aici:

1. Dacă nu atingeți senzorul după o anumită perioadă de timp, acesta se va opri automat.

2. Dacă doriți să adăugați mai mulți senzori pentru a monitoriza alte date de mediu, senzorul tactil poate comuta datele de monitorizare pe ecranul LCD.

SINOPSUL CODULUI Biblioteca este importantă. Este greu de înțeles biblioteca fără bibliotecă.

#include #include

LiquidCrystal_I2C lcd (0x20,16,2);

#include "CO2.h"

CO2Sensor CO2ppm;

Aici trebuie să știți despre CO2Pin, o variabilă care este utilizată pentru a declara pinii senzorului.

int CO2Pin = A1;

Anume, DHT11Pin reprezintă Analog Pin1. Adică senzorul nostru de CO2 este conectat la pinul analogic1.

Următoarele sunt câteva declarații pentru variabilele de timp. TouchPin reprezintă senzor tactil, în timp ce 13 reprezintă pinul digital.

curentul lung Millis = 0;

long previousMillis;

Interval lung = 4000;

int count = 0; // numerotarea numerelor

int touchPin = 13;

Aduceți funcția de configurare (), care este o setare pentru inițiere.

pinMode (touchPin, INPUT);

Apoi păstrați senzorul de atingere cu un mod de introducere a textului. Pentru informații specifice, puteți verifica Arduino Reference în site-ul Arduino (www.arduino.cc), care introduce funcția pinMode ().

Apoi, trebuie să inițializați ecranul LCD și să porniți lumina LCD, ceea ce indică faptul că ecranul LCD este gata.

lcd.init ();

lcd.backlight ();

întârziere (100);

lcd.setBacklight (0);

Acum este rândul său, pentru funcția de bucla (). Mai întâi trebuie să citim valoarea de la senzorul de atingere și apoi să stocăm aceste date cu o singură touchState variabilă.

int touchState = digitalRead (touchPin);

Apoi, verificați dacă controlerul va primi un semnal de HIGH de îndată ce atingeți senzorul de atingere cu degetele, 1 va fi adăugat la contor.

dacă (touchState == HIGH) {count ++; previousMillis = milis (); }

Numărătoarea prin aceasta înseamnă de câte ori ați atins ecranul. Dar dacă atingeți doar senzorul o singură dată, atunci cantitatea de timp pentru fiecare atingere va fi inclusă în funcția millis ().

Schimbăm lungimea timpului de atingere cu o sub-propoziție care inițiază cu dacă. Intervalul aici înseamnă perioada de atingere pe care am stabilit-o. Astfel, știm ce măsuri trebuie luate în termen de patru secunde de atingere și mai mult de patru secunde atingeți, respectiv.

if (currentMillis - previousMillis <Interval) {// face ceva în 4 secunde

altceva {// face ceva mai mult de 4 secunde}

lcd.setBacklight (0);

Funcția setBacklight () este utilizată pentru a opri lampa de iluminare de fundal a ecranului LCD.

Ce măsuri trebuie luate atunci când atingem senzorul timp de mai mult de patru secunde

Dacă atingem senzorul mai mult de patru secunde, știm că lampa de iluminare de fundal LCD poate fi oprită.

ce măsuri trebuie luate în termen de patru secunde de atingere.

dacă (număr == 1) {// O singură atingere, ecranul LCD nu va afișa nicio diferență}

altceva dacă (număr == 2) {// Atingeți de două ori, valoarea va fi afișată pe ecranul LCD}

Apăsați senzorul tactil încă o dată în patru secunde; ecranul ar fi în continuare oprit. Doar dacă o atingeți de două ori în același timp, luminile de fundal LCD vor fi aprinse și vor fi afișate cifre ale densității de CO2.

Nu uitați să păstrați contorul la zero după ce ați atins ultimul timp senzorul.

count = 0;

Astfel, codul complet trebuie să fie:

dacă (count == 1) {lcd.setBacklight (0); }

altfel dacă (count == 2) {lcd.backlight (); DustShow (); count = 0; }

Apoi trebuie să ținem o evidență a timpului actual, așa cum îl putem compara cu precedentulMillis. Acest punct este foarte important.

actualMillis = milis ();

Funcția de CO2ppm.Read () este utilizată pentru citirea datelor. Și variabila CO2Value va fi utilizată pentru a stoca datele de la senzorul de CO2.

int CO2Value = CO2ppm.Read (CO2Pin);

Iată cum vom folosi funcția referitoare la ecranul LCD.

lcd.setCursor (0,0);

lcd.setCursor (0,1);

Funcția setCursor (coloană, rând) este utilizată pentru a demonstra coloana și rândul pe care este afișat cursorul, pornind de la zero în paranteze.

lcd.print (CO2Value);

print () înseamnă că această cifră poate fi afișată direct pe ecran.

lcd.print ("");

lcd.print ("") înseamnă spațiu liber afișat pe ecran. Este folosit pentru a șterge ecranul.

O combinație de senzori multipli Cum puteți combina mai mulți senzori de mediu odată ce ați cumpărat un fel de senzori?

Nu-ți face griji. Vă oferim un șablon de codificare pentru testarea mai multor senzori. Puteți face ajustări ale combinației făcând trimitere la șablonul menționat. De fapt, teoria este aceeași ca și un singur senzor, cu excepția faptului că există pași pentru modificarea ecranului LCD.

Codarea redată mai jos trebuie modificată. Am menționat mai înainte că numărul se referă la câte degete atinge senzorul. Astfel, numărul = 2 înseamnă că am apăsat de două ori și arată cifrele pentru primul senzor. Continuă! Vă rugăm să aveți în vedere că trebuie să păstrați din nou numărul zero.

Cod simplu:

dacă (currentMillis - anteriorMillis <Interval) {

dacă (count == 1) {lcd.setBacklight (0); }

altfel dacă (count == 2) {//Not.1 Sensor senzor1Show (); lcd.backlight (); }

altfel dacă (count == 3) {//No.2 Sensor Sensor2Show (); lcd.backlight (); număr = 0; }

Desigur, setarea de inițiere, declararea variabilelor la început pentru senzor este importantă.

Puteți verifica exemplul de cod numit WeatherStation.ino pentru referință dacă nu aveți încă idee cum să modificați codurile.