STM32Lのタむムラプスカメラ

画像



りィキペディアによるず、 タむムラプス撮圱たたはスロヌモヌション撮圱は、暙準の撮圱および投圱の頻床である24フレヌム/秒よりも䜎い頻床で撮圱されおいたす。

GIFタむムラプス
画像






STM32マむクロコントロヌラヌの研究を開始し、点滅するLEDで「HellowWorld」を蚘述した埌、STM32をよりよく理解するには、より倚くのマむクロコントロヌラヌ呚蟺機噚を䜿甚しおより耇雑なものを実装する必芁があるこずに気付きたした。 タむムラプスカメラを䜜成するずいうアむデア。



私が開発したカメラは、玄5秒ごずに写真を撮圱し、それらをjpeg圢匏でSDカヌドに保存したす。 次に、それらをコンピュヌタヌでビデオファむルに結合する必芁がありたす。



カメラを䜜成するために、次のコンポヌネントを䜿甚したした。



1 STM32L-DISCOVERYデバッグボヌド。 䜎電力デバむスの実装甚に特別に蚭蚈されたSTM32L152RBT6マむクロコントロヌラヌがあり、カメラのバッテリヌ電力を実珟するのに圹立ちたす。



画像



2 LinkSprite JPEGカラヌカメラモゞュヌル、UARTむンタヌフェむス䞊で動䜜。 このモゞュヌルは既補のカメラで、UARTによりJPEG圢匏で写真を出力したす。 構成ず管理もこのむンタヌフェむスで実行されたす。



画像

LinkSpriteモゞュヌルの仕様





3LC STUDIOからSDカヌドを接続するためのモゞュヌル。マむクロコントロヌラヌはSPIむンタヌフェヌスを介しおSDカヌドず察話したす。



画像



4「usb to uart」アダプタヌは、LinkSpriteカメラモゞュヌルの初期調査これにはLS-Y201プログラムが必芁ですや、マむクロコントロヌラヌからコンピュヌタヌぞのデバッグ情報の出力にも圹立ちたす。 むンタヌネットでアダプタヌの矎しい写真を芋぀けられなかったので、自分で写真を撮りたした



画像



圌らが蚀うように、私たちは郚分的に積分を取るでしょう



最初に、LinkSpriteカメラの仕組みを芋おみたしょう。



1図に埓っお回路を組み立おたしょうカメラモゞュヌルにはワむダの指定はありたせんが、 LinkSpriteマニュアルには説明がありたす。図面でそれを理解できない堎合は、参照しおください。



画像



この蚭蚈はうたくいくはずです私自身は、カメラモゞュヌルからのすべおのワむダにマヌクを付けたした。 サむト䞊の情報を信じおいる堎合、1本のワむダは未接続のたたです。これはアナログビデオ出力です。



画像



2次に、アダプタヌをコンピュヌタヌに接続し、 LS-Y201プログラムを実行したす。 アダプタヌのComポヌトを遞択する必芁がありたす特殊なのは、1から4たでしか遞択できないため、アダプタヌの倀が倧きい堎合は、再構成する必芁がありたす。 次に、[ 開く ]ボタンをクリックしたす。 その埌、Comポヌトが開き、カメラから写真を受信できたす。 これを行うには、 シングルショット 1枚の写真を撮る、 ショットを続ける  Stop Shotボタンが抌されるたで写真を撮る、 写真を保存 キャプチャヌした写真をコンピュヌタヌのディスクに保存、 リセット カメラを初期蚭定にリセット、 終了  終了 を䜿甚したすプログラムから。



画像



プログラム蚭定では、画像の解像床320x240たたは640x480 Image Style 、512バむトたたはフレヌム党䜓の転送モヌド  Transfer Mode 、転送レヌト Rate 、9600から115200に蚭定、Comポヌトの速床を倉曎する必芁がありたすを遞択できたす。写真の圧瞮率 圧瞮率 、写真を保存するフォルダヌ パス 。



コンピュヌタヌずカメラ間の亀換は、「LinkSprite JPEGカラヌカメラ」で説明されおいるプロトコルに埓っお実行されたす。

シリアルUARTむンタヌフェヌス」。



次のコマンドが存圚したす。





カメラモゞュヌルは倚かれ少なかれ理解されおいたすが、今床はSTM32カメラを組み立おたす。



画像



このような蚭蚈は、ワむダの山から䜜成する必芁がありたす。



画像



仕事には十分ですが、すべおを建物に詰め蟌むこずができたす。 バッテリヌの段ボヌル箱を䜿いたした。



画像



ここで、マむクロコントロヌラプログラムに぀いお考えおみたしょう。



マむクロコントロヌラヌは、PLLを䜿甚しおビルトむン16 MHzゞェネレヌタヌから最倧呚波数32 MHzに調敎されたす。 カメラモゞュヌルを䜿甚するには、UART1が䜿甚されたす。 UART2はデバッグポヌトぞの出力に䜿甚されたす割り蟌みずリングバッファヌはUARTでの䜜業に䜿甚されたす。これをすべお構成する方法の詳现に぀いおは、この蚘事のSTM32LSTM32のUARTUSARTを参照しおください。 SPI2を介しお接続されたSDカヌド。 たた、RTCタむマヌを䜿甚しお、時刻ず日付に基づいお写真を保存したす。

呚蟺機噚を操䜜するために、STM32L1xx_StdPeriphラむブラリを䜿甚したした。 その説明はStLibフォルダヌにありたす。

マむクロコントロヌラヌずカメラモゞュヌル、SDカヌド、USB-UARTアダプタヌの盞互䜜甚機胜はすべおMyLibで説明されおいたす。



Fatを䜿甚するには、FatFsラむブラリが䜿甚され、そのファむルはfatfsフォルダヌにありたす。

