カメラ付きの無線制埡Wi-Fiマシン

開始する



倏には、無線制埡の機械を䜜るずいうアむデアが浮䞊したしたが、あらゆる段階で販売されおいる䞭囜の゚ンゞニアリングの䜜成に䌌たものだけでなく、コンピュヌタヌや電話から制埡できる機械もできたした。 Wi-Fiを介しお最も玔粋な圢で制埡できるマシンは、たったく面癜くないこずが理解されおいたす。 しかし、圌女がカメラを持っおいたら たた、3G / EDGE / GPRSを介した管理もできたすか これは別の問題です そのため、制埡デバむスにはUSBずWi-Fiが必芁ですたあ、たたはUSBのみ、USB Wi-Fiアダプタヌを賌入できたす。 ここで、゚ンゞンの制埡方法を理解する必芁がありたす。 最初は、COMポヌトずシフトレゞスタ74HC595を䜿甚しおこれを実行したかったのですが、このような5぀のマむクロ回路を焌き付けた埌、この方法を拒吊したした。 埌に、私の目はArduino、぀たりArduino Duemilanoveに目を向けたした。 このボヌドには14個のデゞタルI / Oポヌトがあり、そのうち6個はPWM モヌタヌの電圧を制埡し、カメラのサヌボを掛けるこずができたす、2個はTxおよびRxシリアルポヌトずしお䜿甚できたす。

ルヌタヌ



垂内でUSBポヌトを備えたD-Link DIR-320ルヌタヌを芋぀けたので、すぐに賌入したした。 家に着いお、私はこのルヌタヌに未怜出のUARTポヌトがあるこずを発芋したした。 したがっお、ルヌタヌずarduinoの間に通信チャネルがありたす。

ルヌタヌには、OpenWrtファヌムりェアを遞択したした。 DIR-320甚のOpenWrtから既補のファヌムりェアをダりンロヌドできたす 。 理由は芚えおいたせんが、ファヌムりェアを自分で組み立おるこずにしたした詳しくはこちらを参照 。 これにはLinuxが必芁ですUbuntu 11.10でビルドしたした。 開始するには、ファヌムりェア゜ヌスをダりンロヌドし、必芁なものをすべお収集したす。

svn co svn://svn.openwrt.org/openwrt/branches/backfire dir320 cd dir320 ./scripts/feeds update -a && ./scripts/feeds install –a make prereq && make tools/install && make toolchain/install
      
      





ファヌムりェア構成

 make menuconfig
      
      





次のパッケヌゞを遞択したす。



自分で最埌のアむテムを遞択したす。UVCWebカメラがありたした。

では、なぜ私が説明しなかった目的のパッケヌゞを遞んだのですか 問題は、ルヌタヌにむンストヌルされおいるフラッシュメモリの量が4MBであり、これが今埌の䜜業に干枉する可胜性があるこずです。 rootfsをUSBフラッシュドラむブに転送し、そこからルヌタヌを起動したす。

ずころで、フラッシュメモリに぀いおは、次のこずを芚えおおく必芁がありたす。

make kernel_menuconfig







たた、カヌネルハッキングでは、 console=/dev/null



がデバッグポヌトずしおこのポヌトを䜿甚しないように、 console=/dev/ttyS0



をconsole=/dev/null



に修正する必芁がありたす。

コンパむルずフラッシュ


ファヌムりェアのコンパむル

 make V=99 -j2
      
      





次に、フラッシュする必芁がありたす。

bashの堎合

 #!/bin/bash echo "==================================================================" echo "This script will upload dd-wrt firmware (firmware.bin)" echo "in the current directory to 192.168.0.1 " echo "during the router's bootup. " echo "" echo "* Set your ethernet card's settings to: " echo " IP: 192.168.0.10 " echo " Mask: 255.255.255.0 " echo " Gateway: 192.168.0.1 " echo "* Unplug the router's power cable. " echo "" echo "Press Ctrl+C to abort or any other key to continue... " read echo "" echo "* Re-plug the router's power cable. " echo "" echo "==================================================================" echo "Waiting for the router... Press Ctrl+C to abort. " echo "" try(){ ping -c 1 -w 1 192.168.0.1 } try while [ "$?" != "0" ] ; do try done echo "*** Start Flashing **** " atftp --no-source-port-checking -p -l firmware.bin 192.168.0.1 echo "Firmware successfully loaded!"
      
      





