ArduinoなしでOpenWRTからサヌボを制埡したす

サヌボを備えたシステムで䞍芁な芁玠を回避し、鉄を最倧限に䜿甚する方法に関する短い投皿



背景



私は非垞に長い間病気にかかっおおり、Linux、OpenWRT、ネットワヌクおよびワむダレステクノロゞヌ、セキュリティに悩たされおいたしたが、今では埐々にロボット工孊やスマヌトホヌムに感染しおいたす。 これはすべお、特に既補のテンプレヌト、無料のオヌプン゜ヌスコヌドが非垞に倚い堎合、非垞にクヌルであり、時には完党に悪の偎面に行き、ロゞックをスクラッチにすばやく投げるこずができたす。

ただし、LEDが点滅するだけでなく、関心が目芚め、すごい効果が枡され、適甚された問題を解決する必芁がありたす。 ここでも完成品の豊富さを賞賛すべきだず思われたすが、悪魔はい぀ものように詳现にありたす。 /



ロゞックを制埡するこずの1぀です。これにより、ラむトのオン/オフが簡単になりたす。たた、倧気質センサヌMQ-135を拟い、必芁に応じおフヌドをオンにするこずもできたす。 これはすべおクヌルですが、21䞖玀の䞭庭では、宇宙船が玠晎らしい劇堎を耕し、魂はもっずクヌルなものを求めたす。 私の芖線はサヌボの制埡に萜ちたした。 どうしお トピックは、ロボットから単玔な栓抜きたで、倚くのメカニズムに存圚するため、非垞に広範囲です。 プラスは、航空機でぱンゞンが同じ方法で制埡され、これにより䜿甚範囲が単玔に拡倧するずいう事実です。



キャットの䞋で招埅する興味のある人



長い間トピックに粟通しおおり、ポむントにたっすぐに行きたい人-「 ステップバむステップ 」セクションにスクロヌルしおお気軜に。





最初から始める



このノヌトの本質は誰もが理解できるものであったため、たずサヌボのコンポヌネントに泚意を払う必芁がありたす。



画像



電気モヌタヌ、ギアボックス、ポテンショメヌタヌ、コントロヌラヌ。 独創的なものはすべおシンプルですね。



サヌボドラむブの制埡には、パルス幅倉調たたはPWMが䜿甚されたす。 耇雑なこずは䜕もなく、それは単なる矩圢パルスの圢の信号です。 䞻なパラメヌタは、パルス幅ずポヌズ幅です。 「䞀時停止」、たたは正しく呌び出す方が良い-期間は、信号の呚波数を蚭定したす。 たずえば、100 msの呚期幅がある堎合、呚波数は10 Hzになりたす。 蚈算は非垞に簡単です。ミリ秒を秒に倉換し、この数倀で単䜍を陀算したす。 したがっお、100ms = 0.1sで、1を0.1で割るず10になりたす。電卓で確認できたす。



パルス幅はサヌボの回転角床を蚭定し、航空機モヌタヌの堎合は回転の速床ず方向を蚭定したす。

抂略的には、次のようになりたす。







そしお、このようなオシロスコヌプで







次に、サヌボがこのような信号をどのように認識するかに぀いお説明したす。 そしお、悪魔は现郚たで静かに忍び寄っおいたす。

実際には、コントロヌラヌはデゞタルでもアナログでもかたいたせん。

それが完党に単玔な堎合、違いはアナログコントロヌラヌがむンパルスの瞬間にのみ電圧を䟛絊するか、たたは䟛絊しないこずです。 パルス間隔を40、120、たたはたずえば240ミリ秒に蚭定するず、動䜜䞭にサヌボがどのように「ぎくぎく」動き始めるかがわかりたす。 これは、マむクロ回路が内郚にあり、サヌボドラむブ党䜓の呚波数が倖郚信号の呚波数に等しいためです。 暙準の20ミリ秒は50 Hz、40ミリ秒は25 Hzです。 したがっお、電圧がモヌタに䟛絊されるたたは䟛絊されないたたは毎秒回。 呚波数を䞋げるこずで、トルクを倧幅に枛らし、メカニズムのより遅い動䜜を実珟できたすが、既に説明した「けいれん」を犠牲にしたす。

通垞、デゞタルコントロヌラヌはストラップ付きの小さなマむクロプロセッサです。 アナログマむクロ回路ずの䞻な違いは、動䜜の内郚呚波数が䞀定であるこずです。 制埡信号の呚波数を奜きなだけ枛らすこずができたす。これは反応時間にのみ圱響したすが、トルクは䞀定です。 ただし、長い間隔で小さな郚分で䜍眮の倉化を䞎えるず、遅い回転速床を実珟できたす。 すでに特定のサヌボずそのパラメヌタヌに䟝存しおいたす。



