Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
December 25, 2022 11:59 am GMT

Lego Technic Large Hub'a Linux ile balanmak

Giri

ncelikle Lego'nun Technic serisinde yeni nesil (2020) Technic Large Hub'ndan bahsetmek gerekirse motorlar yneten dier temel hub'lardan tamamen farkl olan ve 2013'te yaynlanan Mindstorm EV3 akll brick'e gre daha basit ama daha hzl bir zm sunmakta.

Teknik

zet gemek gerekirse EV3 daha gl ilemci (ARM926EJ-S (VGT6) @ 300mhz vs STM32F413 @ 100mhz), daha fazla RAM (64 MB yerine 320 KB) ve Linux sistem barndrmasna ramen daha hafif kaynaklarla, zerinde Python da altrabilen yeni nesil Hub daha pratik kullanma sahip gzkyor.

lgili cihaz 2022 itibariyle; Education SPIKE Prime (sar renk - 45601-1) ve Mindstorm Robot Inventory (turkuaz renk - 88016-1) setlerinden kmaktadr. Kendi ierisinde bir arj edilebilir bataryay da iermektedir.

Image description

6 adet LPF2 (LEGO Power Functions 2.0) balant giriini desteklemekte olup, 115KBps hza sahiptir. Ayrca kendi zerinde 5x5'lik LED Matrixini iermekte olup, ayr ayr 3 eksenli ivmeler ve gyroskop iermektedir. Kullanmlara atanabilecek 3 buton bulunmakta olup, 12 bit 16KHz mono ses kartabilen bir hoprlr'e sahiptir. Dolaysyla olduka detayl bir donanm kayna bulunduu sylenebilir.

Cihaza bilgisayardan USB (TipA'dan TipB'ye) veya Bluetooth (BTC 4.2 ve BLE 4.2) ile balanlabilmektedir. Cihaza girdiinizde ise karnza MicroPython kabuunu ieren bir iletim sistemi kmaktadr. Daha sonrasnda isterseniz Pybrick gibi sistemlerle farkl Firmware atp, tekrar geri dnebilirsiniz.

Linux ile balant salamak

Linux sistem zerinden iki ekilde balant kurabilirsiniz. lki USB kablo ile, dieri Bluetooth zerinden. ncelikle balant altyaplarn anlatacam.

USB ile balant kurma

