IoT, ESP8266, IP address of api.thingspeak.com

http://wp.me/ph3BR-25b

 

昨日做科學展示時, 原來的那組 Dummy Temperature logger 無法傳送資料到 api.thingspeak.com, 因此畫面都沒有更新, 俺們的展示 CHANNEL 在這裡 https://thingspeak.com/channels/230726

所有軟件硬件都沒動過, 甚麼問題 ? 除了換了地點和 WIFI 帳密 還有 API Keys, 檢查 SERIAL 輸出, 也看不見字串. 正常的時候會看到這個 post string 字串,

 

很可能是 DNS 或 NAT 有問題, 不過這個超越了一般使用者的管理範疇和能耐, 因為需要 ISP / WIFI 管理員解決問題. 那試試看直接用 IP 地址, 用了兩個方法找出 api.thingspeak.com 的 IP 地址,

1) 用網路工具查,
2) 用WINDOWS 自帶的 PING 或 TRACERT 的小工具,

網路工具查詢的結果,

https://website.ip-adress.com/api.thingspeak.com

 

PING 或 TRACERT 查詢的結果

 

兩個方法都指出 api.thingspeak.com 的 IP 地址,
52.1.229.129
52.7.7.190

 

所以改了一下源碼, 用 52.1.229.129 替代 api.thingspeak.com, 試試看,

 

再編譯一次, 運行就連上可以輸送資料了. 看來這個地點的網路環境有問題, 原因不詳, ESP8266 沒辦法透過 DNS 知道 api.thingspeak.com 正確的 IP 地址或連結不成功, 但是 ESP8266WiFi 程序庫沒有除錯功能也沒有顯示任何資訊, 因此沒有任何報錯反應, 也不會送資訊到 api.thingspeak.com, 實際上看不到任何 post string.  API Keys 理論上是不要對外公開的, 因為其他有心人看了可以濫用, 所以建議每次展示都重新修訂 API Keys, 重新編譯源碼, 這樣的話源碼每次都要配對 API Keys, 展示完畢以後下一個展示時就不會被別人誤用或干擾, 因為 API Keys 一旦修訂, 這個時間點以前所有的展示品都會失效, ESP8266 不再傳送成功.

 

 

修訂後的程序運行正常了, 有最新資料顯示,

https://thingspeak.com/channels/230726

Tube Radio RCA Victor 5Q56

http://wp.me/ph3BR-22o

 

記憶中真空管收音機大多數都是木頭外殼, 因為親眼見過的為數不多, 就有了先入為主的概念,例如俺擁有的1966年出廠的上海飛樂261-11. 從2015年開始玩樂, 2017年大致修復出聲, 殼子已經潮露蛀蟲損壞, 只有面板稍完整.

Shanghai Feilo 261-11 tube radio repairing

 

某日到北投遊歷, 一家店展示了一個機器, 從外型一看就知道不是木頭外殼, 外觀看來很完整, 面板上寫著 RCA Victor, 頻率刻度表有三個波段. 因為現代化都有手機可以直接上網查看是怎樣的半骨董貨色, 會不會是 RCA 在台灣桃園設廠時生產的. 對這個有點興趣是因為曾經讀過報, RCA 把廢棄毒物埋到地底下, 禍害台灣的水土直到今天的一家美國公司, 歷史不容否定, WIKI 和報導有關 RCA下毒的故事, 類似蝗蟲的所為.

至於那個收音機, 根據時代的軸線, 在台灣生產的可能性比較低, 因為70年代真空管收音機應該還有, 不過開始退潮由半導體收音機取代了. 老闆說會響的, 不過沒事應該也不會為俺等閒人開播. 後來經過網友的協助, 找到了相關的資料, 這個收音機是 1939 年出品的 RCA 5Q56 系列, http://www.tuberadioland.com/rca5q56_main.html, 應該是六個真空管的3波段收音機.

同場還看到一個巴掌大小的手搖縫紉機器, 結構很簡單, 不過應該是用品不像玩具. 遊歷是看古看今看中看外, 一個小小的收音機, 背後有很多歷史故事, 這個應該是第二次世界大戰期間美軍帶來或國民黨初到台灣帶來的, 因為出產時間是1939年以後, 小日本在1937年到1946年間侵略東亞, 國共內戰則在二戰以後到1949年之間, 時間和空間包含了3個以上的場景.

service manual http://www.nostalgiaair.org/PagesByModel/011/M0015011.pdf

general specification http://www.radiomuseum.org/r/rca_5q56.html

schematic http://www.hora13.com/nostalgias/APARATOS%20VIEJOS/RCA%20VICTOR/RCA%20VICTOR%20modelos%205Q5%20al%205Q56.gif

RCA5Q56

 

 

手掌般大小的手搖縫紉機

ESP8266, MP3 網路收音機, Audio Dithering

http://wp.me/ph3BR-21t

 

原文再述書接上一回, ESP8266 網路收音機的聲音不是特別可愛, 沒有用 I2S DAC, 意思就是她的高音出現毛刺, 聽起來不舒服, 聽聽這個樣本, 或許每個人都有同感. 到底是何原因造成的呢!? 字面簡單帶過就是數字聲音解碼 IC (DAC) 的解析度不足, 只用了1 BIT, 刪除了很多細節並帶來噪音, 所以聲音不好聽. 那實際呢? 原文和源碼有提到, MP3 sound stream is 16 bit mono PCM data, 5 bit dithered PWM output to speaker.

