Programovatelný domácí robot Kamil (na Raspberry Pi 4)
Napsal: 18 led 2024, 20:03
Ahoj roboťáci.
Co dělat v důchodu, když jeden celý život strávil s počítači, od sálových monster v klimatizovaných halách, až po dnešní nadupanou giga a tera techniku do klína?
Pořídit si jednodeskový počítač Raspberry Pi 4, proniknout do základů Linuxu, přeorientovat se z dříve používaných programovacích jazyků na Python, projít nabídku různých I/O modulů a jiných udělátek, zapojit hlavu, nadšení, zkoušet a zase zkoušet, až nakonec začít stavět domácího robota, který neumí jen sledovat čáru nebo blikat různobarevnými LEDkami. Budu rád, když vyjádříte své názory, pochyby a připomínky, nebo Vám můj projekt přinese nějaké informce k použitým modulům, třeba funkční zdrojové kódy v Pythonu.
Moc zkušeností s bastlením jsem zpočátku neměl, proto jsem při stavbě použil většinou již hotové I/O moduly s ovladači. Jak postupně přibývaly, zvětšovalo se i množství drátů, které je propojovaly. S tím zápolím dodnes. Asi by to chtělo pár desek s plošnými spoji, na to ale už nemám, třesou se mi ruce a byla by to strašná pájecí prasárna.
Robot má v úrovni podvozkové vany rozměry 20x30 cm, hmotnost necelé 4 kg. Robot jezdí, otáčí a kýve hlavou, mrká očima, a když mluví, simuluje pohyb úst. Když si ho nevšímáte, umí i zahálet (dělá různé ptákoviny), když ho hrubě uchopíte a nakloníte, myslí si, že ho unášíte neznámo kam, a nadává. Tyto "životně důležité" činnosti už jsou tedy naprogramovány v Pythonu, ale je jich poměrně omezený počet. Hlavní devizu vidím v možnosti programovat robota v jeho vlastním jazyku, jehož jednoduché instrukce zvládnou i malé děti (popojeď vpřed 20 cm, otoč se vlevo, zavři oči, skloň hlavu, přehraj zvukový soubor). Umožňuje samozřejmě i pokročilejší práci s proměnnými, registry, procedurami, apod. Kamil má své webové stránky robot-kamil.cz. Vzhledem ke stále bouřlivému vývoji robota však nejsou příliš aktuální...
K dnešnímu dni robot obsahuje tyto komponenty (chtěl jsem toho zkrátka co nejvíc vyzkoušet , a už mu to zůstalo...):
* Jednodeskový počítač Raspberry Pi 4B se čtyřjádrovým procesorem 1,5 GHz, 4 GB RAM, 2x USB2, 2x USB3, 2x mikroHDMI, WiFi, Bluetooth, 1 Gb ethernet, operační systém Debian 10.
* Zvukovou USB kartu Axagon.
* Vzadu dvě kola poháněná DC motory JGA25-370 12V, vepředu pak jedno pojezdové kolo z uklízecího robota
* Řadič motorů H-bridge L298N - pro ovládání pojezdu
* Step-up boost měnič LM2587 - z napětí 5V "vyrobí" 12V pro napájení motorů
* Infračervené reflexní snímače otáček kol - pro možnost vyrovnávat rozdíly v práci motorů
* Detektor světelného zdroje v podvozkové vaně s fotorezistorem v tubusu, který míří vpřed mezi předními koly (orientace nebo jízda podle zdroje světla).
* Laserové ukazovátko, které je umístěno souose s trubičkou, ve které je fotorezistor pro detektor světelného zdroje.
* Řádkový LCD displej 4x20 znaků
* Základní klávesnici 4x4 (0-9, A, B, C, D, *, #)
* Doplňkovou klávesnici 1x4 s barevnými tlačítky pro rozšíření možností klávesnice 4x4
* Aktivní bzučák pro signalizaci stisknuté klávesy nebo chybového stavu
*Audiozesilovač s reproduktorem na levém kanálu, pravý může být použit jako zdroj řídících impulzů, třeba pro skok na další fotku v multimediální prezentaci
* Desku X728 s UPS, se 2 bateriemi Li-Ion 18650 (5,1 V, 8 A)
* Přídavnou desku X728-A2 Battery Holder s dalšími 2 bateriemi 18650
* V přední části dva dotykové spínače k zamezení kolize s okolními předměty
* Dva rtuťové spínače pro zjištění ztráty rovnováhy
* Čtyři ultrazvukové dálkoměry ve směrech vlevo, vpravo, vpřed a vzad
* Elektronický kompas
* Detektor otevřeného plamene
* Malé čerpadlo se zásobárnou vody v případě, že snímač plamene indkuje otevřený oheň
* Desku Pan-Tilt HAT pro ovládání 2 servomotorů pohybu hlavy
* Dvě matice Adafruit mini 8x8 LED pro simulaci očí a dvě matice pro simulaci úst
* Dva mikrofony se zesilovači v uších
* Analogově digitální převodník RasPiO Analog Zero, který zpracovává signály z ušních mikrofonů a případně pulzy z pravého stereofonního kanálu
* PIR čidlo pro rozpoznání pohybu před a za robotem
* Pole modrých LEDek s oranžovým oddělením 4+1+4 pro zobrazení binárních čísel v bajtu, číslo prováděné instrukce v binárním tvaru, aj.
* Čtyřicetipinový kabel portu GPIO, "zaparkovaný" do slepé zásuvky pod klávesnicí, aby se robot dal používat dál pro zkoušení různých zapojení na nepájivém kontaktním poli
* Bezdrátový vysílač na 433MHz pro ovládání 3 zásuvek 240V (upravený dálkový ovladač, který je umístěn v těle robota)
* Čtyřkanálový přijímač 433MHz pro dálkové ovládání funkcí robota ovladačem s tlačítky A, B, C a D
* 5" LCD monitor na HDMI1 jako první obrazovka Debianu
* Bezdrátový vysílač signálu HDMI pro zobrazení druhé obrazovky Debianu na televizi
* Číslicové voltmetry pro kontrolu napájení 3.3V, 5V a 12V
* Sedmisegmentový displej pro zobrazení hodin, teploty a vlhkosti vzduchu, zobrazení skóre, pro funkci stopek, apod.
Co dělat v důchodu, když jeden celý život strávil s počítači, od sálových monster v klimatizovaných halách, až po dnešní nadupanou giga a tera techniku do klína?
Pořídit si jednodeskový počítač Raspberry Pi 4, proniknout do základů Linuxu, přeorientovat se z dříve používaných programovacích jazyků na Python, projít nabídku různých I/O modulů a jiných udělátek, zapojit hlavu, nadšení, zkoušet a zase zkoušet, až nakonec začít stavět domácího robota, který neumí jen sledovat čáru nebo blikat různobarevnými LEDkami. Budu rád, když vyjádříte své názory, pochyby a připomínky, nebo Vám můj projekt přinese nějaké informce k použitým modulům, třeba funkční zdrojové kódy v Pythonu.
Moc zkušeností s bastlením jsem zpočátku neměl, proto jsem při stavbě použil většinou již hotové I/O moduly s ovladači. Jak postupně přibývaly, zvětšovalo se i množství drátů, které je propojovaly. S tím zápolím dodnes. Asi by to chtělo pár desek s plošnými spoji, na to ale už nemám, třesou se mi ruce a byla by to strašná pájecí prasárna.
Robot má v úrovni podvozkové vany rozměry 20x30 cm, hmotnost necelé 4 kg. Robot jezdí, otáčí a kýve hlavou, mrká očima, a když mluví, simuluje pohyb úst. Když si ho nevšímáte, umí i zahálet (dělá různé ptákoviny), když ho hrubě uchopíte a nakloníte, myslí si, že ho unášíte neznámo kam, a nadává. Tyto "životně důležité" činnosti už jsou tedy naprogramovány v Pythonu, ale je jich poměrně omezený počet. Hlavní devizu vidím v možnosti programovat robota v jeho vlastním jazyku, jehož jednoduché instrukce zvládnou i malé děti (popojeď vpřed 20 cm, otoč se vlevo, zavři oči, skloň hlavu, přehraj zvukový soubor). Umožňuje samozřejmě i pokročilejší práci s proměnnými, registry, procedurami, apod. Kamil má své webové stránky robot-kamil.cz. Vzhledem ke stále bouřlivému vývoji robota však nejsou příliš aktuální...
K dnešnímu dni robot obsahuje tyto komponenty (chtěl jsem toho zkrátka co nejvíc vyzkoušet , a už mu to zůstalo...):
* Jednodeskový počítač Raspberry Pi 4B se čtyřjádrovým procesorem 1,5 GHz, 4 GB RAM, 2x USB2, 2x USB3, 2x mikroHDMI, WiFi, Bluetooth, 1 Gb ethernet, operační systém Debian 10.
* Zvukovou USB kartu Axagon.
* Vzadu dvě kola poháněná DC motory JGA25-370 12V, vepředu pak jedno pojezdové kolo z uklízecího robota
* Řadič motorů H-bridge L298N - pro ovládání pojezdu
* Step-up boost měnič LM2587 - z napětí 5V "vyrobí" 12V pro napájení motorů
* Infračervené reflexní snímače otáček kol - pro možnost vyrovnávat rozdíly v práci motorů
* Detektor světelného zdroje v podvozkové vaně s fotorezistorem v tubusu, který míří vpřed mezi předními koly (orientace nebo jízda podle zdroje světla).
* Laserové ukazovátko, které je umístěno souose s trubičkou, ve které je fotorezistor pro detektor světelného zdroje.
* Řádkový LCD displej 4x20 znaků
* Základní klávesnici 4x4 (0-9, A, B, C, D, *, #)
* Doplňkovou klávesnici 1x4 s barevnými tlačítky pro rozšíření možností klávesnice 4x4
* Aktivní bzučák pro signalizaci stisknuté klávesy nebo chybového stavu
*Audiozesilovač s reproduktorem na levém kanálu, pravý může být použit jako zdroj řídících impulzů, třeba pro skok na další fotku v multimediální prezentaci
* Desku X728 s UPS, se 2 bateriemi Li-Ion 18650 (5,1 V, 8 A)
* Přídavnou desku X728-A2 Battery Holder s dalšími 2 bateriemi 18650
* V přední části dva dotykové spínače k zamezení kolize s okolními předměty
* Dva rtuťové spínače pro zjištění ztráty rovnováhy
* Čtyři ultrazvukové dálkoměry ve směrech vlevo, vpravo, vpřed a vzad
* Elektronický kompas
* Detektor otevřeného plamene
* Malé čerpadlo se zásobárnou vody v případě, že snímač plamene indkuje otevřený oheň
* Desku Pan-Tilt HAT pro ovládání 2 servomotorů pohybu hlavy
* Dvě matice Adafruit mini 8x8 LED pro simulaci očí a dvě matice pro simulaci úst
* Dva mikrofony se zesilovači v uších
* Analogově digitální převodník RasPiO Analog Zero, který zpracovává signály z ušních mikrofonů a případně pulzy z pravého stereofonního kanálu
* PIR čidlo pro rozpoznání pohybu před a za robotem
* Pole modrých LEDek s oranžovým oddělením 4+1+4 pro zobrazení binárních čísel v bajtu, číslo prováděné instrukce v binárním tvaru, aj.
* Čtyřicetipinový kabel portu GPIO, "zaparkovaný" do slepé zásuvky pod klávesnicí, aby se robot dal používat dál pro zkoušení různých zapojení na nepájivém kontaktním poli
* Bezdrátový vysílač na 433MHz pro ovládání 3 zásuvek 240V (upravený dálkový ovladač, který je umístěn v těle robota)
* Čtyřkanálový přijímač 433MHz pro dálkové ovládání funkcí robota ovladačem s tlačítky A, B, C a D
* 5" LCD monitor na HDMI1 jako první obrazovka Debianu
* Bezdrátový vysílač signálu HDMI pro zobrazení druhé obrazovky Debianu na televizi
* Číslicové voltmetry pro kontrolu napájení 3.3V, 5V a 12V
* Sedmisegmentový displej pro zobrazení hodin, teploty a vlhkosti vzduchu, zobrazení skóre, pro funkci stopek, apod.