信号を生成する方法は



このために、圌らは通垞䜕らかの皮類のマむクロコントロヌラヌを䜿甚し、Arduinoプラットフォヌムに特別な愛を持っおいたす。 すべおがシンプルです。 既補のラむブラリが䜿甚され、信号パラメヌタヌを目的の関数に䟛絊し、目的の幅の指定されたGPIOでパルスを取埗したす。

しかし、メむンデバむスずペアになっおいるマむクロコントロヌラヌず、問題を解決するためのコントロヌラヌ自䜓のパワヌを䜿甚する方法がない堎合はどうでしょうか 代替オプションを探すこずは残っおいたす。 そしお、私はそのようなものを持っおいたす

タむトルからすでに明らかなように、OpenWrtオペレヌティングシステムが䜿甚されたす。 これは本質的に本栌的なLinuxカヌネルディストリビュヌションです。 そしお、十分な機䌚ずカスタマむズの柔軟性を提䟛したす。 OpenWrtずその掟生物は、さたざたな「スマヌトホヌム」システムで積極的に䜿甚されおいたすが、その詳现に぀いおは別の蚘事で説明しおいたす。 PWMたたはブルゞョアPWM信号を生成する方法は Arduinoほど耇雑ではないこずがわかりたした。 これを行うには、同じGPIOを䜿甚する必芁があり、ラむブラリの代わりにPWM-GPIO-Customず呌ばれるカヌネルモゞュヌルを䜿甚する必芁がありたす。 動䜜するOpenWrtの最埌の安定バヌゞョンは12.09ですが、これを理解するために珟圚のトランクで動䜜させるために玄1週間を費やしたした。 理由はわかりたせんが、公匏リポゞトリにはこのモゞュヌルのパッケヌゞはなく、自分で組み立おる必芁がありたすが、それほど難しくありたせん。 以䞋に方法を曞きたす。



順を远った説明



そのため、たずはOpenWrtビルドツヌルキットをダりンロヌドする必芁がありたす。 正盎に蚀うず、Linuxのむンストヌルから始める必芁がありたすが、倚くの人がすでにこのポむントを完了しおいるこずを願っおいたす。

だから、あなたはツヌルキット甚のフォルダを䜜成し、そこに行きたした

コマンドを䜿甚しお゜ヌスをダりンロヌドできたす

git clone git://git.openwrt.org/12.09/openwrt.git





りィンドりの䞋郚に端末がありたすか

申し蚳ありたせんが、これは非垞に䟿利です。



ダりンロヌド埌、openwrtフォルダヌに移動し、コマンドを䜿甚しおパッケヌゞをダりンロヌドする必芁がありたす

git clone git://git.openwrt.org/12.09/packages.git







これで、すべおのパッケヌゞ゜ヌスコヌドができたした。 しかし、埅っおください...しかし、pwm-gpio-customはどうですか 圌はそこにいたせん。

絶望しないでください、 圌はここにいたす

openwrt / package内のコンテンツを解凍するだけで、すべお問題ありたせん。



ここで、アセンブリに盎接枡したす。

openwrtフォルダヌから、-jn make -jn kernel_menuconfig



実行する必芁がありたす

nの代わりに、コアの数+ 1に眮き換える必芁がありたす。

青いメニュヌが開きたす。 [デバむスドラむバ]を遞択したす。







PWMサポヌトを怜玢





GPIOを䜿甚しおアむテムPWM゚ミュレヌションをアクティブにしたす。 スペヌスを遞択しおください。 どこにでも星があるこずが必芁です、これは重芁です







その埌、カヌネルを少し再構成する必芁がありたす。 適切なアむテムを探しおいたす







[高解像床タむマヌサポヌト]項目にアスタリスクを付け、タむマヌの頻床を1000HZに蚭定し、[プレプションモデル]パラメヌタヌで[䜎遅延デスクトップ]を遞択したす。







ルヌタヌのハヌドりェアプラットフォヌムを確実に知る必芁がありたす。 しかし、もっず重芁なのは、構成で指定するこずです。 このAtheros ar71xxがありたす









必芁なカヌネル構成が完了したした。 ここで、最埌のExitをクリックするずすぐに、システムは倉曎を保存する䟡倀があるかどうかを尋ねるので、肯定で答える必芁がありたす。



次に、コマンドmake -jn menuconfig



䜿甚しお、同じ方法でOSのアセンブリを構成する必芁がありたす。



次に、[カヌネルモゞュヌル]メニュヌで







他のモゞュヌルを遞択







そしお、kmod-pwm-gpio-customにアスタリスクを付けたす







すべお、組み立おを開始できたす。 すべお同じmake -jn







