MosquittoでAWS IoT CoreにPub/Sub

AWS IoTのテストにmosquittoを使うと、デバイスの開発の際にちょっと設定をテストしたり、ちょっとハマったときにコマンドラインで検証をしたりと、何かと便利。 準備 mosquitto_pubでpublish mosquitto_subでsubscribe subscribeしながらpublishしたい場合はmosquitto_rrを使おう mosquitto_rr を使うと、subscribeしつつpublishすることができる。 たとえば、AWS IoTでの証明書の取得などでは&nbs

続きを読む

ESP32-S3 + MicroPythonでGPIO19とGPIO20のピン割込を使いたい場合

この記事のあらすじはこうである。 「ESP32-S3 + MicroPythonでGPIO19とGPIO20のピン割込が使えないと思ったら、それぞれUSB_D-とUSB_D+に割り当てられている関係でピン割込が無効になっている。USBを無効化したカスタムファームウェアをビルドして焼いたら使えるようになった」 ISRが呼ばれない GPIO19とGPIO20はデフォルトの機能がそれぞれUSB_D-とUSB_D+となっているが、GPIOとしてRead & Writeは普通に使える。ただし、ピン割込みが使え

続きを読む

ESP32-S3とMicroPythonとPSRAM

この記事では以下のような話をする。 ESP32-S3のモジュールの型番の見方 ESP32-S3-WROOMシリーズの型番はこんな構成になっている。 PSRAMを搭載していないものは最後の “R+PSRAM Size” の箇所がない。 PSRAMはQuad SPI (QSPI) とOctal SPI (OSPI) の2種類ある。2023/06/01の時点でリリースされているものは、2MBのものはQuad SPI、8MBのものはOctal SPIとなっている。型番でいうと、末尾に “R2″ がつくものは容量2M

続きを読む

MicroPythonで複数の候補の中から最もRSSIの大きいネットワークに接続する

MicroPythonで開発する場合にちょっと便利なコード。いつも同じ場所で開発するならいいが、よそに持っていく機会があったり、複数の場所で開発を進めたりするとき複数の候補の中から最もRSSIの大きいネットワークに接続できるようにしておくと捗る。 まずこんな感じでSSIDをパスワードのペアのリストを定義する。 その中から最もRSSIの大きいものに接続する。 起動時にこれが実行されるようにしておけば、スキャンして見つけたネットワークの中で preferred_networks に含まれるもののうち、最もRSS

続きを読む

ブラウザでAWS IoT CoreにMQTTでPub/Subしたい場合にやるべきことリスト

「WebブラウザでAWS IoT Coreに接続してMQTTでPub/Sub」する場合の流れをまとめておく。 具体的なソースコードとかは載せない。「やってみたいけれどどうすればいいのかわからなくて途方にくれている」「情報が多すぎて、実際にどれとどれをやれば良いのかがわからない」「心が折れそうだ」という場合のひとつの指針として役立つのではないかと思ってここに書いておく。さまざまな技術的アプローチがあるのだが、「こんな方法もあんな方法もあるよ」と話を広げず、「この手順でやればひとまず出来る」という流れをできるだ

続きを読む

MicroPython + WebREPLでファイルシステムを弄る

まず読むべきものは MicroPythonの “os” クラスのドキュメントである。基本的にファイルシステム関係はこのクラスで取り扱うことになる。 基本操作 使う前に、まずimportする。 importしないと “NameError: name ‘os’ isn’t defined” というエラーが出る。使いたいのはだいたいこのへんの関数だと思う。 ディレクトリ掘ってファイルを置きたい WebREPLを使うとファイルのアップロード & ダ

続きを読む

ESP32-DevKitC + MicroPythonを試してみた

Wi-FiもBLEも使えて開発もしやすいとっても素敵なマイコンESP32のプログラムを今までCとC++で書いていたけれども、MicroPythonという便利なものがあるということで試してみた。最初はけっこう面倒だったので記録を残しておく。すべてmacOS上でやっている。 今回使ったボードはこちら。 秋月電子でも買えるよ! Contents MicroPythonというのはどんなものか まず、MicroPythonがどんなものなのか概要を説明する。 ここにMicroPython公式のチュートリアルがある。だい

続きを読む

Raspberry Pi でNAU7802を簡単に使うためのnpmモジュールをリリースしたよ

24bit A/Dコンバータ NAU7802 をRaspberry Piで動かすためのnpmモジュールを作ったので公開した。 nau7802 – npm maripo/npm-nau7802 (GitHub repository) NAU7802は単品だと入手しづらいが、けっこうあちこちで使われていて、たとえばSparkFunでもブレークアウトボードつきで入手できる。 電圧の読み取り・チャネル切り替え・レート切り替え・キャリブレーションなどのよく使う機能がさくっと呼び出せるような内容になっている

続きを読む

ESP8266でソフトウェアリセット

ESP8266でソフトウェアリセットをかけたい場合は ESP.restart(); を使うと良い。たとえば次のようなスケッチは、5から0までカウントダウンしてリセットするのを繰り返す。 #include <ESP8266WiFi.h> void setup() { Serial.begin(115200); Serial.println(“Start.”); } int count = 5; void loop() { Serial.println(count); delay(1000); if

続きを読む

ESP8266でmDNS (後編)

前編ではESP8266上でmDNSを動かして “http://esp8266.local” に接続してみたけれど、それに関してもうちょっと詳しい話をする。実際どんなふうに動いているのか、PC上とESP8266側の両方から眺めてみる。そして、OSごとのmDNS事情についても書く。 Contents 動いているところを見てみよう! クライアント編 前編でサンプルスケッチを試したときの様子をWiresharkでキャプチャしてみた。 クライアントとして使用したPCのIPアドレスが192.16

続きを読む