2014年11月16日 星期日

實作 Bresenham 直線演算法

這次要玩的是比較軟體一點的東西:Bresenham's line algorithm
Wiki 上的中文翻譯是 "布雷森漢姆直線演算法"
這原本是圖學在用的, 在研究 3D 印表機的韌體時注意到註解裡有寫這
才發現原來它也可以拿去用在機械控制上
對於 3D 印表機來說這是非常重要的核心程式
準確的一邊走一邊擠出適量的料, 這機器絕大多數的工作時間都是在做這
而實現這動作的程式就是布雷森漢姆直線演算法
我所拿到的印表機韌體在這裡寫了非常多的程式, 就為了能讓它安分的走直線
所以我把它研究了一下, 然後重新寫成自己的版本給新玩具使用
這演算法的精神在 wiki 上已經寫得很詳細了, 都是中文字
我不認為有必要再重複, 所以只紀錄應用時的小修正

2014年10月2日 星期四

在 ubuntu 14.04 上開發 Mediatek LinkIt ONE 應用 (純文字無 Arduino)

最近搞新玩具搞到焦頭爛額, 換個輕鬆的(?)玩一下
這是今年 Computex 時就展出的聯發科 LinkIt ONE  穿戴銷魂方案XD

裡面裝了 MCU + GSM + GPRS + WIFI + BT + GPS + MicroSD + Audio
一堆, 只收 79 鎂含運, 十分給力, 所以就買來研究研究

2014年8月8日 星期五

用 A4988 控制步進馬達

為了做一些工具所以研究了一下 3D 印表機的步進馬達部份
以前寫過一篇 透過 L297 / L298 控制四線式步進馬達
這兩顆 IC 一顆是產生時序, 另一顆則是 H 橋
兩個合起來就可以讓 MCU 可以只用 clock 便可讓步進馬達依照 clock 速度旋轉
而現在 3D 印表機上的步進馬達控制 IC 則是把上面兩顆的功能全都做進一顆小小的 IC 裡

上圖兩黑色散熱片下面的 IC 是 A4988, 3D 印表機常用的步進馬達控制 IC, 晶片面積非常小
控制方式一樣是只要把 clock 信號送進 step 接腳, Enable 腳拉低, 馬達就會轉
而且還加了一個厲害的功能:Microstepping
這些技術的介紹在英文版的 wiki 上有, 中文版的 wiki 沒有完全翻譯

2014年7月9日 星期三

用 AVR 控制 Wii Remote Camera

新玩具入手


這是 Wii Remote 前端的紅外線攝影頭
幾年前寫過一篇 在 Linux 下控制 Wii Remote 有描述過透過藍牙來聯繫 Wii Remote
接著再透過函式庫取得 Wii Remote 看到的紅外線點來搞些應用
這東西在當年可是領先的科技, 當年用攝影機做的紅外線點識別都是用 USB 攝影機
加上一台至少 P4 等級的電腦拼命運算, 攝影機解析度也只有 640x480
結果 Wii Remote  這顆攝影頭居然可以辨識 1024x768
而且最多四個點, 還只要兩顆電池就能驅動, 根本外星科技XD
據說是老任委託台灣廠商開晶片客製化的, 花了不少銀兩
不過這都是聽來的謠言就是了, 而且這也不是重點XD

2014年6月19日 星期四

自製退伍計時器

這個計畫早在去年就已經開始
不過做了半成品後就放著了, 直到今年...


抽中了!XD
我又可以進去算日子了 (雖然只有 5 天XD)
所以馬上又把計畫重啟並完成

讀取 GY-80 模組:加速度計(ADXL345) 陀螺儀(L3G4200) 電子羅盤(HMC5883) 氣壓計(BMP085)

這是一個很久以前買的模組

一直沒空搞它, 由於它上了四顆感測器, 這要翻不少文件
還要找一堆轉換公式, 麻煩極了, 所以就先丟著, 直到我又收到單子(?)才重啟
這貨是飛行玩具在用的, 像是四槳直升機, 用來感測機體的位置與方向
如上圖標示, 它的四顆感測器分別為:

加速度計 ADXL345
陀螺儀 L3G4200
電子羅盤 HMC5883
氣壓計 BMP085

搜尋 datasheet 時建議搜尋模組型號 GY-80, 這樣可以找到網頁一次給足所有資料
一個一個貼下去找反而麻煩, 而且還不會有範例程式

2014年4月30日 星期三

用 PN532 讀取 Mifare 卡

