User Tools

Site Tools


ultimatestarterkit

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
ultimatestarterkit [2019/04/25 10:16]
tamas [18. Projekt, 9g Szervó]
ultimatestarterkit [2019/05/02 10:58] (current)
tamas [30. Projekt, Talaj nedvesség érzékelő]
Line 2042: Line 2042:
  
 =====19. Projekt, ULN2003 Léptető motor===== =====19. Projekt, ULN2003 Léptető motor=====
 +
 +**Bevezetés**
 +
 +Ebben a projektben megtanuljuk,​ hogyan forgassunk meg egy léptetőmotort 360°-ban Raspberry Pi segítségével.
 +
 +**Eszközszükséglet**
 +
 +   * 1 db Léptető motor a hozzá tartozó vezérlővel
 +   * Keyestudio RPI GPIO-PCF8591 kártya
 +
 +**Eszközök csatlakoztatása**
 +
 +A képre kattintva nagyobb méretben is megtekinthető.
 +
 +{{ :​rpistarterkit:​p19_01.png |}}
 +
 +**Programozás**
 +
 +Először hozzunk létre egy új fájlt **leptetomotor.c** néven.
 +
 +   * **sudo nano leptetomotor.c**
 +
 +{{ :​rpistarterkit:​p19_02.png |}}
 +
 +Ezután írjuk a fájlba a következő kódot.
 +
 +<​html>​
 +<pre>
 +/* moto.c
 +* A program to control a stepper motor through the GPIO on Raspberry Pi. 
 +* Author: Darran Zhang (http://​www.codelast.com) ​
 +*/ 
 +#include &​lt;​wiringPi.h&​gt;​
 +#include &​lt;​stdio.h&​gt;​
 +#include &​lt;​unistd.h&​gt;​
 +#include &​lt;​stdlib.h&​gt;​
 + 
 +#define CLOCKWISE 1
 +#define COUNTER_CLOCKWISE 2
 +void delayMS(int x);
 +void rotate(int* pins, int direction);
 +int main(int argc,char* argv[]) {
 +  if (argc < 4) {
 +    printf("​Igy hasznald kerlek: ./​leptetomotor 0 1 2 3 \n");
 +    return 1;
 +  }
 + 
 +  /* number of the pins which connected to the stepper motor driver board */
 +  int pinA = atoi(argv[1]);​
 +  int pinB = atoi(argv[2]);​
 +  int pinC = atoi(argv[3]);​
 +  int pinD = atoi(argv[4]);​
 + 
 +  int pins[4] = {pinA, pinB, pinC, pinD};
 + 
 +  if (-1 == wiringPiSetup()) {
 +    printf("​Setup wiringPi failed!"​);​
 +    return 1;
 +  }
 + 
 +  /* set mode to output */
 +  pinMode(pinA,​ OUTPUT);
 +  pinMode(pinB,​ OUTPUT);
 +  pinMode(pinC,​ OUTPUT);
 +  pinMode(pinD,​ OUTPUT);
 + 
 +  delayMS(50); ​   // wait for a stable status ​
 +  for (int i = 0; i < 500; i++) {
 +    rotate(pins,​ CLOCKWISE);
 +  }
 + 
 +  return 0;
 +}
 + 
 +/* Suspend execution for x milliseconds intervals.
 + ​* ​ @param ms Milliseconds to sleep.
 + */
 +void delayMS(int x) {
 +  usleep(x * 1000);
 +}
 + 
 +/* Rotate the motor.
 + ​* ​ @param pins     A pointer which points to the pins number array.
 + ​* ​ @param direction ​ CLOCKWISE for clockwise rotation, COUNTER_CLOCKWISE for counter clockwise rotation.
 + */
 +void rotate(int* pins, int direction) {
 +  for (int i = 0; i < 4; i++) {
 +    if (CLOCKWISE == direction) {
 +      for (int j = 0; j < 4; j++) {
 +        if (j == i) {
 +          digitalWrite(pins[3 - j], 1); // output a high level 
 +        } else {
 +          digitalWrite(pins[3 - j], 0); // output a low level 
 +        }
 +      }
 +    } else if (COUNTER_CLOCKWISE == direction) {
 +      for (int j = 0; j < 4; j++) {
 +        if (j == i) {
 +          digitalWrite(pins[j],​ 1); // output a high level 
 +        } else {
 +          digitalWrite(pins[j],​ 0); // output a low level 
 +        }
 +      }
 +    }
 +    delayMS(4);
 +  }
 +}
 +</​pre>​
 +</​html>​
 +
 +{{ :​rpistarterkit:​p19_03.png |}}
 +
 +Mentsük el a fájlt, majd tegyük futtathatóvá a már jól ismert GCC parancs segítségével.
 +
 +   * **sudo gcc leptetomotor.c -o leptetomotor -lwiringPi**
 +
 +{{ :​rpistarterkit:​p19_04.png |}}
 +
 +Végül futtassuk a programot, és adjuk meg neki, hogy egy teljes kört menjen, az alábbi módon.
 +
 +   * **sudo ./​leptetomotor 0 1 2 3**
 +
 +{{ :​rpistarterkit:​p19_05.png |}}
  
 ---- ----
  
 =====20. Projekt, Photo ellenállás===== =====20. Projekt, Photo ellenállás=====
 +
 +**Bevezetés**
 +
 +Ebben a projektben egy photo ellenállással fogjuk mérni a fény erősségét,​ és ennek függvényében vezéreljük egy LED fényét.
 +
 +**Eszközszükséglet**
 +
 +   * 1 db Photo ellenállás
 +   * 1 db Piros LED
 +   * 2 db Ellenállás
 +
 +**Eszközök csatlakoztatása**
 +
 +A képre kattintva nagyobb méretben is megtekinthető.
 +
 +{{ :​rpistarterkit:​p20_01.png |}}
 +
 +**Programozás**
 +
 +Először is be kell kapcsolnunk az I2C vezérlő egységet a Raspberry beállításaiban.
 +
 +   * **sudo rapsi-config**
 +
 +{{ :​rpistarterkit:​p20_02.png |}}
 +
 +Itt menjünk az **Interfacing Options**-ba.
 +
 +{{ :​rpistarterkit:​p20_03.png |}}
 +
 +Itt válasszuk ki az **I2C** pontot, és kapcsoljuk be.
 +
 +{{ :​rpistarterkit:​p20_04.png |}}
 +
 +Majd nyomjuk meg kétszer a jobbra nyilat és válasszuk a **Finish**-t és lépjünk ki.
 +
 +{{ :​rpistarterkit:​p20_05.png |}}
  
 +----
 +
 +Amint ezekkel kész vagyunk jöhet a programozás. Hozzunk létre egy új fájlt **photoellenallas.c** néven.
 +
 +   * **sudo nano photoellenallas.c**
 +
 +{{ :​rpistarterkit:​p20_06.png |}}
 +
 +Majd írjuk bele a következő kódot.
 +
 +<​html>​
 +<pre>
 +
 +
 +
 +</​pre>​
 +</​html>​
 +
 +{{ :​rpistarterkit:​p20_07.png |}}
 +
 +Mentsük el, majd tegyük futtathatóvá a fájlt a GCC parancs segítségével.
 +
 +   * **sudo gcc photoellenallas.c -o photoellenallas -lwriringPi**
 +
 +{{ :​rpistarterkit:​p20_08.png |}}
 +
 +Végül futtassuk a fájlt és nézzük meg az eredményt. Amit kiír az az A0 tehát Analóg porton olvasott értékek, ami a beeső fény erősségét mutatja, minél több, annál jobban fog világítani a LED.
 +
 +{{ :​rpistarterkit:​p20_09.png |}}
 ---- ----
  
 =====21. Projekt, LM35 Hőmérséklet érzékelő===== =====21. Projekt, LM35 Hőmérséklet érzékelő=====
 +
 +**Bevezetés**
 +
 +Ebben a részben, egy hőmérséklet ​ érzékelő szenzort fogunk vizsgálni.
 +
 +**Eszközszükséglet**
 +
 +   * 1 db LM35 Hőmérséklet érzékelő
 +
 +**Eszközök csatlakoztatása**
 +
 +A képre kattintva nagyobb méretben is megtekinthető.
 +
 +{{ :​rpistarterkit:​p21_01.png |}}
 +
 +**Programozás**
 +
 +Elsőként ha még nem tettük meg, kapcsoljuk be az I2C modult. Erre leírást a 20-as projektben talál.
 +
 +Ha ezt megcsinálta,​ hozzon létre egy új fájlt **homero.c** néven.
 +
 +   * **sudo nano homero.c**
 +
 +{{ :​rpistarterkit:​p21_02.png |}}
 +
 +Ezután írjuk bele a következő kódot.
 +
 +<​html>​
 +<pre>
 +
 +#include &​lt;​wiringPi.h&​gt;​
 +#include &​lt;​pcf8591.h&​gt;​
 +#include &​lt;​stdio.h&​gt;​
 +
 +#define Address 0x48
 +#define BASE 64
 +#define A0 BASE+0
 +#define A1 BASE+1
 +#define A2 BASE+2
 +#define A3 BASE+3
 +
 +int main(void)
 +{
 +        unsigned char value;
 + wiringPiSetup();​
 + pcf8591Setup(BASE,​Address);​
 +
 + while(1)
 + {
 +               ​value=analogRead(A0); ​
 +               ​value=(500 * value) /256;             
 +               ​printf("​Temp:​%d C\n",​value);​
 +               ​delay(50);​
 +
 + }
 +}
 +
 +</​pre>​
 +</​html>​
 +
 +{{ :​rpistarterkit:​p21_03.png |}}
 +
 +Mentsük el, majd tegyük futtathatóvá a fájlt a GCC paranccsal.
 +
 +   * **sudo gcc homero.c -o homero -lwiringPi**
 +
 +{{ :​rpistarterkit:​p21_04.png |}}
 +
 +Végül futtassuk a programot, ha mindent jól kötöttünk,​ akkor a képernyőn megjelenik a mért hőmérséklet.
 +
 +   * **sudo ./homero**
 +
 +{{ :​rpistarterkit:​p21_05.png |}}
  
 ---- ----
  
 =====22. Projekt, PCF8591 Potméter===== =====22. Projekt, PCF8591 Potméter=====
 +
 +**Bevezetés**
 +
 +A Raspberry Pi alapvetően nem rendelkezik AD / DA (A : Analóg, D : Digitális) átalakító funkcióval,​ ezért ha analóg jelet akarunk érzékelni csatlakoztatni kell hozzá a Keyestudio RPI GPIO-PCF8591 kártyát. Ezután be kell kapcsolni az I2C interfészt,​ hogy tudjuk használni az analóg csatlakozót.
 +
 +**Eszközszükséglet**
 +
 +   * 1 db Potenciométer
 +   * Keyestudio RPI GPIO-PCF8591 kártya
 +
 +**Eszközök csatlakoztatása**
 +
 +A képre kattintva nagyobb méretben is megtekinthető.
 +
 +{{ :​rpistarterkit:​p22_01.png |}}
 +
 +**Programozás**
 +
 +Először kapcsoljuk be az I2C modult, ha még nem lenne bekapcsolva. Ennek részletes leírását a 20-as projektben találja.
 +
 +Ha bekapcsoltuk,​ akkor hozzunk létre egy új fájlt **potmeter.c** néven.
 +
 +  * **sudo nano potmeter.c**
 +
 +{{ :​rpistarterkit:​p22_02.png |}}
 +
 +Írjuk a fájlba a következő kódot.
 +
 +<​html>​
 +<pre>
 +
 +#include &​lt;​wiringPi.h&​gt;​
 +#include &​lt;​pcf8591.h&​gt;​
 +#include &​lt;​stdio.h&​gt;​
 +
 +#define Address 0x48         //​pcf8591 Address
 +#define BASE 64
 +#define A0 BASE+0 ​          //​input address of A0
 +#define A1 BASE+1 ​          //​input address of A1
 +#define A2 BASE+2 ​          //​input address of A2
 +#define A3 BASE+3 ​          //​input address of A3
 +int main(void)
 +{
 +    unsigned char value;
 + wiringPiSetup();​
 + pcf8591Setup(BASE,​Address); ​       //configure pcf8591
 +
 + while(1)
 + {
 +               ​value=analogRead(A0); ​    // read the value of A0 port         
 +               ​printf("​A0:​%d\n",​value); ​ // print the value of A0 on the terminal
 +               ​delay(100);​
 + }
 +}
 +
 +</​pre>​
 +</​html>​
 +
 +{{ :​rpistarterkit:​p22_03.png |}}
 +
 +Mentsük el, majd tegyük futtathatóvá a Raspberry számára a GCC paranccsal.
 +
 +  * **sudo gcc potmeter.c -o potmeter -lwiringPi**
 +
 +{{ :​rpistarterkit:​p22_04.png |}}
 +
 +Végül futtassuk a programot, ha jól csináltuk a potmétert tekergetve különböző értékeket kapunk majd.
 +
 +  * **sudo ./​potmeter**
 +
 +{{ :​rpistarterkit:​p22_05.png |}}
  
 ---- ----
  
 =====23. Projekt, PIR Mozgásérzékelő szenzor===== =====23. Projekt, PIR Mozgásérzékelő szenzor=====
 +
 +**Bevezetés**
 +
 +Ebben a projektben egy PIR mozgásérzékelőt fogunk használni, annak érdekében,​ hogy megállapítsuk van-e valaki a helységben vagy sem. Ha mozgást észlel kiírja "​Somebody is in this area!" ha nemNo one!".
 +
 +**Eszközszükséglet**
 +
 +   * 1 db PIR mozgásérzékelő
 +   * 1 db Piros LED
 +   * 1 db Ellenállás
 +   * Keyestudio RPI GPIO-PCF8591 kártya
 +
 +**Eszközök csatlakoztatása**
 +
 +A képre kattintva megtekinthető nagyobb méretben is.
 +
 +{{ :​rpistarterkit:​p23_01.png |}}
 +
 +**Programozás**
 +
 +Először hozzunk létre egy új fájlt **mozgaserzekelo.c** néven.
 +
 +   * **sudo nano mozgaserzekelo.c**
 +
 +{{ :​rpistarterkit:​p23_02.png |}}
 +
 +Ebbe a fájlba írjuk bele a következő kódot.
 +
 +<​html>​
 +<pre>
 +
 +#include &​lt;​wiringPi.h&​gt;​
 +#include &​lt;​stdio.h&​gt;​
 +
 +int main()
 +{
 +  wiringPiSetup();​
 +  char val;
 +  {
 +    pinMode(1,​INPUT);​
 +    pinMode(2,​OUTPUT);​
 +  }
 +  ​
 +  while(1)
 +  { 
 +   ​val=digitalRead(1);​
 +   ​if(val==1)
 +  {
 +   ​printf("​Somebody is in this area!\n"​);​
 +   ​digitalWrite(2,​HIGH);​
 +   ​delay(100);​
 +  }
 +
 +   else
 +  {
 +   ​printf("​No one!\n"​);​
 +   ​digitalWrite(2,​LOW);​
 +   ​delay(100);​
 +  }
 +  }
 +}
 +
 +</​pre>​
 +</​html>​
 +
 +{{ :​rpistarterkit:​p23_03.png |}}
 +
 +Mentsük el, majd tegyük futtathatóvá a GCC paranccsal.
 +
 +   * **sudo gcc mozgaserzekelo.c -o mozgaserzekelo -lwiringPi**
 +
 +{{ :​rpistarterkit:​p23_04.png |}}
 +
 +Végül futtassuk a fájlt, a megszokott módon.
 +
 +   * **sudo ./​mozgaserzekelo**
 +
 +{{ :​rpistarterkit:​p23_05.png |}}
 +
  
 ---- ----
  
 =====24. Projekt, MQ-2 Analóg Gáz érzékelő===== =====24. Projekt, MQ-2 Analóg Gáz érzékelő=====
 +
 +**Bevezetés**
 +
 +Ebben a projektben egy analóg ház szenzort fogunk tesztelni. Megmérjük,​ hogy tartalmaz-e nagy mennyiségben a levegő, propán, hidrogén, vagy egyéb gázokat.
 +
 +**Eszközszükséglet**
 +
 +   * 1 db Analóg gáz érzékelő
 +   * Keyestudio RPI GPIO-PCF8591 kártya
 +
 +**Eszközök csatlakoztatása**
 +
 +A képre kattintva nagyobb méretben is megtekinthető.
 +
 +{{ :​rpistarterkit:​p24_01.png |}}
 +
 +**Programozás**
 +
 +Először is be kell kapcsolni az I2C modult, amennyiben még nincs bekapcsolva,​ vagy nem tudja hogyan kellene, menjen vissza a 20. Projekthez és ott megtalálja a bekapcsoláshoz szükséges lépéseket.
 +
 +Bekapcsolás után hozzunk létre egy új fájlt **gazerzekelo.c** néven.
 +
 +   * **sudo nano gazerzekelo.c**
 +
 +{{ :​rpistarterkit:​p24_02.png |}}
 +
 +Ezután írjuk bele a következő kódot.
 +
 +<​html>​
 +<pre>
 +
 +#include &​lt;​wiringPi.h&​gt;​
 +#include &​lt;​pcf8591.h&​gt;​
 +#include &​lt;​stdio.h&​gt;​
 +
 +#define Address 0x48
 +#define BASE 64
 +#define A0 BASE+0
 +#define A1 BASE+1
 +#define A2 BASE+2
 +#define A3 BASE+3
 +
 +int main(void)
 +{
 +      unsigned char value;
 + wiringPiSetup();​
 +      pinMode(1,​OUTPUT);​
 + pcf8591Setup(BASE,​Address);​
 +        ​
 + while(1)
 + {
 +        value=analogRead(A0); ​             ​
 +        printf("​A0:​%d\n",​value);​
 +        delay(100);
 + }
 +     }
 +
 +
 +</​pre>​
 +</​html>​
 +
 +{{ :​rpistarterkit:​p24_03.png |}}
 +
 +Mentsük el, majd tegyük futtathatóvá a fájlt a Raspberry számára a GCC paranccsal.
 +
 +   * **sudo gcc gazerzekelo.c -o gazerzekelo -lwiringPi**
 +
 +{{ :​rpistarterkit:​p24_04.png |}}
 +
 +Végül futtassuk a fájlt és nézzük meg a végeredményt.
 +
 +   * **sudo ./​gazerzekelo**
 +
 +{{ :​rpistarterkit:​p24_05.png |}}
 +
  
 ---- ----
  
 =====25. Projekt, ADXL345 Gyorsulás mérő ===== =====25. Projekt, ADXL345 Gyorsulás mérő =====
 +
 +**Bevezetés**
 +
 +Ebben a projektben, egy három tengelyes gyorsulás mérőt csatlakoztatunk a Raspberryhez,​ amivel képesek vagyunk mérni a legkisebb elmozdulást is.
 +
 +**Eszközszükséglet**
 +
 +  * 1 db ADXL345 gyorsulás mérő
 +  * Keyestudio RPI GPIO-PCF8591 kártya
 +
 +**Eszközök csatlakoztatása**
 +
 +A képre kattintva megtekinthető nagyobb méretben is.
 +
 +{{ :​rpistarterkit:​p25_01.png |}}
 +
 +**Programozás**
 +
 +Először is be kell kapcsolnunk az I2C modult, amennyiben még nincs bekapcsolva,​ vagy nem tudja hogyan kell, menjen vissza a 20. Projekthez ahol részletesen elmagyarázzuk,​ hogy is kell csinálni.
 +
 +Ezután hozzunk létre egy új fájlt **gyorsulas.c** néven.
 +
 +  * **sudo nano gyorsulas.c**
 +
 +{{ :​rpistarterkit:​p25_02.png |}}
 +
 +Ezután írjuk a következő kódot a fájlba.
 +
 +<​html>​
 +<pre>
 +#include &​lt;​wiringPiI2C.h&​gt;​
 +#include &​lt;​stdio.h&​gt;​
 +#include &​lt;​stdlib.h&​gt;​
 +#include &​lt;​errno.h&​gt;​
 +
 +#​define ​ DevAddr ​ 0x53  //device address
 +
 +struct acc_dat{
 + int x;
 + int y;
 + int z;
 +};
 +
 +void adxl345_init(int fd)
 +{
 + wiringPiI2CWriteReg8(fd,​ 0x31, 0x0b);
 + wiringPiI2CWriteReg8(fd,​ 0x2d, 0x08);
 +//​ wiringPiI2CWriteReg8(fd,​ 0x2e, 0x00);
 + wiringPiI2CWriteReg8(fd,​ 0x1e, 0x00);
 + wiringPiI2CWriteReg8(fd,​ 0x1f, 0x00);
 + wiringPiI2CWriteReg8(fd,​ 0x20, 0x00);
 +
 + wiringPiI2CWriteReg8(fd,​ 0x21, 0x00);
 + wiringPiI2CWriteReg8(fd,​ 0x22, 0x00);
 + wiringPiI2CWriteReg8(fd,​ 0x23, 0x00);
 +
 + wiringPiI2CWriteReg8(fd,​ 0x24, 0x01);
 + wiringPiI2CWriteReg8(fd,​ 0x25, 0x0f);
 + wiringPiI2CWriteReg8(fd,​ 0x26, 0x2b);
 + wiringPiI2CWriteReg8(fd,​ 0x27, 0x00);
 +
 + wiringPiI2CWriteReg8(fd,​ 0x28, 0x09);
 + wiringPiI2CWriteReg8(fd,​ 0x29, 0xff);
 + wiringPiI2CWriteReg8(fd,​ 0x2a, 0x80);
 + wiringPiI2CWriteReg8(fd,​ 0x2c, 0x0a);
 + wiringPiI2CWriteReg8(fd,​ 0x2f, 0x00);
 + wiringPiI2CWriteReg8(fd,​ 0x38, 0x9f);
 +}
 +
 +struct acc_dat adxl345_read_xyz(int fd)
 +{
 + char x0, y0, z0, x1, y1, z1;
 + struct acc_dat acc_xyz;
 +
 + x0 = 0xff - wiringPiI2CReadReg8(fd,​ 0x32);
 + x1 = 0xff - wiringPiI2CReadReg8(fd,​ 0x33);
 + y0 = 0xff - wiringPiI2CReadReg8(fd,​ 0x34);
 + y1 = 0xff - wiringPiI2CReadReg8(fd,​ 0x35);
 + z0 = 0xff - wiringPiI2CReadReg8(fd,​ 0x36);
 + z1 = 0xff - wiringPiI2CReadReg8(fd,​ 0x37);
 +
 + acc_xyz.x = (int)(x1 << 8) + (int)x0;
 + acc_xyz.y = (int)(y1 << 8) + (int)y0;
 + acc_xyz.z = (int)(z1 << 8) + (int)z0;
 +
 + return acc_xyz;
 +}
 +
 +int main(void)
 +{
 + int fd;
 + struct acc_dat acc_xyz;
 +
 + fd = wiringPiI2CSetup(DevAddr);​
 +
 + if(-1 == fd){
 + perror("​I2C device setup error"​);​
 + }
 +
 + adxl345_init(fd);​
 +
 + while(1){
 + acc_xyz = adxl345_read_xyz(fd);​
 + printf("​x:​ %05d  y: %05d  z: %05d\n",​ acc_xyz.x, acc_xyz.y, acc_xyz.z);
 +
 + }
 +
 + return 0;
 +}
 +</​pre>​
 +</​html>​
 +
 +{{ :​rpistarterkit:​p25_03.png |}}
 +
 +Mentsük el, majd tegyük futtathatóvá a fájlt a GCC parancs segítségével.
 +
 +  * **sudo gcc gyorsulas.c -o gyorsulas -lwiringPi**
 +
 +{{ :​rpistarterkit:​p25_04.png |}}
 +
 +Végül futtassuk a programot, ha mindent jól csináltunk,​ akkor ha mozgatjuk az eszközt akkor megkapjuk az elmozdulás mértékét.
 +
 +  * **sudo ./​gyorsulas**
 +
 +{{ :​rpistarterkit:​p25_05.png |}}
  
 ---- ----
  
 =====26. Projekt, Ultrahangos érzékelő ===== =====26. Projekt, Ultrahangos érzékelő =====
 +
 +**Bevezetés**
 +
 +Ebben a projektben egy ultrahangos érzékelővel fogjuk mérni, hogy az adott tárgy milyen messze van tőlünk adott távolságon belül.
 +
 +**Eszközszükséglet**
 +
 +  * 1 db Ultrahangos érzékelő
 +  * Keyestudio RPI GPIO-PCF8591 kártya
 +
 +**Eszközök csatlakoztatása**
 +
 +A képre kattintva megtekinthető nagyobb méretben is.
 +
 +{{ :​rpistarterkit:​p26_01.png |}}
 +
 +**Programozás**
 +
 +Hozzunk létre egy új fájlt **ultrahang.c** néven.
 +
 +  * **sudo nano ultrahang.c**
 +
 +{{ :​rpistarterkit:​p26_02.png |}}
 +
 +Ezután írjuk bele a következő C nyelvű kódot.
 +
 +<​html>​
 +<pre>
 +
 +#include &​lt;​wiringPi.h&​gt;​
 +#include &​lt;​stdio.h&​gt;​
 +#include &​lt;​sys/​time.h&​gt;​
 +
 +#define Trig    5
 +#define Echo   4
 +void ultraInit(void)
 +{
 + pinMode(Echo,​ INPUT);
 + pinMode(Trig,​ OUTPUT);
 +}
 +
 +float disMeasure(void)
 +{
 + struct timeval tv1;
 + struct timeval tv2;
 + long start, stop;
 + float dis;
 +
 + digitalWrite(Trig,​ LOW);
 + delayMicroseconds(2);​
 +
 + digitalWrite(Trig,​ HIGH);
 + delayMicroseconds(10); ​    
 +    digitalWrite(Trig,​ LOW);
 +
 + while(!(digitalRead(Echo) == 1));
 + gettimeofday(&​tv1,​ NULL); ​          
 +
 + while(!(digitalRead(Echo) == 0));
 + gettimeofday(&​tv2,​ NULL); ​          
 +
 + start = tv1.tv_sec * 1000000 + tv1.tv_usec; ​  
 + stop  = tv2.tv_sec * 1000000 + tv2.tv_usec;​
 +
 + dis = (float)(stop - start) / 1000000 * 34000 / 2;  ​
 +
 + return dis;
 +}
 +
 +int main(void)
 +{
 + float dis;
 +
 + if(wiringPiSetup() == -1){ //when initialize wiring failed,​print messageto screen
 + printf("​setup wiringPi failed !");
 + return 1; 
 + }
 +
 + ultraInit();​
 +
 + while(1){
 + dis = disMeasure();​
 + printf("​distance = %0.2f cm\n",​dis);​
 + delay(500);​
 + }
 +
 + return 0;
 +}
 +
 +</​pre>​
 +</​html>​
 +
 +{{ :​rpistarterkit:​p26_03.png |}}
 +
 +Mentsük el, majd tegyük futtathatóvá a GCC parancs segítségével.
 +
 +  * **sudo gcc ultrahang.c -o ultrahang -lwiringPi**
 +
 +{{ :​rpistarterkit:​p26_04.png |}}
 +
 +Futtassuk a fájlt, ha mindent jól csináltunk akkor közel pontosan megkapjuk, hogy az adott tárgy milyen távolságra van a szenzortól.
 +
 +  * **sudo ./​ultrahang**
 +
 +{{ :​rpistarterkit:​p26_05.png |}}
  
 ---- ----
  
 =====27. Projekt, Joystick modul ===== =====27. Projekt, Joystick modul =====
 +
 +**Bevezetés**
 +
 +A joystick modul 2 potenciométerből áll, amit megfeleltetünk X és Y tengelynek. Z tengelynek egy gombot használunk. A joystick jeleit analóg módon tudjuk érzékelni ezért szükségünk van a Keyestudio RPI GPIO... kártyájára,​ mivel a Raspberry önmagában nem rendelkezik ilyen ki/​bemenettel.
 +
 +**Eszközszükséglet**
 +
 +  * 1 db Joystick modul
 +  * Keyestudio RPI GPIO-PCF8591 kártya
 +
 +**Eszközök csatlakoztatása**
 +
 +A képre kattintva megtekinthető nagyobb méretben is.
 +
 +{{ :​rpistarterkit:​p27_01.png |}}
 +
 +**Programozás**
 +
 +Mivel analóg modult használunk,​ először be kell kapcsolni az I2C modult. Amennyiben még nem tette meg vagy nem tudja hogy kell, menjen vissza a 20. Projekthez, ahol minden részletesen el van magyarázva.
 +
 +Ezután hozzunk létre egy új fájlt **joystick.c** néven.
 +
 +  * **sudo nano joystick.c**
 +
 +{{ :​rpistarterkit:​p27_02.png |}}
 +
 +Majd írjuk bele a következő kódot.
 +
 +<​html>​
 +<pre>
 +
 +#include &​lt;​wiringPi.h&​gt;​
 +#include &​lt;​pcf8591.h&​gt;​
 +#include &​lt;​stdio.h&​gt;​
 +
 +#define Address 0x48
 +#define BASE 64
 +#define A0 BASE+0
 +#define A1 BASE+1
 +#define A2 BASE+2
 +#define A3 BASE+3
 +char dat;
 +
 +int main(void)
 +{
 +        unsigned char value;
 + wiringPiSetup();​
 +        pinMode(1,​INPUT);​
 + pcf8591Setup(BASE,​Address);​
 + while(1)
 + {
 +               ​value=analogRead(A0); ​             ​
 +               ​printf("​X:​%d ​   ",​value);​
 +               ​value=analogRead(A1); ​             ​
 +               ​printf("​Y:​%d ​   ",​value);​
 +               ​dat=digitalRead(1);​
 +               ​if(dat==HIGH)
 +                  printf("​DO:​%d\n",​dat);​
 +               ​if(dat==LOW)
 +                  printf("​DO:​%d\n",​dat);​
 +               ​delay(100);​
 +
 +               // analogWrite(BASE,​value++);​
 +               // printf("​AOUT:​%d\n",​value++);​
 +               // delay(50);
 + }
 +}
 +
 +</​pre>​
 +</​html>​
 +
 +{{ :​rpistarterkit:​p27_03.png |}}
 +
 +Mentsük el, majd tegyük futtathatóvá a GCC parancs segítségével.
 +
 +  * **sudo gcc joystick.c -o joystick -lwiringPi**
 +
 +{{ :​rpistarterkit:​p27_04.png |}}
 +
 +Majd végül futtassuk a programot, ha mindent jól csináltunk,​ megkapjuk X,Y és Z értéket ahol Z gombként van jelen.
 +
 +  * **sudo ./​joystick**
 +
 +{{ :​rpistarterkit:​p27_05.png |}}
  
 ---- ----
  
 =====28. Projekt, 5V Relay ===== =====28. Projekt, 5V Relay =====
 +
 +**Bevezetés**
 +
 +Ebben a projektben, egy egyszerű 5V-os relét fogunk tesztelni. A relé attól függően kapcsol hogy magas vagy alacsony jelet kap. Ezzel a módszerrel fogunk egy LED-et villogtatni a következőkben.
 +
 +**Eszközszökséglet**
 +
 +  * 1 db Relay modul
 +  * 1 db Piros LED
 +  * 1 db Ellenállás
 +  * Keyestudio PRI GPIO-PCF8591 kártya
 +
 +**Eszközök csatlakoztatása**
 +
 +A képre kattintva megtekinthető ​ nagyobb méretben is.
 +
 +{{ :​rpistarterkit:​p28_01.png |}}
 +
 +**Programozás**
 +
 +Első lépésként,​ hozzunk létre egy új fájlt **relay.c** néven.
 +
 +  * **sudo nano relay.c**
 +
 +{{ :​rpistarterkit:​p28_02.png |}}
 +
 +Ezután írjuk bele a következő kódot.
 +
 +<​html>​
 +<pre>
 +
 +#include &​lt;​wiringPi.h&​gt;​
 +int main()
 +{
 +  wiringPiSetup();​
 +
 +  {
 +        pinMode(1,​OUTPUT);​
 +  }
 +  ​
 +  while(1)
 +  { 
 +        digitalWrite(1,​HIGH);​
 +        delay(500);
 +        digitalWrite(1,​LOW);​
 +        delay(500);​   ​
 +  }
 +
 +}
 +
 +</​pre>​
 +</​html>​
 +
 +{{ :​rpistarterkit:​p28_03.png |}}
 +
 +Mentsük el, majd tegyük futtathatóvá a GCC paranccsal.
 +
 +  * **sudo gcc relay.c -o relay -lwiringPi**
 +
 +{{ :​rpistarterkit:​p28_04.png |}}
 +
 +Végül futtassuk, ha mindent jól csináltunk,​ egy kattogó hang keretében a LED fel és le fog kapcsolni. A kattogó hang ahogy a relay kapcsolja a benne lévő mechanikus kapcsolót.
 +
 +  * **sudo ./relay**
 +
 +{{ :​rpistarterkit:​p28_05.png |}}
  
 ---- ----
  
 =====29. Projekt, DHT11 Hőmérséklet és Páratartalom érzékelő ===== =====29. Projekt, DHT11 Hőmérséklet és Páratartalom érzékelő =====
 +
 +**Bevezetés**
 +
 +
  
 ---- ----
