This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
ultimatestarterkit [2019/05/02 08:50] tamas [25. Projekt, ADXL345 Gyorsulás mérő] |
ultimatestarterkit [2019/05/02 10:58] tamas [30. Projekt, Talaj nedvesség érzékelő] |
||
---|---|---|---|
Line 2559: | Line 2559: | ||
**Eszközszükséglet** | **Eszközszükséglet** | ||
- | * **1 db ADXL345 gyorsulás mérő | + | * 1 db ADXL345 gyorsulás mérő |
* Keyestudio RPI GPIO-PCF8591 kártya | * Keyestudio RPI GPIO-PCF8591 kártya | ||
Line 2681: | Line 2681: | ||
=====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 <wiringPi.h> | ||
+ | #include <stdio.h> | ||
+ | #include <sys/time.h> | ||
+ | |||
+ | #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 <wiringPi.h> | ||
+ | #include <pcf8591.h> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | #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 <wiringPi.h> | ||
+ | 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 2698: | 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 <wiringPi.h> | ||
+ | #include <pcf8591.h> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | #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 |}} | ||
---- | ---- | ||