Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ESP-WROOM-02とマイクをつないでみた話。
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
masato-ka
May 14, 2017
Technology
4.8k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ESP-WROOM-02とマイクをつないでみた話。
ESP-WROOM-02とマイクをつないでみた話。
I connected between ESP8266 and digital MIC via I2S interface.
masato-ka
May 14, 2017
More Decks by masato-ka
See All by masato-ka
Azure MLで試して学ぶAIによる自動走行とAIの仕組みハンズオン
masatoka
2
650
Azureで試して学ぶAI CAR自動走行の仕組みハンズオン
masatoka
0
570
JetsonNanoで動く深層強化学習を使ったラジコン向け自動運転ソフトウェアの紹介
masatoka
1
1.6k
Visual Studio Codeで始めるWio LTE
masatoka
0
2.2k
非接触温度センサのデータをLagoonで可視化
masatoka
0
1.8k
AndroidThingsのドライバーの話
masatoka
0
360
AndroidThingsでAI X IoT
masatoka
0
1.6k
Android ThingsでIoT/AIなデバイス開発しよう
masatoka
1
810
Azure SORACOM Futabaのサーボで金賞もらった話
masatoka
0
530
Other Decks in Technology
See All in Technology
[General] 개발자로 해외 기업에서 일하기
skydoves
1
290
サボる子はいねぇがー!AgentCoreハーネスの脆弱性に学ぶ、エージェントの入力バリデーション
iwamot
PRO
3
150
Jev の中身は50行で再現できる。でも本物との差はどこにあるのか
hisuzuya
0
300
令和の今、あらためて IAM を考える。アクセスキーを「無くせない現実」との向き合い方
kazzpapa3
0
110
なぜ東京にいる私が、新潟の技術コミュニティを運営するのか by 八雲慎之助
yakumo
0
220
Oracle Database Security 詳細解説
oracle4engineer
PRO
1
250
kintoneで在庫管理システムを作るときの要件定義・設計ポイント
kai0707
0
230
新卒エンジニア、 介護士になる
ryu1013
1
690
増え続けるプロダクトの品質をどう担保するか。ProductSpecとTypeScriptによる取り組み
joere
3
380
新米を「売り越さない」、Aurora DSQLで作る在庫ゼロ死守の限定ドロップEC
yama3133
0
170
PostgreSQL オプティマイザ統計の秘密
nori_shinoda
0
320
Software Engineering in an AI-Driven World
erikjhordan_rey
0
110
Featured
See All Featured
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
680
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.8k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
280
Making Projects Easy
brettharned
120
6.8k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
760
The Language of Interfaces
destraynor
162
27k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.9k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
How to Think Like a Performance Engineer
csswizardry
28
2.9k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
60k
Transcript
ESP-WROOM-02ͱϚΠΫΛͭͳ ͍ͰΈͨɻ 2017/05/19 @masato_ka 175݄19༵ۚ
Ϟνϕʔγϣϯ IoT×Ի Ͱָ͍͜͠ͱΛ͍ͨ͠ 175݄19༵ۚ
ͷճΓͷԻΛੳͯ͠ใΛऔΓग़͍ͨ͠ Analytics ੜ׆ Իͷੳ Sound Server Իೝࣝ Իָ δϟϯϧ 175݄19༵ۚ
ϚΠΫͰԻΛरͬͯαʔόʹૹΔσόΠεΛ࡞Δ Analytics ੜ׆ Իͷੳ Sound Server Իೝࣝ Իָ δϟϯϧ 175݄19༵ۚ
ESP-WROOM-02Λબͨ͠ཧ༝ • ࡞ͬͨޙஔ͘ॴʹࠔΒͳͦ͞͏ • ిͰಈ࡞Ͱ͖Δ • WiFi௨৴ • খܕ •
͍҆(νοϓ͚ͩͳΒ500ԁ) ࣸਅग़య:εΠοναΠΤϯε 175݄19༵ۚ
࡞ΔσόΠεͷඪઃఆ ඪ1.ɹ16kHz/16bitͷԻσʔλ ిͷԻ͕8kHzɺ͏গ͠໌ྎͳԻΛर͍͍ͨɻ ඪ2.ɹԻͷετϦʔϛϯά ੳ͍ͨ͠σʔλԻ͕͍ͭൃੜ͢Δ͔Θ͔Βͳ͍ɻ ్Εͳ͘σʔλΛૹΕΔΑ͏ʹ͢Δɻ 175݄19༵ۚ
͜Ε͕͚ͬ͜͏ ͔ͬͨ͠ʂ 175݄19༵ۚ
֎؍ ϋʔυ ΣΞ ಈ࡞ͤ͞ΔͨΊͷपลճ࿏ඞ ཁ,A/DมͰऔΓࠐΉ ϚΠΫଆͰϑΟϧλͱADมΛߦ ͏ɻγϦΞϧΠϯλϑΣʔε(I2SͰ ଓ͢Δɻ ιϑτ ΣΞ
A/DมΛλΠϛϯάΑ࣮͘ࢪ ͯ͠16kHzʹͳΔΑ͏ʹ͢Δɻ I2S or SPIͷಡΈऔΓΛߦ͏ॲཧΛ ॻ͘(ArduinoϥΠϒϥϦ͋Γ) ଓͰ͖ͦ͏ͳϚΠΫͷબ ίϯσϯαϚΠΫ σδλϧϚΠΫ ࣸਅग़య:ळ݄ిࢠ 175݄19༵ۚ
֎؍ ϋʔυ ΣΞ ಈ࡞ͤ͞ΔͨΊͷपลճ࿏ඞ ཁ,A/DมͰऔΓࠐΉ ϚΠΫଆͰϑΟϧλͱADมΛߦ ͏ɻγϦΞϧΠϯλϑΣʔε(I2SͰ ଓ͢Δɻ ιϑτ ΣΞ
A/DมΛλΠϛϯάΑ࣮͘ࢪ ͯ͠16kHzʹͳΔΑ͏ʹ͢Δɻ I2S or SPIͷಡΈऔΓΛߦ͏ॲཧΛ ॻ͘(ArduinoϥΠϒϥϦ͋Γ) ֎෦ճ࿏͕ෆཁͳσδλϧϚΠΫΛ࠾༻ ίϯσϯαϚΠΫ σδλϧϚΠΫ ؆୯ͦ͏ʂ (ʹݟ͑ͨ) ࣸਅग़య:ळ݄ిࢠ 175݄19༵ۚ
I2S(Inter-IC Sound) • 3ઢࣜͷΦʔσΟΦΠϯλϑΣʔε • CLKʹै͍ԻσʔλΛσδλϧग़ྗ • WS-CLKʹै͍ɺL/RͷεςϨΦσʔλΛग़ྗ͢Δɻ • ༷͕SPIʹࠅࣅ͍ͯ͠ΔͨΊɺSPIΠϯλϑΣʔε༻Ͱ͖Δɻ
CLK WS DATA 16kHz×32bit×2ch 㲈.)[ Left Right 1bit/1clkͷσʔλ 32bit ࣸਅग़య:ळ݄ిࢠ 175݄19༵ۚ
I2S/SPI ͲͪΒͱϚΠΫΛଓ͢Δ͔ • ESP8266 I2SͱSPIͷ྆ํͷΠϯλϑΣʔεΛࡌ͍ͯ͠Δɻ Interface I2S SPI Arduino ϥΠϒϥ
ϦରԠঢ় گ ˚ (TXͷΈɺઃఆݻఆ) ̋ ϋʔυ ΣΞରԠ ঢ়گ TX,RXϞδϡʔϧ͕͔Εͯ ͍ͯDMA͕ϝϞϦసૹ͢Δ (※ޙड़) ϝϞϦૢ࡞ιϑτΣΞଆ Ͱॲཧ͢Δɻ 175݄19༵ۚ
I2S/SPI ͲͪΒͱϚΠΫΛଓ͢Δ͔ • ESP8266 I2SͱSPIͷ྆ํͷΠϯλϑΣʔεΛࡌ͍ͯ͠Δɻ Interface I2S SPI Arduino ϥΠϒϥ
ϦରԠঢ় گ ˚ (TXͷΈɺઃఆݻఆ) ̋ ϋʔυ ΣΞରԠ ঢ়گ TX,RXϞδϡʔϧ͕͔Εͯ ͍ͯDMA͕ϝϞϦసૹ͢Δ (※ޙड़) ϝϞϦૢ࡞ιϑτΣΞଆ Ͱॲཧ͢Δɻ ݱঢ়ΔͳΒҰʂ 175݄19༵ۚ
SPIͰଓͯ͠Έͨ݁Ռ 175݄19༵ۚ
• ొਓCPUɺSPIϞδϡʔϧͱϝϞϦ SPIଓͷ߹ ※ৄࡉQiitaͰʮAMDP441ʯͰݕࡧ ESP8266 CPU SPI ϝϞϦRAM(32KB) ϢʔβϓϩάϥϜ ESP8266෦ͷಈ࡞
175݄19༵ۚ
• CPU͔Βͷread໋ྩͰSPIͷಡΈࠐΈ։࢝ SPIଓͷ߹ ※ৄࡉQiitaͰʮAMDP441ʯͰݕࡧ ESP8266 SPI CLK L/R CLK DATA
CPU SPI ϝϞϦRAM(32KB) ϢʔβϓϩάϥϜ ESP8266෦ͷಈ࡞ read໋ྩ σʔλड৴ 175݄19༵ۚ
• SPI͔ΒಡΈऔͬͨσʔλΛCPU͕ϝϞϦʹอଘ͢Δɻ SPIଓͷ߹ ※ৄࡉQiitaͰʮAMDP441ʯͰݕࡧ ESP8266 SPI CLK L/R CLK DATA
CPU SPI ϝϞϦRAM(32KB) ϢʔβϓϩάϥϜ ESP8266෦ͷಈ࡞ read໋ྩ σʔλड৴ ϝϞϦʹอଘ 175݄19༵ۚ
• ֎෦ʹσʔλΛૹ৴͢ΔؒɺSPIͷಡΈऔΓॲཧఀࢭ͢Δɻ SPIଓͷ߹ ※ৄࡉQiitaͰʮAMDP441ʯͰݕࡧ ESP8266 read໋ྩΛ࣮ߦ͍ͯ͠Δ࣌ͷΈCLK ͕ग़ྗ͞ΕΔɻ CPU SPI ϝϞϦRAM(32KB)
ϢʔβϓϩάϥϜ ֎෦ͷσʔλૹ৴ CLKఀࢭλΠϛϯάͰϚΠΫ͕Ϧηο τ ESP8266෦ͷಈ࡞ ϝϞϦͷಡΈग़͠ 175݄19༵ۚ
• CPUͰશͯͷॲཧΛߦ͏ͨΊɺϚΠΫ͔ΒͷσʔλΛऔΓ͜΅ͯ͠͠·͏ɻ SPIଓͷ߹ ※ৄࡉQiitaͰʮAMDP441ʯͰݕࡧ ESP8266 SPI CLK L/R CLK DATA
read໋ྩΛ࣮ߦ͍ͯ͠Δ࣌ͷΈCLK ͕ग़ྗ͞ΕΔɻ CPU SPI ϝϞϦRAM(32KB) ϢʔβϓϩάϥϜ read໋ྩ σʔλड৴ ֎෦ͷσʔλసૹ CLKఀࢭλΠϛϯάͰϚΠΫ͕Ϧηο τ σʔλసૹ ESP8266෦ͷಈ࡞ 175݄19༵ۚ
I2S/SPI ͲͪΒͱϚΠΫΛଓ͢Δ͔ • ESP8266 I2SͱSPIͷ྆ํͷΠϯλϑΣʔεΛࡌ͍ͯ͠Δɻ Interface I2S SPI Arduino ϥΠϒϥ
ϦରԠঢ় گ ˚ (TXͷΈɺઃఆݻఆ) ̋ ϋʔυ ΣΞରԠ ঢ়گ TX,RXϞδϡʔϧ͕͔Εͯ ͍ͯDMA͕ϝϞϦసૹ͢Δ (※ޙड़) ϝϞϦૢ࡞ιϑτΣΞଆ Ͱॲཧ͢Δɻ 175݄19༵ۚ
I2SͰͲ͏ͳͷ͔ʁ 175݄19༵ۚ
• ొਓCPUͱI2SϞδϡʔϧDMAͦͯ͠ϝϞϦ I2Sଓͷ߹ ESP8266 CPU I2S ϝϞϦRAM(32KB) ϢʔβϓϩάϥϜ DMA DMA(Direct
Memory Access) CPUͷΘΓʹϝϞϦͷసૹΛݞΘΓ͢Δɻ 175݄19༵ۚ
• CPUΛհͣ͞DMA͕ϝϞϦసૹ I2Sଓͷ߹ ESP8266 SPI CLK L/R CLK DATA CPU
I2S ϝϞϦRAM(32KB) ϢʔβϓϩάϥϜ DMA σʔλ σʔλ ։໋࢝ྩ 175݄19༵ۚ
• ࢦఆαΠζͷσʔλΛϝϞϦʹసૹ͢ΔͱCPUʹׂΓࠐΈΛൃੜͤ͞Δɻ I2Sଓͷ߹ ESP8266 SPI CLK L/R CLK DATA CPU
I2S ϝϞϦRAM(32KB) ϢʔβϓϩάϥϜ DMA సૹׂྃΓࠐΈ σʔλ·ΜͨΜʂ σʔλ σʔλ 175݄19༵ۚ
• I2SͷॲཧఀࢭͤͣʹCPUϝϞϦ͔ΒσʔλΛऔΓग़ͯ͠֎෦ૹ৴ I2Sଓͷ߹ ESP8266 SPI CLK L/R CLK DATA I2SϞδϡʔϧ͕ৗʹΫϩοΫΛग़ྗ
CPU I2S ϝϞϦRAM(32KB) ϢʔβϓϩάϥϜ ֎෦ͷσʔλૹ৴ DMA సૹׂྃΓࠐΈ σʔλ σʔλ σʔλ 175݄19༵ۚ
• σʔλΛऔΓࠐΈͳ͕Β֎෦ʹૹ৴͢Δ͜ͱ͕Մೳɻ I2Sଓͷ߹ ESP8266 SPI CLK L/R CLK DATA I2SϞδϡʔϧ͕ৗʹΫϩοΫΛग़ྗ
CPU I2S ϝϞϦRAM(32KB) ϢʔβϓϩάϥϜ ֎෦ͷσʔλૹ৴ DMA సૹׂྃΓࠐΈ σʔλ read໋ྩ σʔλ σʔλ 175݄19༵ۚ
I2SͰͷಡΈऔΓΛ࣮ݱ͢ ΔͨΊɺArduinoͷϥΠϒ ϥϦΛमਖ਼͢Δ͜ͱΛܾҙ 175݄19༵ۚ
ESP8266ͷσʔλγʔτ͕खֻ͔Γ • Espressif͕υΩϡϝϯτΛެ։͍ͯ͠Δ͕ɻɻɻ ϨδελΛͲ͏࿔Δͱػೳ͕͑Δ͔هࡌ͞Εͯ ͍Δ͕ɺ؊৺ͷϨδελͷΞυϨε͕ͳ͍ɻ 175݄19༵ۚ
ιʔείʔυͷमਖ਼ • Arduinoͷesp8266_peri.hͱυΩϡϝϯτΛൺֱ͠ͳ͕Βιʔεमਖ਼ 175݄19༵ۚ
ϩδοΫΞφϥΠβͰڍಈΛ֬ೝ • ιʔεमਖ਼ϩδΞφͰ֬ೝमਖ਼ मਖ਼ͨ͠ίʔυͰԿͷڍಈ͕มΘͬͨ ͔ਖ਼͘͠ѲͰ͖ΔΑ͏ʹͳͬͨɻ 175݄19༵ۚ
ExceptionͷൃੜՕॴͷಛఆ • ϓϩάϥϜ্ͷͲ͔͜ͰException WDTϦηοτ͢Δ͕ɻɻɻ is Կʁ 175݄19༵ۚ
ESP Exception DecoderΛ׆༻ • Stack TraceΛղੳ͠ɺιʔείʔυߦ·Ͱදࣔͯ͘͠ΕΔɻ 175݄19༵ۚ
ʂ • 16kHz, 16bitͷԻσʔλΛWebsocketͰαʔόʹૹΔ͜ͱʹޭʂ • ԻೝࣝͱLive Streaming͕Ͱ͖͍ͯΔɻ Sound Bluemix Speech
To Text HttpLiveStreming or HTTP GET Local Server WebSocket HTTP HTTP 175݄19༵ۚ
·ͱΊ • ֨҆σόΠεͰԻσʔλΛετϦʔϜͰ͖Δʂ • ESP8266ͷI2SͱDMA͑Δ • ಈ͔ͳ͍ػೳఘΊͣࣗͰվʂ • υΩϡϝϯτπʔϧΛἧ͑Δɻ 175݄19༵ۚ
ࠓޙ •ωοτϫʔΫ •Իσʔλͷੳ •֨҆ԻΞγελϯτ 175݄19༵ۚ
͝ײԼ͍͞ʂ Twitter: @masato_ka 175݄19༵ۚ