モミの朚、ラむトアップ パヌト1OpenWRTのガヌランドず゜フトりェアのアセンブリ

こんにちは、Habr



新幎の4日前の12月28日、私は問題を抱えおいたした。新幎の花茪を売るこずは珍しい䞭囜のゎミだずいうこずに気付きたした。 事実、私には小さな人工的なクリスマスツリヌず小さな子䟛がいるので、ツリヌにどんな圢の220 Vも必芁ずせず、数癟の電球に花茪も必芁ありたせんでした。 そしお圌はすぐに、これらのアむテムに該圓するものをすべお取り陀いた埌、「抱擁ず泣き」商品だけが近くの店に残っおいるこずを発芋したした。



したがっお、私は自分で花茪を䜜らなければなりたせんでした。 そしお、このガヌランドにはIPアドレスがありたす。







しかし、真剣に蚀えば、私は2぀の目暙を远求したした自分のためにガヌランドを䜜るだけでなく、 Black Swiftナノコンピュヌタヌを䜿甚しお、ニヌハむから完党にプロフェッショナルなものたでのさたざたなプロゞェクトを実行する方法を瀺し、非垞にシンプルで高速であるこずを瀺すこず。 さたざたな興味深い点に぀いおの議論を亀えながら。



このテキストは、プログラムの䜜成方法を倚少理解し、はんだごおを手に持぀こずができる人を察象ずしおいたすが、OpenWRTでナノコンピュヌタにアプロヌチする偎が謎のたたです。 特に、プロセス党䜓が䞊蚘のフレヌムワヌクを超えお特別な知識や特別な機噚プログラマヌ、アダプタヌなどを必芁ずしないため、掚枬しおみたしょう。



これはこのトピックの最初の蚘事なので、3぀の郚分に分けお、倧きなシヌトが衚瀺されないようにしたす。

  1. C / C ++でのOpenWRT甚のガヌランド、Black Swift接続およびビルド環境
  2. C䞊の゜フトりェア、GPIOおよび゜フトりェアPWMで動䜜
  3. Web UIずAndroidアプリ






リアルタむムでは、3぀の郚分すべおが「週末プロゞェクト」のフレヌムワヌクに簡単に適合したす。



だから、ガヌランド自䜓。 最寄りの店舗の品揃えは倚かったが、悲しいため、Chip-i-Deepのりェブサむトに぀たずいたのでたずえば、安くはありたせんでしたが、12月28日に遞択肢はほずんどありたせんでした、私も自分でそれをはんだ付けするこずを決めたした。







花茪の堎合、0.2-0.3 sq。Mmの断面積の倚数のワむダ、倚数のマルチカラヌLED私は160床の角床のBetluxを遞択したした -明るく、広角で倧きく、取り付けが簡単です、および倚くの抵抗噚が必芁です。 ただし、LEDの半分の数の抵抗がありたす。LEDを䞊列にオンにするこずにしたため、各ペアには1぀の抵抗のみが必芁です。 これにより、ガヌランドの管理が耇雑になりたすが、ワむダの数が枛りたす。



LEDの脚は、ケヌスの基郚で90床右に曲がっおいたす䞀般的に、これを行うべきではありたせん-ケヌスはそのような負荷アプリケヌションに䟝存したせんが、あなた自身ずリスクを理解するず、LEDのペアを壊すこずが可胜です。 色の組み合わせの芳点からだけでなく、これらのBetluxモデルは異なるLEDスむッチング極性に察しお異なる色を持っおいるため、青ず黄色、赀ず緑を組み合わせるず䟿利です。 この色の組み合わせにより、同じ結論が結び付けられ、混乱が軜枛されたす。



各ペアに1぀の抵抗がはんだ付けされ、公称倀は暙準R>U-2.5/ 0.02ず芋なされたす。ここで、Uはガヌランドの䟛絊電圧、2.5 VはLEDのおおよその電圧降䞋です色によっお異なりたすが、私たちにずっおは倧きいです粟床は必芁ありたせん、0.02 AはLEDを流れる最倧電流です。 ガヌランドの電源が+5 Vの堎合、抵抗はそれぞれ125オヌムです。抵抗を130たたは150オヌムにしたす。 具䜓的には、1 kOhmの抵抗噚のバッグず15 Vの電源があるため、15 Vからガヌランドに絊電し、ボヌドに5 Vのスタビラむザヌを远加したしたが、これを行う必芁はありたせん。



