Love You Pillow
コンポーネントと消耗品
> ![]() |
| × | 1 |
アプリとオンラインサービス
|
このプロジェクトについて
注:このチュートリアルは古くなっている可能性があります。どうぞ ここ 最新バージョンの場合。
あなたの人生にその特別な人がいないことは難しいかもしれないことを私たちは皆知っていますが、枕を抱くだけでインターネットを介してリモートで愛情を送ることができたらどうでしょうか?
今、私たちは実際に抱擁を送ることはできません...しかし、私たちが送ることができるのは、枕に抱擁を与えることによってトリガーされる、メッセージングアプリを介した甘い絵文字です。
I Love You Pillow を抱きしめると 内部のブザーからハートビートの音が聞こえます。抱擁の長さに応じて、異なる絵文字がTelegramBotから選択したチャットに送信されます。
この抱きしめるデバイスであなたの愛する人と連絡を取り合いましょう!
一言で言えば
この実験では、アルミホイルを使用して、抱擁を検出するために使用されるDIY静電容量センサーを作成します。
ハグ送信デバイスを作成するには、次のコンポーネントが必要です。
- ブザー
- アルミホイル
- 1つの抵抗器5Mオーム
- ブレッドボード
- ワイヤー


学習目標
- テレグラムボットの紹介
- 静電容量センサーの管理
- テレグラムボットとグループチャット #ProTips
- WiFiのベストプラクティス #ProTips
プロのヒント 便利ですが、プロジェクトに複雑さの層を追加する厳密に必要な手順ではありません。
もっと知りたいですか?
このチュートリアルは、MKR1000とIoTに慣れるための一連の実験の一部です。すべての実験は、MKRIoTバンドルに含まれるコンポーネントを使用して構築できます。
- I Love You Pillow
- パズルボックス
- パブロフの猫
- オタク
- プラントコミュニケーター
テレグラムボットの紹介
Telegramは、モバイルとデスクトップの両方で人気のあるメッセージングアプリです。友達とチャットできるだけでなく、便利で強力なチャットボットを作成することもできます!
チャットボットはチャットできる連絡先に他なりませんが、代わりにその背後にいる人が、あなたが書いたコードに応じて応答するマシンがあります。
Arduino用のTelegramBotライブラリは、チャットボットの背後にあるロジックを実装する簡単な方法を提供します。
ボットを作成する
ボットの作成はとても簡単です!
これらのいくつかの簡単な手順に従うか、こちらのドキュメントをご覧ください。





ボードをセットアップする
まず、必要なライブラリがすべて揃っていることを確認します。
必要なすべてのライブラリのリストは次のとおりです。
- WiFi101
- TelegramBot
- ArduinoJson
- CapacitiveSensor
この簡単なガイドに従って簡単にインストールできます。
TelegramのAPIを使用するには、最初にMKR1000に証明書をアップロードする必要があります。 これはほとんどのオンラインサービスとAPIに適用されます!
WiFi101ライブラリからFirmwareUpdaterの例をアップロードし、ドメインにapi.telegram.orgを追加します。
Arduino Web Editorを使用している場合、この機能はまだ実装されていないため、を介してこれを行う必要があります。 Arduinoデスクトップアプリケーション。



魔法を起こそう!
TelegramBotライブラリからEchoBotの例を開き、WiFiクレデンシャルとBotFatherから受け取ったAPIトークンを入力してアップロードします!
すべてのメッセージをエコーするボットを作成しました。
EchoBotと絵文字
絵文字はいたるところにあります!私たちはそれらを使って私たちの愛と抱擁を送ります。 EchoBotの例を使用すると、ボットが絵文字をどのように読み取るかを簡単に確認できます。

