日々の記録

ほどよく書いてきます。

RP2040Zero

2023年05月21日 17時45分52秒 | AVR

Raspberry Piというシングルボードコンピュータが発売されて久しいが、このラズベリー財団がRP2040というマイコンを売り出して若干気になっていたのだが、ヘタをすると8bitマイコンより安いので、これはと思って買ってみた。

AtmelのATMega32u4のボードは1250円くらいだったのだが、RP2040Zeroというボードは400円+送料140円くらいだった(Aliexpressで)。

Type-Cの端子で、多分表についているのグラッシュメモリ、裏のがマイコン。

はじめは表の写真だけみでやけに入出力ピンの少ないマイコンだなと思ってたが、そんなことは無かった。裏面にでかいのあった。

CPU:Cortex M0+ 133MHzマイコン デュアルコア
メモリ:264kB
フラッシュ:外付け2MB

その他色々。

133MHzのデュアルコア、メモリがちょっと少ないけど相当色々できそうだな。

最近データロガーとか欲しいのだが、16bit ADCとRTCなんかをつないでやったら自分でできそうだな。きっとmicroSDカードへの書き込みなんかもできるだろう。

現状ではArduinoの開発環境でやっているが、MicroPythonでもできるらしい。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

CH9329 Serial HID変換IC

2023年05月21日 17時41分16秒 | プログラム

シリアル信号からUSB HIDデバイスに信号を変換するICというものがすでに存在していた。

秋月電子に。

モジュール状態ではAliexpressからも入手可能なようである。

 

しかし、9600baudがデフォルトなので、今使いたい天秤だと設定変更が必要なので、マイコンで作っていくのが良さそうかな。なんて。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

RS232CレベルとTTLレベルコンバーター MAX3232

2023年05月09日 23時04分18秒 | AVR

MAX3232というICがある。チャージポンプ回路を内蔵し、TTLレベルから真のRS232Cレベルに変換してくれるIC!!

ナイス!名前からしてマキシム・インテグレーテッドだろうとおもったら、Analog Devicesが買収していた。リニアテクノロジーもまさかの買収されたとおもったら、こっちもか。

さて、それはおいておき、このMAX3232を搭載したものが非常に安価で販売されている。

RS232Cコネクタ付いて48円??え?

Amazonでも5個で750円?

 

買ったのだが、買ってから気がついた、これメスコネクタ?装置はオスコネクタで、えーっと?クロスケーブルがいいのかストレートケーブルがいいのか判断できないぞ?ちょっと配線図を確認しないといけないですね。

かk人すると、、、ICのレシーバーRXが3ピン、トランスミッターTXが2ピンという配置のようだ。

今回ターゲットにしている電子天秤はA&Dのものなので、、例えばGH-252の取説を見ると2が、ん?Rxが送信データ?ん?レシーバーでRx、トランスミッタでTxだとおもったが、どうなってるんだろう?接続相手の配線を書いているのだと思うのだが・・・また検討しようと思います。


コメント (11)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Arduino Pro MicroでUSB-HIDデバイス(キーボードなりすまし作戦)

2023年05月04日 14時26分36秒 | AVR

Arduino Pro MicroというATMega32U4というUSBがそのあま接続できるマイコンボードを買った。
アマゾンで2つで2500円くらい。

サイズが小さくて、特定の目的のために使うものならば結構使い勝手がいいのではないだろうか。

マイコンに書き込むプログラムは下記のようなもの。
A&Dの電子天秤はRS232Cが2400baudがデフォルトのようなので、2400baudでやっている。あれ、パリティーとかストップとか7bit 8bitとかそのへんどうなってんだろ?多分世の中のメジャーな設定になっているはず。

#include "Keyboard.h"

void setup() {
  // open the serial port:
  Serial.begin(2400,SERIAL_7E1);
  // initialize control over the keyboard:
  Keyboard.begin();
}

void loop() {
  // check for incoming serial data:
  if (Serial.available() > 0) {
    // read incoming serial data:
    char inChar = Serial.read();   
    Keyboard.write(inChar);
  }
}

 

しかし、肝心の電子天秤が今ないので、一旦作業は保留。さてうまく通信できるかな。
そして、次の疑問。RS232Cって何ボルトの電圧振幅必要なのかな??

今使っているOSがUbuntuなので、Windowsとはちょっと違う認識方法だが、うまく行っている様子。
Bus2にデバイス8としてArduinoがぶら下がっているようだが、CDC_ACM, HIDの2パターンで認識されていて、Arduino IDEなどからはおそらくシリアルポート越しの書き込み、HIDデバイスはHIDデバイスとして書き込まれるのかな、なんて思っている。

$ lsusb
Bus 002 Device 008: ID 2341:8036 Arduino SA Leonardo (CDC ACM, HID)
Bus 002 Device 004: ID 045e:0039 Microsoft Corp. IntelliMouse Optical
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 5986:051b Acer, Inc 
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 2: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 3: Dev 8, If 2, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 3: Dev 8, If 0, Class=Communications, Driver=cdc_acm, 12M
        |__ Port 3: Dev 8, If 1, Class=CDC Data, Driver=cdc_acm, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 2: Dev 3, If 0, Class=Video, Driver=uvcvideo, 480M
        |__ Port 2: Dev 3, If 1, Class=Video, Driver=uvcvideo, 480M

 

 

HIDデバイスのコードを書き込んだデバイスであっても接続すると、シリアルポートの書き込み先にデバイスが出てくる。

 

ふと思ったが、キーを適当に叩くようなプログラムを入れておけば良かったんじゃないだろうか。よしやってみよう。
デバイス認識に時間かかりそうだから、5秒待たせて出力。

できた。この機能、シリアル通信の中身をテキストファイルに吐き出すのにも少し便利かもしれない。
いや、シリアル-USB変換使ってTeraTermとかで受信したらそれでOKかもしれないけど。

Keyboardには次の関数があるらしい。
Keyboard.begin()
Keyboard.end()
Keyboard.press()
Keyboard.print()
Keyboard.println()
Keyboard.release()
Keyboard.releaseAll()
Keyboard.write()

 

文字だが、あくまでもHIDデバイスなので送信できる文字に制約がある。Shiftを押して操作みたいなこともできるが、処理が煩雑になるので一旦は数字の伝送に専念してみる。

例えば、
+-,.0123456789abcdefghijklmnopqrstuvwxyz<>?_/ という文字を送信すると
~-,.0123456789abcdefghijklmnopqrstuvwxyz<>?=/ という文字になって返ってくる
+の記号がうまく処理できていないことがわかる
なんでだろうかと調べてみると、日本語キーボードと英語キーボードの配置が違う生だったようだ。

日本語キーボードに慣れないかと思って調べたらやっているひとがいた。
が、どうやったらいいのかわからないので色々調べている。

 

コメント (1)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

初の実家帰省

2023年05月03日 16時05分17秒 | 

二週に分けて父方、母方の生まれ故郷までそれぞれ2泊3日の旅をしてきた。

長距離の移動になると疲れもあるので、全車に追従してくれるレーダークルーズコントロール、車線逸脱をアシストしてくれるやつとか、そういうのがあると楽なのかな、と思った。今の車は速度維持のクルーズコントロールしかないのだが、レーダークルコンあるといいのかな、なんて思っている。

満タン法で17km/Lほどの燃費だった。
CX-5 ディーゼル  ODOメーター84000km

コメント (2)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする