Vegyes témakörök. 11. Robotvezérlés WiFi kapcsolaton keresztül 2. rész. Hobbielektronika csoport 2018/2019. Debreceni Megtestesülés Plébánia

Hasonló dokumentumok
Bevezetés a mikrovezérlők programozásába: DC motorok vezérlése

MSP430 programozás Energia környezetben. Szervó motorok vezérlése

Vegyes témakörök. 10. Robotvezérlés WiFi kapcsolaton keresztül. Hobbielektronika csoport 2018/ Debreceni Megtestesülés Plébánia

Nyomtatóport szintillesztő 3V3

Intelligens épületfelügyeleti rendszer tervezése mikrokontrollerrel

Silabs STK3700, Simplicity Studio laborgyakorlat

8. Laboratóriumi gyakorlat INKREMENTÁLIS ADÓ

PWM elve, mikroszervó motor vezérlése MiniRISC processzoron

Digitális technika (VIMIAA01) Laboratórium 9

Digitális technika (VIMIAA01) Laboratórium 9

Az vevő- és vezérlőáramkör programja

Aktív zajcsökkentést demonstráló rendszer továbbfejlesztése. Csofcsics Donát Gusztáv Tamás

N900 vezeték nélküli, kétsávos Gigabit router

Bevezetés a mikrovezérlők programozásába: Léptetőmotorok vezérlése

Függvények Függvények

Labor 2 Mikrovezérlők

Ismerkedés a Python programnyelvvel. és annak micropython változatával

USB I/O kártya. 12 relés kimeneti csatornával, 8 digitális bemenettel (TTL) és 8 választható bemenettel, mely analóg illetve TTL módban használható.

DC motor= egyenáramú motor, villanymotor vezérlése micro:bittel:

MSP430 programozás Energia környezetben. Az I/O portok kezelése

LPT illesztőkártya. Beüzemelési útmutató

MSP430 programozás Energia környezetben. Kitekintés, további lehetőségek

Egyszabadságfokú mechanikai rendszer irányítása nyílt hurkú vezérlés

Készítette: X. Y. 12.F. Konzulens tanár: W. Z.

Ismerkedés a Python programnyelvvel. és annak micropython változatával

The modular mitmót system. 433, 868MHz-es ISM sávú rádiós kártya

TC3XY Gyorskezdés Segéd Útmutató es verzió

I. C8051Fxxx mikrovezérlők hardverfelépítése, működése. II. C8051Fxxx mikrovezérlők programozása. III. Digitális perifériák

Bevezetés az elektronikába

A TechSon Prémium kategóriás DVR-ek beállítása távoli betekintéshez

Szkriptnyelvek. 1. UNIX shell

BASH script programozás II. Vezérlési szerkezetek

Bevezetés az elektronikába

Két típusú összeköttetés PVC Permanent Virtual Circuits Szolgáltató hozza létre Operátor manuálisan hozza létre a végpontok között (PVI,PCI)

Multiprotocol encapsulation (RFC1483) - IETF Classical IP over ATM (RFC1577) - IETF LAN Emulation (LANE) - ATM Forum Multiprotocol over ATM (MPOA) -

Programozás és Digitális technika I. Pógár István eng.unideb.hu/pogari

Nyomtatóport szintillesztő

Concurrency in Swing

SSL VPN KAPCSOLAT TELEPÍTÉSI ÚTMUTATÓ

MSP430 programozás Energia környezetben. LED kijelzok második rész

Yottacontrol I/O modulok beállítási segédlet

Bevezetés a mikrovezérlők programozásába: Az Arduino, mint logikai analizátor

Számítógépes Hálózatok GY 6.hét

E - F. frekvenciaváltó gépkönyv. Érvényes: júliustól

Hobbi Elektronika. Bevezetés az elektronikába: Műveleti erősítők - 2. rész

Tisztelt Telepítő! A központ és az alkalmazás összehangolását a következőképpen hajthatja végre:

Perifériák hozzáadása a rendszerhez

Érzékelők és beavatkozók

LPT_4DM_2a. Bekötési utasítás

Számítógépes Hálózatok GY 3-4.hét

Hálózati architektúrák laborgyakorlat