埌ろに寄りかかっお䜕かを芋るこずが残っおいたす。お茶/コヌヒヌを飲むこずができたす。組み立おプロセスは速くありたせん。

ビルドが完了するず、 binフォルダヌに移動できたす。 プラットフォヌムず画像を含むフォルダヌがありたす。 暙準の指瀺に埓っお完党にフラッシュできたす。 ファヌムりェアプロセスが完了するずすぐに、telnetを安党に通過できたす。 kmod-pwm-gpio-customパッケヌゞをデバむス自䜓に远加ダりンロヌドする必芁がありたす。 これは、SCPたたはwgetを介しお行うか、openssh-sftp-serverをむンストヌルしおFileZillaを䜿甚したす。



ROMはゎム状ではなく、このディレクトリは物理的にRAM通垞は32〜64 Mbにあるため、パッケヌゞ自䜓を/ tmpディレクトリにダりンロヌドするこずをお勧めしたす。 パッケヌゞをダりンロヌドした埌、 opkg install /tmp/kmod-pwm-gpio-custom_xxx.ipk.



必芁がありたすopkg install /tmp/kmod-pwm-gpio-custom_xxx.ipk.



パッケヌゞの名前をあたり気にするこずはできたせん。TABの自動補完はうたく機胜したす。



PWM信号生成



パッケヌゞをむンストヌルした埌、GPIOの盎接制埡ずPWM信号の生成に進むこずができたす。

これを行うには、カヌネルモゞュヌルをアクティブにする必芁がありたす。 これを行うには、 insmod pwm-gpio-custom bus0=0,23 bus1=1,20



コマンドinsmod pwm-gpio-custom bus0=0,23 bus1=1,20





これは、その方法のほんの䞀䟋です。 busXは、 /sys/lass/pwm



同じ番号の䞋で、キャラクタヌデバむスを介しお制埡できるバスの番号を蚭定したす。そのうちの2぀がありたす gpio_pwm.00およびgpio_pwm.10 。 察応する倉数をファむルに曞き蟌むだけで、PWMパラメヌタヌを操䜜できたす。 はい、ほずんど忘れおいたした。すべおの倀はナノ秒で蚭定されおいたす。 行こう



echo 10000000 > /sys/class/pwm/gpio_pwm.0\:0/period_ns



期間を指定したす。 この堎合、100 Hzです。

echo 8500000 > /sys/class/pwm/gpio_pwm.0\:0/duty_ns



デュヌティサむクルを指定したす。

はい、デフォルトでは䞀郚の結論が反転したす。期間内の「ボむド」の時間を蚭定する必芁がありたす。 GPIOのHigh倀が1の堎合、 echo 1500000 > /sys/class/pwm/gpio_pwm.0\:0/duty_ns



を蚭定する必芁がありたす。パルス自䜓の時間が瀺されたす。

経隓的に確認できたす。 たぶん私は芋぀けるか、誰かがあなたをより矎しくする方法を教えおくれるでしょう=

珟圚は、信号をアクティブにするためだけに残っおいたす。

echo 1 > /sys/class/pwm/gpio_pwm.0\:0/run



そしお、オシロスコヌプで次のようになりたす





サヌボケヌブルをPWMピンに接続するず、正確に䞭倮の䜍眮に収たりたす。 もちろん、電源も接続する必芁がありたす。



おわりに



このようにしお、200 Hzの呚波数で信号を生成するこずができたす。぀たり、1぀のドラむブの反応時間が5 msに短瞮されたす。 ロックの開閉には重芁ではないかもしれたせんが、航空機にずっおは非垞に重芁です。 近い将来、モヌタヌずコントロヌラヌを手に入れるか、゚カテリンブルク垂の優れた読者がそのような実隓を貞しおくれお、2番目の蚘事が掲茉されるこずを願っおいたす。

最埌たで読んでくれおありがずう。 おや぀ずしお、少しビデオを玹介したしょう。



仕事のデモンストレヌション。 右端ず巊端の䜍眮に合わせた2぀のチャンネル。





PWM信号のビデオデモ。





PS



メヌルで回答し、必芁な質問を明確にしおくれたClaudio Mignantiモゞュヌルの䜜者に深く感謝したいず思いたす。



サヌボドラむブず制埡信号の回路はwiki.amperka.ruで取埗されたした 。



远加や芁望がある堎合は、コメントに曞いおください。



UPD a5bは 、䜿甚されたデバむスの皮類に関心がありたす。 たあ、これは秘密ではありたせん。 このボヌドは、EL-M150の䞭囜語版です。 内郚のプロセッサはAtheros AR9331です。

mr3020やwr703nなどの䞀般的なルヌタヌで非垞に広く䜿甚されおいたす。

ボヌドは次のようになりたす。








All Articles