残念ながら、ボットが絵文字を受信する方法は、絵文字を送信するために使用されたものと同じではありません。 絵文字を送信するには、 UNICODE を使用する必要があります 文字。
たとえば、ハートの絵文字を送信するには、 \ U00002764
を使用します。
ここでUnicode絵文字コードの完全なリストを見ることができます。別のハートの絵文字でハートの絵文字に応答するボットを作成するには、次のようなコードを使用します。
void loop(){メッセージm =bot.getUpdates(); //新しいメッセージを読みますif(m.chat_id!=0){//更新があるかどうかを確認しますSerial.println(m.text); //受信したメッセージを出力しますif(m.text =="u2764ufe0f"){//ハートの絵文字を受信したかどうかを確認しますbot.sendMessage(m.chat_id、 "\ U00002764"); //ハートの絵文字で同じチャットに返信する}}}
結果は次のようになります:

静電容量センサー
Telegramで十分ですが、DIY静電容量センサーの構築を始めましょう!
CapacitiveSensorライブラリは、2つ以上のArduinoピンを容量センサーに変えます。容量センサーは人体の電気容量を感知できます。センサーのセットアップに必要なのは、中程度から高い値の抵抗とアルミホイルです。
最も感度が高い場合、センサーはセンサーから数インチ離れた場所で、さまざまな種類の素材を介して手や体を感知し始めます 。センサーを枕の中に隠します!
サンプルスケッチをアップロードし、ワイヤーを接続して、コンソールで結果を確認します。
#include CapacitiveSensorフォイル=CapacitiveSensor(5,4); //ピン5と4の間の10M抵抗、ピン4はセンサーピンです。ワイヤーを追加するか、foilvoid setup(){foil.set_CS_AutocaL_Millis(0xFFFFFFFF); //自動キャリブレーションをオフにしますSerial.begin(9600); } void loop(){long start =millis(); long Sensor_value =Foil.capacitiveSensor(30); Serial.print(millis()-開始); //パフォーマンスをミリ秒単位で確認しますSerial.print( "\ t"); //デバッグウィンドウ間隔のタブ文字Serial.print(sensor_value); //センサー出力を出力Serial.println( "\ t"); //センサー出力3を出力delay(500); //データをシリアルポートに制限するための任意の遅延}
配線と結果


Sensor_value
を使用します 抱擁を検出するためのしきい値として!
ハートビート
抱きしめる時間が長ければ長いほど、より多くの心拍が聞こえます。ハートが鼓動すればするほど、あなたが送る愛も増えます(そしてさまざまな絵文字も)。
ブザーと数行の簡単なコードを使用して、ハートビートの音をエミュレートします。
int Buzzer =8; //ブザーに接続されたピンvoidsetup(){} void loop(){HeartBeat(); delay(1000); } void HeartBeat(){tone(Buzzer、31、200); //トーン(ピン、ノート、デュレーション); delay(200);トーン(ブザー、31、400); delay(200); noTone(ブザー); delay(1000); }
ブザーとトーン機能のより複雑な使用法については、ドロップダウンメニューの例を見て、 Digital> ToneMelody
を探してください。
#ProTip:チャットIDとグループチャット
メッセージを送信するには、ボットにチャットIDが必要です。
チャットIDは、誰かとボットの間のチャットの一意の識別子です。ボットに特定の人にメッセージを送信させるには、まずその人にボットにテキストメッセージを送信し、その特定のチャットのチャットIDを保存する必要があります。
このプロジェクトでは、ボットは、誰であるかに関係なく、テキストを送信した最後の人にのみ返信します。
ボットは公開されており、誰でもボットにテキストメッセージを送信できます!
ボットをグループチャットに含める場合は、プライバシーモードを無効にして、ボットがすべてのメッセージを読み取れるようにする必要があります。そうしないと、 /:
で始まるコマンドしか検出できません。



#ProTip:WiFiのベストプラクティス
WiFiは注意が必要です。場合によっては、何の理由もなく、数秒間オフになることがあります。ほとんどの場合、WiFi接続機能はスケッチの最初にのみ実行されるため、これはArduinoにとって問題になる可能性があります。
オンラインサービスにも注意が必要です。Arduinoがサーバー(この場合はTelegram)にリクエストを送信すると、応答を待ちます。何百もの理由で、応答が届かず、Arduinoが無限ループに陥る可能性があります。
プロジェクトをより安定させるために、ウォッチドッグを追加できます。
ウォッチドッグは定期的に更新する必要のあるタイマーです。そうしないと、ボードが再起動します。
次の2つのライブラリを使用して、プロジェクトにウォッチドッグを追加できます。
- Adafruit SleepyDog
- Adafruit ASF Core // Githubから手動でダウンロードしてインストールする必要があります
EchoBotの例は次のようになります。
#include #include #include #include //ルーターへのWifi接続を初期化charssid [] ="xxxx"; //ネットワークSSID(名前)char pass [] ="yyyy"; //ネットワークキー// Telegramを初期化しますBOTconst char BotToken [] ="xxxx"; WiFiSSLClientクライアント; TelegramBotボット(BotToken、クライアント); void setup(){Serial.begin(115200); while(!Serial){} delay(3000); // Wifiネットワークへの接続を試みます:Serial.print( "Connecting Wifi:"); Serial.println(ssid); while(WiFi.begin(ssid、pass)!=WL_CONNECTED){Serial.print( "。"); delay(500); } Serial.println( ""); Serial.println( "WiFi接続"); bot.begin(); Watchdog.enable(10000); //タイマーを10秒に設定します} void loop(){Watchdog.reset(); //この関数が10秒以内に呼び出されない場合、ボードはそれ自体をリセットしますメッセージm =bot.getUpdates(); //新しいメッセージを読み取りますif(m.chat_id!=0){//更新があるかどうかを確認しますSerial.println(m.text); bot.sendMessage(m.chat_id、m.text); //同じテキストで同じチャットに返信する} else {Serial.println( "no new message"); }}
コード
完全なスケッチ
回路図

製造プロセス