esp8266-pcm-pwm.jpg

 

源碼部分看到這, 有關上面那個 5 BIT PWM (fake_pwm) 的關聯, 不過看起來, 當然是知所以言而不知所其言, 為甚麼這樣說呢 ? 看到那 32-bit values which has one bit more set to ‘1’… 然後下面的 samp = fakepwm[samp>>11], 知道它是把 16 bit 的聲音數據丟掉最低的 11 bit, 剩下的 5 bit 右移, 查表格 fakePwm[], 5 bit = 2^5 = 32, 所以那個 fakePwm[] 一共包含32個數目 (怎樣求得的?) 例如,

輸入聲音的數據 0xFF12 -> 0x001F,
被忽略掉的 0x0712 存起來,
把下一個聲音數據先減掉0x0712,
重複以上動作.
這些動作和 dithering 有何聯繫…?

16bit-pcm-5bit-pwm.jpg

 

沒聽過 I2S, 沒聽過 dithering, 沒了解 PCM, 所以要讀書了解一下基礎,

https://zh.wikipedia.org/wiki/I%C2%B2S

Pulse-code modulation,縮寫:PCM

http://blog.landr.com/what-is-dither-when-to-use-zh/

 

看完以上的簡介, 大概知道甚是甚麼, 不過離開完全知道還有段距離, 依照以上的簡介, 大概理解, sine wave & square wave, 聲音的分別是尖銳和圓滑, 看圖聽聲比較好全面理解, 搜尋 dither 原理, 會找到更多學理的材料, 世界圖書館真好, 只要會找, 通常有些合用有易明白的. 聲音和圖畫, 在電腦裡面, 就是一連串的數字, 從中可以調教很多, 例如這個有關 color dithering (http://www.csie.ntnu.edu.tw/~u91029/Image.html), 抄用人家的圖片與說明, 容易理解一些, 例如圖畫, 如只用黑點在白紙上描畫, 利用黑點的分布疏密程度, 宏觀上觀看就產生了黑與白之間的差距, 錯覺有了明暗的效果, 大概是鉛筆素描的技法之一, 以下圖畫可以見證,

black and white dithering.jpg, 原文 http://blog.landr.com/what-is-dither-when-to-use-zh/

 

算是有了 dithering 的基本觀念, 一個名詞代表的事物其實一直都知道, 只是沒用上就光看不練, 黑白的報紙, 彩色印刷, LCD 螢幕都用到圖畫方式的 dithering, 拍了一張當天的報紙, 裡面一個圖畫是黑白的, 有這種dithering的效果.

news-paper-dithering.png

 

那這個 EPS8266 在聲音處理的 dithering 又是代表甚麼呢, 很難明白. 繼續看書….

http://audio.rightmark.org/lukin/dither/dither.htm

聲音最後防線的力量-Limiter @ Balanced Audio Lab 平衡音訊實驗室

120.107.171.121/~tywua/sub/MT/audio.ppt

http://maciku.blogspot.com/2011/05/lcd-8bit-6bit.html

h_ttps://www.youtube.com/watch?v=zWpWIQw7HWU

 

 

待續…..

ESP8266, MP3 網路收音機, 想起沒有筆記的 ATmega8 音樂盒

http://wp.me/ph3BR-20L

 

 

有商業/廣播電台, 除了透過大氣電波(無線電)發送, 近代還有利用網路同時廣播, 最近多數是用 MP3 (m3u8) 串流播送的, 也有用 WAV. 台灣的大部分廣播電台的網路播送都給 HINET 代管了, 所以一般的播放器幾年前就死翹翹了. 一個地區是一個小眾市場, 開發播放軟體的都是有地域性的, 例如在地的人沒有幾個有興趣聽德國的廣播電台, 所以也就沒人開發, 反過來也沒幾個德國人聽台灣廣播, 所以有網路廣播還是會局限於地域. 那自然開發收聽的軟體或者收音機, 自然少, 或許能聽台灣網台的收音機都要上萬元, 且買眾者零星.

網路上看到有些解釋了原因, 據說是 HINET 使用了 m3u8 (MP3) 串流播送, 慢慢逐步透過版權保護的方式 (DRM), 用瀏覽器收聽的話先下載一個 SWF (Adobe Flash) 到你的電腦, 透過這個工具, 在你的電腦上不停計算得到一個 m3u8 的網址連上去收聽, 隔一段時間就繼續計算繼續修訂網址才能繼續收聽. 一般聽不到斷線的可能原因是有 CACHE 或 BUFFERING, 翻譯意思是有 “正在緩衝", 下載很多段小片段, 累積一定數量才開始從喇叭播送.

本來也沒啥, 不過電腦就是頓在那裏等廣告等開播等到慢死了, 一旦開播就順了, 換台就再來一次, 這樣麻煩, 乾脆不聽, 因為瀏覽器都停頓好一陣子才開始播送廣播, 廣告機隨時跳出來就算了, 還是困擾. 沒經驗的可以試試聽這個HINET 代管的網台, 愛樂電台 https://www.e-classical.com.tw/voice/radio/

 

不過台灣有個人才, 有設計一個收聽用的軟體, 持續更新了有10年, 現在還能繼續收聽 HINET 代管的電台 (m3u8), 無論速度與激情都一樣順暢, 免了頓頓還有那些拖慢機器的廣告, 當然也希望作者可以指點一下如何做到的, 顯然還是要用到 ADOBE FLASH PLAYER. 原作者的網誌 http://cym6112.blogspot.tw/2011/07/blog-post.html, 當然, 必須要安裝那個 Adobe Flash, 不然沒有 Exceptional handling 就會出現上圖那個錯誤的問題. Flash Player下載點 https://get.adobe.com/tw/flashplayer/, 最近在 VirtualBox + Win XP3 收聽, 依然順暢, 不過這題外話的.

有關的 HINET 託管還有相關 MP3 電台 DRM 的一些資訊, 看過以下的網誌, 順序忘記了, 反正就看過參考過,

h_ttps://plus.google.com/109271007075151522335/posts/11g8DSFsxWB

http://franks543.blogspot.tw/2014/11/hichannel-radio-hls.html

http://adabc.blogspot.tw/2015/04/hichannellink.html

http://cym6112.blogspot.tw/2011/07/blog-post.html

http://blog.hoyo.idv.tw/?p=3031

http://www.osslab.org.tw/Hardware/Open_Embedded_System/NextVOD_unit_Hacking_-_%E7%B6%B2%E6%A8%82%E9%80%9A%E6%94%B9%E6%A9%9F/%E5%AD%90%E5%B0%88%E6%A1%88%3ANextRadio_-_%E7%B6%B2%E8%B7%AF%E6%94%B6%E9%9F%B3%E6%A9%9F/%E6%9C%80%E6%96%B0%E9%9B%BB%E5%8F%B0%E6%92%AD%E6%94%BE%E6%B8%85%E5%96%AE(%E9%9A%A8%E6%99%82%E6%9B%B4%E6%96%B0)

 

 

基本上有古典音樂的電台廣播, 地域性的都有一兩個, 對比 HINET 託管的愛樂電台, 同樣是 m3u8 串流, 這個 RTHK4 就直接了當給你連上去, 不怕盜版收錄, 測試或收聽都很好, http://stm.rthk.hk/radio4, 要看看 m3u8 的內文, 可以下載 http://stm.rthk.hk/radio4.m3u, 內容原來就是一般的文字檔案如下,


http://stm2.rthk.hk:80/radio4

 

手機有APP可以聽同樣的電台, 不過好幾次換台被突然滿屏的廣告機驚嚇了一大跳, 所以對這類APP沒有好感, 俺聽電台你打廣告本來不相干, 無奈被驚嚇到感覺就是不良, 後來有看到 ESP8266 可以10元錢就做個網路收音機, 原廠提供的開源項目, 那就試試玩, 反正沒多少錢, 在地買就貴一倍, 如果買多就自己淘寶購買.

這次做完就把它存到 Github, 方便日後參考, 實驗完畢, 算是總結學習報告, 有 firmware 及燒錄工具, 可供快速試用, 可以下載, https://github.com/xiaolaba/ESP8266_MP3_DECODER. 若要千辛萬苦自己建立 firmware, 很多時候會讓人卻步, 某些錯誤導致失了興趣停滯不前. 要試用的話, 燒好 firmware, 再把自家的 ROUTER 設定臨時改一下就立馬可以實驗聽網台,

ROUTER 設定,
wifi ssid : xiaolaba_tap
pwd : 123456789

用耳機可以直接聽, 接擴大機也可以, 嫌高音破音刺耳可以加 RC filter, 1k – 3.3uF. 想體驗一個MCU就可以聽網台但是礙於困難重重不知如可開始的, 可以一試. 硬件買 NodeMCU 較簡單台幣120, 買ESP-01就RMB10元, 玩過懂得基本的可以便宜可以選 ESP-12E / ESP-12F / ESP-12S. 只要知道怎樣進入 BOOT LOAD 模式就可以. 參考的來源有兩個如下,

https://github.com/Edzelf/Esp-radio/blob/master/README.md

https://github.com/espressif/ESP8266_MP3_DECODER.git

第一個不採用, 因為要外接MP3解碼器, 買那個MP3解碼器不如用手機聽算了, ARDUINO 也不太適合玩這個, 沒好玩的. 第二個是原廠的, 開發的人應該是老美後來受聘到樂鑫上班, 推廣這些 MCU 並不容易, IoT 範疇太廣, 應用層面寬, 如果當那年AVR沒有ARDUINO一脈, 也不會造就後來的榮景, 雖說很多人買了沒玩就丟一旁, 但據說也只能市佔率第四第五位. 而這個 ESP8266, 據作者說是可以完全不用 SRAM 和 MP3解碼器, 純粹依靠 MCU 還有 libmad (開源的MP3軟解碼庫), 實驗完畢也證實所言不虛. 開始看了一行誤會, 後來確定用 RTOS SDK 編譯就成了.

樂鑫最近比較完備文檔和使用指南, 雖然還有很多錯漏, 編譯 FIRMWAR 大致的過程如下, Win10,

1) 安裝 https://www.virtualbox.org/wiki/Downloads, VirtualBox 5.1.22 platform packages & VirtualBox 5.1.22 Oracle VM VirtualBox Extension Pack
2) 導入/安裝/啟動 ESP8266 LUBUNTU VIRTUAL BOX IMAGE, ESP8266_lubuntu_20141021.ova, 下載點http://download.espressif.com/FB/ESP8266_GCC.zip
3) sudo apt-get update
4) sudo apt-get install git
5) git clone https://github.com/espressif/ESP8266_MP3_DECODER.git
6) cd ESP8266_MP3_DECODER/mp3/user
7) playerconfig.h, 修改 ssid/pwd, #define PWM_HACK, 還有另外一個地方要改, 突然記不起來, 看README
8) cd mp3
9) make COMPILE=gcc BOOT=none APP=0 SPI_SPEED=40 SPI_MODE=QIO SPI_SIZE=1024 或 ./gen_misc.sh

 