ガヌランドには80個のLEDがありたしたおかげで、4色すべおを1぀のバッグに泚いでくれた芪切な売り手です、そのうち40個は同時に䞊行しお動䜜できたす。これは0.8 Aの電流です。぀たり、携垯電話から5 In 1そしお幞せに十分。



ワむダを切断し、剥ぎ取り、密封し、熱収瞮で閉じた。 これは最も平凡な郚分です。2぀の点だけに泚意しおください。たず、䞭倮でコンベアベルトに乗っおいる䞭囜人の女の子のように感じ、数秒で感謝し始めたす。次に、2぀の独立した枝赀緑ず青黄色からガヌランドを䜜りたした。



この経枈性を管理するには、4぀のハヌフブリッゞが必芁です。各ブランチに2぀あり、電源LEDの極性を切り替え、それに応じお色を遞択する機胜を提䟛したす。 幞いなこずに、L293Dのようなすばらしいチップがありたす。このチップには、4぀のハヌフブリッゞが組み立おられおいたす。



スキヌムは比范的䞀般的です







電圧レベルを調敎するには、入力に5぀のトランゞスタ䜎電力N-MOSFETが適しおいたすが必芁ですBlack Swiftは+3.3 V、L293-+5 Vで動䜜したす。原則ずしお、堎合によっおは、回路の3.3 V出力を調敎なしの5 V入力、ただし泚意最初に、最初の出力の電圧「1」が2番目を自信を持っお切り替えるのに十分であるこずを確認する必芁がありたす。2番目に重芁なこずは、0以倖の反察方向に䜕もないこずです。 .3.3 Vはどのような状況でも届きたせん。



バむラテラルマッチングには、特別なマむクロ回路がありたすただし、トランゞスタにはバむラテラルを䜿甚できたすが、片偎マッチングがあり、カレンダヌでは既に12月29日であるため、思い浮かぶこずなく最初に遭遇したトランゞスタから行いたす。 興味があればIRLML6344がありたした。



すべおをブレッドボヌドに入れお、Black Swiftを接続したす。







非垞に簡単な方法で接続しおいるこずに泚意しおくださいワむダは必芁なGPIOず電力線にはんだ付けされおいるだけです。 最も普遍的な方法ではありたせんが、非垞にシンプルで信頌性の高い方法です。 BSB甚の別個のスタビラむザヌは必芁ありたせん-L293Dず同じ+5 Vで駆動できたす。



OpenWRTの準備





メむンアプリケヌションをCで䜜成するため、ビルド環境が必芁です。 残念ながら、暙準環境-OpenWRT SDK-はLinuxでのみ機胜したす。幞い、CentOS 6でホヌムサヌバヌを䜿甚しおいたす。



1぀たたは同様のものがある堎合は、ar71xxプラットフォヌム甚の暙準SDKをダりンロヌドしお解凍するだけです。 x86-64プラットフォヌム専甚です。



Linuxが叀い32ビットプロセッサで実行されおいる堎合倚くの人が持っおいるこずを知っおいたす、32ビット甚のSDKを収集したした。 圌はそこにいたす。



Linuxがたったくない堎合は、CentOS 6がむンストヌルされ、前述のSDKで/ home / openwrt / Openwrt-SDK-BBフォルダヌに既に解凍されおいるOracle VirtualBoxの仮想マシンのむメヌゞを䜜成したした。 OSずSDKは32ビットなので、ほずんどすべおで動䜜したす。 パスワヌドは、root / openwrtおよびopenwrt / openwrtです。 こちらがこの画像です。



したがっお、仮想マシンをダりンロヌドし、zipファむルをvdiで解凍し、VirtualBoxを起動しお、32ビットLinux甚の新しいVMを䜜成し、既存のvdiファむルをそのディスクずしお指定したす。 cd Openwrt-SDK-BBを開始、ロヌド、実行したす-そしお出来䞊がり、䜜業の準備が敎いたした。



アセンブリ甚のパッケヌゞはpackagesディレクトリにありたすが、これたでのずころ空です。 より正確には、元のバヌゞョンでは、パッケヌゞ自䜓はありたせんが、パッケヌゞの゜ヌスコヌドのダりンロヌド元を瀺すMakefileのみがあり、アセンブリ䞭にダりンロヌド、アンパック、コンパむルが行われたす。 OpenWRTの100のビルド䟋のうち少なくずも99は、この特定のスキヌムを説明しおいたす。



私たちの堎合、これはかなり䞍䟿です-GitHubで自家補のクリスマスガヌランドを管理するために最初にプログラムをアップロヌドするこずはほずんどありたせん。 したがっお、゜ヌスをどこからでもダりンロヌドせずにすぐに䜿甚できるMakefileを䜜成したす。



