プログラム製作日記

世の中にないプログラムをつくれたらよいなと思いながらプログラムをしていくブログです

ARMマイコンプログラミング(2020年 今さらSTM32ディスカバリ事始め)

 

ARMマイコンを使った電子工作をしたくなったので、大分昔に買ったSTM32ディスカバリの本と基板を引っ張り出して、2020年に手軽に手に入る環境で動かしてみたので、その記録をまとめました。当時買ったのが以下の本とマイコンです。

 

 

 

 

登録簡単なTrueStudioとST-LINK utilityを自分のパソコンにインストールしました。

 

・True Studio

https://www.st.com/ja/development-tools/truestudio.html

 

・STM32 ST-LINK utility

https://www.st.com/ja/development-tools/stsw-link004.html

 

TrueStudioに関しては、後継となる開発環境も出ているようなのですが、STM32 value line Discoveryのプロジェクトを作った時に、この基板にデフォルトで入っているUSER BUTTONを押したときにLEDの点滅方法が変わるというプログラムのもととなるコードが最初からmain.c内に入っていたので、こちらを選びました。

 

また、ST-LINKはバージョンがあり、STM32 value line Discoveryはもっとも初期のバージョンで、後継ソフト(ST-LINK/V2以降のみ対応)では対応していないというのがわかったのも、TrueStudioを選んだ理由です。

⇒この点に関して、TrueStudioでビルドしてマイコンに最初に書き込む際、メッセージがでたのでマイコンに搭載されているST-LINKのファームウェアウェアをアップデートしたのですが、なぜか書き込みができないことが判明(このアップデートがよくなかったのか)したので、結局、マイコンへのプログラムの書き込みはST-LINK Utilityを利用しました。

 

①メニューのファイル→C Projectを選択し、次に立ち上がった画面で適当なプロジェクト名を設定し、Embedded C Projectを選択します。

f:id:tut2020aaa:20210117110934p:plain

f:id:tut2020aaa:20210117111116p:plain

 

②次にターゲットマイコンの選択画面になるので、STM32VL_Discoveryを選択します。

f:id:tut2020aaa:20210117111308p:plain

これであとは特に設定の変更はせず、次へボタンを押していって、最後に終了ボタンを押すと、プロジェクトが作成されます。

 

③main.cのmain関数に無限ループする以下のwhile文があります。

それを以下のように書き換えました。

while (1)

{
 i++;
#ifdef USE_LED
 STM_EVAL_LEDToggle(LED1);

#elif defined USE_STM32_DISCOVERY
 if(0 == STM32vldiscovery_PBGetState(BUTTON_USER))
 {

    //LED4の点灯
  STM32vldiscovery_LEDToggle(LED4);
 }
 else
 {

  //LED4の消灯
  STM32vldiscovery_LEDOff(LED4);
 }
#endif
}

 

これで、USER BUTTONを押してないときはLED4は点灯、押しているときは消灯します。

 

④*1を参照してプロジェクト設定でビルド時にhexファイルが出力されるようにして、*2を参照してST-LINK Utilityを使ってプログラムの書き込みを実行しました。

 

結果は以下の通り、青色のLED(LED4)が、USER BUTTONを押していない状態で点灯するようになりました(写真の赤丸している部分がLED4)。

f:id:tut2020aaa:20210117114334p:plain

USER BUTTONを押すと、LED4は消灯します。

f:id:tut2020aaa:20210117114519p:plain

 

 


<参照>

*1 hexファイルの出力の設定は以下のページを参照しました。

gsmcustomeffects.hatenablog.com

 

*2 STM32 value line DiscoveryはST-LINKの基盤が搭載されているので、USBケーブルで基板をつなげれば専用のデバッガ/プログラマは不要なのですが、hexタイプのファイルをST-LINK utilityを使て書き込まないといけないので、以下のページを参照しました。

tri-s.world.coocan.jp

 

 ランキングに参加してます。

よかったらクリックをお願いします。

にほんブログ村 IT技術ブログ Tipsへ
にほんブログ村