Laboratóriumi műszerek megvalósítása ARM alapú mikrovezérlővel és Linux-szal

Számítógép-hálózatok: 4. Labor. TCP kliens. A gyakorlat célja:

CAN alapú járműves adatokat megjelenítő szoftver fejlesztése

T Bird 2. AVR fejlesztőpanel. Használati utasítás. Gyártja: BioDigit Kft. Forgalmazza: HEStore.hu webáruház. BioDigit Kft, Minden jog fenntartva

DUALCOM SIA IP TELEPÍTÉSI ÉS ALKALMAZÁSI ÚTMUTATÓ. V és újabb modulverziókhoz. Dokumentum verzió:

Technológia funkciók Számláló, PWM

T Bird 2. AVR fejlesztőpanel. Használati utasítás. Gyártja: BioDigit Kft. Forgalmazza: HEStore.hu webáruház. BioDigit Kft, Minden jog fenntartva

WIFI smart alkalmazás. Kezelési útmutató.

Példa: Aktuális könyvtár tartalmának fájlba mentése, melynek neve az aktuális dátum és idő: ls l > `date+%f_%h-%m`.txt

GPRS Remote. GPRS alapú android applikáció távvezérléshez. Kezelési útmutató

Az MSP430 mikrovezérlők digitális I/O programozása

Számítógépes Hálózatok GY 8.hét

Bevezetés az elektronikába

AWK programozás, minták, vezérlési szerkezetek

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

Ütem Lámpafázisok A számláló értéke ütemmerker 1 P 0 M1 2 P 1 M2 3 P S 2 M3 4 Z 3 M4 5 Z 4 M5 6 Z 5 M6 7 Z 6 M7 8 S 7 M8

Az 555-ös időzítő használata a mikrokontrolleres tervezésben

A B C D E F. F: 4. LAN port LED G: Táp csatlakozó H: 4. LAN port I: 3. LAN port J: 2. LAN port

Kommunikációs rendszerek programozása. Routing Information Protocol (RIP)

TELE-OPERATOR UTS v.14 Field IPTV műszer. Adatlap

Hálózati Technológiák és Alkalmazások. Vida Rolland, BME TMIT november 5. HSNLab SINCE 1992

MPLAB IDE - SIM - - Rövid ismertető a használathoz - Kincses Levente 3E22 89/ November 14. Szabadka

Vegyes témakörök. 5. Gagyiszkóp házilag hangfrekvenciás jelek vizsgálata. Hobbielektronika csoport 2018/2019. Debreceni Megtestesülés Plébánia

Számítógépes Hálózatok. 3. gyakorlat

A tervfeladat sorszáma: 1 A tervfeladat címe: ALU egység 8 regiszterrel és 8 utasítással

Hálózatok építése és üzemeltetése

Szenzorhálózatok programfejlesztési kérdései. Orosz György

Az AVR programozás alapjai. Előadja: Both Tamás

Whead 3.0. Szélsebesség és széliránymérő illesztő távadó. Előzetes

Informatika terméktervezőknek

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

FEDÉLZETI INERCIÁLIS ADATGYŰJTŐ RENDSZER ALKALMAZÁSA PILÓTA NÉLKÜLI REPÜLŐGÉPEKBEN BEVEZETÉS

VB IP. IP Kommunikátor

M-Bus Master MultiPort 250D/L

Mérő- és vezérlőberendezés megvalósítása ARM alapú mikrovezérlővel és Linux-szal

A LOGSYS GUI. Fehér Béla Raikovich Tamás, Laczkó Péter BME MIT FPGA laboratórium

Számítógépes Hálózatok. 4. gyakorlat

GC1C / GC2C Zár, kapu és sorompó vezérlő. Használati utasítás Magyar

Teljesítményerősítők ELEKTRONIKA_2

Számítógépes Hálózatok GY 4.hét

ProCOM GPRS ADAPTER TELEPÍTÉSI ÉS ALKALMAZÁSI ÚTMUTATÓ. v és újabb modul verziókhoz Dokumentumverzió:

Számítógépes Hálózatok. 8. gyakorlat

MSP430 programozás Energia környezetben. Nem élhetek muzsikaszó nélkül