Line 2087: Line 2957:
 =====30. Projekt, Talaj nedvesség érzékelő ===== =====30. Projekt, Talaj nedvesség érzékelő =====
  
 +**Bevezetés**
 +
 +Ebben a projektbe, a talaj nedvesség tartalmának vizsgálására alkalmas eszközt fogunk tesztelni.
 +
 +**Eszközszükséglet**
 +
 +  * 1 db Talaj nedvesség érzékelő
 +  * Keyestudio RPI GPIO-PCF8591 kártya
 +
 +**Eszközök csatlakoztatása**
 +
 +A képre kattintva nagyobb méretben is megtekinthető.
 +
 +{{ :​rpistarterkit:​p30_01.png |}}
 +
 +**Programozás**
 +
 +Első lépésként kapcsoljuk be az I2C modult, amennyiben még nincs bekapcsolva,​ vagy nem tudja, hogyan kell, menjen vissza a 20. Projekthez ahol részletesen elmagyarázzuk,​ a bekapcsolás menetét.
 +
 +Bekapcsolás után, hozzunk létre egy úgy fájlt **talajnedvesseg.c** néven.
 +
 + * **sudo nano talajnedvesseg.c**
 +
 +{{ :​rpistarterkit:​p30_02.png |}}
 +
 +Majd írjuk bele a következő kódot.
 +
 +<​html>​
 +<pre>
 +
 +#include &​lt;​wiringPi.h&​gt;​
 +#include &​lt;​pcf8591.h&​gt;​
 +#include &​lt;​stdio.h&​gt;​
 +
 +#define Address 0x48
 +#define BASE 64
 +#define A0 BASE+0
 +#define A1 BASE+1
 +#define A2 BASE+2
 +#define A3 BASE+3
 +
 +int main(void)
 +{
 +    unsigned char value;
 + wiringPiSetup();​
 + pcf8591Setup(BASE,​Address);​
 +
 + while(1)
 + {
 +               ​value=analogRead(A0); ​             ​
 +               ​printf("​S:​%d\n",​value);​
 +               ​delay(50);​
 + }
 +}
 +
 +</​pre>​
 +</​html>​
 +
 +{{ :​rpistarterkit:​p30_03.png |}}
 +
 +Mentsük el, majd tegyük futtathatóvá GCC paranccsal.
 +
 +  * **sudo gcc talajnedvesseg.c -o talajnedvesseg -lwiringPi**
 +
 +{{ :​rpistarterkit:​p30_04.png |}}
 +
 +Végül futtassuk és nézzük meg milyen értéket ad a talaj nedvességére.
 +
 +  * **sudo ./​talajnedvesseg**
 +
 +{{ :​rpistarterkit:​p30_05.png |}}
 ---- ----
  
ultimatestarterkit.1556180182.txt.gz · Last modified: 2019/04/25 10:16 by tamas