Arduino Opta始めます。
PLC知ってますかPLC
工場を動かすPLC
社会を動かすPLC
ArduinoがPLC作ったらしいです。(ちょっと前からPortenta Machine Controlっていうシリーズが先行で出てたらしいけど基板がむき出しであまり手を出す気にならなかった)
去年の12月くらいからArduino Optaを作ったので売り出すぜ!みたいな発表が公式から出てしばらくした3月中旬に発売されたらしい。
在庫があったのでArduino Opta Liteを購入してArduino PLC IDEで動かすまでできたので記事にします。
PLC IDEがあるのになんでArduino IDEも用意せにゃならんねんってなったそこのあなた。
わかる。けど準備のために必要だったんだ。(私の場合)
理由はボードマネージャからOptaの情報をインストールする必要があり、この情報がないとPLC IDEがコンパイルできないよって文句言ってくるのでまずArduino IDE>ツール>ボード>ボードマネージャ(Ctrl+Shift+B)でArduino Mbed OS Opta Boardsをインストールしてください。
ArduinoのボードなのでArduino言語でも記述ができます。
Hello World #かめらぼ pic.twitter.com/eco2qsgX0B
— かめらちゃん (@mrc_je_cours) 2023年4月4日
s://twitter.com/mrc_je_cours/status/1643230754154086402?s=20
https://
中身は超適当
これでUSBつないでCOMポーと合わせてアップロードすればOK
Arduino PLC IDEを立ち上げて適当な名前つけたプロジェクトを作って最初に現れるページ
twitter.com/mrc_je_cours/status/1643230754154086402?s=20
どうも画面下のほうのOtherのところでPort:COMx Downloadボタンを押せば
ブートローダが書き込まれ、PLCとして動き出してくれるらしい。
動かん。めっちゃ嵌った。
なおPLC IDEとの接続はうまく行ってないのでArduino言語でLチカしてるだけ
— かめらちゃん (@mrc_je_cours) 2023年4月4日
Cannot generate profile file (error message: Error: パスが見つかりません。)
— かめらちゃん (@mrc_je_cours) 2023年4月4日
じゃねぇんじゃ
Arduino IDEではつながるしアップロードもできる。
— かめらちゃん (@mrc_je_cours) 2023年4月4日
PLC IDEが全くつながる気配を見せない。解せぬ。
Q.なんでつながらなかったの?
A.用意するもの に記載したArduino PLC IDE Toolsをダウンロード・インストールしていなかったから。
次
Library TreeからおおよそIOでつながってそうなボタン入力とLEDの命令っぽのを見つけたのでLDで直結してみた。
コンパイルではじかれる。
error A4136: (中略) Missing index(es)
Error Codeは分かったから対処法を書いてくれ #かめらぼ pic.twitter.com/XdwbN0QH4V
— かめらちゃん (@mrc_je_cours) 2023年4月4日
Q.なんでエラー出てたの?
A.sysButtonInputsもsysLEDOutputsも ARRAY OF BOOL形式だったから。
下記のようにsysButtonInputs[0], sysLEDOutputs[0]みたいに命令の後ろにで対応する番号書けばよかった。
今日の進捗です。
— かめらちゃん (@mrc_je_cours) 2023年4月4日
PLCだ…普通にPLCだ……… #かめらぼ#FA_Study pic.twitter.com/J3c9zk3tqK
以上。
SW4STM32を使ってmbedをオフラインコンパイルしたい(mbed OS 5編)
どうも皆様お盆をいかがお過ごしでしたでしょうか、かめらちゃんです。
私はTwitterロボコンOB界隈と楽しくキャンプへ行ってきました。楽しかったです。
そこらへんの話は行った私以外の誰かがブログエントリに載せるでしょうから書かないです。
あ、誰も書かなかったら来年度以降用のメモ代わりに書くかも・・・。
前回のエントリでmbed 2.0系のオフラインコンパイルについて書きました。
mbedとして使用するには大きな問題は無いんですが、RTOSを含めたシステムを組むとなるとエラーが出てうまく動作させることができないってことで話が終わってたと思います。
mbed OS 5は元々RTOSが搭載された状態なのでコンパイルしようとするとエラーが出て進めない状態な訳です。
今回はそのエラーを消してコンパイル+OpenOCDによる書き込みができたので報告します。
まず、mbedオンラインコンパイラでmbed-osを使ったプログラムを作成します。
今回も使用するマイコンボードはNUCLEO-F746ZGです。
mbed-osを使ったサンプルで最もシンプルなmbed OS Blinky LED HelloWorldを使用します。
元となるプログラムを作成したら、プログラムワークスペースで右クリック→プログラムのエクスポートでExport ToolchainをSW4STM32に設定しExportします。
ダウンロードが完了したらSW4STM32のworkspaceに解凍し、SW4STM32でImportします。
ちなみにこの状態でBuildを実行すると目茶苦茶時間がかかる上にエラー吐くのでおすすめしません。
Project Explorerに表示されたmbed-os-example-blinkyを右クリック→Propertiesを選び、C/C++ Buildの設定をします。
通常状態では Builder SettingsのUse defalut build commandにチェックが入っていますが、
Build commandを編集したいのでチェックを外し、Build commandをmakeから make -jに変更します。
Makefile generationのGenerate Makefiles automaticallyのチェックを外します。
BehaviorタブのWorkbench Build BehaviorのBuild(Incremental build)の中のallを消します。
ここまで設定できればOKボタンを押してPropertiesのウィンドウを閉じて問題ありません。
この状態でビルドボタンを押すと一見ビルドが通ったかの様に見えますが実際は何もビルドされません。
もう一手間加えます。
オンラインコンパイラをもう一度開いて、プログラムワークスペースで右クリック→プログラムのエクスポートでExport ToolchainをEclipse_gcc_armに設定しExportします。
ExportされたzipのBuildフォルダの中にあるMakefileをSW4STM32で読み込んでいるものと置き換えます。
SW4STM32のmakefileはプロジェクトフォルダのDebugフォルダ内にあるのでそれと置き換えます。
置き換えたらSW4STM32内でmakefileを開き、16行目のOBJDIR:= BUILDをOBJDIR:= Debugに変更します。
この状態でビルドを実行するとarm-none-eabiが実行され、.elf,.bin,.hexファイルが生成されます。
自動で書き込みを済ませるためにRun Settingsを開きます。
Ac6 STM32 Debuggingをダブルクリックするとプロジェクトに応じたデバッグ設定が生成されるので、マイコンをPCにつないでRunボタンを押します。
OpenOCDが実行され、マイコンにプログラムが書き込まれ、実行されます。
と、このようにeclipse用のエクスポート設定を無理矢理使ってコンパイルする方法を見いだしました。(Eclipseでやろうとも思ったけれどOpenOCDの設定がうまくいかなかった)
誰がこんなやり方でやるねん感はありますが、STM32をmbed状態でオフラインでRTOSを使いたいという私と似た境遇の方がおられたら使っていただけると幸いです。
なお、今後のアップデートでこんな回りくどい方法をとらなくても良くなる可能性があります。
もっといい方法あるよとかいう方がおられましたらコメントとかTwitterでお知らせいただけると大変ありがたく思います。
オフラインでmbedが使いたい(STM32)
どうもお久しぶりです。かめらちゃんです。皆様いかがお過ごしでしょうか。
研究とかでSTM32使うことも多いのですが、皆が皆手軽に扱える代物ではないので、手軽にmbedを使って開発ができれば楽ちんですね。
ただmbed、オンラインでは手軽なんですけどオフラインではなかなか癖があるらしく、解説のブログ記事などがあまり見当たりません(探し方が悪いともいう)。
今回はみんな大好きSW4STM32
を使ったmbedオフラインコンパイルを紹介する記事にしたいと思います。SW4STM32のインストール自体はyuqlid君の記事内で書かれているのでインストールは済んでいるものとして進めていきます。
使用するマイコンは今手元にちょうどあったNUCLEO-F746ZGを使いたいと思います。
mbed、mbedと一口に言いますが、どうも最近は元々あったmbed 2.0とmbed OS 5という2つの使い方(?)があるそうなのですが、今回は元々のmbed 2.0を用いて作業環境構築を行いたいと思います。
[lang:ja] mbed OS 5に関する諸々 | mbed
mbedオンラインコンパイラ側でまずは適当なプロジェクトファイルを作ります。(このとき間違えてmbed OS 5のプロジェクトファイルを生成しないようにすること)。
そのまま特にいじることなくプログラムワークスペースのプロジェクトで右クリック→プログラムのエクスポート(Ctrl+E)
Export ToolchainをSW4STM32に合わせてExportし、適当な場所に解凍します。
解凍したフォルダをsw4stm32でインポートします。
インポートできたらプロジェクトのプロパティを開き、
C/C++ Build>Settingsへ移動します。
その中のMCU SettingsのFloating point hardwareがNo unitになっているので
fpv5-sp-d16に変更、
Floating-point ABIがsoftになっているのでsoftfpに変更します。
そこまでできたらとりあえずDebugボタンを押してコンパイルします。
ちなみに失敗します。
するとこういうエラーが5件ほどでます。
- "MBED_CONF_PLATFORM_DEFAULT_SERIAL_BAUD_RATE" was not declared in this scope, RawSerial.h
- "MBED_CONF_PLATFORM_DEFAULT_SERIAL_BAUD_RATE" was not declared in this scope, Serial.h
- "MBED_CONF_PLATFORM_DEFAULT_SERIAL_BAUD_RATE" was not declared in this scope, UARTSerial.h
- "STM32_D11_SPI_ETHERNET_PIN" was not declared in this scope, PinNames.h
というエラーがでてきますので、RawSerial.h、Serial.h、UARTSerial.hの頭あたりに
#define MBED_CONF_PLATFORM_DEFAULT_SERIAL_BAUD_RATE 9600を追加してやります。PinNames.hのD11にエラーが出ているので、STM32_D11_SPI_ETHERNET_PINをPA_7に書き換えます。
これらは本来プロジェクトのmbedフォルダにあるtargets.jsonファイルに記述されており、そこから読み込まれるはずがSW4STM32が読み出してくれないので、直で書き直す必要があります。
変更を終えたら再びデバッグボタンを押すとエラーがなくなり、
コンパイルに成功します。
プロジェクト右クリック→Debug As→Debug Configuration
Ac6 STM32 DebuggingでNew launch configurationをクリックするとDebugもしくはRun設定が追加され、OpenOCDが実行されます。
また、ボードをつないでおくと自動的にプログラムがダウンロードされ、記述したプログラムが実行されます。
おわり!!皆様よいmbedオフラインコンパイルライフを!!
ちなみに私はこのNucleoボードのEthernetポートが使いたいのでmbed RTOSを別途インポートする必要があるのですが、mbedRTOSをインポートした状態でオフラインコンパイルを行おうとするとエラーが頻出してまだうまく動かせてません。
うまく動かせるようになったら記事にします。
なお、mbed OS 5はもとよりRTOSが入ってますので、SW4STM32でやるとどうもエラーが出るので扱いませんでした。
こちらも解決したら記事にするつもりです。
それでは!
Elecrowは金曜の午前中に頼め
どうもかめらです.
自己啓発本のタイトルみたいになりましたが,基板発注のお話です.
私がとてもとてもお世話になっている基板外注業者に
中国深センのElecrowという会社があります.
www.elecrow.com
安い早い最近結構シルクが綺麗と良いことずくめな基板製造やってる業者ですが,
タイミングが良いと1週間以内に来たりするのでこの記事はそのことについて書いていこうと思います.
条件
- 発送業者は深センDHLを使用します.
- 製造はスピード製造ではなくごく一般的な製造スピードで行ってもらいます.
通常スピードで頼んだ場合,Elecrowの基板製造にはだいたい2~3日の日数を要します.また,土曜日曜及び中国の祝日は発送はされませんが,どうも製造ラインは動いているようです(祝日は知らん)
金曜の朝に基板のデータを向こうに送ると,受け取ったよ~というメールが昼頃,
製造ラインに放り込んだよ~というメールが夕方頃に来ます.
そうすると土曜日曜の間にも着々と基板製造が進み,月曜には発送がされ,
水曜日には手元に届きます.
水曜や木曜に頼むと,土日に発送がなされない罠が潜んでいるので金曜の朝発注をかけるのと同じタイミングで発送されます.
また,月曜に頼むと木曜日若しくは金曜日に発送がなされますが,これもまた税関だとかDHLだとかが土日に動かない(もしくはうごきがのっそい)ので結局届くのが月曜発送とさして変わりません.
結論
- Elecrowは金曜の午前中に頼め
NUCLEO-746ZGとSTM32F7Discovery
不定期!ニキシー管時計をつくる!5
どうもですかめらです.
頼んでいたニキシー管が届きました!eBayで頼んでくるかどうか分からないどきどきを感じながら1~2ヶ月かかるかなぁと思ってましたら,2/2に頼んだのが今日届いたので,10日で届いたことになります.はやい.
追跡番号は無く,(恐らく)ウクライナからの発送でした.
で,その写真が上の画像になります.(実際は18本ありますが,その1部だけ掲載)
上記画像だけでも漂う足の不安さたるや・・・.
安かっただけにそこまで状態が良くありませんね.安かったので仕方ない.
さっきの写真の真ん中にあったニキシー管の足を見てみると,何かの機械から取り外してきました感満載の足が.さて,これをどうやって使うか・・・・・・.
最初の画像左側にあった比較的綺麗な管.足はわりかし綺麗だがよく分からないカバーがついてる.
んで,
何か1本かけてますね?
確か左ドットか右ドットの部分なのでまぁ使わない筈だから許容範囲でしょう.
8番ピンとかぬかしてましたが結局データシートをよーくよーく確認したらドットでした.
他にも数々の簡単には使えそうに無い管がはるばるやってきてくれました.
とりあえずニキシー管を載せるベース部分を修正して発注し直さねば・・・って感じです.
不定期!ニキシー管時計をつくる!4
こんにちは かめらです.
研究室のボスからはじめて進捗どうですかメールをいただきました.
本日の更新は頼んでいたものがぞくぞくと届いたぞっていう内容です.
まず一つ目
色々な個人ブログなどでGPSモジュールならこれでしょって言われているタイプのモジュール.
精度が高く,QZSS(日本の準天頂衛星「みちびき」)の受信も可能な高性能タイプのGPS受信モジュールらしいです.
時計にそんな精度いらなくね?ってGPS系研究してる友人から言われましたが,後でGPSロガー作ろうと思ってる関係もあり,これにしました.時計だけならもっと精度低くても余裕で時刻の取得は可能であると思います.
その2
- こて先たち
斜めに切り取られたような形状のC型 T18-C2
先のとがった形状のI型 T18-I
両面から切り取ったような形状のD型 T18-D24
の3種がこて先コレクションにラインナップされました.
(C型ばかり使うようになりそう・・・
その3
- K155ИД1(K155ID1)
SN74141互換のICです.ヤフオクで1個230円で売ってたので買いました.
これであとはニキシー管が着弾すれば基本的な部分は出来そう
ではまたよろしくお願いします~