Súprava modulov Grove pre Raspberry Pi programovateľná v Pythone

Ak ešte nemáte dostatok skúseností so zapojovaním elektronických obvodov a chcete si vyskúšať fungovanie čidiel a displejov a ďalších komponentov pripojených k vývojovým doskám, riešením sú modulové stavebnice Grove. Sú k dispozícii pre všetky populárne mikrontrolérové vývojové dosky – Arduino, Raspberry PI, či BBC micro:bit. V tomto článku a videu predstavíme  možnosti stavebnice Grove pre vývojovú dosku Raspberry PI. Cena stavebnice je okolo 40 eur.

Predstavenie stavebnice a príklady sú vo videu:

Hlavným problémom u mnohých začínajúcich záujemcov o IoT a programovanie je, že sa boja, aby to nezapojili zle a nezničili elektronické obvody. A práve pre túto skupinu sú určené modulové stavebnice Grove na rýchlu tvorbu prototypov. Každý modul má jednu funkciu, napríklad meranie teploty, vlhkosti, meranie vzdialenosti ultrazvukom, zobrazovanie údajov na displeji a podobne.

Potrebné moduly stačí pripojiť základnej doske Base Shield a ste pripravení na testovanie svojich nápadov.

Jediné, na čo je potrebné dávať pozor je, aby ste moduly s analógovým rozhraním pripojili do analógových konektorov, moduly vyžadujúce digitálne vstupy a výstupy do digitálnych konektorov, ktoré využívajú komunikačnú zbernicu je potrebné pripojiť do zásuvky príslušného komunikačného rozhrania I2C, UART a servomotory do konektorov označených PWM.

Aby ste mohli jednoducho programovať aj zložitejšie komponenty ako je sedemsegmentový displej, či ultrazvukový snímač vzdialeností potrebujete do Raspberry Pi doinštalovať knižnice pre programovací jazyk Python. Postup je vo videu.

Príklady sme robili na Raspberry Pi 400, čo je mikropočítač v klávesnici, takže stačilo pripojiť monitor a myš. A ešte povoliť rozhranie I2C.

Zostava Raspberry Pi 400. Pre zaujímavosť vľavo je notebook s grabberom AverMedia na zachytenie deja na obrazovom výstupe Raspberry do videa.

Aby ste mohli jednoducho programovať aj zložitejšie komponenty ako je sedemsegmentový displej, či ultrazvukový snímač vzdialeností potrebujete do Raspberry Pi doinštalovať knižnice pre programovací jazyk Python. Postup je vo videu.

Na inštaláciu knižníc z Githubu je potrebné zadať z konzolovej aplikácie na Raspberry príkazy:

curl -sL https://github.com/Seeed-Studio/grove.py/raw/master/install.sh | sudo bash -s –
git clone https://github.com/Seeed-Studio/grove.py

Programy v Pythone môžete zadávať v niektorom z vývojových prostredí, napríklad Thoony Python, či Mu.

Námetom prvého príkladu je blikanie LED diódou na jednom z modulov.

import time
from grove.grove_ryb_led_button import GroveLedButton

def main():
    ledbtn = GroveLedButton(5)

    while True:
        ledbtn.led.light(True)
        time.sleep(1)

        ledbtn.led.light(False)
        time.sleep(1)

if __name__ == '__main__':
    main()

Vľavo servomotor a senzor intenzity osvetlenia, vpravo senzor teploty a vlhkosti a LCD displej na zobrazovanie nameraných hodnôt.

V ďalšom príklade budeme simulovať zaťahovanie žalúzií podľa osvetlenia, takže použijeme senzor intenzity osvetlenia a servomotor.

import time

from grove.grove_servo import GroveServo
from grove.grove_light_sensor_v1_2 import GroveLightSensor

def main():
    servo = GroveServo(12)
    sensor = GroveLightSensor(0)

    while True:
        angle = sensor.light * 180 / 1000
        print('osvetlenie {}, uhol {} stupňov.'.format(sensor.light, angle))
        servo.setAngle(angle)

        time.sleep(1)

if __name__ == '__main__':
    main()

Keď už riešime simuláciu smarthome, tak budeme simulovať rozsvietenie svetla pri priblížení. Na spínanie použijeme relé a na meranie vzdialenosti ultrazvukový snímač.  Ultrazvukový merač vzdialenosti indikuje vzdialenosť predmetu, napríklad ruky od snímača. Vzdialenosť za meria na základe oneskorenia ultrazvukového signálu, ktorý sa od predmetu odrazí.  Možno vás prekvapí, že modul sa pripája len na jeden digitálny vstup. Funguje tak, že jeho elektronika generuje obdĺžnikový signál a šírka signálu závisí od nameranej vzdialenosti.

import time

from grove.grove_relay import GroveRelay
from grove.grove_ultrasonic_ranger import GroveUltrasonicRanger

def main():
    sensor = GroveUltrasonicRanger(5)
    relay = GroveRelay(16)

    while True:
        distance = sensor.get_distance()
        print('{} cm'.format(distance))

        if distance < 20:
            relay.on()
            print('relé zapnuté')

            time.sleep(1)

            relay.off()
            print('relé vypnuté')

            continue

        time.sleep(1)

if __name__ == '__main__':
    main()

A ešte príklad na meranie teploty a vlhkosti so zobrazovaním nameraných hodnôt na dvojriadkovom LCD displeji:

import time

from seeed_dht import DHT
from grove.display.jhd1802 import JHD1802

def main():
    lcd = JHD1802()
    sensor = DHT('11', 5)

    while True:
        humi, temp = sensor.read()
        print('teplota {}C, vlhkost {}%'.format(temp, humi))

        lcd.setCursor(0, 0)
        lcd.write('teplota: {0:2}C'.format(temp))

        lcd.setCursor(1, 0)
        lcd.write('vlhkost: {0:5}%'.format(humi))

        time.sleep(1)

if __name__ == '__main__':
    main()

To bolo niekoľko príkladov, tieto a mnohé ďalšie sú na wiki stránke výrobcu.


Převzato z webu Nextech se souhlasem autora.