NFC, 近場通信, 一種短距離無線通信, 最早用於門禁卡, 現在則多了購物卡, 以及數位裝置通信
其原理是讀卡機發出小範圍 (即小功率) 的電磁波, 頻率為 13.56 MHz
當卡片靠近時, 卡片藉由線圈電磁感應產生工作用電流, 因此卡片可以不用裝電池
卡片上 IC 會收一部份電磁波當電源, 一部分當 clock, 一部份是資料
數位 IC 大多依賴 clock 來做事情, 連 clock 都從線圈來, 所以也不用振盪器
這些資料和能量都被調變到無線電後從讀卡機天線發出
然後卡片 IC 上各區電路各自解調出自己要的資料使用
這種無線有個規範叫 ISO/IEC 14443/RFID 標準, Atmel 有寫份文件簡單介紹, 可搜尋這 :

Understanding the Requirements of ISO/IEC 14443 for Type B Proximity Contactless Identification Cards

這些資料之所以可以混在一起送出, 又分別被解開, 印象中是各信號都是互相正交的
怎麼個正交法我早忘光了, 以前學通信系統都用背的, 一堆工程數學的頻率域轉換
複數空間積來積去, 念到最後我都不知道在積什麼小朋友了XD
所以很抱歉這部份我沒法做介紹, 我也只看個大概懂, 只能說想出這辦法的人真是天才

2014年3月16日 星期日

用 nRF24L01 自製無線閃光燈

本實驗室花了相當多的時間在搞相機週邊, 而這項計畫終於來到了終點
年初時把所有功能整合上一張板並送廠, 期望二月初能完成測試就結案
結果可惜遇上廠商過年機台維護延遲出貨, 接著又發現設計上的問題, 於是就拖到現在
這次的功能最早可以向前追溯到去年三月的文章  SONY NEX-5N 外接閃光燈
一年前知道閃燈外接的方法以後就想搞無線, 不過當時有其他計畫進行所以就一直延後
料則是前年的遙控音量文章裡有人回覆就決定了 (搬家後回覆消失)
這個想法在我腦袋中存了一年才實現, 不管怎麼說, 至少就是做完了

整套系統功能是這樣的:

控制 EF 鏡頭, 定期檢查當前焦距, 若有改變就查詢最大光圈值, 然後調整當前光圈大小
控制 E-TTL 閃光燈, 這只有按按鈕時才檢查, 因為閃燈觸發無法預測
若定期去探, 遇上剛好觸發就可能會有麻煩
每次設定閃燈或是有觸發時就透過 SPI 發出無線封包, 不論無線模組是否接上
可透過 UART 傳送無線的位址和通道, 供設定閃燈用, 當遇到干擾時可切換通道再試試
位址和通道設定寫入 AVR 內部的 EPROM, 關機後不消失

做的事情蠻多的, 已經用掉我這顆 AVR 的 8K 程式空間的 95%
所以把中文字型刪了節省空間, 想不到會被逼到走這步XD
拜託不要叫我用 assembly 寫最佳化, 我只是業餘搞好玩的, 不要這樣專業XD
或許可以換顆 16K 的 MCU 來測, 我選這顆是有許多接腳相容但硬體配置不同的 MCU
以上技術除了無線部份外統統有前文可參考, 也是一整合所學的板子
可點選 Camera 標籤來列出所有關聯的文章

2013年12月25日 星期三

Yahoo Blog 轉址頁面

今天是行憲紀念日, 放假在家發廢文XD
有些公司是要上班的, 出去外面閒晃真是潮爽德 (被巴)
這篇文只是純粹轉址用, 明天 Yahoo Blog 就要收起來了
Yahoo 提供六個月的轉址服務, 預計用這一頁當目標頁面
以下為正文


首先歡迎您連到此, 若是從已停止服務的 Yahoo Blog 轉向而來,
可在本頁搜尋標題關鍵詞, 已列出所有已遷移的文章的標題和新網址
若找不到就是沒遷移的文章
部分文章經思考後不遷移, 主要是喇賽的, 以及內容存在錯誤的
不過有遷移的也不代表都對就是了XD
只是以我當前的知識水平找不到錯, 若發現問題歡迎踢館
blog 已開放匿名留言, 有問題請直接回覆於該文章內
我有安裝最新回覆插件, 都會看得到
千萬不要留在 Google+ 那裡, 那裡只拿來塞別人的照片用XD
而且我對社群網站過敏(?), 不太能在雜亂資料中看到回覆
我等論壇出生人員習慣於以往蹲點按 F5 的壞習慣
那種訊息丟信箱或 APP 瀏覽更新的模式尚無法適應, 敬請見諒

2013年12月6日 星期五

用 AVR 控制 Canon E-TTL 閃光燈

閃光燈屬高電壓設備, 燈管高壓達到 250 伏特以上
拆卸閃光燈是有極高的風險, 高壓電會對人體構成嚴重傷害
若無相關技術背景請勿嘗試, 玩死不賠!

這是一個持續約三個月的計畫, 一開始只是想改變閃燈強度
結果改這不行, 改那也不行, 試來試去, 最後就做出這了

這是我常用的閃燈, 對岸製的 CY-20 拆開的樣子

上網找一下閃燈相關線路圖就發現這是經典設計, 也就是傳統工法