編譯完畢會看到類似下面的幾行字, 不過作者說明那個地址實際要燒到0xA0000, 並不是 0x40000

Result:
!!!
No boot needed.
Generate eagle.flash.bin and eagle.irom0text.bin successfully in folder bin.
eagle.flash.bin——–>0x00000
eagle.irom0text.bin—->0x40000

 

實際接線還是比較簡單的, 看圖識字最快, 電路圖, 用兩條線接擴音喇叭或耳機,
用 ESP-1 : IO3, GND
用 NodeMCU : RX, GND

實際聽聽看網台的廣播, 能聽清楚但是絕對不是HIFI, 作者說明 dithered 5-bit PWM output sound,

h_ttps://youtu.be/a8qV91JFXUU

 

2017-JUL-10, update, 以上是當初實驗PWM 模式, 毛刺很多, 姑且試試看 SOFT DAC 模式, 結果比較好, 聽起來好多了.

h_ttps://youtu.be/o4L3yBBE2Yo

 

要自己改電台, 裡面重要就是 (server, PORT, PATH), 有了這3個東西, 抄抄人家的源碼, 兜了一個10元的自制網路收音機, 不花多少錢的玩具. 後來想想看, 除了用 MP3 串流的電台廣播, 用 WMV 串流的電台廣播也給它試一下又何妨, 試了一下果然不行, 因為沒有解碼器, 所以連上伺服器也沒聲音, 例如這個 MMS 串流的網台, 中廣-亞洲語網, mms://media.ccdntech.com/wmtencoder/rti/cbs6.wmv, 據說使用 PORT 1755,

