airpocket が 2024年11月11日21時52分03秒 に編集
初版
タイトルの変更
M5Stack LLM ModuleをLinuxボードとして利用する際のFAQ/Tips
タグの変更
M5Stack
LLM
AXERA
SBC
メイン画像の変更
記事種類の変更
セットアップや使用方法
ライセンスの変更
(MIT) The MIT License
本文の変更
# はじめに M5Stack LLM ModuleはM5Stack Core向けのエッジLLMモジュールですが、エッジAI用のSBCとしてもとても有能なので、使い方についてのTipsをまとめます。 必要な機材は以下の通りです。ほかにも随時USBケーブルやUSBカメラなども使用します。 ## M5Stack LLM Module 今回使用するエッジAIボードです。 ## M5Stakc Core Basic、Core2、CoreS3のいずれでもOKです。主に電源供給用に使用します。 ## Debug Board EtherポートとUSBシリアル通信ポートを備えたデバグボードです。Lniuxボードとして遊ぶならこれがあった方が100倍便利です。 # LLM Moduleにアクセス PCはWindowsを想定しています。 ## デバッグボードがある場合 デバグボードがある場合は以下の手順でアクセスできます。 ①LLM Moduleとdebug boardをFPCケーブルで接続する。 ②debug boardのType C USBポートとPCを接続する。 ③PC側でデバイスマネージャを開き、接続したCOMポートを確認する(CH340と表示されているポート) うまく表示されていない場合、PC側にドライバがインストールされていない可能性があるためインストールする。 ④Tera Termなどのターミナルソフトを使って、ターゲットのCOMポートを開く。 通信速度は115200bps ⑤LLM ModuleのType C USBポートとPCやモバイルバッテリーなどを接続し、電源を供給する。 ## デバッグボードがない場合 ①PCで[SDK Platform-Toolsをダウンロード](https://developer.android.com/tools/releases/platform-tools?hl=ja)して任意のフォルダに解凍する。 ②LLM Module とPCをUSBケーブルで接続する。 ③PCでコンソールを開いて Platform-Toolsを解凍したフォルダに移動する。 ④以下のコマンドでデバイスが認識できているか確認する。ケーブルやPCのUSBの仕様によっては接続できないので、いろいろ変えて試してみる。 ``` adb devices ``` ⑤以下のコマンドでログインする。 ``` adb shell ``` ⑥必要なファイルはpushで送信 ``` adb push data.json /opt ``` ⑦pullでダウンロード ``` adb pull /opt/data.json . ``` # 起動音を消す @nnn112358 さんより報告。 /usr/local/m5stack/startup-script.shの該当行をコメントアウトする。 https://github.com/nnn112358/M5_LLM_Module_Report/blob/main/README.md # 固定IP @mongonta555 さんより報告。 https://x.com/mongonta555/status/1855511008305107175 # ネットワーク接続 開発の上でネットワーク接続は必須なので、Etherで接続。 ①debug board上のコネクタにLANケーブルを挿す ②USBシリアル、もしくはadbツールを使ってシステムにアクセス ③必要ならIPアドレスを固定して再起動 ④ip a コマンドでeth0のIPアドレスを確認 ⑤PCから調べたIPアドレスへSSHするなどしてネットワーク接続を確認 # OpenCVインストール Computer Vision系やるならOpenCVは必須なので入れます。 ``` apt update apt install libgl1-mesa-glx pip install opencv-python ``` # USBカメラ接続 @devemin さんより報告。 https://x.com/devemin/status/1855615695100506150 LLM ModuleのUSBポートにHubなどを通してUSBカメラを接続すると/dev/video0として認識される。 python でサンプルキャプチャするコード ※OpenCV使用 ``` import cv2 # Import OpenCV library # Camera device ID (usually, USB cameras use ID 0 or 1) camera_id = 0 # Open the camera cap = cv2.VideoCapture(camera_id) # Check if the camera opened successfully if not cap.isOpened(): print("Camera not found.") # If the camera is not found exit() # Exit the program # Camera settings: Resolution (width and height) cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920) # Set width to 1920 pixels cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080) # Set height to 1080 pixels # Camera settings: Frame rate (FPS) cap.set(cv2.CAP_PROP_FPS, 30) # Set frame rate to 30 FPS # Camera settings: Exposure, Brightness, and Contrast cap.set(cv2.CAP_PROP_EXPOSURE, -6) # Set exposure (negative values decrease exposure) cap.set(cv2.CAP_PROP_BRIGHTNESS, 0.5) # Set brightness (0.0 to 1.0, where 0 is dark and 1 is bright) cap.set(cv2.CAP_PROP_CONTRAST, 0.5) # Set contrast (0.0 to 1.0, where 0 is low contrast and 1 is high contrast) # Verify the applied settings width = cap.get(cv2.CAP_PROP_FRAME_WIDTH) height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT) fps = cap.get(cv2.CAP_PROP_FPS) exposure = cap.get(cv2.CAP_PROP_EXPOSURE) brightness = cap.get(cv2.CAP_PROP_BRIGHTNESS) contrast = cap.get(cv2.CAP_PROP_CONTRAST) print(f"Resolution: {width}x{height}") print(f"Frame rate: {fps} FPS") print(f"Exposure: {exposure}") print(f"Brightness: {brightness}") print(f"Contrast: {contrast}") # Capture one frame ret, frame = cap.read() # If the frame is successfully captured if ret: # Save the captured image to a file cv2.imwrite('captured_image.jpg', frame) print('Image saved: captured_image.jpg') # Success message for image saving else: print("Failed to capture image.") # Failure message for image capture # Release the camera cap.release() # Close any OpenCV windows (if any are used for display) cv2.destroyAllWindows() ``` # Wi-Fiドングル USBドングルでWi-Fi接続しようとしたけどカーネルソースが無くてムリ # 入れておきたいツール ## tree ``` apt install tree ``` ## vim vscodeでリモートログインするなら不要ですけど。 # Tips ## JimmyのHiの音声は /opt/m5stack/data/audio配下の2つのWAVファイル https://x.com/mongonta555/status/1855533752417493017 # 参考リンク ## Palsar2 Toolchain [mobilenetv2の変換、導入](https://pulsar2-docs.readthedocs.io/en/latest/user_guides_quick/quick_start_ax620e.html#):step by step でAX_modelへの変換 [OS Image update](https://docs.m5stack.com/en/guide/llm/llm/image):LLM ModuleのOS Image Flash方法 [ax-samples](https://github.com/AXERA-TECH/ax-samples):vision model [ax-llm](https://github.com/AXERA-TECH/ax-llm):LLMを触りたい [AXERA model zoo](https://drive.google.com/drive/folders/11aRxsFqJfGXhFMlInudj3Bi8SR-08TXl)実行用バイナリもあるので試せる。動かせる。 @nnn112358 さんのレポート! https://github.com/nnn112358/M5_LLM_Module_Report/tree/main @nananauno さんのまとめ https://zenn.dev/nananauno/scraps/259405f6aeaa90 # 参考アカウント https://x.com/qqc1989 AXERA社中の人(DEV)らしき https://x.com/kawagutt AXERA社中の人(JA) https://x.com/hirotakaster LLM Module tester/contributer https://x.com/HanxiaoM M5Stack社中の人(DEV) https://x.com/M5Stack M5StackのBoss! https://x.com/nnn112358 StickVのころからお世話になってます https://x.com/ksasao StickVのころからお世話になってます https://x.com/devemin ModuleLLMでROS動かす人 https://x.com/mongonta555 ModuleLLMにスタックチャンを宿らせる人