Windowsの堎合

 @echo off echo ================================================================== echo This batch file will upload dd-wrt firmware in the current directory to echo 192.168.0.1 during the router's bootup. echo. echo * Set your ethernet card's settings to: echo IP: 192.168.0.2 echo Mask: 255.255.255.0 echo Gateway: 192.168.0.1 echo * Unplug the router's power cable. echo. echo Press Ctrl+C to abort or any other key to continue... pause > nul echo. echo * Re-plug the router's power cable. echo. echo ================================================================== echo Waiting for the router... Press Ctrl+C to abort. echo. set FIND=%WINDIR%\command\find.exe if exist %FIND% goto LPING set FIND=%WINDIR%\system32\find.exe if exist %FIND% goto LPING set FIND=find :LPING ping -n 1 -w 50 192.168.0.1 | %FIND% "TTL=" if errorlevel 1 goto LPING echo *** Start Flashing **** tftp -i 192.168.0.1 put firmware.bin if errorlevel 1 goto LPING set FIND= echo. echo ================================================================== echo * WAIT for about 2 minutes while the firmware is being flashed. echo * Reset your ethernet card's settings back to DHCP. echo * The default router address will be at 192.168.1.1 echo. Pause
      
      





フラッシュドラむブからの起動の構成


最初のむンクルヌドの埌、ルヌタヌのWebむンタヌフェヌスに移動しおパスワヌドを倉曎したす。 次に、SSH経由で接続したす。 フラッシュドラむブからのダりンロヌドを蚭定する必芁がありたす。そのためには、たずマヌクアップする必芁がありたす。 2぀のパヌティションがありたした。1぀目はrootfs甚のext3パヌティション、2぀目はスワップです。 vimで/ etc / config / fstabを開き、felshkaに察応するものを曞き蟌みたす。 私はこれを持っおいたす

  config global automount option from_fstab 1 option anon_mount 1 config global autoswap option from_fstab 1 option anon_swap 0 config mount option target / option device /dev/sda1 option fstype ext3 option options rw,sync option enabled 1 option enabled_fsck 1 option is_rootfs 1 config swap option device /dev/sda2 option enabled 1
      
      





保存しお再起動したす。

鬌


Arduinが゚ンゞンを制埡するため、TCPポヌト5554に到達したすべおのものを/ dev / ttyS0にリダむレクトするデヌモンを䜜成したす。

アヌカむブカヌドでデヌモンのコンパむル枈みバヌゞョンを怜玢したす

ファヌムりェアアセンブリの準備でアセンブルされたgccを䜿甚しおコンパむルしたす。

 <
>/dir320/staging_dir/toolchain-mipsel_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/bin/mipsel-openwrt-linux-uclibc-gcc-4.3.3 <   > -o <  >
      
      





ルヌタヌを䜿甚しお䜜業を敎理する䟿利さに぀いおの小さな䜙談




デヌモン[続き]


ルヌタヌでデヌモンを満たし、スタヌトアップに远加したす。

次に、mjpg-streamerを配眮したす。

 opkg install mjpg-streamer
      
      





/ etc / config / mjpg-stramerに以䞋を蚘述したす。

 config mjpg-streamer option device “/dev/video0” option resolution “640x480” option fps “24” option port “8080” option enabled “true”
      
      





カメラを接続しようずしおいたす。 すべおがうたくいけば、ここで画像を芋るこずができたす

http// <ルヌタヌIPアドレス> /action = stream

Arduinoず接続



たず、゚ンゞンの接続図を決めたしょう。 既補の機械からケヌスを取り出したので、私ぱンゞンで幞運でした-それらはすでにそこにありたした。 前郚は回転巊、右、右を担圓し、埌郚は移動䞀郚のVAZのドアロックボタンの゚ンゞンに倉曎する必芁がありたしたを担圓したした。 電界効果トランゞスタ95N2LH5を䜿甚しおいるが、私の郜垂でこれらのトりヒが芋぀かったためIRF 630を䜿甚を䜿甚しお、arduinoで負荷を制埡できたす。 接続は次のずおりです。トランゞスタのグランド-アルデュむンの制埡ピン、゜ヌス-アルデュむンのグランド、マむナスの負荷䟛絊、ドレむン-マむナスの負荷、プラスの負荷のプラス。 しかし、この方法では、私たちは前方にのみ乗り、䞀方向にしか回転できたせん。 この問題に察凊するために、2぀の接点グルヌプを持぀リレヌが急いで支揎を求めたす。 1぀の゚ンゞンフロントに6ボルト、もう1぀に12を搭茉しおいたす。6ボルトのバッテリヌを2぀䜿甚したしたそのうちの1぀は無停電電源からの鉛酞です。ルヌタヌでは機胜したせんルヌタヌに䟛絊しおいるボルトの数を確認しおください。12ボルトを印加した埌、もう1぀賌入しなければなりたせんでした。 そのため、フロント゚ンゞンに電力を䟛絊/䟛絊しないために別のリレヌを䜿甚する必芁がありたした。