用 Windows Media Player 或者 PotPlayer 都可以聽, 當然在 PC 上執行. 換成自己做的玩具, 就沒響, 也是沒有解碼器, 用這個 Terminal 工具 https://sites.google.com/site/terminalbpp/, 看輸出證明沒有解碼器.

因而想到之前抄過 PWM 合成聲音的音樂盒玩具, 用 ATMega8, 當然直接燒到ARDUINO UNO也可以, 所以翻一下, 居然沒有筆記…? 記得大概在2015年做的, 翻翻翻…找到一些資料, 可是源碼呢……? 當時抄來試驗, 沒想到那麼容易做好, 所以也忘記了作筆記, 動手做一個, 同時了解音源的設計原理, 還有學習樂聲合成的方法. 電路圖和架構圖, 輸出是兩個 IO, 反向輸出, PWM 製造音階和弦, 時長決定音節, 網上抄來的, 讀通了就可以隨便改自己想要的設計,
http://elm-chan.org/works/mxb/report.html

www.myplace.nu/avr/minidds

http://web.archive.org/web/20150331153153/http://www.myplace.nu/avr/minidds/

 

音樂盒的兩個IO在播放時的波形,

h_ttps://www.youtube.com/watch?v=TZao4bZD9eI

音樂盒試驗

h_ttps://www.youtube.com/watch?v=CesfRJtvWTo

 

燒錄ATMEGA8的HEX檔案. 抄來的. 版權屬於原作人, https://www.mcselec.com/index.php?option=com_content&task=view&id=221&Itemid=57


