V článku sme predstavili stavebnicu Arduino Smarthome Kit, ktorá okrem dielov dreveného domčeka obsahuje riadiacu dosku kompatibilnú s Arduinom, nadstavbu Sensor Shield, modul pre bluetooth komunikáciu, dvojriadkový displej, množstvo senzorov, dva servomotory, jednosmerný motor a moduly s tlačidlami a LED diódami. V tomto článku ukážeme jednoduché príklady demonštrujúce softvérovú obsluhu týchto hardvérových modulov a motorčekov.
Video s príkladmi
Pozrite si fungovanie modelu smarthome
Riadiaca doska a Sensor Shield
Začneme dvomi modulmi s LEDkami. Prvá aplikácia je modifikovaný príklad „blinky“ pre Arduino, ktorá rozbliká LED diódy pripojené na porty D5 (žltá) a D13 (biela)
void setup() {
// pin 5 a 13 ako output.
pinMode(5, OUTPUT);
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(5, HIGH);
digitalWrite(13, LOW);
delay(500);
digitalWrite(5, LOW);
digitalWrite(13, HIGH);
delay(500);
}
Vľaho modul s LED diódou a servo na otváranie okna, vpravo modul s relé a na streche jednosmerný motor
Prakticky rovnaký kód môžeme použiť na periodické spínanie relé. Je pripojené na porte D12
int Relay = 12; // relé na pine D12
void setup ()
{
pinMode (Relay, OUTPUT); // relé
}
void loop ()
{
digitalWrite (Relay, HIGH);
delay (2000);
digitalWrite (Relay, LOW);
delay (2000);
}
Na reguláciu jasu LED použijeme PWM, čiže pulzne šírkovú moduláciu
int ledPin = 5; //Oranzova LED pin D5
void setup () {
pinMode (ledPin, OUTPUT);
}
void loop () {
for (int value = 0; value<255; value = value + 1) {
analogWrite (ledPin, value); //PWM ako analógový výstup
delay (5); // delay 5MS
}
for (int value = 255; value>0; value = value-1) {
analogWrite (ledPin, value); // stmievanie
delay (5); // delay 5MS
}}
Modul s bielou LED, dva tlačidlá, PIR senzor pohybu, displej a v ruke je senzor vlhkosti pôdy
Tlačidlá sú pripojené na portoch D4 a D8, ktoré je potrebné nakonfigurovať ako vstupy. Po zatlačení tlačidla na D4 sa rozsvieti žltá LED na porte D5
int ledpin = 5;
int inpin = 4; // tlacidlo
int val; // premenna
void setup ()
{
pinMode (ledpin, OUTPUT); // LED --output
pinMode (inpin, INPUT); // tlacidlo -- input
}
void loop ()
{
val = digitalRead (inpin); // logická úroveň na tlačidle
if (val == LOW) // ak je zatlacene
{digitalWrite (ledpin, HIGH);}
else
{digitalWrite (ledpin, LOW);}
}
Dvojriadkový LCD displej je pripojený štyrmi vodičmi na rozhranie I2C, ktoré využíva signály SCL a SDA.
V ďalšom príklade vyskúšame fotodiódu, ktorá je pripojená na analógový vstup A1.
Senzor dažďa, osvetlenia a obvod na ovládanie jednosmerného motora
Hodnota intenzity svetla, technicky je to hodnota napätia sa prenáša cez sériové rozhranie, ktoré sa využíva aj na programovanie Arduina. Hodnoty si môžete zobraziť pomocou nástroja Monitor sériového portu, ktorý je súčasť Arduino IDE a zobrazíte ho v menu Nástroje
int LED = 5; // oranžová LED na D5
int val = 0; // premenná na načítanie napätie
void setup () {
pinMode (LED, OUTPUT); // LED ako output
Serial.begin (9600); // Rýchlosť sériovej komunikácie
}
void loop () {
val = analogRead (A1); // napätie na pine A1
Serial.println (val); // výstup na sériový port
if (val <200)
{// LED vypnutá
digitalWrite (LED, HIGH);
}
else
{// LED zapnutá
digitalWrite (LED, LOW);
}
delay (10);
}
Rovnako načítame aj hodnotu vlhkosti vzduchu zo senzora na streche modulu pripojeného na port A3
void setup()
{
Serial.begin(9600); //open serial port, and set baud rate at 9600bps
}
void loop()
{
int val;
val=analogRead(3); //údaj zo senzora
Serial.println(val,DEC); //výstup na seriový port
delay(100); //100ms
}
Senzor pohybu je pripojený na port D2, takže poskytuje len hodnoty 0 (nie je pohyb) a 1 (detegovaný pohyb). Pohyb budeme indikovať bielou LED na porte D13
void setup () {
Serial.begin (9600);
pinMode (2, INPUT); // DPIR vstup na D2
Serial.begin (9600);
pinMode (13, OUTPUT); // LED na D13
}
void loop () {
Serial.println (digitalRead (2));
delay (500); // 500ms
if (digitalRead (2) == 1) // ak je detegovaný pohyb
{
digitalWrite (13, HIGH); // LED ON
} else // ak nie je pohyb
{
digitalWrite (13, LOW); // LED OFF
}
}
Senzor horľavých plynov otestujete jednoducho. Stačí pod senzor dať nádobku, v ktorej je trochu alkoholického nápoja. Alkoholové výpary sú predsa tiež horľavé a pre takýto test sa alkohol určite hodí lepšia ako napríklad zapáchajúci acetón. My sme vo videu použili bylinkový likér.
Senzor je pripojený na analógový vstup A1 a prekročenie nastavenej úrovne indikuje pípnutím bzučiaka
int MQ2 = A0; // MQ2 gas senzora ako A0
int val = 0; // premenná
int buzzer = 3; // zvuk
void setup ()
{
pinMode (MQ2, INPUT); // MQ2 ako input
Serial.begin (9600); // seriový port
pinMode (buzzer, OUTPUT);
}
void loop ()
{
val = analogRead (MQ2); // hodnota zo senzoru
Serial.println (val); // na seriový port
if (val> 100)
{
tone (buzzer, 589);
delay(300);
}
else
{
noTone (buzzer);
}
}
Servomotory sú použité na simuláciu otvárania a zatváranie okna a dverí.
Mechanizmus ovládania okna vľavo a dverí vpravo
V príklade je natočenie serva z jednej krajnej polohy do druhej
for(pos = 180; pos>=1; pos-=1) // Angle from 180 to 0 degrees
{
myservo.write (pos);
delay (15); // 15ms
}
}
Smer otáčania jednosmerného motora sa ovláda pomocou signálov na portoch D6 a D7. V príklade sa motorček striedavo otáča na jednu a druhú stranu
void setup () {
pinMode (7, OUTPUT);
pinMode (6, OUTPUT);
}
void loop () {
digitalWrite (7, LOW);
digitalWrite (6, HIGH); // fwd
delay (3000); // delay 3S
digitalWrite (7, LOW);
digitalWrite (6, LOW); //stop
delay (2000); //delay 1S
digitalWrite (7, HIGH);
digitalWrite (6, LOW); // reverz
delay (3000); // delay 3S
}
Bluetooth modul na komunikáciu so smartfónom otestujete jednoduchým programom, ktorý povely prijaté cez bluetooth zobrazuje cez monitor sériového portu. Takže si stiahnite aplikáciu keyes IoT a skúste ovládanie. Povely sa zatiaľ nebudú zobrazovať
//test bluetooth
char val;
void setup()
{
Serial.begin(9600);
}
void loop()
{
while (Serial.available()>0)
{
val=Serial.read();// Read the value sent by Bluetooth
Serial.print(val);// The serial port prints the read value
Smart houm a zistíš, že platíš za vychytávky tisíce ročne. Kto nanosí dreva a uhlia do pece? Arduino? :-D reakcia na: Arduino Smarthome Kit – príklady softvérovej obsluhy senzorov a motorov
2.5.2021 14:05
Smart houm a zistíš, že platíš za vychytávky tisíce ročne. Kto nanosí dreva a uhlia do pece? Arduino? :-D