Bluetoothモジュール(HC-6)の名前の変え方 with Arduino
やりたいこと
HC-6というBluetoothモジュールの名前を変えたい。
以下の順で名前変更指示をする。
PC → Arduino Nano → Bluetoothモジュール
そのために
PC、Arduino間はハードウェアシリアル
Arduino、Bluetooth間はソフトウェアシリアル
で接続する。
参考サイト
前提
Arduino IDEがインストールされていること。
www.arduino.cc
材料
- Mini USB Nano V3.0 ATmega328P

HiLetgo® 3個セット Mini USB Nano V3.0 ATmega328P CH340G 5V 16M マイクロコントローラーボード Arduinoと互換
- 出版社/メーカー: HiLetgo
- メディア: エレクトロニクス
- この商品を含むブログ (1件) を見る
これは純正のArduinoではなく、中華製なのでドライバのインストールが必要。
このページを参考に。
qiita.com
- ブルートゥースモジュール [HC-06-4P] www.aitendo.com
TODO
- まずは配線
- Arduinoプログラムの作成
- ビルド&書き込み
- 名前変更
1. まずは配線

+ ArduinoとPCがつながっていること
2. Arduinoプログラムの作成
#include <stdio.h>
#include <stdlib.h>
#include <SoftwareSerial.h>
#define PIN_BLUETOOTH_TX 10 // Bluetooth TX
#define PIN_BLUETOOTH_RX 11 // Bluetooth RX
/* Bluetoothモジュールと通信をするためのソフトウェアシリアル */
SoftwareSerial mySerial(PIN_BLUETOOTH_RX, PIN_BLUETOOTH_TX); // TX, RX
void setup() {
Serial.begin(9600); //ハードウェアシリアルの初期化
mySerial.begin(9600); // ソフトウェアシリアルの初期化
}
void loop() {
while( Serial.available() ) {
char c = Serial.read();
mySerial.print(c);
delay(5);
}
while( mySerial.available() ) {
char c = mySerial.read();
Serial.print(c);
delay(5);
}
}
3. ビルド&書き込み
「ツール」→「シリアルポート」をクリックし、接続したArduinoのポートを選択する。

「マイコンボードに書き込む」をクリック。
これによりビルドされ、書き込みまで行われる。

4. 名前変更
Arduino IDEの右上の虫眼鏡ボタンをクリックしてコンソールを表示。

AT+NAME:好きな名前
OKと表示されれば入力した名前に変更されているので、実際にBluetoothを検索してみて指定した名前が見つかれば成功。
RaspberryPiとGoogle AssistantのIFTTTを使った連携(2/2)
これの続き takuocean.hatenablog.com
ToDo
以下の順で指示が経由されるようにする。
GoogleAssistant → IFTTT → beebotte → RaspberryPi
今回は
「GoogleAssistant → IFTTT → beebotte」
を構築していく。
1. 新しいAppletの作成
右上にある「New Applet」をクリック。

2 「Google Assistant → IFTTT」の設定
IFTTTでは、トリガーとそれに応じた処理を設定できる。
例えば、「Googleカレンダの予定3日前」になったら「Lineで通知」する、みたいな。
ここではトリガーとなる部分を設定していく。
2.1 「This」をクリック。

2.2 サービスを選択
虫眼鏡の検索欄に「google」と入力し、
検索された「Google Assistant」をクリック。

2.3 トリガーとなる形式を選択
いくつか形式があるが、今回は「Say a simple phrase」をクリック。

2.4 トリガーとなる詳細を記述
ここではトリガーとなるGoogleAssistantへの命令を記述。

What do you want to say?: morning music
トリガーとなる言葉
What do you want the Assistant to say in response?: OK, play morning music
GoogleAssistantの応答
Language:English
言語
※スマホのGoogleAssistantを英語設定にしているので。
記述できれば「Create Trigger」をクリック。
3 「IFTTT → beebotte」の設定
3.1 「That」を選択

3.2 サービスを選択
GoogleAssistantの命令に対応するサービスを指定していく。
虫眼鏡の検索欄に「web」と入力し、
検索された「Webhooks」をクリック。

3.3 実行形式を選択
「Make a web request」をクリック。

3.4 実行することの詳細を記述
ここではGoogleAssistantで命令されたことに対して実行することの詳細を記述。

URL: http://api.beebotte.com/v1/data/publish/MySmartHome/PlayMusic?token=YourToken
YourTokenはbeebotteで作成したプロジェクトのトークン
Method: POST
HTTPのPOST
Content Type (optional): application/json
データの形式
Body (optional): { "data": [{"room":"living","device": "music"}]}
実際に送るデータ
記述できれば「Create Action」をクリック。
3.5 IFTTT上に記載される説明を確認
説明文がよければ、「Finish」をクリック。
ちなみに、動作には特に影響なし。

3.6 作成完了画面

