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.