1. Visszacsatolás nélküli kapcsolások

GM901 Gépjármű nyomkövető, lopásgátló

NCT 101, 104, 115 szerszámgép vezérlések Telepítési leírása A.066 (M) (L) kiadási számú szoftver változattól

ASTRASUN PID Reduktor. Kézikönyv

Műveleti erősítők. Előzetes kérdések: Milyen tápfeszültség szükséges a műveleti erősítő működtetéséhez?

Átírás:

Vegyes témakörök 11. Robotvezérlés WiFi kapcsolaton keresztül 2. rész 1

DOIT NodeMCU WiFi robot 2WD (két kerék meghajtású) robot alváz elemtartóval L293D (két H-híd) motorvezérlő SMD kivitel A foglalatba illeszkedő NodeMCU (ESP8266) kártya DIRB DIRA PWMB PWMA 2

HC-020K optoérzékelő Az optoérzékelő egy IR fénysorompó A fototranzisztor jelét egy LM393 feléből kialakított komparátor fogadja, de nincs hiszterézis! A kimenő jel oszcillál az átmeneteknél, emiatt több impulzust detektálunk (átlagosan 40 db-ot egy korülfordulás során) Célszerű tehát az áramkört feljavítani! A motor tengelyre húzható korongokon 20 rés van, így egy teljes körülfordulás során 20 impulzust ad a kimeneten legalábbis elvileg 3

A HC-020K áramkörének korrekciója Hiszterézis pozitív visszacsatolással Kimenő jel szűrése Tápfeszültség szűrése Tapasztalat: a fals impulzusok megszűntek 100n 100n 100 kω 4

A HC-020K áramkörének korrekciója Az alábbi képeken a 100 kω-os visszacsatoló ellenállás és a kimenetet szűrő 100 nf-os kondenzátor beépítése látható Ezeken kívül még egy további 100 nf-os kondenzátort is beépítettünk a VCC és a GND lábak közé 5

Multitasking ESP8266 MicroPython alatt A _thread könyvtár által nyújtott preemptív többfeladatúság az ESP8266 szűkös lehetőségei miatt nincs implementálva A MicroPython újabb kiadásaiban (1.9.10-től kezdve) van támogatás a kooperatív többfeladatúságra (itt az egyes feladatoknak önként kell időnként visszaadni a vezérlést), de elég bonyololult a használata. Forráskód és leírás itt található: Peter Hinch, github.com/peterhinch/micropython-async Speciális esetekben egyszerűbb megközelítést is használhatunk Az előző előadásban említett, a TCP üzenetekre történő várakozásnál használt socket.settimeout() metódus is működik, de 0,5 s alatti időzítéseknél csomagvesztés lehet (nyomjuk a gombot, de a robot nem reagál) A Timer könyvtár felhasználásával tetszőlegesen üzemezett visszahívásokat (callback) generálhatunk - a mai előadásban ezzel a módszerrel foglalkozunk 6

machine.timer osztály A machine könyvtári modul Timer osztálya az időzítők kezelésére szolgál ESP8266 esetén csak virtuális (szoftveresen implementált) Timer áll rendelkezésre, ennek azonosítója -1, például: from machine import Timer tim1 = Timer(-1) tim2 = Timer(-1); tim1.init(period=5000, mode=timer.one_shot, callback=lambda t:print(1)) tim2.init(period=2000, mode=timer.periodic, callback=lambda t:print(2)) Metódusok Timer.init() az Timer.deinit() időzítő inicializálása (a periódus ms-ban értendő) az időzítő leállítása Működési módok: Timer.ONE_SHOT és Timer.PERIODIC 7

A robotvezérlő program felépítése Interrupt callback A A or B? B Timer callback Cmd=0? i (motor_driver függvény) Stop motors n counta++ countb++ Cmd=1? socket.accept() Cmd = decoded data Go forward n Cmd=2? Receive data i i Go reverse n az optoszenzor megszakításokat generál a motorvezérlést a Timer visszahívások, a socketet pedig a főprogram kezeli 8