Visual StudioでPython (Formを最短のコードで立ち上げられるのはPythonのどのライブラリか? まとめ)

 

全4回で、PythonGUIライブラリであるTinker, Kivy, PyQt, wxPythonによるFormの立ち上げを試してみました。

結果は以下の通りでした(2021/01/03 現在)。

 

ライブラリ 必要行数
Tkinter 3
Kivy 2
PyQt 11
wxPython 5

 

ライブラリそれぞれに考え方の違いがあるので、一概には言えないですが、この結果をみるに、単純にFormを立ち上げたいだけならKivyが最もよい選択になりそうです。

 

やりたいことが複雑になった時の扱いやすさはまたそれぞれに違った結果が出そうです。

 

*以下にそれぞれのライブラリを試した記事へのリンクを張り付けておきます。

 

 <Tinker>

tut2020aaa.hatenablog.jp

 

<Kivy>

tut2020aaa.hatenablog.jp

 

<PyQt>tut2020aaa.hatenablog.jp

 

<wxPython>

tut2020aaa.hatenablog.jp

 


開発環境: Visual Studio Community 2019

OS: Windows 10 Pro 64bit バージョン1909

使用言語:Python3.7 (64bit)

パソコン性能: CPU Intel Core i5-4310M 2.70GHz, メモリ: 8GB

 

Visual StudioPythonのライブラリを追加する方法は以下が参考になります。

docs.microsoft.com

 

 ランキングに参加してます。

よかったらクリックをお願いします。

にほんブログ村 IT技術ブログ Tipsへ
にほんブログ村

Visual StudioでPython (Formを最短のコードで立ち上げられるのはPythonのどのライブラリか? ④)

 

今回、PythonGUIライブラリをVisual Studioで試してみました。

最短のコードでFormを立ち上げられるのは果たしてどのライブラリになるのか。

 

以下で紹介されているライブラリとコードを参照しました。

techplay.jp

今回はwxPythonを試してみます。以下のページを参照しました。

qiita.com

 

上記の参照先のコードから一部改変してみました。

4行。

import wx
a = wx.App()
fr = wx.Frame(None, 12345, 'test',size=(300,100))
fr.Show()
a.MainLoop()

 

最終的に以下のFormが立ち上がります。

f:id:tut2020aaa:20210103082032p:plain






 


開発環境: Visual Studio Community 2019

OS: Windows 10 Pro 64bit バージョン1909

使用言語:Python3.7 (64bit)

パソコン性能: CPU Intel Core i5-4310M 2.70GHz, メモリ: 8GB

 

Visual StudioPythonのライブラリを追加する方法は以下が参考になります。

docs.microsoft.com

 

 ランキングに参加してます。

よかったらクリックをお願いします。

にほんブログ村 IT技術ブログ Tipsへ
にほんブログ村

Visual StudioでPython (Formを最短のコードで立ち上げられるのはPythonのどのライブラリか? ③)

 

今回、PythonGUIライブラリをVisual Studioで試してみました。

最短のコードでFormを立ち上げられるのは果たしてどのライブラリになるのか。

 

以下で紹介されているライブラリとコードを参照しました。

techplay.jp

今回はPyQtを試してみます。以下のページを参照しました。

www.sejuku.net

 

上記の参照先のコードから一部削ってみました。

11行。

import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import sip

class MainWindow(QWidget):
  def __init__(self, parent=None):
    super(MainWindow, self).__init__(parent)


if __name__ == '__main__':
  app = QApplication(sys.argv)
  main_window = MainWindow()
  main_window.show()
  sys.exit(app.exec_())

 

最終的に以下のFormが立ち上がります。

f:id:tut2020aaa:20210102112658p:plain



 


開発環境: Visual Studio Community 2019

OS: Windows 10 Pro 64bit バージョン1909

使用言語:Python3.7 (64bit)

パソコン性能: CPU Intel Core i5-4310M 2.70GHz, メモリ: 8GB

 

Visual StudioPythonのライブラリを追加する方法は以下が参考になります。

docs.microsoft.com

 

 ランキングに参加してます。

よかったらクリックをお願いします。

