Arduino初心者熱烈大歓迎質問スレ part32
レス数が950を超えています。1000を超えると書き込みができなくなります。
LANケーブルってあるだろ?
無ければUSBケーブルでもいいよ
ケツの穴にぶっさせ
それで繋がる 昨日動いてたArduinoが何も変えてないはずなのに動かなくなりました
電力という話ではないです
どのようなことが考えられるでしょうか? 動かないっていうけど曖昧だよなー。モーターとかついてないから俺のも動かないわ。 >>852
ワクチン打ったから、何も接続しなくても5Gに繋がったよ。 EmpathというAPIを使って感情認識した音声をNeopixelで感情ごとに色分けしたいです。Pythonで音声を録音保存→それからEmpath で感情を数値化(ここまでがPython内)→(以降Arduino)シリアル通信で出た感情の数値を持っていく→感情ごとの数値をNeopixeで色分け制御。という感じでやっていきたいのですが調べてもpythonからarduino nanoにempathの数値を持っていく方法がわかりません何かわかる方お願いします。
empathの指定フォーマット
PCM WAVE形式、16bitであること。
データサイズが1.9MB以下であること。
フォーマットがPCM_FLOAT、PCM_SIGNED、PCM_UNSIGNEDいずれかであること。
録音時間が5.0秒未満であること。
サンプリング周波数が11025Hzであること。
チャンネル数が1(モノラル)であること、
ーーーーーーーーーーーーpython code ーーーーーーーーーーーーーーー
import pyaudio #録音機能を使うためのライブラリ
import wave #wavファイルを扱うためのライブラリ
RECORD_SECONDS = 5 #録音する時間の長さ(秒)
WAVE_OUTPUT_FILENAME = "sample.wav" #音声を保存するファイル名
iDeviceIndex = 0 #録音デバイスのインデックス番号
#基本情報の設定
FORMAT = pyaudio.paInt16 #音声のフォーマット
CHANNELS = 1 #モノラル
RATE = 11025 #サンプルレート
CHUNK = 2**11 #データ点数
audio = pyaudio.PyAudio() #pyaudio.PyAudio()
stream = audio.open(format=FORMAT, channels=CHANNELS,
rate=RATE, input=True,
input_device_index = iDeviceIndex, #録音デバイスのインデックス番号
frames_per_buffer=CHUNK)
#--------------録音開始---------------
print ("recording...")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print ("finished recording")
#--------------録音終了---------------
stream.stop_stream()
stream.close()
audio.terminate()
waveFile = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
waveFile.setnchannels(CHANNELS)
waveFile.setsampwidth(audio.get_sample_size(FORMAT))
waveFile.setframerate(RATE)
waveFile.writeframes(b''.join(frames))
waveFile.close()
#empathで録音した音声を感情分析
import requests
url ='https://api.webempath.net/v2/analyzeWav'#empathに繋ぐ
apikey = '’#指定したkey
payload = {'apikey': apikey}
wav = "sample.wav"#サンプリングした音声を引き出す
data = open(wav, 'rb')
file = {'wav': data}
res = requests.post(url, params=payload, files=file)
print(res.json())#感情をArduinoに転送
ーーーーーーーーーーーー終了ーーーーーーーーーーーーーーー
これが実行結果の例です。{'error': 0, 'calm's 15, 'anger': 0, "joy': 34, 'sorrow":0, 'energy':30)
ここからどのようにしてArduino nanoに持っていけばいいのでしょうか。またそれ以降の進め方やおすすめのやり方あれば教えていただきたいです。 文字列処理はarduino向きじゃないからpythonのほうでneopixelに向いた形にして送れば。 >>857ありがとうございます
そうした場合ってArduino側はserialで受け取り、NeoPixelで書いていけばいいのでしょうか?
2つ混ざってしまっていて似たようなコードを書いてもエラー吐かれてしまいます。。 Empathって知らないけど、PCからArduinoへのシリアル通信の質問? >>858
コードが正しいかはコードとエラー内容出してもらわんとわからん。
どういう動きにしたいのかも詳しく出してくれないとコード的には正しくても想定とは違ういうこともあり得る。 >>859
簡単に言えばそうです。ただシンプルなやつは出来たんですけどこれにneopixel絡むとよく分からないです。 >>860
例えばempathででたangerの値MAX50がRGBのRで255というように置き換えたいですね。joy=G sorrow=B
のような感じです。 >>863
そうですね!やっぱりそうなるとPythonで制御してから送るべきですよね、、、 そそ、メモリの少ないマイコンにやらせるより、送信側で処理したほうが後々楽だね やっとプログラミングと電子回路が少しだけは分かって実際のものを作ろう、というところに来たんですが
「モーターで鍵のロックをどう回すんだろう?」
「横に動かしたいけどモーターの円運動を直線運動に変更?どう実際にするんだ」
などなどと言ったところでつまづいてしまいました
皆さんはどうやってこういうのを学びましたか? >>867
そりは電子工学じゃなくて機械工学の分野なんで別の視点で調べないといきなりは
無理筋じゃないかな
とりあえず最低限で「歯車 wiki」見てごらん >>853
IDEやライブラリのアップデートとか? >>867
よめ子はステッピングモーターを往復運動させてやっていたな >>869
そういえばちょうどアップデートしてました
ありがとうございます
これっぽいですね 接触不良で動かないことが多いんですが
接触不良の箇所を効率よく確認するにはどうしたらいいでしょうか? >>868
>>870
ありがとうございます
歯車って凄いですね
人類の英智に感動しました
ここで知ったものをモノタロウで買おうと思います 入門者が増えてきたような気がする・・・
人口が増えるのはいいことだね Arduino CCからUno Miniとかいうバカ高いの出たみたいね
化粧箱入りのやつ 記念商品であって、その価格でずっと出すわけでもなかろうと思うが。 a collector’s item for serious Arduino lovers >>874
テスターは持ってたんですが使い方がよくわかってなかったみたいです
調べてみます https://i.imgur.com/oQoGjCT.jpeg
DS18B20 2個とmoisture sensor v1.2 1枚繋いだところ温度は正常で湿度の値が4095になり
DS18B20を外すと湿度は正常になりますが温度が-127になります
どこをどう直したら温度と湿度両方表示できますか?
スケッチはネットから拾いつなぎ合わせたもので解かっておりませんが宜しくお願いします
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 32
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress temp1 = {0x28,0x65,0xB1,0x56,0xB5,0x1,0x3C,0x35};
DeviceAddress temp2 = {0x28,0x46,0x4,0x75,0xD0,0x1,0x3C,0x2F};
void setup(void) {
Serial.begin(9600);
}
void loop(void) {
int humi = analogRead(A0);
sensors.requestTemperatures();
Serial.print(sensors.getTempC(temp1));
Serial.print(" ");
Serial.print(sensors.getTempC(temp2));
Serial.print(" ");
Serial.println(humi);
delay(1000);
} >>882
GND[ESP32<->ブレッドボード]間の接触不良とか? pinModeの設定してないのが気になるけど問題とは関係無いのかな
ESP32はpinMode(ANALOG)らしいぞ >>882
全部繋がずに、一つ一つ繋いでスケッチ書いて、確認してみたら? ESP32のAD変換は1Vまでだけど、その湿度モジュールの出力電圧範囲はどうなってんの? 1VなのはESP8266のモジュール単体だけじゃないの
ESP8266でもDevkit的な物は分圧されていて1-3.3Vとか、ESP32はアッテネータ内蔵 一つずつ試すとOKですが
DS18B20とmoisture sensor v1.2を1個ずつで同時に繋ぐと湿度の方がだめでした
DS18B20の5Vピンを抜くと湿度OKになります。(>>882の時と同じ状況)
analogReadの値が空中3300 水中1380と表示されます
#include <OneWire.h>
#include <DallasTemperature.h>
#define ADC_PIN 36
#define ONE_WIRE_BUS 32
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void) {
Serial.begin(9600);
pinMode(ADC_PIN, INPUT);
}
void loop(void) {
int humi = analogRead(ADC_PIN);
sensors.requestTemperatures();
Serial.print(sensors.getTempCByIndex(0));
Serial.print(" ");
Serial.println(humi);
delay(1000);
} ESP32はINPUTじゃなくANALOGってADC用の定義があるらしい
多分アッテネータの設定とかするんだと思うけど、一つずつの場合動くなら問題無いのかな pinMode(ADC_PIN, ANALOG);に変えてみてもだめでしたね
Arduino Pro Miniで>>882のスケッチでONE_WIRE_BUS 10に変えて試したら温度と湿度正常に表示されOKでしたが
ESP-WROOM-32ではmoisture sensorから僅かに発信音が聞こえる事に気づきました。Pro Miniでは無音で正常に動きます。
ESP-WROOM-32の場合
回路図の赤バツのところ外すとmoisture sensor正常動作し
黄色の線ところで外すとmoisture sensor動作しません
4.7kの抵抗が影響してるようです?
https://i.imgur.com/cUruNWW.jpeg 質問すみません。
1つのPCから、複数のM5Stackのセンサ値を、Bluetooth接続(シリアル通信)で取得可能ですか?
ペアリングしたら、COMが割り当てられるみたいだから、いけそうな気がしてますが、、 >>893
DS18B20は動いてるからONE WIREのポートを他の若い番号に変えても無意味かね
確かGPIO32以上は扱いが別だったと思うけど、動くならそれに対応していないわけじゃないんだよね >>895
>>882のスケッチでONE_WIRE_BUSを25とか14ピンに変えたらうまくいきました
センサーからの発振音も消えました
個別では動くのでピンを変えてみる発想は出来ませんでした
これで先に進めます。大変ありがとうございます
他の皆さんにもコメント頂き感謝しております onライトを消したいのですが
pin名などはありますか? >>896
アドバイスした者ではないけど気になっていたので動いて良かった。
ついでだからアドバイスすると、
ESP32のロジックレベルは3.3Vだから、DS18B20も3.3Vで動かした方が良い。プルアップの4.7kも3.3Vに接続。
回路図でDS18B20を裏と表の2種類の状態で書いているけど、間違いの元になるのでどちらかに統一した方が良い。普通はマーキングがそのまま読める向きで書く。
回路図はBsch3Vの画面をスクショして作ったみたいだけど、もしそうだったら、カラーでメタファイルに書き出してから編集すると綺麗だし、グリッドの点も無くなる。 >>898
https://i.imgur.com/uPrTjSv.jpeg
ご教示ありがとうございます 描き直してみました
14ピンに変えてから赤バツや黄色のところで外す検証はしてませんが
どちらでも湿度は正常だろうと思います >>899 仕事速いね
印刷オプションでカラー印刷を指定しておくとメタファイルもカラーになるので見易くなるよ。 >>897
onのライトはいじれないはず
Lのライトなら操作できるんだがな >>901
なるほど 勉強になります
イメージファイル出力でカラーのpngが出来ました >>899
全然関係ない質問で恐縮なのですが、こういった図面というのはなんのソフトで作成されているのですか? >>904
>>898にも出てますが水魚堂のBSch3Vです atmega328で7セグLED時計を動かし
ESP(8266 or 32)でntp使って較正しようとしています
ESPで全てをやらないのは大喰らいだからです
較正のタイミングはatmegaで制御するわけですが
deepsleepしてるESPを起こすのと、ESPの電源を切っておいてその都度on/offするのと
どちらが良いと思いますか?
理由付きでアドバイス貰えるとありがたいです >>907
同じじゃない?
一番省電流なDeepsleepからの復帰は電源 https://akizukidenshi.com/catalog/g/gM-07245/
この秋月のリモコンとArduinoのサンプルにあるIRremoteのスケッチを
使って受信する実験しているのですが、Protocol:UNKNOWNとなって
認識できません。
このリモコンはNEC準拠となっているのですが、なぜうまく認識できないんでしょうか? >>910
Hash値は?
Debugモードでもやってみた? >>911
Hash値って何ですか?
Debugモードなんてあるんですか? >>912
>Protocol:UNKNOWNとなって
その表示をキャプってここに貼ってみ あと、使った受信モジュールの型番書いて
組んだ回路の写真も貼って 人にものを頼むときは、面倒くさいのが正解なことが多いね。 お金払ってやってもらうサービスだと相手が慣れてるから楽だけどな
ガソリンスタンドのメンテナンスとか、カーショップのタイヤ交換、オイル交換、ホムセンの木材カットetc 現物を見せて、直にコミュニケーションするから楽なことってあると思う。
ネットで木材のカットを依頼するなら、
あいまいでいろいろ解釈したり、エスパーしないといけないようなことではなくて、
最低限ラフでもいいから図面を出すと思うんだ。 DeepSleepより省電力なコプロセッサってのがあったかな
アセンブリで書くことになるみたいだけど >>915,916が質問者なら、クズ野郎
お前が情報出さないから答えられへんのやろ、馬鹿者
件の秋月のリモコンでちゃんとNECと認識してる例が見つかるわけで
ならば、質問者の配線ミスかスケッチの問題か受信モジュールの問題なのに
質問者はそのどれも情報出してない (・д・)チッ メンドクセー カイトウシャ ダナー BLEについて質問です
条件に応じて複数のESP32端末のLEDを光らせたい
A 条件を送信する端末(ESP32 1台)
B 条件を受信してLEDを光らせる端末(ESP32複数台)
セントラルがBでペリフェラルがAなんでしょうか?
ひとつのペリフェラルから複数のセントラルに同時に接続出来ますか? >>926
ブロードキャストを使えば多数の相手に同時に送信できる
あるいはESP-NOWなら高速にMACアドレスを指定して特定の相手に送信できる(相手が多数なら高速に相手を変えて送信する)
いずれも到達が保証されてないので注意
格安wifiモジュール「esp8266」「esp32」 6個目
自分が最近↑のスレで教わった >>927
どうもありがとうございます
ブロードキャスト方式とコネクション方式がある事分かりました
ブロードキャスト方式だと到達保証がないとの事ですが多数で同時受信出来るんですね
データはダダ漏れっぽいですけど第三者からは読めないように暗号化は可能ですか?
ESP-NOWは初めて聞いた言葉なので該当スレ見てきます >>929
昨晩また、途中でへたってしまって、すごい気まずい空気になった。 >>ID:7N10hm4V
この小僧は言われた情報をきちんと出さなきゃ自分が損だと気付かないのか
ま、だからいつまでも猿のままなんだろうけどw >>930
試しにBLEのブロードキャストを試してみたら簡単に送信と受信が出来ました
だけどWifiと同時に使おうとするとリセットがかかってしまってダメでした
コードはこれです
http://codepad.org/v5FXAjnp
27行目までは動くんですが29行目のBLEの初期化の部分で、
abort() was called at PC 0x401adcee on core 1
ELF file SHA256: 0000000000000000
Backtrace: ほにゃらら
Rebooting...
になってしまいました
なにがいけないのかどなたか教えてほしいです。
よろしくお願いします。 >>933
ごめん全然わからない
>>927のスレに移って聞くほうが良いと思う >>933
自己レス
BLEDevice::init("ESP32");
をWifi接続の前に持ってきてもリセットがかかってしまったけど今度は
E (7474) wifi:Error! Should enable WiFi modem sleep when both WiFi and Bluetooth are enabled!!!!!!
というエラーも表示されていたので、
WiFi.setSleep(false);
をコメントアウトしたらloop()に進んでくれました
ただ、M5StackのボタンAがチャタリングするのでその対策としてWiFi.setSleep(false);しないといけないので困りました >>933
abort() was called at PC 0x401adcee on core 1
でググると色々出てくるよ、見てみたら? >>935
チャタリングとちょっと違うけど
自分はBLEだけ使っていて数十分に一回ボタンAが押してないのにONになるので
10msのループで3回連続でONだったら押された処理をするようにプログラムしてる >>937
ググってみたけどよく分かりませんでした
>>938
そういう対処方法あるんですね
ありがとうございました JSONをBLEで送りたいんですけどうまくいきません
ArduinoJsonのStaticJsonDocument<1024> json_doc;
の型って何になるんでしょうか? >>938
ちなみに、10msのタイミングをとるのには millis() 使うの? BLEだと一度に送信できるデータは20バイト、ESP-NOWだと250バイトだそうでした
1キロバイトだとどちらも大きすぎるみたいですね >>942
遅らせるのはdelay()だな
全体の処理が止まっては困る場合はloop()の最後にdelay(t)などと書いてloop()がt ms間隔で実行されるようにして
loop()中でボタンチェックのルーチンを呼び出す
ボタンチェックのルーチンは押すときのチャタリング除去だけなら,,,
呼び出されたらボタンのポートの値を調べて,ONなら押された回数k=k+1(kはグローバル変数にする)
kが閾値以上になった場合,ボタンが押された処理を呼び出してしてからk=0してリターン.閾値未満ならリターン.
ポートがOFFならk=0してリターンする >>944
あ、そうか、処理ルーチンの方はdelay()入れなきゃいいだけだよね。
ついでといっちゃなんだけど、
- ダブルクリック
- 長押し
の判別ルーチンを最小限のステップで書いたらどうなるか、誰か教えて下さい!! >>945
Webでググって調べたほうがいいと思う
(自作で作ったけどたぶん「最小限のステップ」ではないと思うのでやめとく) 書込装置を使って書き込む
というのはどんな時に使うんでしょうか? ヒューズの書き換えとかブートローダーの書き換えとか
素のAVRマイコンに書き込むときとか
UnoやNano(シリアルコンバータ内蔵)を使ってる分には、そんなにお世話にならない >>948
その書込装置とは具体的にはどんな装置を指すんですか? 「AVRライター」で検索
新しく買わなくてもUnoやNanoも汎用書き込み装置に出来るよ>ArduinoISP prominiより先にAVRが出てくるArduinoスレです レス数が950を超えています。1000を超えると書き込みができなくなります。