Doit_car.py import network import usocket as socket from machine import Pin, PWM, Timer import time time.sleep(2) # A leállíthatóság miatt kell ap = network.wlan(network.ap_if) ap.active(true) Az alkalmazás fix IP címet feltételez ap.config(essid="esp-ap") ap.ifconfig(('192.168.1.1','255.255.255.0','192.168.1.1','192.168.1.1')) #--- Kivezetések hozzárendelése ----pwma = PWM(Pin(5)) pwmb = PWM(Pin(4)) Ezen kivezetések kiosztása fix a dira = Pin(0, Pin.OUT) motorvezérlő alaplap miatt dirb = Pin(2, Pin.OUT) optoa = Pin(12, Pin.IN, Pin.PULL_UP) optob = Pin(14, Pin.IN, Pin.PULL_UP) Firmware a Doit Car Android alkalmazáshoz #--- Globális változók --------------newcmd = lastcmd = counta = countb = 0 speed = 800 # A PWM kitöltés 0 1023 között érték lehet 9

Doit_car.py #--- Külső megszakítás visszahívási függvénye --def callback(p): Megszakításkor léptetjük global counta, countb a megfelelő számlálót if p == Pin(12): counta = counta +1 if p == Pin(14): countb = countb +1 #--- Külső megszakítások engedélyezése felfutó élre --Timer-rel ütemezetten optoa.irq(trigger=pin.irq_rising, handler=callback) periodikusan meghívatjuk optob.irq(trigger=pin.irq_rising, handler=callback) a motorvezérlő függvényt #--- Szoftveres időzítő visszahívás konfigurálása tim = Timer(-1) tim.init(period=20, mode=timer.periodic, callback=motor_driver) A GPIO12 és GPIO14-re kötött optoérzékelők megszakításokat keltenek, kiszolgálásukkor a megfelelő számlálót növeljük A virtuális Timer időzítővel periodikusan meghívjuk a motorvezérlő függvényt (motor_driver) 10

Doit_car.py def motor_driver(tim) : # Ez a Timer callback függvény global counta, countb, newcmd, lastcmd, speed ca=counta; cb=countb; cmd=newcmd # Ezeket csak egyszer olvassuk! if cmd == 0 : # --- STOP command? --if cmd!= lastcmd : pwma.duty(0) pwmb.duty(0) elif cmd == 1 : # --- GO FORWARD command? --if (cmd!= lastcmd) : # Ha új a parancs... counta = countb =0 dira.value(0) # Előre menetbe kapcsolunk dirb.value(0) pwma.duty(speed) # Motor indítás pwmb.duty(speed) elif (ca == cb) : # Korábbi parancs esetén pwma.duty(speed) # csak az együttfutást kezeljük elif (ca > cb+2) : pwma.duty(speed-200) elif (cb > ca+2) : pwma.duty(speed+200) elif cmd == 2 : # --- GO REVERSE command --#--- Ugyanaz mint a GO FORWARD parancs csak dira és dirb más ---lastcmd = cmd # Megjegyezzük a feldolgozott parancsot 11

Doit_car.py Egy TCP socketet kell nyitnunk a 9003-as porton és a kapott csomagok első karaktere lesz a parancs kódja (0 9) Az üres üzenetcsomagot átlépjük (kapcsolat bontásakor jön ilyen) s = socket.socket(socket.af_inet, socket.sock_stream) s.setsockopt(socket.sol_socket, socket.so_reuseaddr, 1) s.bind(('', 9003)) s.listen(0) # print("listening, connect client to 192.168.1.1:9003") while True: conn, addr = s.accept() data=conn.recv(1024) # print('received:',data,'from',addr) if data: newcmd = data[0]-48 conn.close() 12

Doit Car.apk A Doit NodeMcu alapú robotjához készített firmware és applikáció (sta és ap) itt található: github.com/smartarduino/doitcar Leírás: smartarduino.gitbooks.io/user-manual-for-wifi-car-by-nodemcu-doitcar-/ Mi az ap verziót használjuk, melynek előnye a közvetlen kapcsolat (nem kell router) Hátrány: fix IP címet (192.168.1.1) és port számot (9003) feltételez Rövid TCP üzenetekkel kommunikál, az első karakter a gomb kódja Kilépéskor egy üres üzenetet küld 13 1 3 0 4 2

NodeMCU kártya MicroPythonnal 14