[2016.04.16]: Amikor írtam ezt a cikket, nem vettem észre, hogy a cape manager slots fájlja a régi helyre mutat. Javítva.
Ha az autódban ülsz és be akarsz jutni a garázsodba, tudom, hogy nem divatos, de a leg kényelmesebb eszköz a kulcskarikádon lógó kicsi távirányító (valami az autoba integrált cucc jobb és divatosabb lenne, talán csinálok valami ilyesmit később).
Ahhoz, hogy távirányítani tudjam az OpenHAB-ot és rajta keresztül a garázskaput/világítást, vettem egy ilyen ugrókódos távirányítót az aliexpressen:
http://www.aliexpress.com/item/RF-Rolling-Code-Decoding-Receiver-Module-2-Transmitters-DC-5V-4CH-TTL-Output-Learning-Momentary-Toggle/32295201884.html
A tervem az, hogy a garázsvilágítás, a garázskapu és még néhány (miután két gombja marad, pontosan kettő) dolog távirányítására használom.
Először is felraktam egy breadboard-ra, bekapcsoltam, hogy kipróbáljam, működik-e.
Az első próbálkozásra tökéletesen működött, kitalálni, melyik csatorna melyik gombhoz tartozik, gyerekjáték volt.
Az egyetlen probléma a cuccal, hogy 5V-os logikai kimenetei vannak, én a BeagleBone Green-hez akarom kötni, aminek a GPIO portjai nem tolerálják az 5V-ot.
Úgy döntöttem, hogy a világ legyegyszerűbb szintillesztőjét fogom használni hozzá. Egy ellenállásosztót. Egy 39K-s és egy 68K-s ellenállás megoldoja a kérdést, multiméteren mérve.
A következő rész, a BeagleBone GPIO felkonfigurálása. Az OpenHAB a Linux GPIO Sysfs interfészt használja, ami nagyon egyszerű (
https://www.kernel.org/doc/Documentation/gpio/sysfs.txt).
Először megpróbáltam adatot olvasni parancssorból. A vevő egy csatornáját rákötöttem a BBG 60-as GPIO (P9, 12-es érintkező) portra.
A konzolon a következő parancsokat szükséges kiadni:
echo '60' > /sys/class/gpio/export
echo 'in' > /sys/class/gpio/gpio60/direction
Ezek után az érték, ezzel a paranccsal olvasható:
/*
* This is a template-generated file from BoneScript
*/
/dts-v1/;
/plugin/;
/{
compatible = "ti,beaglebone", "ti,beaglebone-black";
part_number = "BS_PINMODE_P9_12_0x2f";
exclusive-use =
"P9.12",
"gpio1_28";
fragment@0 {
target = <&am33xx_pinmux>;
__overlay__ {
bs_pinmode_P9_12_0x2f: pinmux_bs_pinmode_P9_12_0x2f {
pinctrl-single,pins = <0x078 0x2f>;
};
};
};
fragment@1 {
target = <&ocp>;
__overlay__ {
bs_pinmode_P9_12_0x2f_pinmux {
compatible = "bone-pinmux-helper";
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&bs_pinmode_P9_12_0x2f>;
};
};
};
};
2. Fordítsuk le:
dtc -O dtb -o /lib/firmware/bspm_P9_12_2f-00A0.dtbo -b 0 -@ /lib/firmware/bspm_P9_12_2f-00A0.dts
3. Töltsük be:
echo bspm_P9_12_2f > /sys/devices/bone_capemgr.?/slots
echo bspm_P9_12_2f > /sys/devices/platform/bone_capemgr/slots
Ezután a felhúzóellenállás megszűnt létezni. A távirányító státusza olvasható lett.
Rendben, ez most működik egy csatornára, de mi van néggyel? Tudok négy overlay-t generálni, de hogyan kombinálom egy fájlba? Elég kevés infót találtam, mindaddig amíg rá nem akadtam erre az Adafruit dokumentációra:
https://learn.adafruit.com/introduction-to-the-beaglebone-black-device-tree/device-tree-overlays
A doksi alapján sikeresen kombináltam a négy generált overlay-t. Végülis a P8 7-10 lábait használtam.
Az overlay (suf_keeloq-00A0.dts):
/*
* SUF - 4-Channel Keyloq receiver cape
*/
/dts-v1/;
/plugin/;
/{
compatible = "ti,beaglebone", "ti,beaglebone-black";
part_number = "SUF-KEELOQ";
exclusive-use =
"P8.7",
"P8.8",
"P8.9",
"P8.10",
"mmc1_sdcd",
"gpio2_3",
"gpio2_5",
"gpio2_4";
fragment@0 {
target = <&am33xx_pinmux>;
__overlay__ {
suf_keeloq_pins: pinmux_suf_keeloq_pins {
pinctrl-single,pins = <
0x090 0x2f
0x094 0x2f
0x09c 0x2f
0x098 0x2f
>;
};
};
};
fragment@1 {
target = <&ocp>;
__overlay__ {
suf_keeloq_pinmux {
compatible = "bone-pinmux-helper";
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&suf_keeloq_pins>;
};
};
};
};
fordítás és betöltés:
dtc -O dtb -o /lib/firmware/suf_keeloq-00A0.dtbo -b 0 -@ /lib/firmware/suf_keeloq-00A0.dts
echo suf_keeloq > /sys/devices/bone_capemgr.?/slots
echo suf_keeloq > /sys/devices/platform/bone_capemgr/slots
Ez már működik, csak jó lenne valahogy boot időben betölteni.
Ahhoz, hogy ezt elérjük, hozzá kell adnunk a /boot/uEnv.txt fájlhoz:
cape_enable=bone_capemgr.enable_partno=suf_keeloq
Következik: Integráció az OpenHAB-bal