:020000020000FC
:0200000012C02C
:02000600EFC049
:100026000FE50DBF04E00EBFFF241BE3A0E6B0E022
:1000360000270D931A95E9F707E007BB01E008BB17
:1000460001EA0FBD09E00EBD00E00BBD00E009BDF1
:100056000EE303BD0AE005BD00E809BFF894E6EA31
:10006600F2E067D0EEECF2E064D0E6EAF2E061D0CE
:10007600EEEDF2E05ED002E000939800E6EAF2E0F0
:1000860058D0EEECF2E055D0E6EAF2E052D0ECEED3
:10009600F2E04FD0009198000A950093980071F70E
:1000A600E6EAF2E046D0EEECF2E043D0E6EAF2E031
:1000B60040D0E8E4F3E03DD0E8EEF3E03AD0E8EEF5
:1000C600F3E037D0EAE2F4E034D0E6EAF2E031D009
:1000D600EEECF2E02ED0E6EAF2E02BD0ECEEF2E027
:1000E60028D0E6EAF2E025D0EEECF2E022D0E6EA0D
:1000F600F2E01FD0EEE5F4E01CD0EEECF2E019D011
:10010600E6EAF2E016D0ECEEF2E013D0E6EAF2E030
:1001160010D0EEECF2E00DD0E6EAF2E00AD0ECE127
:10012600F6E007D000E005BD00E007BBC19AC29A21
:10013600FFCF65908824789434D0F8948614789408
:10014600D8F3C09AB099C09845914F3F29F0042F33
:1001560004D04078B1F3EDCF0895FF93EF93E02FED
:10016600EE0FFF27E85DF94F05911591C0916100EB
:10017600C75FC63308F0CC27C0936100DD27CE5990
:10018600DF4F28E138E0F894198308833C832B83FA
:1001960078940FEF0D830E83FF82F886EF91FF911F
:1001A6000895FF93EF93C2E6D0E00E811FEF01178B
:1001B60089F01E830F8103950C3008F000E00F8351
:1001C60048F0E885E39531F0E887FF27E85EF84FC9
:1001D60004910D832996C83941F7EF91FF9108954F
:1001E600EFB66F015E01C2E6D0E0222433247A81A5
:1001F600EB81FC81649148805980740DE51DFF1DDB
:10020600FC3018F0E058F040FE827A83FC83EB83E2
:100216007D81162E67FD6195002470FD060E0694FD
:1002260071FD060E069472FD060E069473FD060E0B
:10023600002474FD060E069475FD060E069476FDE2
:10024600060E069477FD060E110C1F2C10F4019471
:100256001108200C311C2996C83949F63594279483
:10026600359427946DEF70E0261637060CF01B01C7
:1002760061E07FEF261637060CF41B0135942794B0
:100286003794622D6058762F709537FC63956ABD5A
:1002960078BD08947F1C8F1CF601E501EFBE18950A
:1002A60000CC10CB10CC10CB10CC10C710CA10C885
:1002B6001045AD10B410B910BC10C010C51047A839
:1002C60010B410B810C010FF00C410C71048AD100D
:1002D600B410B910C010FF0000C810C71045AD100B
:1002E600B410B920FF0000C810C71045AD10B410F7
:1002F600B910C710C810CA104CB010B710BC10C344
:1003060010CD10CC104AAB10B710BB10C110CC10DA
:10031600CA1048AD10B410B910C010CA10C81047A2
:10032600A810B410C010C010CC10C010CC10CC1047
:10033600D810CB10CC10CB10CC10CB10CC10CB10CF
:10034600FF0000C810C71045AD10B410B9104840E2
:100356003CBA1048413CB9104843403C3AB71048B3
:10036600B510B910BC10B9104DBC10B908CC084C6A
:10037600B510BA104ABE10BA1052BE10BA08D1084B
:1003860051B5104FC0104D3A37B5104CC0104A3A0F
:1003960037B51048C01046B510B91045BC10B91095
:1003A60045BC08C30845B908C60848B510B910BC0D
:1003B60010B9104ABC104BB9104CB410B910BC108F
:1003C6004CB9104D3EB21045B51048B710C010B725
:1003D60010C0104AB704C804C704C8044AC10CC7F1
:1003E60004FF004840BC08CF08C308CF08C508CFA3
:1003F600084743C108CF084843C008CF084A4341CD
:10040600BE08CF084C4340BC08CF08D408D30851D7
:1004160039B508CF08CD08CC084A3BB708CF08CD78
:1004260008CA08FF004C3BBA08CD08CC08CB08CC5C
:1004360008C708CC08CB08CC08C708CC08CB08CC22
:1004460030C710CC10CB10CC30C710CC10CB10CC92
:1004560010CB10CC10CB10FF00C810C71045AD1044
:10046600AD10AD10AD10AD10AD102D404346C91006
:10047600AD10AD10AD10AD10AD102D4145CA10AD8B
:1004860010AD10AD102D4CC9102D4DCA102D444A7B
:10049600CD10AD10AD10AD102D444ACD10AD102DC0
:1004A6004548CC10AD10AD10AD10AD10AD10262DD9
:1004B60041CA1026AD1026AD1026AD10262D40C817
:1004C60010262D3EC710272D3C42C51027AD1027FC
:1004D600AD1027AD10272D3CC51027AD10262D3C9D
:1004E600C51026AD10262D40C81026AD10262D3E6F
:1004F600C71026AD102D213CC510AD10AD10AD10A6
:10050600AD10AD102D404346C910AD10AD10AD1065
:10051600AD10AD102D4145CA10AD10AD10AD102D6A
:1005260049CC102D4ACD102D4ACD10AD10AD10ADD1
:10053600102D4ACD10AD102E4ACD10AE10AE10AE15
:1005460010AE10AE102E43CB10AE10AE10AE102E65
:1005560041CA102E3FC8102E3E41C610AE10AE1036
:10056600AE102E3E41C510AE102E3E41C410AE1048
:10057600AE10AE102E3E41C410AE10303C40C560E9
:10058600343840C76039A108BC0CC00CC508C80C7B
:10059600CC0C4A403CB908C80CC70C45403CB908CD
:1005A600C80CCC0CD108D40CD80C56403CB908D495
:1005B6000CD30C51403CB908D40CD80CDD08E00C27
:1005C600E40C62403CB908E00CDF0C5E403CB90824
:1005D600DD0CDC0CDB08DA0CD90CD808D70CD60CF1
:1005E600D508D40CD30CD20CD10CD00CCF0CCE0C1D
:1005F600CD0CCC10CB10CC10C710CA10C81045AD0E
:1006060010B410B910BC10C010C51047A810B41013
:10061600B810C010FF0000C810C710453C2DA160DF
:10062600FF00210023002500270029002C002E00B2
:100636003100340037003A003E00410045004900D1
:100646004E00520057005C00620068006E007500A4
:100656007B0083008B0093009C00A500AF00B900CF
:10066600C400D000DC00E900F700060115012601F0
:1006760037014A015D01720188019F01B801D2016B
:10068600EE010B022A024B026E029302BA02E40248
:1006960010033F037003A403DC03160455049704F8
:1006A600DC0427057505C80520067D06E006490712
:1006B600B8072D08A9082D09B9094D0AEA0A900BB1
:1006C600400CFA0CC00D910E6F0F5A1053115B12AD
:1006D60072139A14D41520178018F519801B231D40
:1006E600DE1EB420A622B524E4263429A72B402EEC
:1006F6000031EA330037453ABC3D68414C456A490A
:10070600C84D68524E57805C0062D467006E8A748A
:10071600787BFFFCFAF7F5F3F0EEEBE9E7E4E2E0CD
:10072600DEDBD9D7D5D3D1CFCDCBC9C7C5C3C1BFE2
:10073600BDBBB9B7B6B4B2B0AEADABA9A8A6A4A3BB
:10074600A19F9E9C9B999896959392908F8D8C8B4A
:1007560089888685848281807F7D7C7B7A7877769E
:1007660075747371706F6E6D6C6B6A6968676665B8
:1007760064636261605F5E5D5C5B5A5958575756A9
:10078600555453525251504F4E4E4D4C4B4B4A4975
:1007960048484746454544434342414140403F3E21
:1007A6003E3D3C3C3B3B3A393938383737363635AF
:1007B60035343333323231313030302F2F2E2E2D27
:1007C6002D2C2C2B2B2B2A2A292828272726262591
:1007D6002524232322222121201F1F1E1E1D1D1C0E
:1007E6001C1B1A1A1919181817161615151414138E
:1007F6001312111110100F0F0E0D0D0C0C0B0B0A0E
:100806000A0908080707060605040403030202018D
:100816000100000000000000FFFEFEFDFEFEFF00DE
:1008260000000000FFFEFDFDFCFCFDFEFF000001D8
:10083600000000FFFEFDFDFE0000020405050503A5
:100846000100FEFDFCFDFE000102030200FEFAF5BA
:10085600F1EEEDEDF0F5FB01080F14171817141162
:100866000D0A070606080A0D1012141414131212A4
:1008760012121315181A1B1C1B1916110B0500FB57
:10088600F7F4F3F3F5F7FBFF010406060400FBF4A7
:10089600EBE2D9D0C8C2BEBBBAB9BABABAB9B8B512
:1008A600B3B1B0B2B5BBC3CEDAE6F3FE070F151986
:1008B6001C1E2124282C31373B3D3E3C38312A2250
:1008C6001B16141519212A343F485056595A5957A0
:1008D60054514F4D4B494845423D3730271F160E60
:1008E6000600FBF6F2EFECEAE8E6E4E3E2E1E0DF3D
:1008F600DEDDDCDBD9D7D4D0CCC7C1BAB3ABA29A84
:10090600928C878484878C939DA7B2BCC4CBD0D3AA
:10091600D5D5D5D6D7D8DBDFE3E7EAEDEFF0F1F2B0
:10092600F4F7FC020B16222E39434B5154565756F8
:10093600565555555656575654524E4945403C3ACB
:1009460038393B3E42464B4F5356595B5C5C5C5ACA
:100956005651493F34261809FBEDE1D6CEC7C3C030
:10096600BEBDBCBCBCBDBEC0C3C8CCD2D7DCE0E3F8
:10097600E4E4E2DED9D4CEC8C2BCB6B1ACA6A19C32
:100986009895949495999EA4ACB4BDC6CFD8E0E84A
:10099600F0F8FF050B1014161615120E0A0501FFC6
:1009A600FDFDFE000105090C1014181C22282F3726
:1009B600404851596065696C6C6C6B696765646227
:1009C600605D5A57534F4B46423E3B3837353433BA
:1009D60032302E2C2A2725221F1C18140F0A03FD3D
:1009E600F4EBE2D9D0C7BFB8B1ABA6A19D99969357
:1009F600929090909192939596979898999A9B9D9C
:100A06009FA2A6AAAEB2B5B8BBBDBFC1C3C6CACE69
:100A1600D4DAE1E9F0F6FC01060A0E12171B2026CD
:100A26002B31363B3F4346494B4D4F515355585B4F
:100A36005D60636567696B6D6E6F7070706F6D6B0F
:100A46006864605C58534F4B46413C37312B241E3B
:100A560018120C070300FDFAF8F5F2EFECE8E4E0F3
:100A6600DBD6D2CDC9C5C1BDB9B5B1AEABA8A5A3BC
:100A7600A19F9E9C9B9A99989898999B9DA0A3A7A5
:100A8600AAADB0B2B4B5B6B7B8B9BABCBFC1C5C8DD
:100A9600CCD0D4D8DDE2E8EEF5FC030B131B2229FB
:100AA60030353A3F43474B4F5256595C5E5F606163
:100AB600626263646567696C6E7072737372716E7D
:100AC6006B67635F5B57534F4A46413B352F29237C
:100AD6001D18130E0B070401FFFBF7F2EDE7E1DB30
:100AE600D5CEC8C2BCB7B2ADA8A49F9B9793908D34
:100AF6008B89888788898A8C8E909396989B9DA0EF
:100B0600A2A5A8ABAFB2B6BABEC2C7CBCFD3D7DB0E
:100B1600E0E5EAF0F6FC01080E14191F24292E322E
:100B2600373C4045494D5155585A5D5F616365678D
:100B36006A6D707376797B7D7E7E7D7D7B79777538
:100B460073706E6B67635E59534C453E362F271F95
:100B560018100902FCF5EEE7E1DAD4CDC7C2BCB73E
:100B6600B1ACA8A39F9A96938F8C8987858483823C
:100B7600818181818283838586888A8C8E919598EE
:100B86009CA1A5AAB0B5BBC1C6CCD2D8DEE4EAF01A
:100B9600F6FC00050B11171C22272D32373C414568
:100BA6004A4E5255595C5F626466686A6B6D6D6E3B
:100BB6006E6F6E6E6D6C6B6A686664625F5D5A57C7
:100BC60053504C4844403B37322E29241F1A150FE8
:100BD6000A0500FBF6F1EBE6E1DCD7D2CEC9C5C0CB
:100BE600BCB8B4B0ADA9A6A3A19E9C9A98969594BC
:100BF60093929291929293939596989A9C9EA1A481
:100C0600A7ABAEB2B6BBBFC4C9CED3D9DEE4E9EF5B
:020C1600F5FBEC
:00000001FF

 

 

