Detektor světelného zdroje

V podvozkové vaně Kamila, vepředu, uprostřed mezi koly, je umístěn tubus s fotorezistorem, kterým můžeme vyhledávat přítomnost speciálního světelného zdroje. Speciálnost spočívá v papírové krabici 30x10cm, vyložené alobalem, uprostřed s jednou LED žárovkou, která je zapojena v robotem ovládané 433MHz zásuvce 240V. Předpokládá se, že světelný zdroj je umístěn na podlaze (v úrovni tubusu s fotorezistorem) a míří směrem, ve kterém se Kamil bude nacházet ve chvíli, kdy na základě instrukce 241*01*B01 programovacího jazyka KemoPro, začne robot, krok po krůčku, světelný zdroj hledat. Parametr 01 znamená, že začne vyhledávat z pozice, ve které se nachází, vpravo (vlevo je 10), a pokud světlo najde, najde jeho střed, azimut nalezeného směru uloží do registru č. 1 k dalšímu zpracování a pokračuje následující instrukcí. Pokud se otočí o 360 stupňů, a světlo nenajde, osloví svým hlasem přihlížející, aby mu s vyhledáním zdroje světla pomohli (světlo nesvítí, je nevhodně umístěno, je příliš daleko), aby pak zdroj světla zkusil najít na druhý pokus. Šířka zdroje světla 30cm by se mohla zdát zbytečně velkou, umožňuje ale vyhledávání z dostatečné vzdálenosti. Kamil se při skenování prostoru neotáčí plynule, on se pohybuje po co nejmenších krocích, kterých je schopen (jsou dány přilnavostí kol k podložce a výkonem motorů). Čím vzdálenější je světlo od čidla, tím větší je kruhový oblouk, na kterém se zdroj světla nachází, a mohlo by se stát, že robot při vyhledávání světelný zdroj prostě "přeskočí". Výhodou větší šířky světelného zdroje naopak je, že můžeme z počtu kroků, které robot udělá cestou přes světlo, vypočítat přibližnou vzdálenost, ve které se Kamil od světla nachází. 

Zde je elektrický obvod, který poskytuje digitální stav detektoru, jehož citlivost nastavujeme trimrem R3.
Toto zapojení dává při světle logickou 0, za tmy logickou 1.
 

 

 


# ukázka kódu

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO_fotores = 18 
GPIO.setup(GPIO_fotores,GPIO.IN)

print("Test fotorezistoru, ukončete Ctrl-C")

while True:
    majak = GPIO.input(GPIO_fotores)

    if majak == 1:
        print("Žádné světlo...")
        
    else:    
        print("Vidím světlo!")

    time.sleep(0.5)     #

GPIO.cleanup()   # uvolnění použitých GPIO    

Zpět na "Robot Kamil HW"