Arduino初心者熱烈大歓迎質問スレ part28
■ このスレッドは過去ログ倉庫に格納されています
>>713
ESP8266を使う理由があるなら別ですけど、
UNOで6.5uAと書いてあるよ。
http://radiopench.blog96.エフシーツー.com/blog-entry-830.html しょせんArduinoなんて他人の褌で相撲とってる二次創作みたいなもんだ
日本的メーカー対応みたいなもんは期待しちゃあいけない >>714
ありがとうございます。これってGPIOからの割り込みでの起動に対応してるのでしょうか?ESPならライトスリープとかで、割り込みで復帰させられるようなのですが。 >>716
基本のSleep ModeはPower-DownのようなのでINT0やINT1で割り込めるんでは?
試してみて教えてください。 >>709
いただいたソースコードをもとに試しでLチカを想定したコードを作成したところ
どうにもタイマーを起動するとタイマーの内容のもの以外がすべて機能しなくなるようで…
Arduino標準のBLINK(D13)とタイマーチカ(D7 プログラム内LEDAに相当)の
同居想定として作成してみました。
https://pastebin.com/i3QBKtec
これを起動するとloop内のものが一瞬だけ動いたかと思うと最初のタイマーが反応して以降
帰ってくることはなく結果的にBLINKは最初の点灯だけは起こり、その後機能せずタイマー内の点滅(LEDA)だけが点滅しました。
また、RunMilliSecondが100msではちょっと早すぎると思い2000にしてみても
減速はされず2000msとは程遠い速度で点滅しました。
>>711
こちら、サンプルコード自体は機能いたしました。
ものすごい多機能そうで理解できるまでちょっと時間かかりそうですが(汗
とりあえずサンプルコードの機能そぎ落としをしながら理解を進めたいと思います。
この4809を使ったArduino 価格は安いのですがUNOやNANOとはやはり大きく違うという事を思い知らされています・・・ 正規品買う気のない俺はAliで互換機見つけたと思ったら4808だった
とりあえず無印Nanoで足りてるしもうしばらく待つわ >>720
今見たら色々間違ってましたね
ifの<=逆でした
× TCB0.INTFLAGS = TCB_CAPT_bm;
○ TCB2.INTFLAGS = TCB_CAPT_bm;(TCB2.INTFLAGS = 0;と被る)
まあ、他の方の情報のライブラリでいいと思います あるセンサーから測定値を取り出したいと考えています。
図面を見るとセンサーからのコネクタはRS485となっていたので
AMAZONで『KKHMF MAX485 RS-485 TTL−RS-485モジュールコンバータ』を購入しました。
ハッキリ言ってARDUINOではセットに付属されていたモノで遊んだ程度の知識しかありませんのですが、
見よう見まねで以下を作ってみたのですが何も検出されません。
ご指導いただけないでしょうか
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
#define PIN_RTS 13
void setup(){
Serial.begin(9600);
mySerial.begin(9600);
digitalWrite(PIN_RTS, LOW);
int test = 0;
}
void loop() {
mySerial.listen();
test = mySerial.read();
Serial.println(test, DEC);
delay(100);
} >あるセンサー
の仕様がわからないと何とも言えない。 RS485はコマンド送ってアンサー待ちしないといけない
複数つながる可能性があるから局番指定したり
チェックサム生成したり面倒臭い
2線式と4線式があって2線式だと自分の送ったコマンドをそのまま受信するからそれを除外しないといけないし
それをSoftSerialでやろうとすると更に難易度が上がるよ PIN_RTS は、RE DE の両方に繋いでるのかな。
それならDEのときにREをディセーブルすることになるし、自分の送ったコマンドは受けなくてすむかな。
485でも垂れ流しでデータ送ってくるように設定できるものもあるけど、センサーマニュアルを見ないとなんとも。
ところで>>723のモジュールだけど、DEがプルアップされていたり RS-485が2線とかデリカシーを欠くような設計。 返信が遅れてしまい申し訳ありません。
>>724さん
そのとおりですね。センサーは
https://www.optex-fa.jp/products/dsp_sensor/cd22/
これのRS485版になります。
センサー自身に表示されている数値を手元で確認できるようにしたいと考えています。
>>725さん
2線式のコネクタが仕様されています。
今、手元にはセンサー単体のみで接続コネクタもない状態です。センサー片手に秋葉原を聞いて廻ったのですが手に入れる事ができず、コネクタに直接ワイヤーを繋いでいる状態です。
>>726さん
RE DEともに13ピンに繋いでいます。
モジュールについては色々と教えていただきたいです。 >>727
FA用のセンサーって事は工場で仕事に使うものを初心者スレで質問してるのかな?
工場でarduinoやラズパイって見たことないけど
工場で使うんだったら盤屋に依頼するのがいいんじゃないか?
CC-Link用のがあるんだから三菱のPLCですぐできるでしょ >>727
まずそのサイトでマニュアルダウンロードしたら?
そもそも電源入れただけじゃ通信してないんじゃないの >>723
そのセンサーの仕様書読んでみたけど
センサーの設定が有ってる(9600bpsに設定)として、まずRS485モジュールを扱うコードが必要だと思う(送受信設定等)
さらに、データを読み出すにはArduino側から読み出し命令を出し、それの返信としてデータを受信する必要がある
CD22 シリーズの通信仕様は以下になります。
通信方式 EIA RS-485 準拠(半二重:局番設定によるマルチドロップ接続には非対応)
伝送コード バイナリ データ長 8bit ストップ長 1bit パリティチェック なし
ボーレート 9.6k/19.2k/38.4k/57.6k/115.2k/230.4k/312k/460k/500k/625k/833k/920k/1.25M (bps)
ヘッダ / データ区切り STX / ETX
■ コマンドフォーマット
送信コマンド : STX (コマンド) (データ 1) (データ 2) ETX BCC
受信コマンド(成功) : STX ACK (返信データ 1)(返信データ2) ETX BCC
受信コマンド(失敗) : STX NAK (エラーコード) 00H ETX BCC
※ STX(02H)、ETX(03H)、ACK(06H)、NAK(15H)、BCC は網掛け部の XOR 演算結果
コマンドの種類 : C(43H) 個別機能コマンド
W(57H) 設定の書き込み(Write)
R(52H) 設定の読み出し(Read)
判定結果読み出し 送信 B0h 02h 返信 00h (判定結果)
bit:0 = 1 の時 判定出力 ON bit:4 = 0 の時はそのデータが既読であることをします >>730
あんた親切だなあ
それともすでにメンバー登録してあった?
興味本位で言ったけど面倒だからやめたわ >>730さん
本当にありがとうございます。
>>727さんから「RS485はコマンド送ってアンサー待ちしないといけない」とありましたので、読み飛ばしていた仕様書の当該箇所をアナログ人間がわからないなりに解読しようとしています。これから色々試してみるつもりです。
>>731さん
もっともだと思います。
私は購入時にメンバー登録していましたが、メンバー登録が必要にもかかわらず安易にセンサーのサイトを貼ったことを反省しています。
不快な思いをさせてしまい申し訳ありませんでした。 >>733
730です
想像ですが、予想した手順を記載します(RS485の通信したことない)( ^ω^)・・・
1.MAX485の出力ピンを出力ONに設定(DEをLOW>HI)
2.Serial.write(0x02);,Serial.write(0x57);,Serial.write(0xB0);,Serial.write(0x02);
Serial.write(0x03);,Serial.write(0xE6);(でたらめです)
3.Serial.flush()
4.MAX485の入力ピンを入力ON(REをHI>LOW)に設定(もしかしたら入力常にONでもOKかも)
5.MAX485の出力ピンを出力OFFに設定(DEをLOW)
6.データを受信
>>731
なんかネットで拾った 6万もするセンサーポン使うのにデータシートすら読んでないとか
何かすげえな
おいらとは別世界の人だわ https://i.imgur.com/tYPEYut.png
ついでにポチった( ^ω^)
ちょっと差動通信してみたかった あ、ちゃうか
ロジアナでもつないどきゃ出力はチェックできるな
面白そうではある でもじっちゃんがセンサーはIICかSPIだけにしとけって言ってたからやめとこう >>737
2個買えばArduino同士1200mまで引き伸ばせたんじゃないの >>742
Aliあるあるネタだけど
これ2ポッチしたら、10個届くのよ(;´・ω・) RS-485のインターフェース基板で2端子しか付いてないものって、安心して接続できるのは共通グランドが期待できる範囲だけだよな。 そういえば、昔どこかのスレでRS485をA、Bの2線にするか、
A、B、GNDの3線にするかの大論争があったな >>747
どちらともいえない、運用方法や状況、考え方によって変わると思う
RS-485は2線(or4線)で通信することを前提として考えられた規格だと思うのだけど
2線通信で不具合が発生する場合の対処の1つがGNDを接続する方法だと思う
(また外部ノイズを減少される目的でのシールドとGNDを接続する事と別に考えたほうが良いと思う)
機器A−機器Bで通信するとして、電源が絶縁されてれば問題は起こりにくいと思う
また、電源が共有の場合でも、通信側を絶縁すれば問題は起こりにくいと思う
多分業務用の高い機器は電源も通信も絶縁されてる可能性が高い気がする(←そんなの持ってないよ・・)
GND接続の有無で通信に問題が有る状況だとしたら、GNDを接続する以外の手段で問題を解決した方が良いと思う >>745
RS485はA-B間の電位差で信号を送るのでGNDとは直接関係無いんじゃないか?
GNDはコモンモードノイズ対策のシールド線用でGND間の電位差が問題になる様な場合は片側のシールドを浮かすだろうし RS-485インターフェースICのメーカーの資料を提示して議論するべき。 部屋の換気具合を知りたいのでCO2センサーモジュールを買おうと思てるんだけどArduinoで使いやすいおすすめある? >>752
最低、アナログ出力かシリアル出力が付いてればいいんでないの?
ノイズのこと考えると、シリアルが1番かな?
センシング面での性能は分からんわ ARMとかRISC-Vだとavr/pgmspace.hにあるpgm_read_byteとか使わなくても
直接、プログラム領域にある変数とか配列読めるんだね
Arduinoの作法としてはavr/pgmspace.hにある関数群使うのがいいのだろうけど それはArduinoの作法じゃなくて搭載してるマイコンAVRの仕様なんで・・・マイコンのデータシートや命令セットを読んでもろて
ちなみにAVRでも最新のmega0とかtiny1とかAVRDAシリーズだとLPM命令を使わなくてもLD命令でアクセスできるぞ 不注意で328Pじゃなくて168Pがのったnano互換ユニットを買っちゃったが、(4枚) 168Pの方が良いことって1つでもある? マイコン的には容量が少ない以外の差がない ので値段が安いのであればそこだけ >>759
ありがとうございます。
やっぱりそうですよね。
失敗しちゃったなぁ。 >>761
いや、すでに目の前にあって、実際メモリ不足で書き込めないスケッチがあった。軽い目的に回そう。 >>765
中華マイコンなら無いほうがおかしいでしょ? やすりで削ってレーザー刻印だから消しゴムじゃ消えないぞ
全額返金で168Pが無料で手に入るチャンスだけどそういうのは無いなw
チップ単体だとTiny12の刻印削ってTiny85として売ってるのはよく見かける
動かないとかチップIDが違うといえば返金してもらえる ひでえな中華
50円の詐欺のために50円のコストかけてないか? >>768
販売先に日本が多いと、評価が上がるとか、日本人は余り文句を言わないで諦める奴も多いとか? Aliexpressで買って届くまでに1ヶ月、2ヶ月待った挙句にそれが偽者だったらショックだよなw https://forum.arduino.cc/index.php?topic=699473.0
AVRDAシリーズのコアが仮完成したみたいだ
https://www.microchip.com/wwwproducts/en/AVR128DA28
VCC=1.8Vでもフルスピード24MHzで動く今年発売したばかりの最新のAVRマイコンだ
tiny1シリーズやmega0シリーズに順ずる高性能な周辺機能を装備のうえ、ADCが12bitだったりDACが10bitだったりパワーアップしてる
命令セットは↑から変わってないので何時も通り使える上に、push命令とsbi命令とcbi命令のマシンサイクルが2から1に短縮され割り込みルーチンなど高速化
ROM128k/RAM16kの大容量でEEPROMもアリ、なんと28pin仕様にはDIP版もあるぞ! まあ、届いただけマシだと思わねば
何ヶ月も届かず、注文したことすら忘れて、
そのまま闇に消えていった注文品がいくつもある こういう奴がいるから日本向けは舐められる
大変迷惑 素人ですが質問させて下さい。
CH340シリーズのUSB変換モジュールで、USBからの5Vを給電しつつ信号レベルを3.3Vにするにはどうすればいいでしょうか?
少なくともCH340のVCCに3.3Vを入力する必要があるのですが、CH340の3V3端子とVCCをショートさせるみたいな話もありましたが、データシートを読んでも具体的にどうすればよいかわかりませんでした。
実際には↓のCH340Eが実装されたこのモジュールを使ってます。3.3Vという記載がありますが3.3Vで使う方法の記載はありません。
https://m.ja.aliexpress.com/item/33041987984.html
5V/3.3V切り替えができるモジュールもありますが、あれはチップのVCCへの入力前に5Vとは別に3.3Vへ降圧している?
そもそもCH340の3V3端子の使い方(用途)が不明です… どのデータシートを読んだか知らんが
英語版
https://cdn.sparkfun.com/datasheets/Dev/Arduino/Other/CH340DS1.PDF
V3端子は電源がVcc5Vで使う場合はデカップリング
Vcc3.3で使う場合はVCCに繋げってことらしい
FTDIのチッブなんかは内部で3.3Vを作ってる >>779
ありがとう。私が見てたのはこちらですが内容的には同じですね。
https://www.mpja.com/download/35227cpdata.pdf
やっぱりUSBの5VをそのままCH340に使ってシグナルを3.3Vにするのは無理ぽいですね…
CH340のV3ピンは、5V給電時は3.3Vが出力されるので、チップ内で3.3V生成してるのだから、それなら5V動作時でも3.3Vで通信するモードがあってもいいのにと思ってしまった。
CH340積んでV5/V3.3切り替え付きのモジュールは、よく見ると別途レギュレターチップ積んでてそこで3.3V作ってるみたいでした。
素直に3.3V対応のUSBシリアルを買ってきます。
せっかくCH340単体で3.3V供給してるのになんか使い道無くてもったいないなぁ USBシリアルなんて頻繁に買うものじゃないし
安さに釣られずおとなしくFTDIの買ったらええ
ワイは秋月で5V/3.3V切り替え可のやつ買った 最悪だ
新しく買ったDUEに載ってるch340gにブートローダーが入ってないみたいだ
しかもこのボードicspピン付いてないし
Nativeポートは使えるけどProgrammingポートが全くデバイス認識されない
今度からicspピンついてる16U2が載ってるボードのみにしとこ >>783
ああ、なるほど!
CH340の3.3Vは自身のコア動かすためにあるのか!
>>782
はい、そうします(笑)
勉強になりました。 >>784
CH340G自体にブートローダーって要る? aliで5vのprominiまとめて買ったんだけど、5v16mhzで書き込むと動作速度が半分になる。
3.3v8mhzで書き込むとオッケー。
間違えたんかなこれ?
ただ3.3v8mhzのやつでも、raw端子に繋げば5vで動かしてもいいんだよね?
確か12vくらいまで対応していると読んだことあるし。 >>787
とりあえず OD しましょう。
耐圧はレギュレーターによるんじゃないのかな?
ヒューズリセットに12v使うので、チップ自体は壊れないだろうけど、
レギュレーターによっては、香ばしいことになるかも?
https://ht-deko.com/arduino/promini.html
ここの写真を見る限り、うちにある 5v版 だと思ってたものも全て 3.3v かも?
ずっと普通に 5v で使ってるわ。 >>786
要らんのか?良く解からんが
ch340gに原因がある事は確かだ ブートローダーを何だと思ってんの?
CH340Gはマイコンじゃねえぞ CH552Gはマイコンです。
USBのほか、UART、ADC、アナログコンパレータ、タイマ、PWM を装備し、
CH340Gのように働くことができます。 >>792
止めたれ
勘違いして恥ずかしいのは、本人が1番分かってるのに、そういう傷口に塩を塗る様なことは >>795
16U2はマイコンとして売られているもの。
ユーザーがプログラムを書き込むかあるいは、メーカーにプログラムを書き込んで出荷するように要求されるもの。
CH340Gは、USB-シリアルのブリッジとして売られているものなので、16U2と同じようには考えられないと思う。
(MCP2200の中身がPIC16F1459でも、MCP2200をマイコンとは言わない。FT232もたぶん中身はマイコン)
CH340Gが動作しないなら、もしかしたら本当に中身がマイコンで、プログラムのミスなのかもしれないけれど
外面的には、部品としての不良とみなして考えるのが自然だと思う。
電子工作をする一般エンドユーザーから見れば、
16U2が動いてなさそう…
16U2用のプログラムを書き込んだら治るかも
ハード的に破壊されているなら、少なくとも 16U2を載せ替えて、その上で16U2用のプログラムを書き込む必要がある。
CH340Gが動いてなさそう…
パターンやほかの部品に問題がないなら、CH340Gを載せ替えれば動くはず。
なんにせよ、>>784を書いた人のの主旨は「CH340Gが不良らしい」ということなので「ブートローダー…」はもういいよね。 数年前に書いたスケッチを、久しぶりに改造しようかと思ったら、
PROGMEM prog_uchar hehehe[] の宣言が通じなくて、
コンパイル通らなくてあせった。
こんな時代なのね。
const char hehehe[] PROGMEM
プリプロセッサにしても意味不明な、、、 PROGMEMの部分は__attribute__ ((progmem))だからね
だから宣言ではこうなってることになる
const char hehehe[] __attribute__ ((progmem))
するとprogmemというコンテキスト名で領域が確保される インラインアセンブラでこうしてやるとバイナリファイルをprogmemとして確保できるらしい
https://pastebin.com/nuPfavZ1
使い方はhogehoge.binがバイナリファイルでHOGE01がそのデータに割り当てたいシンボル名として
C言語で
IMPORT_BIN("hogehoge.bin", HOGE01);
extern const uint8_t HOGE01[];
とやればいいらしい 間違えたコンテキスト名じゃなくてセクション名ね
progmemって要するにセクション名をprogmemにしてるだけっぽいよ 実際にteensy4.0で試してRGB565の画像データファイル>>799でインポートして
LCDに表示できた
画像データはGIMPでCソース形式で保存するとRGB565に変換できるので
それをバイナリデータとして書き出す自作プログラムを作成
Arduino IDEではファイル名は絶対パスで指定しないとエラーが出たよ そういうのできちゃう人って
神様にしか思えないんだが
何がどうなってるんだろう ほんとに好きで勉強(・・・というか勉強しようと思ってやるんじゃなく好きで学ぶというか・・・勝手に調べる)してずっとやってりゃそのうちその神様とやらになれるよ pro microの3.3V/8MH版、USB/HIDなスケッチをテストしてて、ボード設定Leonardoで書き込んだら死亡しちゃった
これってbootloader焼きなおせば復旧するのかな? ちょっとすぐ試せないのでわかる人いたら教えてください 物理的に壊してなければ正しいスケッチとヒューズ設定にすればおk >>805
書き込みをWindows上で行っているならば、pro microをH/Wリセットした直後に
ハードウェアマネージャでBootLoader用のCOMポートがが見えるようならば
IDEでブートローダを書き込めば直るかも
BootLoaderが見えない場合にはICSP経由でBootLoaderを書き込む
それでもダメだとわかんない 一度書き込めて二度目から書き込めなくなったときはこれ試してみて
612 名前:774ワット発電中さん[sage] 投稿日:2019/12/06(金) 20:41:59.26 ID:9sDeXhF9
>>609
リセットの手順ちょっと違った
pro miniの場合だけどこんな感じ
参考にしたページのアドレス貼れないからコピペ
Arduino Pro Mini側のリセットボタンを押しながら、
Arduino IDEのアップロードを実行し、
FTDI-USB変換ボードのTXが光った瞬間に、
Arduino Pro Mini側のリセットボタンを離す。 俺のArduinoなんかブートローダ書き込み後1回目はスケッチ書き込めて
2回目からは書き込めない
そしてまたブートローダを書き込むとやはり次の書き込みは成功して
その次は失敗する
ゴミ 805です。コメントありがとうございます。Fuseビットは変わってなくbootloader書き込み直しだけでで復旧できました。
中華ProMicro2種(5V/16MHz、3.3V/8MHz)があって付け替えて試していたところボード設定を間違えました。
5V/16MHz⇒Leonardo、3.3V/8MHz⇒Liliypad USBと設定しておかないとおかしなことになっていたようです。
あとHIDなスケッチは曲者ですね。スケッチ書き込み後にCOMポート見失ったり、ポート番号が変わったりすることがあります。
環境はwin10ですがCOMポートがスゴイ勢いで増えていってます・・・いらないの消さないと・・・ >>811
> あとHIDなスケッチは曲者ですね。スケッチ書き込み後にCOMポート見失ったり、ポート番号が変わったりすることがあります。
HID と COM が混在するのが難しいのですかね?
vUSB 関連を昔にいじったけど、結局、STM32 に落ち着いた。
STM32 も HIDデバイス にすると COMポート を見失うけど、
スケッチ書き込み時に、リセットを押すだけなので、そんなに困ってない。
micronucleus 搭載の Tiny85 も、それなりに癖はある。 HIDでCOM見失うって良く見るけど、HIDモードが使えるやつはブートローダモードの
時しかスケッチ書き込めるCOMが見えないだけじゃないのかな
AT32U4(Pro Micro互換ボード)はH/Wリセットして8秒間だけスケッチが書き込める
COMポートが見えるようになる動作が普通みたいだけど
ブートローダー書きこんだ直後しかスケッチ書き込めないってやつも、IDEで書き
込むとき、書き込み開始してからタイムアウトするまでにH/Wリセットかければ
書き込めると思うけど ■ このスレッドは過去ログ倉庫に格納されています