STM32F103C8T6で遊ぶ 後編
STM32F103C8T6で遊ぶ 後編 2019年10月15日
ブートローダーを書き込んだら使ってみよう!
STM32F103C8T6と16文字2行表示のLCDを接続してテストを行います。
これも、安価に入手可能なI2C接続のLCDを使い、GNDと3.3V電源間に接続したVR 10KΩの中点をPA3のADCに入力し、
その分圧した電圧値を読み取り、電圧値とサーボ角度の表示及びSERVOモーターの角度を変えるテスト行います。
(準備するもの:STM32F103C8T6、I2C接続の16X2表示LCD、SG90サーボモーター、VR10KB、ジャンパー線等)
接続図1
私は以前から配線図を描くのに水魚堂のBSch3Vを愛用しています。
簡単な回路図から規模の大きな回路図迄、描画の自由度があり、とても重宝しています。

接続図2
fritzingは使い易くて簡単な電子工作の部品間結線を表現するのに優れています。

テスト用ソースコード
下記コードをArduino IDEにコピーして下さい。
Arduino IDEのボード設定はGeneric STM32F103C seriesを選択します。
動画をご覧ください。
皆様の参考になれば幸いです。
ブートローダーを書き込んだら使ってみよう!
STM32F103C8T6と16文字2行表示のLCDを接続してテストを行います。
これも、安価に入手可能なI2C接続のLCDを使い、GNDと3.3V電源間に接続したVR 10KΩの中点をPA3のADCに入力し、
その分圧した電圧値を読み取り、電圧値とサーボ角度の表示及びSERVOモーターの角度を変えるテスト行います。
(準備するもの:STM32F103C8T6、I2C接続の16X2表示LCD、SG90サーボモーター、VR10KB、ジャンパー線等)
接続図1
私は以前から配線図を描くのに水魚堂のBSch3Vを愛用しています。
簡単な回路図から規模の大きな回路図迄、描画の自由度があり、とても重宝しています。

接続図2
fritzingは使い易くて簡単な電子工作の部品間結線を表現するのに優れています。

テスト用ソースコード
下記コードをArduino IDEにコピーして下さい。
Arduino IDEのボード設定はGeneric STM32F103C seriesを選択します。
#include "Servo.h" #include "LiquidCrystal_I2C.h" LiquidCrystal_I2C lcd(0x27, 16, 2); //A0,A1,A2 If no jumper is used, the address is 0x27. int servoPin = PA0; //PWM int potPin = PA3; //ADC INPUT Servo servo; void setup() { lcd.init(); lcd.backlight(); lcd.setCursor(0, 0); lcd.print("STM32 SERVO TEST"); lcd.setCursor(0, 1); lcd.print("SERVO ANGLE"); delay(2000); lcd.clear(); servo.attach(servoPin); } void loop() { lcd.clear(); int angle; float Voltage; int reading; reading = analogRead(potPin); // PA3 Read angle = (reading/22.7); // 180/4096 Voltage = (reading/1241.21); // 3.3/4096 servo.write(angle); // Servo angle output lcd.setCursor(0,0); // On the first line lcd.print("Voltage val:"); // caption title lcd.print(Voltage); // Input Voltage value lcd.setCursor(0,1); // On the second line lcd.print("SERVO ANGLE:"); // caption title lcd.print(angle); // Input angle value delay(100); } |
動画をご覧ください。
皆様の参考になれば幸いです。
スポンサーサイト
STM32F103C8T6ボードで遊ぶ 前編
STM32F103C8T6で遊ぶ 前編 ブートローダーを書き込む方法
2019年10月10日
安価に入手可能なSTM32F103C8T6 開発ボードですが、通常ブートローダーが書き込まれていないのでオンボードの
マイクロUSBソケットからソースコードの書き込みが出来ません。 そこで、Aruduinoボードと同じようにArduino IDEから
プログラミング出来るように設定する必要が有ります。ブートローダーの書き込み方法を紹介するページが多くありますが、
私が参考にさせて頂いたページが、画像やリンクが充実していて理解し易いのでご紹介します。
参考サイトはCIRCUIT DIGGESTです。ここをクリックすると英文の紹介ページが開きます。
ブートローダーの書き込みに必要な物と結線の方法

・STM32F103C8T6(BluePill)
ここでは、青い基板のBluePillを使いましたが、黒い基板のBluckPillでも
同様にブートローダーが書き込めました。
・ネット接続が出来るパソコン
・USBケーブル
・FTDI USBシリアル変換モジュール
(変換モジュールのI/O電圧設定は3.3V側にセットします)
・ブレッドボード用ジャンパー線
実体配線図を描くfritzingを試してみました。