回頭來看看, ESP8266 MP3 能收台, 但是聲音就是噪噪的, 跟實際FM收音機訊號不良的狀態差不多, 不聽不知道, 一聽就分曉, 所以不管聽那一個網台或者純粹放 MP3 音樂, 情況都是一致的. 如果能夠理解為什麼, 還有寫碼的原理, 大概是可以改善的. 這裡遇到了兩個新的名詞 I2S / PCM. 因此搜尋一下世界圖書館, 看到有關 PCM 還有 I2S 的基本資料, 例如,

http://www.csie.ntnu.edu.tw/~u91029/Audio.html

http://jackho1977.blogspot.tw/2007/12/i2s.html

 

原來聲音還有那麼多相關的資訊, 對比源碼寫東西, 先看 I2S 怎樣變成 PWM 輸出, 源碼片段如下,

https://github.com/espressif/ESP8266_MP3_DECODER/blob/master/mp3/user/user_main.c


//https://github.com/espressif/ESP8266_MP3_DECODER/blob/master/mp3/user/user_main.c

//Array with 32-bit values which have one bit more set to '1' in every consecutive array index value
//table of 5 bit PWM = 32 sampling point ??
const unsigned int ICACHE_RODATA_ATTR fakePwm[]={ 
 0x00000010, 0x00000410, 0x00400410, 0x00400C10,
 0x00500C10, 0x00D00C10, 0x20D00C10, 0x21D00C10, 
 0x21D80C10, 0xA1D80C10, 0xA1D80D10, 0xA1D80D30,
 0xA1DC0D30, 0xA1DC8D30, 0xB1DC8D30, 0xB9DC8D30, 
 0xB9FC8D30, 0xBDFC8D30, 0xBDFE8D30, 0xBDFE8D32,
 0xBDFE8D33, 0xBDFECD33, 0xFDFECD33, 0xFDFECD73, 
 0xFDFEDD73, 0xFFFEDD73, 0xFFFEDD7B, 0xFFFEFD7B,
 0xFFFFFD7B, 0xFFFFFDFB, 0xFFFFFFFB, 0xFFFFFFFF
 };