したがっお、パスは次のようになりたす。

パッケヌゞ/ツリヌラむト-共有フォルダヌ

パッケヌゞ/ツリヌラむト/ src-プログラム゜ヌス

パッケヌゞ/ツリヌラむト/ Makefile-OpenWRTの手順



珟圚、OpenWRT甚のMakefileを䜜成しおいたす。 パッケヌゞのビルド方法は制埡したせん。これは、すでにsrc内にある他のmakefileのビゞネスです。これは、OpenWRTがこの優れた機胜で䜕をすべきかを説明しおいたす。



include $(TOPDIR)/rules.mk #   , ,  .   PKG_* - . PKG_NAME:=treelights PKG_VERSION:=0.0.1 PKG_RELEASE:=1 #  ,      .      PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) include $(INCLUDE_DIR)/package.mk #     #     OpenWRT    ,   ,     , #     "Christmas tree lights controller", URL     #  DEPENDS     -     ,     #       C,       libstdc++    define Package/treelights SECTION:=base CATEGORY:=Utilities DEFAULT:=n TITLE:=Christmas tree lights controller URL:=http://black-swift.com DEPENDS:=+libstdcpp endef #  .        - ,    define Package/treelights/description Christmas tree lights controller endef #     # 1.     # 2.        src define Build/Prepare mkdir -p $(PKG_BUILD_DIR) $(CP) ./src/* $(PKG_BUILD_DIR)/ endef #   ,      define Build/Configure $(call Build/Configure/Default,--with-linux-headers=$(LINUX_DIR)) endef #    # 1.     (    ,   ) # 2.        #      ( ,  -) -   #     define Package/treelights/install $(INSTALL_DIR) $(1)/usr/bin $(INSTALL_BIN) $(PKG_BUILD_DIR)/treelights $(1)/usr/bin/ endef $(eval $(call BuildPackage,treelights))
      
      







そのようなMakefileをpackages / treelights /に配眮し、プログラム゜ヌスをpackages / treelights / src /に配眮するず、OpenWRT SDKフォルダヌのルヌトからmake menuconfigを安党に実行できたす。



パッケヌゞ構成メニュヌが開きたす。その䞭には、デフォルトでオフになっおいるクリスマスツリヌラむトcontroillerナヌティリティがありたす。 カヌ゜ルをその䞊に眮き、スペヌスバヌを抌したす-ナヌティリティの前にマヌクMが衚瀺されたす。これは、別のパッケヌゞにアセンブルされるこずを意味したす。



menuconfigを終了しお構成を保存し、make package / treelights / compileコマンドでパッケヌゞの実際のアセンブリを開始したす



すべおがうたくいくず、数秒埌にサブディレクトリがbin / ar71xx /フォルダヌに衚瀺されたす。このフォルダヌのパッケヌゞはipkファむルにありたす。 そこから私たちにずっお䟿利な堎所に持っお行き、䟋えば、WinSCPを䜿甚しお、含たれおいるBlack Swiftに接続し、このファむルをコピヌしたす。 お気に入りのSSHクラむアントを開き、BSBコン゜ヌルに接続しおopkg install tr​​eelights * ipkコマンドを実行したす。 ほんの数秒-そしおあなたはプログラムを実行するこずができたす、それは/ usr / bin / treelightsにあり、動䜜する準備ができおいたす。 プログラムのアンむンストヌル-opkgはツリヌラむトを削陀し、曎新したす-再床opkgをむンストヌルし、曎新する前に叀いバヌゞョンを手動でアンむンストヌルする必芁はありたせん。



アセンブリが倱敗した堎合は、コマンドmake package / treelights / compile V = 99で再床実行したす。これにより、コンパむラヌの詳现な出力がすべおの゚ラヌずずもに衚瀺されたす。



耇数のパッケヌゞを同時にビルドする必芁がある堎合、特定のパッケヌゞを指定せずに、単にmakeたたはmake V = 99ず蚀いたす。 menuconfigに含たれおいたすべおが収集されたす。 make cleanコマンドは、アセンブリ䞭に䜜成された䞭間ファむルを消去し、make dirclean-䞭間および最終ファむルを䜜成し、make distcleanはすべおを消去し、フォルダヌを元の状態に戻したす。



OpenWRTのアセンブリに関するその他の詳现に぀いおは、公匏Webサむトをご芧ください 。



All Articles