次回はブートローダーを書き込んだSTM32F103C8T6にLCDディスプレイと
サーボ―モーターを接続します。
皆様の参考になれば幸いです。
LEDマトリックスモジュールで遊ぶ メッセージボード後編
WiFiメッセージボードを試す 後編
WiFiモジュールESP8266 WROOM-02とLED Matrix表示器を組み合せたWiFiメッセージボードを
紹介します。使用させて頂いたライブラリーやソースファイルはGitHubからダウンロードできます。
GitHubのページを開きます。
ソースコードの変更箇所について
先に記したGitHubのMajicDesigns/MD_MAX72XXページを開き、clone or downloadをクリックし、
Download ZIPを選択します。ZIPファイルを解凍した後、AldunoIDEにlibraryをインストールておきます。ここで使わせて頂くソースコードが、3行目のexamplesを開くと1行目の「MD_MAX72XX_Message_ESP8266」です。
「MD_MAX72XX_Message_ESP8266.ino」の変更箇所
ここでは、ESP8266 WROOM-02を使うことを前提にオリジナルの行番号を示し、変更箇所を記します。
13~17行目のESP8266 GPIOの接続先の注釈文を次のように変更します。
13 // Vcc 5V LED基板Vcc (私の場合、3.3Vレギュレータの電流を抑える
ために敢えて5Vを使用)
14 // GND GND
15 // DIN GPIO 13 MOSI
16 // CS GPIO 15 CS
17 // CLK GPIO 14 CLK
45行目の#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HWのDevice名をICSTATION又は
FC16に変更します。
45 #define HARDWARE_TYPE MD_MAX72XX::ICSTATION_HW又は
45 #define HARDWARE_TYPE MD_MAX72XX::FC16HWに変更します。(使用する基板に合わす)
48~50行目を次のように変更します。
48 #define CLK_PIN 14 // CLK
49 #define DATA_PIN 13 // MOSI
50 #define CS_PIN 15 // CS
58~59行目" "内に使用するWiFiルーターのIDとpasswordを記入します。
58 const char* ssid = "******";
59 const char* password = "******";
351行目に次の1行を追加しました。これは、LEDの輝度をコントロールするための関数で、
私の場合は最小にセットしています。
(明るくし過ぎると消費電流が増えるために輝度を下げています)
351 mx.control(MD_MAX72XX::INTENSITY, 0x00);
使い方
WiFiモジュール基板のマイクロUSBコネクターにUSB電源を接続すると、LED表示器にIPアドレスが
スクロール表示します。このIPアドレスをPCやスマホ・タブレットのブラウザURL検索窓へ書き込み、
エントリーすると次のような画面が表示されます。
注意:LED表示器にアドレスを192.168.011.027等と表示しますが、
前側の0を省いた192.168.11.27を検索窓へ書き込みます。

Msg:テキストボックスに英数記号を使って文章を入力し、下側のSend Textボタンをクリックすると
WiFiルーターを経由してLED表示器にその文章がスクロール表示されます。
英数記号以外は使えませんがアイデア次第で面白く利用できると思います。
動画をご覧下さい。
皆様の参考になれば幸いです。
WiFiモジュールESP8266 WROOM-02とLED Matrix表示器を組み合せたWiFiメッセージボードを
紹介します。使用させて頂いたライブラリーやソースファイルはGitHubからダウンロードできます。
GitHubのページを開きます。
ソースコードの変更箇所について
先に記したGitHubのMajicDesigns/MD_MAX72XXページを開き、clone or downloadをクリックし、
Download ZIPを選択します。ZIPファイルを解凍した後、AldunoIDEにlibraryをインストールておきます。ここで使わせて頂くソースコードが、3行目のexamplesを開くと1行目の「MD_MAX72XX_Message_ESP8266」です。
「MD_MAX72XX_Message_ESP8266.ino」の変更箇所
ここでは、ESP8266 WROOM-02を使うことを前提にオリジナルの行番号を示し、変更箇所を記します。
13~17行目のESP8266 GPIOの接続先の注釈文を次のように変更します。
13 // Vcc 5V LED基板Vcc (私の場合、3.3Vレギュレータの電流を抑える
ために敢えて5Vを使用)
14 // GND GND
15 // DIN GPIO 13 MOSI
16 // CS GPIO 15 CS
17 // CLK GPIO 14 CLK
45行目の#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HWのDevice名をICSTATION又は
FC16に変更します。
45 #define HARDWARE_TYPE MD_MAX72XX::ICSTATION_HW又は
45 #define HARDWARE_TYPE MD_MAX72XX::FC16HWに変更します。(使用する基板に合わす)
48~50行目を次のように変更します。
48 #define CLK_PIN 14 // CLK
49 #define DATA_PIN 13 // MOSI
50 #define CS_PIN 15 // CS
58~59行目" "内に使用するWiFiルーターのIDとpasswordを記入します。
58 const char* ssid = "******";
59 const char* password = "******";
351行目に次の1行を追加しました。これは、LEDの輝度をコントロールするための関数で、
私の場合は最小にセットしています。
(明るくし過ぎると消費電流が増えるために輝度を下げています)
351 mx.control(MD_MAX72XX::INTENSITY, 0x00);
使い方
WiFiモジュール基板のマイクロUSBコネクターにUSB電源を接続すると、LED表示器にIPアドレスが
スクロール表示します。このIPアドレスをPCやスマホ・タブレットのブラウザURL検索窓へ書き込み、
エントリーすると次のような画面が表示されます。
注意:LED表示器にアドレスを192.168.011.027等と表示しますが、
前側の0を省いた192.168.11.27を検索窓へ書き込みます。