USB ile balant kurmak istiyorsanz veri aktarm yapabilmek iin USB kablo olduka nemli. USB tip A ve USB tip mini B bir kablo ile balanabilmektedir. Ama iletim sistemine eriim iin kesinlikle kaliteli bir kablo kullanmanz gerekiyor. Yoksa Linux sistem USB olarak bile grmyor (udev'e unknown olarak bile dmyor) fakat sadece g verebiliyor. Evdeki 4 kablodan sadece 1 tanesi bu i iin faydal oldu.

USB kablosunu takmadan nce aadaki komut ile sisteme taklan USB'lerin bulunmas iin interaktif modda almas salanr. Bunu yaparken yetkili bir kullanc ile yapmanz gerekir.

sudo dmesg -w

Bu komut sonrasnda sisteme eklenecek cihazlar akar modda gsterim salar. Benim sistemimde USB cihaz takldnda aadaki gibi bir ak gerekleti.

[ 1643.090189] usb 1-7: new full-speed USB device number 5 using xhci_hcd[ 1643.241186] usb 1-7: New USB device found, idVendor=0694, idProduct=0010, bcdDevice= 2.00[ 1643.241202] usb 1-7: New USB device strings: Mfr=1, Product=2, SerialNumber=3[ 1643.241209] usb 1-7: Product: LEGO Technic Large Hub in FS Mode[ 1643.241214] usb 1-7: Manufacturer: LEGO System A/S[ 1643.241219] usb 1-7: SerialNumber: XXXXXXXX[ 1643.290504] cdc_acm 1-7:1.0: ttyACM0: USB ACM device[ 1643.290528] usbcore: registered new interface driver cdc_acm[ 1643.290529] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters

Bu ktda yazan "ttyACM0" yazs olduka nemlidir. nk birazdan eriim salarken /dev/ttyACM0 altndan eriim salayacamz gstermektedir.

Bu admdan sonra artk lsusb komutunun ktsnda da aadaki gibi LEGO modunun eklendiini grebilirsiniz.

lsusb
Bus 001 Device 005: ID 0694:0010 Lego Group LEGO Technic Large Hub in FS Mode

Burada yazan FS mode, dosya sistemi modu yani sisteme eriilebilirlii saladn gstermekte. Farkl bir ekilde firmware gncelleme yapmak istersek (ileride baka bir yazda ierebilir) DFU mode (Device Firmware Update) eklinde de alabilmektedir.

Bu ekilde sistemimizi hazr hale getirdikten sonra screen ismindeki bir uygulama kullanlarak ayr bir oturumda aabilmekteyiz.

Screen uygulamasn kurmak iin aadaki komutu kullanabiliriz.

sudo apt install screen

Screen uygulamas kurulu ise yukarda Linux'un tanmlad USB cihaz adresini girerek sisteme giri yapabilirsiniz.

sudo screen /dev/ttyACM0 115200

Bu ekilde microPython kabuuna giri yapabiliyorsunuz. zellikle jiroskop zelliklerinden dolay sisteme ok fazla log geliyor ise CTRL + C diyerek loglar durdurabilirsiniz ve MicroPython kabuuna debilirsiniz.

Screen uygulamasndan kmak iin ise CTRL + A ve sonrasnda D komutunu girmek gerekiyor.

Bluetooth ile balant kurma

Large Hub'n en nemli zelliklerinden birisi olan kablosuz alabilmeyi kullanabilmek iin USB olmadan Bluetooth zerinden giri yapabilmek olduka nemlidir.

Dolaysyla sistem akken Bluetooth dmesine basldnda Bluetooth'un aldn grebiliriz. Bluetooth ald ise daha nceki bir yazmda daha detayl ekilde yazan ekilde hcitool lescan komutu ile cihaznzn bluetooth MAC adresini alp not etmeniz gerekiyor.

Bluetooth LE cihazlarla alma

Bu admdan sonra Linux sistemine, Bluetooth zerindeki dosya sistemini balamak iin aadaki komut kullanlabilir:

sudo rfcomm connect /dev/rfcomm0 33:08:F2:YY:5C:XX

Bu komut ilgili cihaz "/dev/rfcomm0" adresine balamaya yaramaktadr.

Balanty kapatmak iin ise aadaki komut uygulanacak ama iiniz bitmeden balanty kapatmamak gerekir.

sudo rfcomm release /dev/rfcomm0 33:08:F2:YY:5C:XX

Screen uygulamas kurulu ise yukarda Linux'un tanmladmz girerek sisteme giri yapabilirsiniz.

sudo screen /dev/rfcomm0 

Bu ekilde microPython kabuuna giri yapabiliyorsunuz. zellikle jiroskop zelliklerinden dolay sisteme ok fazla log geliyor ise CTRL + C diyerek loglar durdurabilirsiniz ve MicroPython kabuuna debilirsiniz.

Screen uygulamasndan kmak iin ise CTRL + A ve sonrasnda D komutunu girmek gerekiyor.

Giri yaptktan sonra ilk admlar

USB ve Bluetooth balantsn paralel olarak rahatlkla kullanabilirsiniz. Micropython arayz zerinde ncelikle sistemdeki uygulamalar kullanabileceiniz hub modln import etmeniz gerekecektir.

https://lego.github.io/MINDSTORMS-Robot-Inventor-hub-API/

Bu admdan sonras ise hub modl kullanlarak Python kabuk zerinde bir eyler gelitirebilirsiniz. Basit ekilde aadaki gibi iki komut pe pee kullanabilirsiniz.

import hubhub.display.show('Merhaba Dunya')

Bu ekilde hub zerinde harfleri grebilirsiniz.

Uzaktan uygulama gelitirmek

Uzaktan uygulama gelitirmek iin Python'un pyserial ktphanesi kullanlabilmektedir. USB veya Bluetooth iin yukardaki adresleri kullanmak nemli olacaktr.

import serialimport time# Bluetooth:connection = serial.Serial('/dev/rfcomm0', timeout=2)connection.baudrate = 9600  # set Baud rate to 9600connection.bytesize = 8     # Number of data bits = 8connection.parity   ='N'    # No parityconnection.stopbits = 1     # Number of Stop bits = 1time.sleep(1) connection.flush()connection.write(b'\x03') #CTRL + C iinconnection.write(b'import hub\r')print('I have imported the hub module for you')while True:    connection.write(b'hub.display.show("Merhaba Dunya")\r')    connection.write(b'hub.display.clear()\r')

Original Link: https://dev.to/aliorhun/lego-technic-large-huba-linux-ile-baglanmak-4gkl

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To