スキヌム

私は長い間図を描きたした。 珟圚、すべおのトランゞスタは電界効果であり、抵抗はありたせん。

次に、コヌド自䜓に぀いお説明したす。 すべおが私にずっお非垞に簡単です-1バむトサむズの独自のパラメヌタヌを持぀4぀のコマンドがありたす。



arduinoプログラムのコヌドは次のずおりです。

 int inByte, val; void setup() { Serial.begin(9600); pinMode(2, OUTPUT); pinMode(4, OUTPUT); pinMode(7, OUTPUT); } void loop() { if (Serial.available() > 0) { inByte = Serial.read(); if ((inByte=='n')||(inByte=='e')){ while (Serial.available()==0) {} val=Serial.read(); if (inByte=='n'){ if (val=='1'){ digitalWrite(2, HIGH); Serial.print("Writing to 2 pin\n\r"); } if (val=='0'){ digitalWrite(2, 0); Serial.print("Writing to 2 pin\n\r"); } } if (inByte=='e'){ if (val=='1'){ digitalWrite(4, HIGH); Serial.print("Writing to 4 pin\n\r"); } if (val=='0'){ digitalWrite(4, LOW); Serial.print("Writing to 4 pin\n\r"); } } } if ((inByte=='m')||(inByte=='r')){ while (Serial.available()==0) {} val=Serial.read(); if (inByte=='m'){ if (val!='0') analogWrite(3, val); else analogWrite(3, 0); Serial.print("Writing to 3 pin\n\r"); } if (inByte=='r'){ if (val=='1'){ digitalWrite(7, HIGH); Serial.print("Writing to 7 pin\n\r"); } if (val=='0'){ digitalWrite(7, LOW); Serial.print("Writing to 7 pin\n\r"); } } } } }
      
      





ご芧のずおり、私のリアモヌタヌは3぀のピンに接続され、フロントは1〜7、リアリレヌは2ピン、フロントは4に接続されたす。3はPWMピンであるため、analogWrite3、val;、where val 0から255たで、モヌタヌの電圧を制埡できたす。

ルヌタヌを分解したす。 UARTポヌトが衚瀺されたす。 arduinoず接続したす。

ルヌタヌ䞊のUART

それでは、すべおの仕組みを芋おみたしょう。 telnetでポヌトに接続し、以䞋を確認したす。



ルヌタヌのポヌトで䜜業をデバッグするには、minicomを䜿甚できたす opkg install minicom



。

゜フトりェア郚



アヌカむブでは、マシンを制埡するための私のプログラムアヌカむブからの回転ず電力をルヌタヌの/ bin /にコピヌする必芁がありたす。カヌドは私のデヌモンです。 ゞョむスティックでのみ動䜜したす。 [蚈画]タブで、cronデヌモンを䜿甚しお実行するbashスクリプトを䜜成できたすルヌタヌにopkg install bash



を忘れないでください。 蚭定を倉曎した埌、このデヌモンを再起動する必芁があるため、プログラムはアドレスhttp// <IPアドレス> / cron-restartでスクリプトを実行したす。 したがっお、䜜成/ www / cgi-bin / cron-restartする必芁があり、実行可胜にするこずを忘れないでください。 コヌド

 #!/bin/bash /etc/init.d/cron stop; /etc/init.d/cron start
      
      





おわりに



圌は䜕も忘れおいなかったようです。 ああ、もちろん これが私の傑䜜です。





写真車



写真車



写真車



写真車



写真車



Bluetoothをこのデバむスに接続できたす詊しおいたせんが、ドラむバヌがありたす、3Gモデムむンタヌネットを取埗するこずに成功したしたが、プロバむダヌが各クラむアントに独自の倖郚IPアドレスを䞎えおいないようですので、バックコネクトなどを䜿甚する必芁がありたすたたはvpn、gpsレシヌバヌ問題は発生しないはずです-結局、シリアルポヌトずしお定矩する必芁がありたす。

泚釈



ルヌタヌが突然再起動する堎合は、ルヌタヌからすべおのワむダを削陀するか、すべおを遞別する䟡倀がありたす。 実隓的に、ルヌタヌが干枉から再起動できるこずを認識したため、ハブを数局の断熱材ずアルミ箔で芆う必芁がありたした。

そしおもう䞀぀。 ルヌタヌの代わりにRaspberry Piを䜿甚でき、トランゞスタずリレヌの代わりにArduino Motor Shieldを䜿甚できたす。



アヌカむブ、私が耇数回蚀及した  ミラヌ 。



All Articles