この連載で使っているモータ・コントローラBLVD-KRDは、次の三つのモードをサポートしています(最新のバージョンではProfile Torque Mode (tq)をサポート)。 プロファイル位置モ
前回のプログラムcanppm.pyの一部をを関数化、整理しました。プログラム名はcanppm2.pyです。位置決め部分をmove()という関数にしたので、mainのプログラムが見通しが良くなりました。
前回、Profile Position Modeの設定項目(オブジェクト)のパラメタを読み出しました。 たくさんの項目があるので、どういう手順で設定すべきか迷います。前回紹介した二つの設定手順を具体的
前回、Homing modeを設定し、pythonの原点復帰プログラムを動かしました。 現在、設定されている運転モード(Modes of operation)を確認します。MEXE02の「(m12)
CANopenで、BLDCモータやステッピング・モータを回す規格がCiA 402です。この基本的な CiA 301 仕様の上に用意された規格によって、位置決め制御などができるようになります。「CiA
CANバスを流れるデータは、いろいろなツールでロギングできます。下の画像は、ラズパイで、can-utilsのダンプ・ソフトcandumpを動かしたものです。 例えば、一番左のcan0はデバイス名で、そ
CANバスの信号を見るため、前回は、オシロスコープと、IXXATのUSB-to_CAN V2 Compactに付属するcanAnalyser3 Miniというユーティリティ、Linuxのcan-uti
CANopenは、物理層にCANバス・ネットワークを利用しています。CANバスを流れる信号は、ツールを使うと簡単にとらえることができます。ここでは、複数の方法を説明します。 ●<その1>オシロスコープ
モータを動かすために、二つの状態遷移を制御します。CANopenのアプリケーション層のベースになるCiA 301の規約にはNMTがあります。その上に位置するモーション・コントローラCiA 402の規約
前回、要となるオブジェクト・ディクショナリを説明しました。その内容を読み書きするのがSDOです。項目数が多いので、全部読み出すだけでも、数十秒から、分単位の時間がかかります。canopenのライブラリ
CANバスは、すでに、初期の規格に比べてCAN FDなどバスのデータレート速度が伸びていますが、CANopenの物理層/データ・リンク層に相当します。 その上に、 アプリケーション層と通信プロファイル
ここでは、CANopenの規格の話題に入る前に、Pythonでモータに関する情報をちょこっと読みます。 CANopenは、 アプリケーション層のベーシックな規格がCiA 301/302で規定 されてい
BLDCモータをサポート・ソフトなしに回転させることは無理です。現時点で、このコントローラBLVD-KRDにCANopen用のC++もしくはpythonライブラリは提供されていません。 Windows
ラズパイを利用してCANopen対応BLDCモータをpythonのプログラミングで回します。ラズパイだけではツール類が足りないので、Arduino、Windows10の環境も利用します。 ●環境 ハー
Infineon社のDPS310は、温度と気圧が出力されるMEMSセンサです。最高±0.002 hPa(または±0.02m)の高精度モードをもつので高度を扱う用途に適しています。 ●Adafruitの
Adafruitから入手したCO2センサ SCD41(Sensirion)を利用します。温度と湿度、そしてCO2が測定できます。 ●AdafruitのStemma QT/Qwiicボード SCD41ボ
4ポートの入力電圧を、グラフィック・ディスプレイに表示します。 利用したグラフィック。ディスプレイと接続は、次の記事を参照してください。 ラズパイ2023年10月更新 bookworm ③ pipが使
前回は、smbus2ライブラリを利用して、ADS1015でアナログ電圧を読み取りました。ここでは、デバイス・ドライバを利用します。 ●環境 ハードウェア Raspberry Pi 5(4GBモデル)
ラズパイにはアナログ入力はありません。I2Cバスに接続して利用できるAdafruitの12ビットA-DコンバータADS1015を利用します。 Adafruitのボード解説ページ Stemma QT/Q
●システム立ち上げ時にプログラムを実行 ここでは、前回のSHT45の測定結果を7セグメントLEDに表示するプログラムを、システムが起動したときに動かします。 参考にした解説Webページです。 Pyth
前回、温湿度センサをsmbus2ライブラリを利用してアクセスするのを失敗しましたが、ラズパイに用意されているデバイス・ドライバを利用して測定データを読み出せました。ここでは、 sensirion社のS
温湿度センサSHT45は、SHT3xの後に出てきたSHT4xの中でも確度の高いモデルです。 SHT31は、このWebでも何度も取り上げています。 Adafruitが販売している温湿度センサSHT4xボ
4回にわたって、温湿度センサSHT45を利用します。センシオンの製品で、SHT3xなどのシリーズが入手しやすいです。SHT4xは最近の製品ですが、I2Cバスにつなげて測定データのやり取りはほとんど同じ
前回、温度センサTMP117をI2Cバスにつないで、温度を測定しました。ここでは、下記の記事を参照し、4桁7セグメントLED表示器に温度を表示します。 ラズパイ2023年10月更新 bookworm
前回、pythonの仮想環境の作り方を解説しました。ここでは、具体的にプログラムを作ります。 利用するのは温度センサTMP117で、I2Cバス経由で接続しています。 <参考>TMP117の利用;センサ
ラズパイは、 2023年10月更新 のbookwormで、python2がなくなり、python3だけになりました。bookwormから?は、Python3はPEP 668に従い、pipでインストール
2回にわたって、ラズパイ5のハードウェアPWMを使用しました。GPIO18/GPIO19という特定のピンに出力されました。スペック上、ソフトウェアPWMはすべてのGPIOに出力できるようです。確かめて
前回、GPIO18の1チャネルにハードウェアPWMの出力を出しました。ここでは2チャネルにPWM出力を出します。 ●環境 ハードウェア Raspberry Pi 5(4GBモデル) OS Raspbe
ラズパイ5のPWM(pulse-width modulation)は、 Software PWM available on all pins Hardware PWM available on GPI
ラズパイ5になってRTCが搭載されました。バックアップ用電池は別売ですが、純正品が用意されています。OSが立ち上がっていると、NTP(ネットワーク・タイム・プロトコル)サーバと通信し、正しい日時がきざ
ラズパイ5が日本国内で販売され始めたので入手しました。 ●環境 ハードウェア Raspberry Pi 5(4GBモデル) OS Raspberry Pi OS (64ビット)、リリース日Decemb
bookworm になってBLEで検索しても新しい話題が見つからないので、変更がないのかを確認していきます。また、今まで使っていなかったpythonのライブラリがあったら探します。 ●環境 ハードウェ
2023年10月にリリースしたbookworm から、画面周りに大昔からUNIXで使われていたウィンドウ・マネージャが X11 から Wayland に変更されました。最近まで使っていたReal VN
前回、4桁7セグメントLED表示器に室温を表示しました。ここでは、ラズパイ本体のCPUの温度を表示します。 ●CPU温度の取得 $ vcgencmd measure_temp temp=37.4'C
AdafruitのStemma QT/Qwiicボードの中に、I2Cバス接続の4桁7セグメントLED表示器があります。コントローラはHT16K33です。白色をスイッチサイエンスから入手しました。Ada
第2回目は、気圧センサLPS22HBを利用し、I2Cバスのアクセスは、smbus2ライブラリを利用してpythonで記述しました。 ここでは、気圧センサBME280を利用します。温度、気圧、湿度が読み
●Adafruit 2.0" 320x240 Color IPS TFT Displayを利用する Adafruitで入手したSPIバス接続のディスプレイをラズパイにつなぎます。 2.0" 320x2
前回、下記の環境で、I2Cのアクセスまで実験しました。それまでのOSと変わらない使い勝手でした。 ●環境 ハードウェア Raspberry Pi 4(4GBモデル) OS Raspberry Pi O
ラズパイのOSは、2023年10月に、それまで描画関係がX11ベースだったものが大幅に変更されました。ラスパイの見た目などに変化はないように開発が行われたようですが、使えなくなったソフトもあるようです
連載のSTEP1はとてもコンパクトなTrinket M0を、STEP2はArduino MEGAと大きさが同じGrand Central M4 Expressを利用しました。STEP3はAdafrui
I2Cの利用では、i2cdetectなどのコマンドを利用することが多いです。それらが含まれているパッケージi2c-toolsを調べます。apt-cache show i2c-toolsを実行しました。
ラズパイのOSで、最初の64ビット版がJanuary 28th 2022が2022年2月2日にリリースしました。ベータ版は約2年間公開されていました。 ●三つのバージョン 2022年2月現在、ダウンロ
前回、アナログ入力ボードCPI-AI-1208LIのセットアップを行いました。入力端子は10本あり、シングルエンドと差動入力で、接続が異なります。 データ入力端子(シングルエンド入力時)の配列です。
CPI-AI-1208LIボードは、ラズパイに接続して利用できる「アナログ入力 Raspberry Pi ボード 12ビット 8チャネル(差動4チャネル) 電圧入力/電流入力」のHATです。 コンテッ
前回、ラズパイでBLEセントラルを作りました。読み出した電圧をWebに表示します。 ●プログラム from bluepy import btle import time deviceAddr = "C
前回までに、AE-ESP32-WROOM-32E-MINIボードにA-Dコンバータをつなぎ、その電圧を送信するBLEペリフェラルを作りました。ここではラズパイでそのデータを受けるセントラルを作ります。
M5STAMP C3に代わる低価格なマイコン・ボードを探しました。 ESP32-WROOM-32はデバイスのリビジョンが更新によって2021年の夏ごろにEになりました。メーカは新しい設計のESP32-
離れたところの電圧を測ってラズパイに表示するリモート電圧計を作ります。最初はアナログ入力用のデバイスを実験します。 ●M5STAMP C3のA-Dコンバータ <注;M5STAMP C3ボードはBLE部
前回、iframeで四つの画像を表示しました。ここでは、四つの画像ファイルを出力してtableタグで表示する方法を検討します。 ●プログラム tableのタグを埋め込みました。 pio.write_i
前回、温度のデータを使ってゲージを描画しました。ここではBME680が出力する四つのデータを同時に表示する方法を考えます。最初はiframeを用いる方法です。 ●プログラム 温度はtemp1.html
前回、BME680のデバイス・ドライバを入れて、温度、湿度、気圧、空気の汚れのデータが、/sys/bus/i2c/devices/1-0076/iio:device0フォルダに保存されることを確認しま
センサの値をグラフにラズパイのディスプレイに表示する連載です。GUIのグラフはplotlyライブラリを使います。利用するデバイスはボッシュのBME680で、BMP/BMEシリーズのMEMSセンサです。
前回、wrapを使って、システム・クロック125MHzを1MHzに落としました。もう一つの分周器を使って、もっと周波数を下げます。 ●固定小数点形式 uint8_t div = 2;uint8_t f
PicoからPWM出力をします。PWMはどのGPIOからでも出力できます。ここでは、GPIO2、GPIO3、GPIO4、GPIO5の4本を最初に利用します。 ●PWMの周波数 Picoは125MHzの
マイコンの出力電流は4mAぐらいです。MOSFETをつなぐと、数Aから数十Aの電流をON/OFFできるようになります。最初に、中電力用MOSFETの特性を見ます。 ●TK100E08N1のおもな特徴
第1回で、リアルタイム・クロックRTCのドライバを導入して動かしました。ここでは、詳しく機能を見ていきます。 ●コマンド hwclockは、次のように引数を指定できます。 読み出すのは、下記のどちらで
前回、ダウンロードしたサンプル・プログラムをコンパイルしました。Downloadsフォルダに入ったままだと違和感があるので、contecというフォルダを作り、ファイル・マネージャでコピーをします。 ●
コンテックから、ラズパイの上に重ねて使う各種ボードが発売されました。出荷は、4月の末から5月の中頃です。 製品のトップページ CPI-RAS Raspberry PiにRAS機能およびRTC機能、8
使用環境 Raspberry Pi Raspberry Pi 4 Model B 2MB OS Raspberry Pi OS(32ビット)5.10.17 Python3 3.7.3 gpiozero
使用環境 Raspberry Pi Raspberry Pi 4 Model B 2MB OS Raspberry Pi OS(32ビット)5.10.17 Python3 3.7.3 gpiozero
使用環境 Raspberry Pi Raspberry Pi 4 Model B 2MB OS Raspberry Pi OS(32ビット)5.10.17 Python3 3.7.3 gpiozero
使用環境 Raspberry Pi Raspberry Pi 4 Model B 2MB OS Raspberry Pi OS(32ビット)5.10.17 Python3 3.7.3 gpiozero
gpioファンクションの中にmask関連があります。どういう機能なのか確認しました。 ●MASK関連gpioファンクション ファンクション 要約 void gpio_set_outover (uint
前回、スイッチが押されると、LEDを点灯させるというプログラムを作りました。while()文でループを作り、定期的に、if()文で、スイッチの状態を見に行きます。これをポーリングといいます。 このプロ
Lチカでgpioの出力を扱いました。ソース・プログラムです。 /** * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. * * SPDX-License
前回、10ビットA-DコンバータMCP3008を利用しました。ここでは12ビットA-DコンバータMCP3208を使います。ビット数が増えると、より細かくアナログ電圧を扱えます。言い換えれば、量子化誤差
SPIバスは、I2Cよりデータの転送速度を高くできます。 Picoにはspi0とspi1のバスがあります。チップ・セレクトCS信号は、ユーザがGPIOピンを独自に制御するプログラムを書きます。 クロッ
低価格湿度センサのAHT20をつなぎました。使用したAdafruitのブレークアウト・ボードは、STEMMA QT(JST SH 4ピン)コネクタは2か所に装着されていて、どちらにつないでもかまいませ
温度センサTMP117は、動作温度範囲;-55~+150℃で、確度;-20~+50℃の範囲で±0.1℃(最大値)と、小数点第一位までが信頼できます。読み出すデータは16ビットで0.0078125°C
i2cは、クロックSCLとデータSDA信号のタイミングを利用したバスです。Picoではi2c0とi2c1の二組のバスがサポートされ、いろいろなピンで利用できるので、汎用性が高いです。 次に示すのは、そ
ラズパイのi2ctoolsにあるi2cdetectと同じものが、pico\pico-examples\build\i2c\bus_scanに入っています。最初に、このソースを利用して、i2cscann
Picoのスペックにクロックは最大133MHzと書かれています。RP2040 Datasheetの「2.15. Clocks」には、分周器を使って、マイコンの周辺モジュール用のクロックが作られている図
マイコンは、たくさんの機能や周辺モジュールを内蔵しているので、一つのピンに複数の機能を割り当てています。利用者が、自分でどの機能を使うかを最初に定義します。Arduinoでは、限定していますが、Pic
第2回でUARTでラズパイとPicoを接続しました。printf文を使って出力します。 ●ソースとCMakeLists.txt Hello, World!のプログラムに必要なのは、ソース・プログラムと
Lチカから始めます。すでにソースはpico/pico-examples/blinkにあります。入っているのは、 blink.c CMakeLists.txt の二つです。blink.cは普通のLEDを
前回、開発システムをインストールし、実行ファイルをPicoに書き込んで動作を確かめました。実機を目の前にして利用する使いかたでは、今回の説明はスキップしてください。 ここでは、リモートで開発する手順を
Picoのプログラミングをするうえで、とても有用なのが、ドキュメントです。Cortex-M0+というマイコン自体の解説、周辺機器をつなぐときのサンプル回路やサンプル・プログラム、C/C++やMicro
●標準入出力 プログラムでprintfやscanfは標準入出力が使われます。ここでは、UART0ポートを通して利用します。 Pico UART0名称 Pico 物理的ピン番号 Pico GPIOピン番
C/C++言語でPicoのプログラムを作ります。開発環境はラズパイ4です。 使用環境 Raspberry Pi Raspberry Pi 4 Model B 2MB OS Raspberry Pi O
使用環境 Raspberry Pi Raspberry Pi 4 Model B 2MB OS Raspberry Pi OS(32ビット)5.10.17 Python3 3.7.3 gpiozero
使用環境 Raspberry Pi Raspberry Pi 4 Model B 2MB OS Raspberry Pi OS(32ビット)5.10.17 Python3 3.7.3 gpiozero
SPIバスは、I2Cバスに比べて転送速度が速いため、グラフィックの表示や表示面積の大きな表示器で使われます。マニュアルでは、board.SPI() → busio.SPIと書かれているので、busio
I2Cバス用センサは、前回のようにライブラリがあれば、すぐに使えました。I2Cのリード/ライトを個別にプログラミングします。と思ったのですが、すでに気圧センサLPS25HBの記事がありました。 Cir
I2Cバスには、複数のデバイスをつなげて利用できます。Picoをマスタ、デバイスをスレーブと呼びますが、昨今の用語の使いかたの変更により、将来は呼び方が変わるかもしれません。Picoはマスタが複数いて
I2Cが使えるライブラリが複数あります。最初は、実績のあるbusioモジュールを使います。 ●OLEDディスプレイの配線 OLEDボードの端子 Picoの端子(GPIO) 名称 GND GND GND
audiobusioモジュールは、オーディオのディジタル入出力を扱います。S/PDIFは含まれておらず、出力はI2S、入力はPDMです。 audiocoreモジュールは、メモリ内のデータ、wavデータ
PWM出力用のモジュールがpwmioです。周波数、デューティ比を変化させて実行してみます。 ●周波数 800Hz、デューティ50%の波形(黄色)です。 import pwmio import time
RP2040 Datasheetによれば、Picoのアナログ入力は5本あります。1本はチップにある温度センサに直接つながっています。前回のmicrocontroller.cpu.temperature
microcontrollerモジュールは、CPUの諸情報、特定なピンへのアクセスに使われます。 import microcontroller print(microcontroller.cpu.te
ディジタル入出力digitalioモジュールを調べます。 ●出力 前回、動作確認に使ったLチカのプログラムです。 import digitalio from board import * import
連載のSTEP1はとてもコンパクトなTrinket M0を、STEP2はArduino MEGAと大きさが同じGrand Central M4 Expressを利用しました。STEP3はAdafrui
気象庁に限らず温度などの測定は百葉箱にセンサを入れるようです。数年前、東京の気温を測定している百葉箱の設置位置を変更したら、年平均気温が変わってしまったというニュースがあり、入れ物や設置場所が重要な要
前回、ハンディ・テスタMT8208のもつオシロスコープの機能で100kHzの方形波を観測しました。 ●ラズパイに温度センサTMP117をつなぐ TMP117は±0.1℃の測定ができる温度センサです。A
一見普通のハンディ・テスタですが、Rボタンを2秒押すと、オシロスコープの画面になります。帯域は1MHz、2.5Mspsです。写真は、ラズパイの3.3Vの電圧を測っているところです。通常の1999表示テ
gpiozeroパッケージの基底クラスSPI( Serial Peripheral Interface )Devicesは、A-Dコンバータのクラスがたくさん用意されています。いずれもマイクロチップの
前回のServoクラスは、単に角度を変更するだけでした。ここで利用するAngularServoクラスは、最初にmin_angle値とmax_angle値を設定しておけば、その範囲の数値を指定して任意の
前回まではDCブラシありモータを駆動するHブリッジICを使いました。ここでは、ラジコンや小さなロボットに使われるサーボ・モータのクラスServoを利用します。産業用機器の位置決めなどに用いられるモータ
前回までクラスMotorで次のデバイスを利用しました。 モータ電圧[V] 電流[A] チャネル その1 BD65496 4.5~36 1.2A 1 その2 TB67H420FTG 10〜47 シングル
クラス(ライブラリ)Motorの動作確認を、 BD65496 その1 TB67H420FTG その2 TB6612 その3 三つのHブリッジICで行いました。さらにもう一つ、pololuのブレークアウ
クラス(ライブラリ)Motorの動作確認を、 BD65496 その1 TB67H420FTG その2 二つのHブリッジICで行いました。もう一つ、秋月電子通商で入手したTB6612モジュールを使います