static int sampToI2sPwm(short s) {
//Okay, when this is enabled it means a speaker is
//connected *directly* to the data output. Instead of
//having a nice PCM signal, we fake a PWM signal here.
static int err=0; //??
int samp=s; //16 bit PCM data, sound sample

samp=(samp+32768); //to unsigned //聲音數據上移, 0 - 65536, 正號
samp-=err; //Add the error we made when rounding the previous sample (error diffusion)

//clip value, 限幅
if (samp>65535) samp=65535;
if (samp<0) samp=0;

//send pwm value for sample value
samp=fakePwm[samp>>11]; //保留最高 5bit PCM 聲音數據
err=(samp&0x7ff); //Save rounding error. //保存餘下 11bit PCM 聲音數據

return samp; //?

待續….

 

試音, SU-05, MP3, 讓我們盪起雙槳 MP3

http://wp.me/ph3BR-1XR

 

大頭姨媽常常都要聽聖經, 手機下載的報導會內容多是MP3格式, 沒有版權的問題, 過年見面她說用手機聽不方便, 所以希望用喇叭聽, 邊幹活邊聽也好. 剛好撿到一個壞掉的 SU-05, MP3 播放機, 遙控器是不見了, 拆來看是電池過放壞掉到了0V, 完全沒電了. 剛好又有一個筆電淘汰下來的鋰電池, 所以改裝一下, 電池換成 2600 mAh, 電力應該夠連續聽一天24小時. 過年一飛, 清明節一飛, 就拖到現在才動手換電池.

 

充電的電路看來很陽春, 就是 USB 5V 供電通過一個 DIODE 接到電池正極, 大約就是 0.7V 壓降, 所以電池理論上可以過充到 4.3V; 大概也沒有過放保護, 應該就是鋰電池本身的防過放電路保護板而已.

改裝了圓型的18650鋰電池, 試試看這30元人民幣的產品, 當地賣就一倍多一點, 運費利潤都包了. 裡面很 [簡單] , 就一個滴黑膠的MP3芯片, 加上兩個 CKE8002 聲音放大IC, 所以沒甚麼好改說的, 不過用途確實很不簡單, 心靈的大補帖的播放工具, 不是用工具的賣價便宜或貴價來衡量的.

GOOGLE 一下, 還是中國的產品, 便宜又大碗, 這年代有了 MP3 真的是福音, 聽福音報導也是不錯的工具. 整理好就拿給大頭姨媽, 希望有些幫助, 伺候一下人群, 做些小工作, 人生路途總有不如意, 心靈有些寄託是必須的, 重點是你有多關心身邊的人. 買個新的送不好嗎?! 那換個新的老公老婆更好, 是這樣嗎?!

這些資訊就存到 GOOGLE DRIVE, 有需要就看看, 作了一個短網址, https://goo.gl/EkirZf

https://drive.google.com/drive/folders/0B3YrRYrhHTqzLVJ6UzdTVm1sVXM

 

試音, SU-05 MP3, 讓我們盪起雙槳 MP3, SU-05 SPEAKER, 不是 HIFI, 只是一般的MP3播放機, 聽感要求需要適當降低. 不知道 GOOGLE 明天會不會又用機器人制止這段片的歌曲呢, 還是版權的問號.

h_ttp://wp.me/ph3BR-1XR

 

END-

Si4735 & KT0913, similar radio receiver chip but very different marketing strategy

http://wp.me/ph3BR-1S2

 

KT0913, 一家中國的公司 KTmicro, 在終端使用者的角度看來, 基本的芯片資料藏著揶著, 在他們的網站完全沒有半頁詳細芯片和編程資料,

http://www.ktmicro.com.cn/index.php?controller=product&action=findall&allclassnum=0&subclassnum=4&productnum=0

玩了一下撿來的模組, 比較耗電, 看DATASHEET 說 22mA, 果然這樣, 這種所謂的DSP或SRD收音機因為需要用到高速ADC/DAC, 比一般晶體管或模擬IC的收音機耗電7-8倍, 不過變頻和S/N就固然優秀, 所以現在每個出廠的汽車收音機都配備成這種, 12V/60Ah 的汽車電池對mA級的耗電幾乎看成沒有變化. 試了 AM / FM 還可以. SW / LW 還沒空玩.

下圖, 左邊是上海飛樂261-11的機芯, 1966年出廠的真空管SW/AM收音機, 右邊是KT0913模組的自製的收音機, 體積耗電都是不可同日而語. KT0913的資料來源 http://www.crystalradio.cn/thread-964082-1-1.html, 搜尋網路, 日本的一個電子零件零售的網站有公開早期的一份DATASHEET http://nice.kaze.com/KT0913.pdf 讀完實驗一下, 大概就成功可控制這個KT0913收音機. LIBRARY也可以網上搜尋到, 不過要有點C語言的基礎才可以玩起來. 重點是 CHIP INIT 要特別的 SEQUENCY, 跟那份 DATASHEET 寫的有點不同, 可能是芯片改版了但是 DATASHEET 不配對, I2C的指令集和回應也有分別. FM 天線就一段0.7米的天線, AM 則用1.5米的導線作成環, 開闊地點基本可收到非常多的電台. 耳機或喇叭都可聽到.

Feilo261-11_AMP_KT0913_FM_RADIO
Feilo261-11_AMP_KT0913_FM_RADIO

 

Si4735, 一家老外的公司 SiliconLab, 在終端使用者的角度看來, 芯片和編程資料公開, 還有更新更正

https://www.silabs.com/documents/public/data-sheets/Si4730-31-34-35-D60.pdf

還沒有機會實驗, 不過用這個應該比較有保障.

 

彼此都是賣兩三塊錢的芯片, 有必要隱藏高科技實力嗎 ?! 很明顯是市場策略公司方向的明顯不同, 怕被抄襲?

當然, 下載這些 DATASHEET, 存檔這裡,

si4730-31-34-35-d60

kt0913

 

Tube Radio Feilo ShangHai 飛樂 261-11, AM756 CNR-1 中國之聲, 再聽聽中國好聲音

http://wp.me/ph3BR-1RS

1966年出產的真空管收音機, 收聽效果, 天線3米長, RF/IF 機器原裝的沒改過. 修復了50年機齡的上海飛樂261-11真空管收音機, 收聽AM756KHz中國之聲, 貓眼夠亮了, 供電移除6Z4, 用兩個1N4007替代, 聲音(AF)放大用的6P1真空管陰極電阻改成300 ohm, 面板燈泡用1W白光LED改裝. 下一步可能就是重建機殼音箱再配回原機的網布面板, 看來需要玩很久才有機會完工.

h_ttps://youtu.be/FBomBppxRiQ

 

 

比較一下現代的純軟件AM收音機收聽效果, 天線3米長, 還沒做完善的天線輸入濾波.

h_ttps://youtu.be/X1N3QFJ6sfk

 

 

 

再來就是 MP3作為音源的真空管擴音試聽效果.