Msg:テキストボックスに英数記号を使って文章を入力し、下側のSend Textボタンをクリックすると
WiFiルーターを経由してLED表示器にその文章がスクロール表示されます。
英数記号以外は使えませんがアイデア次第で面白く利用できると思います。
動画をご覧下さい。
皆様の参考になれば幸いです。
LEDマトリックスモジュールで遊ぶ メッセージボード前編
WiFiメッセージボードを試す 前編
WiFiモジュールESP8266 WROOM-02とLED Matrix表示器を組み合せたWiFiメッセージボードを紹介します。
使用させて頂いたライブラリーやソースファイルはGitHubからダウンロードできます。GitHubのページを開きます。
今回は4×8×8LED Matrix表示器を2個連結してアクリル板をCNC加工したフレームに収めまてみました。

WiFiモジュール基板の回路図
LEDMatrix基板とWiFiモジュール基板を繋ぐだけの簡単な回路です。
今回はソースコードを書き換えて他にも使えるように、書き込みスイッチやUSBシリアル用のコネクターを設けました。

小さなユニバーサル基板に組み込んだ回路
ユニバーサル基板を適当な大きさにカットして上記の回路を組み込みました。WROOM-02は両面テープで裏向けに接着。
アドバイス:今回使ったマイクロUSBコネクターは表面実装のため、プラグの抜き差し時に大きな力が掛かると剥がれる
事が有ったので、スズメッキ線で基盤に固定して補強しています。

アクリル板をCNC加工してフレームを作りました。
次のページからDXFファイルをダウンロード出来ます
3㎜厚アクリル板を使ってLEDMatrix基板が入るフレームを作ります。(切削イメージ)

出来上がった前側パネルと後ろ枠をアクリル接着剤で張り合わせます。

後ろ枠側から基板を差し込み、パネル前側からLEDモジュールを差し込むだけです。

2㎜厚アクリル板を使ってフレームの裏蓋とWiFiモジュール基板が入るケースを作ります。(切削イメージ)

5㎜厚アクリル板を加工したスペーサーを介して裏蓋にWiFiモジュール基板を取り付けました。

アクリル板で作ったWiFiモジュール基板のカバーを組み立てて接着します。裏蓋及びカバーはビス止めです。

動画をご覧下さい。
次回はその2、ソースコードの説明と使い方を掲載の予定です。
WiFiモジュールESP8266 WROOM-02とLED Matrix表示器を組み合せたWiFiメッセージボードを紹介します。
使用させて頂いたライブラリーやソースファイルはGitHubからダウンロードできます。GitHubのページを開きます。
今回は4×8×8LED Matrix表示器を2個連結してアクリル板をCNC加工したフレームに収めまてみました。

WiFiモジュール基板の回路図
LEDMatrix基板とWiFiモジュール基板を繋ぐだけの簡単な回路です。
今回はソースコードを書き換えて他にも使えるように、書き込みスイッチやUSBシリアル用のコネクターを設けました。

小さなユニバーサル基板に組み込んだ回路
ユニバーサル基板を適当な大きさにカットして上記の回路を組み込みました。WROOM-02は両面テープで裏向けに接着。
アドバイス:今回使ったマイクロUSBコネクターは表面実装のため、プラグの抜き差し時に大きな力が掛かると剥がれる
事が有ったので、スズメッキ線で基盤に固定して補強しています。

アクリル板をCNC加工してフレームを作りました。
次のページからDXFファイルをダウンロード出来ます
3㎜厚アクリル板を使ってLEDMatrix基板が入るフレームを作ります。(切削イメージ)

出来上がった前側パネルと後ろ枠をアクリル接着剤で張り合わせます。

後ろ枠側から基板を差し込み、パネル前側からLEDモジュールを差し込むだけです。

2㎜厚アクリル板を使ってフレームの裏蓋とWiFiモジュール基板が入るケースを作ります。(切削イメージ)

5㎜厚アクリル板を加工したスペーサーを介して裏蓋にWiFiモジュール基板を取り付けました。

アクリル板で作ったWiFiモジュール基板のカバーを組み立てて接着します。裏蓋及びカバーはビス止めです。

動画をご覧下さい。
次回はその2、ソースコードの説明と使い方を掲載の予定です。