Arduino初心者熱烈大歓迎質問スレ part28
■ このスレッドは過去ログ倉庫に格納されています
Aliexpressの工作員はArduino初心者をバカにして悦に浸ってるようだけど
Arduino初心者って中学生や高校生も多いんだぞ
あやしいAliexpressなんて勧めるなよ
Arduino互換機なら国内でだってそれほど値は張らないわけだが
いい年して、はした金を節約しないといけない貧乏人だってことか? 今、Aliで注文したら届くのは9月か10月だぞ
年寄りにしてみれば1ヶ月、2ヶ月はすぐなんだろうがな みんながAliで買うようになったら日本国内にある電子工作のパーツ屋がどんどん潰れてくぞ
それで困るのは、結局、電子工作やってるやつら >>658
中学生くらいの子供に買い与えるなら
センサーとかいっぱいついてる3000円くらいのセットかなぁ
そして大いに破壊して雑な扱いしたら壊れるという事を学んでもらいたい
問題が発生したら一緒に考える Aliで安いのは偽者中華製品だけ
正規品は安くない >>663
機嫌悪いみたいだけどお茶でも飲んで落ち着いて
( ^ω^ )_旦~~ 初めてのArduinoで純正品を買わないで動かない!詐欺だ!って叫ぶやつは初心者というよいか只のケチという気がしてならない
純正品にブートローダーが入ってなかったらそりゃもう何文句言ってもok 初心者とか慣れてないやつなら純正買った方が無難だろうとは思う。
互換品は慣れてからでも良いんじゃね? 最初は正規品をって人は感情論に終始
挙げてる理由も全部否定されてる ブートローダーは自分で書き込むものだと思ってた
そんな俺の初めては秋月の奴 >>668
俺も俺も
最初に間違ってLeo買ってなんか違うと気がついて何故かAE-ATMEGA買った
付属のFT232を取り付けしないでライタにしてLoder書き込んだ記憶がある もう、ボードなんて買わないで秋月やAitendoでATmega328P買えばいいじゃん
自分でブートローダー書き込めない人は
ブートローダー書き込み済みの秋月やAitendoでATmega328P買えばいいんじゃね? Aliで安いのは中華チップのオンパレードだからな
それでも不具合はすごく少ないが もう、Seeeduino XIAOでいいんじゃね?
500円ちょっとでだいぶ安い、
いろいろ多機能でへんな互換機より便利 >>673
そう、これ凄いよな
ただADCが付いて無いのがイマイチ >挙げてる理由も全部否定されてる
反対意見と否定は違うよね。
そういう観点もある、と言う話は出ているけれど、選択の余地のなく全部否定されるようなことってあったかな?
反対意見が出たことが肯定論の完全な否定であると考えることも、また感情的な行為だよ。
特に初心者は純正品を買う方が良いという考え方と、互換機で良いという考え方は矛盾なく併存できることなんだし排他的になる必要はないのにな。 >>666
同意
スキルが上がればブートローダー書き込みくらい分けないだろうけど、最初は何がなんだかわからない
いきなり中華は動かないときのハードルが高い
それでやめてしまうのはもったいないと思う
自分自身arduinoのおかけで電子工作のスキルが多少は上がったからなあ
ハードルの低さは半端な熱意の自分にはありがたい でも初心者が電子工作やるにあたってAmazonとかでスターターキット買って始めたりするからなあ
俺はネットで検索するクセが付いてるから全く困ることはなかったけど えれぐーのレッスンCD途中までやったけどね。
まあ最後までやれば何でも作れるようになるだろね。
そこまで暇じゃないけど。 >>680
ELEGOOいいね
マイコン入門から、かなりのレベルまでIoTの学習ができる Elegooフィラメントは安くて普通に使えて良かった
再販してほしい ELEGOOはUSBシリアル変換の石にちゃんとATmega16U2使っていて
安いから好感もてる こちらのURLのパワーパックを作ろうと思っているのですが
https://pwm.sigris-rabo.work/?page_id=199
線路出力の制御にリレーモジュールの省略されているので誰かそれの回路図を教えていただけないでしょうか?
なお使うリレーモジュールは汎用品になります >>685
母線引き通し(線路出力制御用)リレーと方向指示リレーの事だと思うんだけど、それだったら
ArduinoNanoボードのD12=母線引き通し(線路出力制御用)、D13=方向制御
この2ピンからリレーモジュールの制御ピンに接続で良いかと >>685
あと、URLの図面なんだけど、実際のNANOボードは3ピン有るんだけど
図面のソケットは28ピンしかないね・・・
上側の存在してないソケット分の2カ所がD12,D13です 学術巨大掲示板群: アルファ・ラボ ttp://x0000.net
物理学 化学 数学 生物学 天文学 地理地学
電子 IT 工学 国語 方言 言語学 など >>685
部品リストにリレー3個ってあるのにソースコードだとリレー2個しか使ってないから変だなて色々見てたら
https://pwm.sigris-rabo.work/?page_id=138
こっちのURLのソースコードだとリレー自体を使わなくなってるので、途中でリレー使うのやめたっぽい >>689
ありがとうございます
もしよければ回路図や、可能であれば実体配線図の提示は可能でしょうか? >>690
リレーが無くてもインバーター音を再現するパワコンとしては機能するので、まずリレー無で作ってみてはどうでしょう?
そこまで作業すれば↑の書き込みの意味を理解できて回路図・実配線図なしでリレージュールを何処に繋げばよいのか理解できると思う
それでもわからない場合は再び質問してみては?
追記事項(ちょっと気になった点をいくつか)
URLの回路図(nano互換基板のピンに対応)と書いてあるが実配線図は(秋月電子のPro Mini用)
実際のPro miniとは端子の位置が異なってる(K-10347で検索して説明書参照)
URLの回路では12Vから9Vを作ってるが12VをVinに入力するか5Vを5Vinに入力すれば動くと思う(省略可だと思う)
FETとマイコンの間にはダイオードしかないが、本来保護抵抗を入れるべき(容量性負荷の為) そういやさ、マイコンの出力だけで操作できるリレーってないの?
あったらすごい便利やん? >>694
そらモジュールならもちろんオッケーになるのはわかるんだけど、LEDくらいの電力で動くように電磁石スイッチってのは今の技術でも安くは出来ないもんなのかね…?と思って。
>>693
SSRも交流しばりあるからね… これもトランジスタぽいのが見えるが…
ただこれでだめな理由は全くないな。 通常のリレーだと小型の高感度タイプでも0.2Wくらい必要なので5Vなら30mA〜50mAくらい
リードリレーなら0.05Wくらいでも動作するものがあるから5V10mAくらいのもある >>696
これどうしたらONになるの?
接続が分からない >>699
COMは共通
NCはIN=LowでClose(COMとつながる)
NOはIN=LowでOpen(COMから切れる)
Highでは上の逆 >>692
オムロンのG3VM-61CR1とか
東芝のTLP3543Aとか
3.3VのマイコンのGPIOでも10mA程取れれば10Aのスイッチングできるよ
もちろんDCのね(30Vか60Vまでだけど) DCでいいならPowerMOSFETと抵抗2本で55Aとかスイッチングできるじゃん
3.3VならVGS4Vまで引き上げる為にTr1個追加もしくは
VGS1V-3Vの低ゲートMOSFET使えばいいしさ
PWM駆動できるからモーター回転やヒーターの温度制御もなめらか >>701
確かに、電磁パーツのスイッチングは小信号回路とアイソレートしときたいから、フォトリレーが良さそうね 最近Arduino UNO Wifi Rev.2やArduino NANO EVERYなど328ではなくATMega4809を搭載したものを入手したのですが、CPUが変わったという事でタイマーライブラリのMStimer2が非対応な状況となっています。
これらATMega4809を搭載したArduinoでも使えるMSTimer2相当のLibraryはありませんか?
検索をかけて色々見て回っているのですがどうにも”328とはTimerの仕様が違うよ”的な記載ばかりでその運用について触れている記事を見つけることができませんでした。
よろしくお願いいたします。 >>708
酔っぱらってるし、実機無いから未検証だけど、代用のコード書いてみた(短いからコード用のアップローダ使わず直書き)
まあ、多分動かないけど、こんな感じの手段が有る程度に思ってくれ(PIC以外のコードをまともに書いたことない( ^ω^)・・・)
TCB0,1,3でも良いのかな?(思考停止なので2を使ってみた)
void setup() {
TCB2.CCMP = 0x4E1F; //クロック20MHzの場合に1ms毎にタイマー割り込みを発生
TCB2.INTCTRL = 0x01; //割り込み設定ON
TCB2.CTRLA = 0x01; //タイマー起動
}
void loop() {
}
ISR(TCB2_INT_vect) {
const uint16_t RunMilliSecond = 100; //100msに1回実行の場合
static uint16_t CurrentCount = 0, PreviousCount = 0;
if (CurrentCount - PreviousCount <= RunMilliSecond) {
PreviousCount += RunMilliSecond ;
//実行するコード
}
CurrentCount++;
} >>709の
ISRの最後にTCB2.INTFLAGS = 0;必要だと思う
もしくはTCB0.INTFLAGS = TCB_CAPT_bm; かも >>708
ここは見た?
https://forum.arduino.cc/index.php?topic=633627.0
こっちにライブラリもあるけど?
ttps://github.com/Kees-van-der-Oord/Arduino-Nano-Every-Timer-Controller-B 自分の場合、Arduinoの電子工作は10種類(UNO, MEGA, PRO MINI, NANOの互換機)くらいしか経験無いけど、比較的新しいとは言え、市場に出て2年くらい経ってるチップの関数ライブラリが、本家のIDEに入って無い例って、けっこう多いの? 外部の割り込み入力からarduino unoを復帰させる時、どのような方法が一番待機電力を少なくできるでしょうか?arduinoだとスリープ中でも結構待機電力ありますので、ESP8266にディープスリープ+トリガー待ちさせておいて、ESP8266が目覚めた時にトランジスタでarduino unoに電力供給する? >>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命令でアクセスできるぞ ■ このスレッドは過去ログ倉庫に格納されています