4 動作確認
RaspberryPiにスピーカを装着し、
実際にスマホ、またはGoogleのスマートスピーカでGoogleAssistantを立ち上げて(OK, Googleと言って)、「morning music」と命令。
音楽が流れば完了。
RaspberryPiとGoogle AssistantのIFTTTを使った連携(1/2)
やりたいこと
RaspberryPiとGoogle AssistantをIFTTTを使って連携させる。
「音楽かけて」といったらRaspberryPiから音楽がながれるような感じ。
参考URL
ToDo
以下の順で指示が経由されるようにする。
GoogleAssistant → IFTTT → beebotte → RaspberryPi
今回は
「beebotte → RaspberryPi 」
を構築していく。
前提
・RaspberryPiの「/home/pi」に再生したい音楽を置く(今回はsample.mp3)
・↑を再生するアプリが入っている(今回はmpg321)
1. beebotteのセットアップ
1.1. 新しいChannelの作成
左のメニューバー上部にあるChannelsをクリックし、表示された画面で右上部にある「Create New」をクリックする。

1.2. Channel名、Resource名を登録
ここでは
Channel名:MySmartHome
Resource名:PlayMusic
入力ができたら、「Create Now」をクリックする。
1.3. トークン取得
「Create Now」をした直後にホーム画面でChannel名が表示される。
Channel名「MySmartHome」をクリックする。

アクセストークンが取得することができる。

1.4. beebotteの動作確認
左のメニューバーで「Account Settings」を選択し、表示された画面で「Access Management」タブをクリックする。
Secret keyをコピーする。

左のメニューバーで「Console」を選択し、先ほどコピーしたSecret KeyをこのページのSercret Key入力エリアに入力する。 されに SubscribeのChannelとResourceに、先ほど登録した"MySmartHome"と"PlayMusic"を入力し、Subscribeボタンを押下する。

以下のコマンドをPC上のコンソールで入力する。
curl -i -H "Content-Type: application/json" -X POST -d '{"data":"Hello World"}' http://api.beebotte.com/v1/data/publish/MySmartHome/PlayMusic?token=[Channelのトークン]
Messageエリアに指定したペイロードが表示される。
2 RaspberryPiの準備
2.1. RaspberryPiの受信プログラムの作成
指令を受けると音楽を再生するプログラム(sample.py)は以下の通り。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import paho.mqtt.client as mqtt
import json
import subprocess
import os
_TOKEN = 'Your Token' #IFTTTに設定したものと同じChannel Tokenを設定
HOSTNAME = 'api.beebotte.com'
PORT = 1883 #SSLの場合は8883
TOPIC = 'smart_home/music' #トピック名/リソース名 の形で設定
# 接続中の処理を記載→subscribeする
def on_connect(client, userdata, flags, respons_code):
print('status {0}'.format(respons_code))
client.subscribe(TOPIC)
# メッセージ受信時の処理を記載
def on_message(client, userdata, msg):
print(msg.topic + ' ' + str(msg.payload))
data = json.loads(msg.payload.decode("utf-8"))["data"][0]
# Google Assistantの側でTextFiledの前後に半角スペースが入ることがあるのでstripして削除
#data = {key:value.strip() for key, value in data.items()}
if "room" in data.keys():
# 「証明を」と言ってしまった際に「を」が入ってTextFieldに入ってくることがあるので削除
#if data["device"].endswith("を"):
#data["device"] = data["device"][:-1]
# 日本語の表記ゆれに併せて、IFTTTのTextFieldをlightに修正
if data["device"] != "music":
print("unkown device")
return
subprocess.call(['mpg321', '/home/pi/sample.mp3'])
if __name__ == '__main__':
client = mqtt.Client()
#トークンを使って認証
client.username_pw_set("token:%s"%_TOKEN)
client.on_connect = on_connect
client.on_message = on_message
client.connect(HOSTNAME, port=PORT, keepalive=60)
# 待ち受け状態にする
client.loop_forever()
2.2. RaspberryPiの動作確認
RaspberryPiで指令がきたら音楽を再生するプログラムを実行する。
python sample.py
次に、以下のコマンドをRaspberryPiのコンソールで実行して、音楽が再生か確認。
curl -i -H "Content-Type: application/json" -X POST -d '{ "data": [{"room":"living","device": "music"}]}' http://api.beebotte.com/v1/data/publish/MySmartHome/PlayMusic?token=[Channelのトークン]
実行し音楽が流れ始めたらOK!
Webページ更新時にJavascriptで処理をする
以下のコードにやりたい処理を追記。
$(document).ready( function() {
//やりたい処理
});
RaspbianでIPアドレスを固定する方法
1. /etc/dhcpcd.confを編集。
... #固定したいインターフェース interface eth0 #固定したいIPアドレス static ip_address=192.168.xxx.xxx/24 #ルータのIPアドレス static routers=192.168.xxx.xxx #ここもルータのIPアドレス static domain_name_servers=192.168.xxx.xxx
2. 再起動
sudo reboot
これで反映されます。