にほんブログ村 IT技術ブログ Tipsへ
にほんブログ村

Visual StudioでPython (Formを最短のコードで立ち上げられるのはPythonのどのライブラリか? ②)

 

今回、PythonGUIライブラリをVisual Studioで試してみました。

最短のコードでFormを立ち上げられるのは果たしてどのライブラリになるのか。

 

以下で紹介されているライブラリとコードを参照しました。

techplay.jp

今回はKivyを試してみます。以下のページを参照しました。

qiita.com

コードはまったく同じ以下の2行でいけました。

from kivy.app import App

App().run()

 
実行前に以下の画面が立ち上がります。

f:id:tut2020aaa:20210101213040p:plain

 

最終的に以下のFormが立ち上がります。

f:id:tut2020aaa:20210101213220p:plain

 


開発環境: Visual Studio Community 2019

OS: Windows 10 Pro 64bit バージョン1909

使用言語:Python3.7 (64bit)

パソコン性能: CPU Intel Core i5-4310M 2.70GHz, メモリ: 8GB

 

Visual StudioPythonのライブラリを追加する方法は以下が参考になります。

docs.microsoft.com

 

 ランキングに参加してます。

よかったらクリックをお願いします。

にほんブログ村 IT技術ブログ Tipsへ
にほんブログ村

Visual StudioでPython (Formを最短のコードで立ち上げられるのはPythonのどのライブラリか? ①)

 

今回、PythonGUIライブラリをVisual Studioで試してみました。

最短のコードでFormを立ち上げられるのは果たしてどのライブラリになるのか。

 

以下で紹介されているライブラリとコードを参照しました。

techplay.jp

今回はTkinterを試してみます。

コードは以下の通りです。

3行。

import tkinter

# ウィンドウ
root = tkinter.Tk()

# イベントループ
root.mainloop()

 
以下のFormが立ち上がります。

f:id:tut2020aaa:20201231192519p:plain

 


開発環境: Visual Studio Community 2019

OS: Windows 10 Pro 64bit バージョン1909

使用言語:Python3.7 (64bit)

パソコン性能: CPU Intel Core i5-4310M 2.70GHz, メモリ: 8GB

 

Visual StudioPythonのライブラリを追加する方法は以下が参考になります。

docs.microsoft.com

 

 ランキングに参加してます。

よかったらクリックをお願いします。

にほんブログ村 IT技術ブログ Tipsへ
にほんブログ村

Visual StudioでPythonとQuandlを使ってみる 09 (PythonのAPIが公開されていない場合はどうするか)

今回は、QuandlでPythonAPIが提供されていない場合のデータの取得方法です。

Quandlで以下の表示しかない場合、Python APIが公開されておらず、Web APIをたたいてデータを取得する必要があります。

 

f:id:tut2020aaa:20201220095102p:plain

 

 

その場合、PythonのHTTPライブラリであるRequestsを使ってWeb APIをたたきます。

以下のリンク先の事例を使って、データの取得を試みます。

 

www.quandl.com

以下をそのまま実行します。

f:id:tut2020aaa:20201220095333p:plain

実際のコードでは、YOURAPIKEY部分は、自分のAPI Keyに置き換えてください。

 

import quandl
from matplotlib import pyplot as plt

url_items = 'https://www.quandl.com/api/v3/datatables/EDIA/ECD?api_key=YOURAPIKEY'
r_get = requests.get(url_items)
print(r_get.json())

 

出力結果を見ると、以下のようにデータが取ってこれていることがわかります。

f:id:tut2020aaa:20201220100317p:plain

 


開発環境: Visual Studio Community 2019

OS: Windows 10 Pro 64bit バージョン1909

使用言語:Python3.7 (64bit)

パソコン性能: CPU Intel Core i5-4310M 2.70GHz, メモリ: 8GB

 

Quandlのインストール方法は以下をご覧ください。

Visual StudioでPythonとQuandlを使ってみる 01 - プログラム製作日記

 

 ランキングに参加してます。

よかったらクリックをお願いします。

にほんブログ村 IT技術ブログ Tipsへ
にほんブログ村