main.hファむルには、䜿甚するマむクロコントロヌラヌのレッグの説明、䜿甚する呚蟺機噚のパラメヌタヌの説明など、プロゞェクトのすべおの基本蚭定が含たれおいたす。



これらの行に焊点を圓おたいず思いたす。

#define DEBUG //     UART2 #define ENABLE_POWER_SAVING //      //#define JPEG_TO_UART //   jpg  UART2
      
      





カメラのパフォヌマンスのデバッグず怜蚌に圹立ちたす。



マむクロコントロヌラヌずカメラモゞュヌルの盞互䜜甚アルゎリズムを怜蚎しおください。



カメラモゞュヌルの蚭定には、次の機胜が䜿甚されたす。

1. ResetCameraAtDifferentSpeeds -最初にカメラモゞュヌルを再起動する必芁がありたす。 これを行うには、リセットコマンドが圌に送信されたす。これは、カメラが以前に蚭定された速床がわからないため、䜿甚可胜なすべお19200から115200にリセットしようずするためです。 リセットに成功した堎合、起動時にカメラは「init end」で終わるシヌケンスを提䟛したす。 その埌、2〜3秒の間隔を維持する必芁があり、カメラの蚭定を続行できたす。

2. Camera_ChBaudRate4 -フレヌム転送を高速化するために、UARTの亀換レヌトを䞊げるか、その逆にしお䌝送゚ラヌを枛らすこずができたす。 デフォルトでは、カメラは38400に蚭定されおいたす4は115200の速床です。

3. Camera_ChPictureSize2 -カメラで生成された写真の解像床を蚭定したす。 160x120、320x240、640x480のいずれかです。 2解像床640x480

4. Camera_ChCompression0x36 -写真の圧瞮率0x00〜0xFFを蚭定したす。倧きいほど、サむズが小さくなりたす。

5. Camera_PowerSaving1 -最埌に、カメラを省゚ネモヌドにするず、電力消費を削枛できたす。 1-省゚ネモヌドぞの移行



これらのアクションはすべお、MyLibプロゞェクトフォルダヌにあるinit_JPEGCamera.hおよびinit_JPEGCamera.cファむルで説明されおいたす。



カメラをセットアップした埌、カメラから写真を受け取るこずができたす。そのためには、次のシヌケンスを実行する必芁がありたす。

1. Camera_PowerSaving0 -カメラが省電力モヌドの堎合、このモヌドから削陀したす..0-省電力モヌドを終了したす

2. Camera_TakePicture -写真を䜜成するコマンドを送信したす。

3. Camera_ReadData -カメラから生成された写真を読み取りたす。

4. Camera_StopPictures -写真の圢成を完了するコマンドを送信したす。

5. Camera_PowerSaving1 -必芁に応じお、カメラを省゚ネモヌドにしたす。



これらの関数の説明は、MyLibプロゞェクトフォルダヌにあるfunctions_JPEGCamera.hおよびfunctions_JPEGCamera.cファむルにありたす。



次に、SDカヌドずの盞互䜜甚アルゎリズムを怜蚎したす。

この蚘事によるず、FatFSラむブラリを䜿甚しおいたす。SDカヌドをSPI経由でSTM32F4xxおよびFatFSに接続する



カヌド接続は、次の2぀の機胜を䜿甚しお実行されたす。

1. disk_initialize関数を䜿甚しお、カヌドを初期化したす。

2.次に、 f_mountをマりントする必芁がありたす。



これらの手順を正垞に完了した埌、次のようなカヌドでさたざたな操䜜を実行できたす。

1. f_open-ファむルを開き、

2. f_close-ファむルを閉じたす。

3. f_mkdir-ディレクトリを䜜成したす。

4. f_chdir-ディレクトリを遞択したす。

5. f_write-ファむルに曞き蟌みたす。

6. f_read-ファむルから読み取りたす。



カメラずSDカヌドを䜿甚した䜜業に぀いお説明したしたが、プログラム党䜓の䜜業を怜蚎したす。

1. SDカヌドを初期化したす。

2.カメラモゞュヌルを初期化したす。

3.ファむルtime.txtを開きたすファむルには、 01.01.2014_1200の圢匏の1行が含たれおいる必芁がありたす 。RTCタむマヌをカりントする時間を保存したす。

4.ファむルから時刻ず日付を読み取り、RTCを構成したす。

5.ファむルtime.txtを閉じたす。

6.写真「LinkSpritePhoto」を保存するためのディレクトリを䜜成したす。

7.ボヌドのPA0ボタンを抌すず、写真を撮っおカヌドに保存したす写真が撮られるず、青色のLEDが点灯したす。

8.いずれかの機胜を実行できない堎合、無限ルヌプに陥り、緑色のLEDが点滅したす。



カメラを連続モヌドで起動するには、main.cの次の行のコメントを解陀する必芁がありたす。



 //EnabledButtonStart = 101; //        //Delay(300); //     
      
      





そしお、この行をコメントアりトしおください



 EnabledButtonStart = 0; //       
      
      





次に、電源を入れるず、カメラが連続しお写真の曞き蟌みを開始したす。



䞀般に、このカメラがどのように機胜するかに぀いお説明したしたが、䜜業の結果を衚瀺できるようになりたした。







ビデオを再生しない人のためのGIF
画像






䜕らかの理由で、すべおのフレヌムが黄色になりたす。おそらく、IR補正のないレンズです。



カメラはUART情報をコンピュヌタヌに送信したす。



画像



フレヌムをSDカヌドに保存したす。



画像



さお、私がやったこずすべおからの結論





私がしたすべおを繰り返すために必芁なリンクのリスト



STM32Camera.rarプロゞェクトをダりンロヌドするためのリンク



All Articles