2015年10月31日 星期六

[合之章] USBasp 根據 firmware 設定檔內的 fuses 設定與 MCU Fuses 搭配的必要性

對於這個問題的疑問,追根究底的還是會回到 為什麼我插出來的 TransistortesterAVR 完全不給點正常反應,是不是除了硬體和韌體之外,這個 Fuses 的調整是必要的?

抱持著這樣的疑問,然後手邊又多出了這個 USBasp 的裝置,可以用來燒錄其它 MCU,應該可以從這當中得到答案吧!

這些實驗的過程,遇到的問題並不會比較少,不過以最後的試完之後,得到的結論,大致上都是因為這些 Fuse 設定數值上的差異,以及原本就已經有燒錄 bootloader 的 MCU 和沒有燒錄的差別,當然,過程裡頭還是會因為一些好奇心發作的關係,又讓要聚焦問題的過程,又擴散開了。 比方,對於已經擁有 bootloader 的 MCU 執行了 -e 這樣一去不回頭的參數

[轉之章] USBasp 的驅動程式安裝


因為打算讓電腦重新啟動了,所以就順便將整個 cygwin 給移除掉,可是這軟體,竟然有夠機車的沒有送上 uninstall 的,這是要人怎麼移除?這種軟體既然是透過了安裝的過程裝上來的,總不可能像綠色軟體那種方式,把目錄給砍了就成事了的吧?

還好有合理的懷疑到這種問題,就順到在這邊附上從網路上找來的 cygwin 的移除手段:

  1. C:>takeown /r /d y /f cygwin
  2. C:>icacls cygwin /t /grant Everyone:F
  3. C:\cygwin\bin>.\cygrunsrv.exe -E sshd
  4. C:\cygwin\bin>.\cygrunsrv.exe -R sshd

※ 通常前面兩個會跑一堆檔案,端看之前究竟裝了多少 package 而定;後面那兩個就不一定會有啥動作了,要看有沒有執行它的 server 程式吧~ 吧~ 吧~ 吧~ (因為我實在不懂它)。

※ 然後在寫這記錄時才想到,雖然昨天有看到清除機碼的動作,不過昨天忘了;所以就順便執行 regedit.exe 到上頭去把和 cygwin 相關的機碼都給砍了 ~

也從裝置管理員那邊,把這個 unknown device 的整個驅動程式給砍掉;並順道進去 windows 系統目錄裡頭,看看有沒有沒被清乾淨的,和 libusb 相關的 sys or dll 檔,都給清了。

[承之章] USBasp 的驅動程式安裝:驅動程式安裝衝突戰


把韌體上傳成功的 Atmega328p 改裝到 USBasp 線路的這一塊麵包板上面,然後開始了關於 libusb 的一連串的實驗 ~

以為自己對於這樣子的畫面應該是挺能應付的,以往在安裝電腦或是新的配備的時候,經常遇到的嘛!!!!

一將裝置插到 USB 延長線之後:

unknown device notification

點了它之後,就跳出了個其實不太常看到的視窗:

unknown device alert dialog

這視窗和一般 M$ 給使用者操作的視窗功能不太一樣啊,並沒有辦法透過點擊視窗上面這一個 unknown device 的 list ,然後透過它來進行驅動成式的更新換者是安裝的動作。 =..=

所以還是得透過電腦或是控制台的選單進入到可以作業的地方。

windows device manager

然後就是透過比較熟悉的安裝過程來進行驅動程式更新的動作了。

不過,運氣當然沒有這麼好,再經過了各種選項試點啦,砍掉裝置列表上的 unknown device 啦、重新拔插 USB 連接啦 ‧‧‧

也覺得可能是電路圖上面,從 MCU pin14(PB0) 和 pin15(PB1) 出來的這兩條線路,可能在還沒確定 USB pinout 規格的狀況之下接反了之類的啦 ‧‧‧

[序章] USBasp 的韌體安裝:韌體更新遭遇戰


