ラズパイと接続時には意識する必要はないですが、VccIO=Vinのジャンパを短絡させることによって96boardsやSpresenceボードなど3.3Vではないロジックと通信ができます。Vinから入力したロジック電圧で駆動します。V)この時VccIO=3V3とのジャンパは開放にしておく必要があります。国内の知り合いのメーカーさんに製造実装までお願いする予定なのでメーカーで規定されている認識マークをつけてパネライズをしました。次回はまた、基板が到着したら。Notifyを確認するLightBlueのLogだとつらい前回PSoC63でBLEペリフェラルを作りました。Notifyとして送信されるというものでした。LightBlueで簡単に確認するのには便利ですが、センサ情報などを1日中収集するような用途には向きません。参考サイトwww.ratoc-e2estore.comここのコードをほぼそのまま利用させていただきました。MTUの文字数を変更したくらいでしょうかラズパイのセットアップ(bluepy)ラズパイ上で行う作業ですPython3は導入済みといたします。ble_notify_central.pyコードを書きます。ble_notify_central.pyPSoC63ボードをRaspberryPiにUSB接続この時ハイバネートモードにしない方が楽だと思います。ラズパイのコンソールを2つ開きます。/dev/ttyUSB0、/dev/ttyACM1などの場合もあります。00:A0:50:00:00:00は前回プログラムしたPSoC63基板のBLEデバイスのMACアドレスです。コンソール1つ目に戻ってなにか文字を打ち込み、最後にリターンキーを押します。)コンソール2つ目をみると、こうなっています。testtesttestできました!おしまい。PSoC前置きなんだかんだでPSoC63もわりと使えるかもしれないって思ってもらえれば幸い。補足ソースコードを逐一追って細かく解説はしません。IDEのインストールとか使い方はのりたんさんがQiitaで手取り足取り解説してくださっています。v1.0の解説だけど、v1.1でもそんなに変わりません。writeができるようになる。notifyとしてセントラルに送ることができるでは参りましょう。IDEv1.1を起動しcloneしたプロジェクトをロードします。評価ボードCY8CPROTO-063-BLE2019年4月時点で価格は20ドル。www.cypress.com基板の書き込み用ファームウェアが古い場合があるので、最新のものに書き換えます。SW3(上の右側写真、親指で押している部分)を押しながらUSBに接続。(以下はMacの場合です)Terminal.appを起動し、fw-loaderでアップデートを行います。**という文字がIDE内コンソールに出ていれば成功です。この時点ですでにPSoC63評価ボードはBLEペリフェラルとして機能しています。NotifyのテストBLEセントラル(iOSデバイス)の準備iOSデバイスをお持ちの場合は、LightBlueアプリから見ることができます。Throughユーティリティ無料p6xbleという名前が見つかれば一応ここまで成功です。先ほどのLightBlueで表示されたデバイス名p6xbleをタップしてBLE接続しましょう。Notifyの確認をします。Notify)をタップします。右上のHEXをタップしUTF-8に変更した方がわかりやすいと思います。notificationsをタップしてNotification受信待ちにしておきますBLEペリフェラル(PSoC63)の準備Terminal.appに戻ります。115200Password:(パスワードを入力する)Connected.tty.usbmodemxxxxxのxxxxxは任意の数値になります。Write)をタップします.右上のHEXをタップしUTF-8に変更した方がわかりやすいと思います。valueをタップします。任意の文字を入力し、最後に完了またはdoneをタップします。例としてあいうえおと入力しました。このあいうえおをタップするたびにTerminalにWriteされた内容が反映されます。....とりあえず動作確認はできました。仕組みTerminal.appからの入力(stdin)は評価ボード上のUSBシリアルを経由し、PSoC63のシリアルポートに入力されます。シリアル入力があった場合にFreeRTOSのBLEタスクにNotificationを送信するキューを書き込みます。応用USB-UARTではなく別デバイスからの入力データをNotifyで送信する例として、PSoC63のP9.0からのシリアル入力があった場合にNotifyを送信することができるようにしてあります。ボーレートは38400baudです。先ほどとボーレートが異なりますので注意。NMEAシリアル出力機能を持っているGPSモジュールなどの入力に使えるとおもいます。この行をコメントにするコンパイル後、書き込みをします。Hibernateモードを有効化するBLEペリフェラルはフィールドの要求に応じて、動作しない時電池の消費を極限まで抑える必要があります。PSoC63もいくつかの消費電力を抑える機能を持っており、その一つがハイバネートモードです。ほとんどのリソースを停止します。今回のコードではBLEセントラルからの接続が1分以上ない場合、基板上のスイッチSW2が押されるまで、Hibernateに遷移します。この機能を有効化するには、以下のようにします。2分待つように変更とこんな感じです。長くなったのでここまでにします。NotifyをLightBlueで確認するのはデータ量が増えるとすこし面倒です。PiをBLEセントラルにして、PSoC63からのNotifyのデータをテキストや標準出力に表示するPythonコードを紹介します。Piでngrokのtcpアドレスをslackへ通知するNAT越えしたい自分の家に設置したラズパイにsshで入るならしかるべき方法で公開し、公開鍵設定やVPNを張るなどをして入れるとおもいますが、IoTセンサノードとして屋外で使う場合はモバイルルータなどで接続することが多いかもしれません。モバイルルータが固定IPを持っていてNATトラバーサルできる契約のもありますが、そうでない時も多い。できるものもオプション扱いでお金が別途かかる。常用するならIIJモバイルbiz+とかがいいと思いますが、そうでない時の方法です。エージェントの選定いろいろ探しました。いいなと思ったのが以下remot3.itngrokPulsewayPulsewayはちょっとterminalの出来が悪すぎ...。いうかそういう用途ではないですね。Fluentdで端末のパラメータを監視したりするような作業をお手軽にできる感じがいいですね。今回はngrokを使いました。起動のたびにアドレスとポートが変更されてしまいます。アドレスを確認する手段の一つとしてSlackに自身のngrokアドレスを投稿させるコードを記述し、Systemdサービスとして登録します。Node.jsを使います。ラズパイにサクサク入れていきます。nohupはhupシグナルがngrokプロセスに送られないように使っています。他にいい方法があれば教えてください。node_latest_armhf.deb2020年2月4日追記:上記の方法ではできなくなりました。下記の方法に修正いたします。cleanのところでエラーが出ても気にせず続けてしまいましょう。package.jsonここでpackage.jsonを作っておきます。下記内容で構いません。--saveNgrokの設定www.npmjs.comngrokは無料で十分使えますが、アカウントを取得しないとトークンがもらえません。(tcp使うのには必須)サインアップはこちら。トークンはサインアップ後の画面の3で示されている部分です。赤ワクで囲んだ部分になります。ラズパイのターミナルで実行しておく。this-is-your-ngrok-auth-tokenホームディレクトリに.ngrok2/ngrok.ymlが生成されます。あとで記述するthis-is-your-ngrok-auth-tokenの部分です。投稿したい専用チャネルを作るか自分へのDMとしたほうがいいでしょう(この記事の最後まで実施すると、起動するたびにSlackへ投稿します。#generalとかに投稿すると結構うざいです)。webhook」を検索。incoming-webhookアプリ設定画面に移行します。「設定を追加」をクリック次画面の「チャンネルへの投稿」で投稿したいチャネルを選択または新規作成します。URL」をコピーしておく。あとで記述するthis-is-your-slack-incoming-webhook-addressの部分です。webhookコードの記述さて、準備が整いました。コードを書いていきます今回はapp.jsというファイルに記述します。startこんな感じでSlackに投稿できたら成功。うんこ絵文字が最初から入ってるなんて素敵。サービスとして登録する適当なフォルダでngroksend.serviceというファイルを作ります。下記例ではホームディレクトリが/home/pi/になってます。ngroksend.service下記を記述します。multi-user.target保存後、systemdに登録します。rebootしてください。3b+になってかなり発熱が心配になってきました。measure_temptemp=70.1'Cとなっておりました。夏にお亡くなりになるのが怖く、ファン付きのものをいくつか試すことに。measure_temptemp=49.7'Cと、かなり冷却効果がありました。ヒートシンクをCPUに貼っている場合剥がさないとファンが干渉します。Piアクリルステッカーのせいで笛吹き現象が起こってうるさかったので剥がしました。剥がしたら1,2度下がったけど誤差なのかは不明。前者のより安価で、すこし背が高い。ケースに基板を嵌合してからヒートシンクを貼ったほうがいいでしょう。前者のケースのファンより回転数が高めに思われますが、すごく静か。1番目のものより個人的には気に入っています。高さがあるのでそこは運用方法に合わせて購入でしょうかねぇ。measure_temptemp=42.0'C冷却性能も良さげでした。別のViewアーキテクチャの機器に移植するのが大変になるAPI変更があった場合の変更が辛くなるMVCから逃げたいのはこのくらいかな。MVPにしたのはその他のアーキテクチャにくらべて学習コストが低そうと言うだけです。Presenterで成り立っており、比較的それぞれが疎結合になっているアーキテクチャPresenterの役割が重要で、Viewからイベントを受け取り、Modelに処理を移譲Modelから結果を受け取り、Viewに通知したがってModel、Viewとも、互いに独立している。今回はModelはNotificationCenterを使い、Presenter通知しています。SwiftPlaygroundsですので、複数ファイルに記述するのが少々ハードルが高いので1ファイルに汚く書いてしまいました。API便利そう今年最後のブログになります。今何してあそんでるかの報告がわりに。Playgroundsアクセサリとして提供されているPlaygroundBluetoothを使って見ました。UIが全く異なり、アプリを使うユーザが途方に暮れる...事は少なくなりそうです。言っても2017年12月現在、Appleのページで纏まった資料やサンプルコードが見当たりませんでした。探し方が下手なだけかも知れませんが。Frameworkの詳細情報が掲載されています。最新情報はこちらを確認してください。サンプルコードないかな...唯一見つけたのが以下のサイト。https://swiftexample.info/snippet/liveviewswift_bricklife_swiftiPhoneの電池残量が確認できるサンプルコードなんか途中から全力で生のCoreBluetooth触りにいってるけど大丈夫かこのサンプルコード...。カスタムプロファイルのペリフェラルとお話しするこれをベースに、カスタムプロファイルを持ったBluetoothペリフェラルに接続し、データをやり取りするターミナルっぽいやつを作りました。iPadは終始セントラルとして動きます。readwriteWithResponsewriteWithoutResponsenotifyキャラクタリスティックに対応します。ペリフェラル側とその設定が必要です。今回はセントラル(iPad)からきたデータをWrite(writeWithoutResponse)し、Readに対してはそのデータを返すようにします。(ループバックっぽい動作にする)いきなりBLEを持ってる組み込みマイコンにさせると、バグったときに切り分けが出来なくなって詰みそうですので、今回はiPhoneにLightBlueアプリをいれて仮想的にペリフェラルとして動かしています。0x2222を選択します。PropertyはReadとWriteWithoutResponseにチェックそうすると、iPadは以下のように動きます。Proでリハビリをする毎日です。Cordova/PhoneGapも最近聞かないなぁ。最近はReactがアツいとかなんとか聞くのですが。iOS11になってから今まで順調に動いていたPythonista3でグラフをプロットしようとすると何かの契機にアプリごとクラッシュしてしまうようになりました。自分がmatplotlibの扱いがよくわかってないのもあるのですが...そのうち解決するでしょうということで。Swiftでグラフを描くのはライブラリを使うのが良いようです。applications今回は簡単な折れ線グラフが書きたいだけなのでこのライブラリの学習コストが見合わないなと思いいろいろ探していたところ、ありました。Blogここで紹介されているものをお借りしました。ありがとうございます。プロット数が多くなると、UIViewサイズに合わせてx軸のマージンがどんどん小さくなるので、UIScrollViewを使って横スクロールしてしまうようにしました。2.0の記述だったので4.0に対応するように一部直しています。プロット間のx軸の距離は80に固定してしまっています。複数の折れ線グラフも楽々。Playgroundsで結構しっかりしたプログラム組めるのはすごいなと思いました。電車内やカフェで殴り書きするのにちょうどいい。ガチなソフト組むとなると、StoryBoardが欲しくなるしエディタとしては機能が限定されているので、MacとXCodeが必要になりますね。Blogのコードと比較したほうがいいかも。Blogマイコン風雲録マルチチャネルDAC製作記nabeの雑記帳なんでも作っちゃう、かも。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。