2014年12月24日 星期三

土砲 CNC:控制界面軟體

接續前篇:土砲 CNC:控制器和韌體 (Grbl)
韌體裝好了, 接著就可以連線測試了
arduino 上有兩顆 AVR, 一顆面對 USB 的被刷成 USB serial
現行版本的 ubuntu 看到這裝置會產生 ttyACM 節點, 用 minicom 打開就可以通訊
手動輸入 G code 機器就會動, 挺容易的, 不過通常我們不會想這樣操作
一行一行輸入喔臥槽! 這樣不行吧
總要有個 UI 吧! 這裡有個現成的:

Grbl Controller 3.0

看起來好像能用, 不過我沒測, 因為我做完了才發現有這種軟體XD
如果上面那軟體看了喜歡就跳過這篇文章吧XD
我知道還有 Linux CNC 這種東西, 也把它裝起來看過, 發現它實在太肥大了
而且它的硬體抽象層 EMC 是個 Parallel Port 控制軟體
簡單說就是把 Grbl 做的事在電腦上重寫, 它的算法可能更好但我不需要
我們的土砲用那樣太複雜了, 土砲就應該簡單!XD 所以沒有採用

土砲 CNC:控制器和韌體 (Grbl)

接續前篇:土砲 CNC:電機部份
我們把馬達和電磨機裝好後, 接著就要控制它們了
由於原先 3D 印表機的主板有問題所以決定上網重買
找來找去都沒看到順眼的, 後來不知道哪天心血來潮換了個關鍵詞搜尋
結果找到這:

Arduino CNC Shield!真是屌爆了!(?)XD
真是佩服老外吃飽撐著時的娛樂XD 居然連這種都做 kit 出來
在大量生產的優勢下上圖這堆全部加起來只收一張小朋友
控制器, 馬達控制 IC, 與電腦的連線, 統統都準備好了
本來想說找不到順眼的就自己開板子, 看來不需要了
雖然是用 Arduino 但這不代表就一定要用 Arduino IDE
慣用 C 語言 (簡稱慣C) 是本實驗室的規矩, 上圖右拉出來的線就是燒錄器界面
USB 只當 USB Serial 使用

2014年12月23日 星期二

2014年12月22日 星期一

CNC DIY! 自製土砲 CNC 雕刻機

本實驗室為了製作一些較堅固的客製化製品因此開了這個計畫
3D 印表機固然不錯, 但是所選用的材料仍無法適應某些應用
尤其需要鑽孔攻牙的, 需要小體積但高強度的
3D 列印的多層結構若沒有良好的黏合, 將會從各層間解體
尤其列印面積大時, 溫度差更容易產生這種現象
而 CNC 雕刻機總是從一開始就結構完整的物體去切削
結構設計妥當的話是相當堅固的, 可用的材質也非常多樣化
低溫強固的 HDPE, 化學特性優良又耐高溫的鐵氟龍 (貴!)
機體結構夠穩的話還可以切金屬, 應用範圍更廣
不過這機器可不好搞, 切割時是靠快速轉動銑刀來進行切削
這會產生極大的噪音以及振動, 機體結構需要能應付這些衝擊
可是預算不是無上限, 我們沒法無止盡的強化結構來解決問題
因此一些妥協是必須的, 我的機器會在加工時因為振動而產生誤差
故稱作 "土砲 CNC 雕刻機", 它還是能用, 只是有點不準XD
如果你期望自己做的機器可以超越商業產品, 那我會建議你忽略這篇文章
或許有人可以做到, 但我做不到XD

2014年12月12日 星期五

用 AVR 控制 Mini 12864 LCD 模組

進了一款 LCD 來測試



這是一片 128x64 點的 LCD, 體積接近前篇 用 AVR 控制 OLED (LY096YB-128064 黃藍雙色) 的 OLED
OLED 很薄, 顯示效果也不錯, 但是那是在室內, 室外有強光的環境就常常看不清楚
所以找這片來看是否能補足 OLED 的弱點
它也是個 SPI 裝置, 或許可以做 Co-layout, 視需求選擇上 OLED 或 LCD
這片 LCD 面板厚度和 OLED 幾乎相同, 但是加上背光就是兩倍厚

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 標籤來列出所有關聯的文章