在初步完成插件之後,緊接著想到的是應該要試著讓電腦系統可以辨識到這個裝置,這個動作就包含了兩個最主要的動作:上傳韌體到 MCU以及驅動程式的安裝
人生的 but, 總是這樣子開始的 (咖啡 ~

應該沒有辦法在這上面寫過多、也太過詳細的撞牆設定與測試 ‧‧‧
因為之前就已經在其它實驗上,拿過本回合要改成 USBasp 的這顆 Atmega328p,所以這顆 MCU 裡頭也早已經透過 Arduino IDE 安裝了它所提供的 bootloader 了。
這個地方或許就已經埋下了很重要的關問題點,也是之後需要驗證的

[楔子]實作 USBasp 電路圖

先來點類似開胃菜的楔子 ‧‧‧

由於之前玩了好幾個星期的 TransistortesterAVR,到上週為止,仍然無法順利的讓 MCU 晶片正常運作,
而在與網友亦或是該裝置作者的問答往返當中,暫時得到的結論是,仍然得確認上傳的資料是無誤的。

而這個問題,應該也就是一開始學著使用 avrdude 指令,然後透過 Arduino as ISP 的方式進行資料上傳時所遇到的問題:

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
         0x03 != 0x08
avrdude: verification error; content mismatch

這樣的問題,當時該網友也提供一些意見,他在自己所使用的 arduino2560 這版子上也有遇到過,但是事實上對於上傳的韌體內容,並沒有造成太大的問題!

拉回到上傳韌體時卻遭遇認證機制錯誤的問題上面,暫時能想到的就是,想辦法弄到一個專門拿來燒錄韌體到 MCU 上面的裝置。

然而,手邊有機會拿來當晶片燒錄器的東西,也就只有 Arduino UNO R3 這塊板子而已!

在這邊小小小慶幸一下的事情是,因為在找問題解答的過程裡頭,也發現了個 USBasp 的裝置,好處是,它也是利用 ATmega 系列的晶片就可完成的裝置,而且可以燒錄的晶片也包含相當多的 ATtmel AVR 的晶片。

也發現網路上有相當多的產品,都是依此為基礎開發出來的自製 USBasp,雖然它現在幾乎已經沒有在更新的了。

Thomas Fischl's USBasp

從網站上可以下載到的目前最新的檔案: usbasp.2011-05-28.tar.gz

※ 看日期就知道,也算是有夠老的了,而且很久沒更新了。

& 這個壓縮檔裡頭已經包含了驅動程式了,所以可以不用額外下載。

解壓縮後可以看到的主要檔案目錄:

Name Sub Dir Descript
bin firmware 已編譯完成的韌體版本
linux-nonroot linux 驅動程式
win-driver windows 驅動程式
circuit 電路圖
firmware 韌體原始碼

然後,決定先嘗試用獲得的任務道具 USBasp_schematics.pdf, 依照此電路圖的線路,把裝置給插出來 ~

過程當然還是免不了一番波折的啦 ~


玩到現在覺得,容易出狀況的,或多或少地可能是在麵包板上面把電路圖實作出來的時候;不過,大多數的問題都是來自於韌體或者是軟體上面。

就像在製作這個 USBasp 的時候也是這樣子的。

USBasp 在麵包板上的蠢樣/USBasp on breadboard
USBasp 在麵包板上的蠢樣/USBasp on breadboard

真正的打擊遭遇戰,並不是在這裡 ‧‧‧


#Arduino, #USBasp, #AVR

2015年10月29日 星期四

關於稽納二極體究竟該怎麼接的這一回事



稽納二極體的外型及符號


這個問題,對於新手 & 自學的人來說,應該算是很重要的;

看得懂電路符號,並不代表知道在實體接線時,該如何使用,

尤其是那一條黑圈代表的究竟是哪一邊 ~


----
單純但是算很重要的長知識記錄


自製麵包板用的 USB 公接頭



因為之後要測試的線路上,需要用到 USB Port,而且身邊能與電腦連接的 USB 線規格就那幾種,卻也剛好,一來沒有買那種兩邊都是一般 USB 公接頭的線路,所以就算有母接頭也是毫無作用的。


嗯,還好之前有把那個壞掉的軟管的接頭給拆下來 ~

稍微改良一下,先解決掉一個問題

DIY USB Male for breadboard































因為自己也常記不住,就順道附上從 wiki 上截下來的針腳說明。

Pinouts data from wiki
 (英文版的畫面比中文版的更清楚,所以用英文版的 ‧‧‧ 有上顏色有差咩)








2015年10月18日 星期日

[記錄]Arduino's 多功能電子元件測試電表 ─ 前傳


一切的動機,完全是源起於從家裡帶上台北來的,然後被完全分了全屍的電腦電源供應器,

知道那是什麼零件,還看懂上頭寫的單位資料的它們,基本就只有電阻和電容兩樣東西而已,

電感、電晶體、IC ... 等等,一種是有寫也沒懂之外,另一種就是沒寫也沒懂的狀態;

就算全拆下來了,也不曉得能拿來幹啥用的狀態。

拆解 USB 軟管


本來被用來接 USB LED 小燈管的 軟管 ~ 
它在前幾天被我扭斷了 ~ 

被扭斷分了個屍的 USB 軟管






































    
剛剛又花了個把鐘頭, 進行毀屍滅跡的不人道拆解工程 ~ 

  


USB 軟管的屍塊


----
從閻王那塾回了 USB 夫妻一對, 至於軟管裡頭的紅線, 就只能還月老了 (咖啡 ~ 
獲得 USB 公母接頭各一









2015年10月13日 星期二

[整理記錄]Arduino's 自製麥克風聲音放大器(拍手控制開關)歷程之六 (最終回)



分別將 兩個放大器拿來與 Arduino 微電腦板連接的測試情況:

一、LM 386 耳機放大器
 
LM 386 耳機放大器連接麥克風、軟體示波器外掛裝置和 Arduino 微電腦板
 
LM 386 耳機放大器在平時狀態下的波形



LM 386 耳機放大器透過麥克風接收到外部聲音時的波形
    
此時的10 KΩ 的電位計和上一篇一樣,依舊設定在 4.2 KΩ 的位置上,保持數據的一致性。

因為示波器軟體從 Line In 線路接收訊號,會回饋到電腦的聲音輸出上面,剛好可以把轉輸出的聲音錄下來:


※ 錄下來的聲音並沒有很大聲,又不想要動到裝置上的其他設定值,會讓變因變多,所以就有聽到就好了。

在這個拍手的過程,還不能距離裝置距離太遠,會有一般音量的掌聲收不到音的狀況,不然就是要拍得比較大力一點了。



二、LM 358 麥克風放大器

LM 358 麥克風放大器連接軟體示波器外掛裝置和 Arduino 微電腦板

 
LM 358 麥克風放大器在平時狀態下的波形
 
LM 358 麥克風放大器透過麥克風接收到外部聲音時的波形
     
此時的 200 KΩ 的可變電阻和上一篇一樣,依舊設定在 98.7 KΩ 的位置上,保持數據的一致性。


LM 358 麥克風放大器錄到的聲音,聽起來比 LM 386 耳機放大器的聲音大聲了些,
因為一致性的問題,所以也沒打算調整到 200 KΩ 的地方。

在測這個裝置收音的時候,坐在椅子上用一般的力道拍手,裝置就已經很順利地收到音了。



※ 整個測試的結論都只是表示,用到比較好的電路圖和比較專屬的電路圖裝置,效果是比較好的;
 所以,完全沒打算在麵包板上重插一次書上的電路圖,拿來做三個不同電路圖裝置的比較。
 (主體光是這兩個就已經花掉這麼多的篇幅在寫了 … )


最後的成果就是,終於完成拍手控制開關這個章節,然後獲得了 ~ 

軟體示波器外掛裝置、麥克風放大器(自製麥克風)和耳機放大器各一。

----
Arduino 實作拍手控制開關程式碼:sketch code

----
在這邊再次感謝 這個 Blog 的大大啊 ~ 




[整理記錄]Arduino's 自製麥克風聲音放大器(拍手控制開關)歷程之五 ─ 放大器的波形


這邊的資料完全是整個實作完成之後,為了產出這份記錄而額外重新接線記錄的。

使用 LM 358 麥克風放大器

利用 上一回合 提到的電路圖所製作完成的這個麥克風放大器,在試玩的過程裡頭,和書本上所提供的電路圖上,有一個很明顯的功率放大差異,

除了雜訊抑制上的差異之外,那就是當電風扇吹到這個麥克風裝置的時候,就已經能明顯的從輸出端的音箱聽到一些呼呼的風聲了;

而且,也根本不用把嘴巴貼得離麥克風很近的方式來進行慘叫式的收音測試 ~ 這真是令人信心大增的地方 ~ 

[整理記錄]Arduino's 自製麥克風聲音放大器(拍手控制開關)歷程之四 ─ 番外三篇:麥克風放大器


在網路上搜尋到這一張電路圖:LM358 microphone amplifier 

看起來上是比較有機會用在 低功率的環境,先試著在麵包板上插完稍加測試一下,
在雜訊的部份聽起來和示波器的圖看起來都比書上使用的。

在插麵包板的時候才意識到,手邊並沒有 10 μF 的電容,一開始是試著用手邊的其它電容並串聯成比較接近的數值,

然後,運氣不錯的,這在篇文章後面剛好有其它網友稍微修改過這張電路圖上的元件,它的修正如下:

1、把 C1 電容改成 100 nF
2、把 R5 電阻換成 330 KΩ 
3、把 R4 電阻拿掉

反正,依照目前我對電路圖的狀態來說,根本還不會分析,也只能先照著這樣的修正稍微測試看看 ~ 

[整理記錄]Arduino's 自製麥克風聲音放大器(拍手控制開關)歷程之三 ─ 番外二篇:耳機放大器


因為在麵包板上面插完麥克風放大器元件之後產生的問題,其中一個項目就是雜訊,

再加上元件散亂在板子上的狀況,也有可能產生更明顯的雜訊;

所以打算找看看有沒有辦法用耳機放大器的功率來推麥克風試看看,除了自己也覺得一般的耳機放大器的敏感度應該會高於麥克風的,

所以雜訊抑制或降低的效果,通常應該會比麥克風用的好吧;再說,書上也提到兩三顆麥克風用的放大器晶片,

就試著找看看吧 ~ 

[整理記錄]Arduino's 自製麥克風聲音放大器(拍手控制開關)歷程之二 ─ 番外篇:音效卡示波器


在網路上搜尋到的可用資訊就是這個 音效卡示波器 

其作用主要原理,是透過音效卡本身所具備的功能和特性,事實上和市售示波器的原理是一樣的,

差別是透過這樣的裝置,能接受或顯示的頻率以及電位差(伏特數)是比較有限的。

在比較仔細的看完上述的網頁之後,比較有疑問的點是有兩個地方,

1、為什麼一定要用雙面的電木板?
2、為什麼要把音源訊號線給剪掉一個頭?


[整理記錄]Arduino's 自製麥克風聲音放大器(拍手控制開關)歷程之一


網路上搜尋到的 內文對應的組裝過程: Arduino 練習:電容式麥克風與運算放大器 LM358

以練習狀況來說,這個章節算是目前試最久的裝置了,原因是因為按圖組裝之後的程式效果,並不如書上所描述的如此簡單。

在整個環節完全測試完告一個段落時,再回頭來記錄與描述過程,可能還是會有些漏掉的環節吧。

2015年10月8日 星期四

[證據]二極體上面的編號 H48 代表的型號


對於不是電子本科或是非專業級的拆解手來說,很難一看到零件就曉得這東西的功用,所以還是得透過一些編號資料或者是儀器,來取得該零組件的使用常規資訊。

尤其電子零件若是從某裝置拆卸下來的時候,最常遇到的問題,通常就是零件上面根本沒有編號資料,或者是編號資料根本不是完整的資訊;在這種狀況之下,因為不曉得零件的各種常規設定,所以根本沒辦法拿來用。