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/30 10:04]
tamas [24. Projekt, MQ-2 Analóg Gáz érzékelő]
ultimatestarterkit [2019/05/02 10:58] (current)
tamas [30. Projekt, Talaj nedvesség érzékelő]
Line 2485: Line 2485:
 **Eszközök csatlakoztatása** **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 |}}
  
  
Line 2490: Line 2552:
  
 =====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 2511: 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.1556611477.txt.gz · Last modified: 2019/04/30 10:04 by tamas