2020年2月15日 星期六

Arduino 測試治具的應用 - 抽屜式治具控制

案件需求為:
1. 兩個按鍵作為進出平台的開關 另一按鍵為平台上另一上下動作的開關
2. 完成所有動作後按任一進出按鍵就進行退出動作在退出時 蜂鳴器要發聲
3. 完成進入動作 COUNTER 要記數加一次為了控制頂針壓合次數
4. 手動跟程式控制同時可以動作



零件配置如圖:
1. Arduino 控制板
2. 8 Port Relay board
3. 3 個 push button
4. 3個氣壓控制閥
5. 1個蜂鳴器
6. 次數記數器
7. 4個磁簧開關
8. ACto12VDC變壓器



2020年2月6日 星期四

Arduino Yun 配合 C# Dropbox 的應用 - 上傳檔案篇


本來是想直接在 Arduino Yun 上安裝dropbox 的API 上傳Webcam 拍到的照片, 可是怎麼安裝就是裝不起來, 所以就用另一個方式:系統架構為
由arduino Yun 接上 PIR 感測器 偵測到物體經過 就用 webcam 拍照 然後由上機介面把存在Yun的SD card的照片抓回本機上傳到 dropbox!!
感謝從網路參考的這篇文章仙草奶綠的程式筆記本, 了解 Dropbox API 的使用方式
Yun 上的code主要是 PIR的 input pin 偵測事件
判斷有物體後 下拍照指令
p.runShellCommand("fswebcam /mnt/sda1/test.png");


上機介面用 c#所寫用到的dll有
using Renci.SshNet;
using Dropbox.Api;

抓取 Yun SD Card上的圖片
string remoteDirectory = "/mnt/sda1";
using (var sftp = new SftpClient(yun._host, yun._username, yun._password))
{
      sftp.Connect();
      var files = sftp.ListDirectory(remoteDirectory);
       using (Stream fileStream = File.Create(@"D:\temp\test.png"))
      {
           sftp.DownloadFile("/mnt/sda1/test.png", fileStream);
       }
}

上傳到 Dropbox 用到的API 為
var task = Task.Run((Func)UploadDoc);
task.Wait();

public async Task UploadDoc()
{
    string uploadname = "yun.jpg";
    using (var dbx = new DropboxClient(this.AccessToken))
    {
         var full = await dbx.Users.GetCurrentAccountAsync();
         await Upload(dbx, "/software", "test1.txt", @"D:\Test\test.txt");
    }
}
private async Task Upload(DropboxClient dbx, string folder, string file, string fileToUpload)
{
     using (var mem = new MemoryStream(File.ReadAllBytes(fileToUpload)))
     {
            var updated = await dbx.Files.UploadAsync(
                folder + "/" + file,
                Dropbox.Api.Files.WriteMode.Overwrite.Instance,
                body: mem);
            Console.WriteLine("Saved {0}/{1} rev {2}", folder, file, updated.Rev);
     }
}

這樣就完成初步的照片上傳了!! 後續可以做一些 IoT 的應用.