Skip to main content

[Raspberry pi] 陽台的老鼠偵測器

前言: 話說前陣子爸爸家陽台不斷出現米奇老鼠,立刻清理陽台所有東西,然後又跟市政部門反映問題,可是情況還沒有好轉,米老鼠來完一隻又一隻,我爸陽台在老鼠界應該是網紅打卡聖地(誤),要不然就是米奇老鼠版米奇林三星餐廳(?) 雖然我們抓到了三隻,到上兩個禮拜為止還有至少一隻一直抓不到,每天淩晨還會來吃事後煙留下老鼠屎,真_北。 這隻老鼠對傳統攻擊有抗性,有IT9朋友前陣子用Raspberry pi自製了一台electric mouse trap ,用pi的超聲波雷達放在鞋盒裡,鞋盒裡有一堆食物,底部佈了鐵網,偵測到有老鼠進去以後立即關門通9V電,通個1分鐘再放牠離開,大推我自己也造一台 (Youtube片搜尋一大堆,人類真變態啊,朋友好變態啊)。可是我覺得這樣又好像有點太殘忍,不如先偵測牠們什麼時候來,嚇嚇牠們看看有沒有效果再說吧。 目的: 用Raspberry pi及手上有的感測器弄一隻放陽台用來偵測和嚇嚇老鼠的東西,並把紀錄圖像化到雲端給老爸使用。 邏輯及設計: 當老鼠進入偵測範圍,Motion Sensor偵測到生物活動Raspberry pi 處理來自Motion Sensor的訊號,如果夠強的話開始準備作出回應 Raspberry pi在Angry cats sounds中隨機選出叫聲,再經由Speaker輸出貓叫聲 Raspberry pi指示強光元件發出強光束照射目標 把偵測計數上傳到雲端圖表 材料: Sensor 在網路上看了一些Raspberry pi wild animal camera ,很多也是用Motion Sensor先偵測動物再來,我用的是PIR Motion Sensor被動式紅外線感測器,有低耗電成本便宜的好處。[1],而且可手動調整靈敏度及反應時間。  PIR Motion Sensor就是下面這個 圖片來源: learn.adafruit.com 可手動調整敏感度還有反應時間,這個有點不好調,要試好多遍才找到最佳位置。 可以在Raspbian中輸入pinout查詢GPIO避免插錯 圖片來源: learn.adafruit.com . 一台Raspberry pi 這次使用較舊的Raspberry pi model B+ 萬一老鼠生氣被咬爛錢包也不太痛 . ...

.net教學筆記整理 [資料庫篇]



連接資料庫的方法
  • 視覺方式,使用設計階段工具。
  • 程式設計方式。


基本概念:
  • ADO.NET 
    • ADO.NET 可讓您以一致的方式存取資料來源 (如 Microsoft SQL Server 與 XML),以及透過 OLE DB 和 ODBC 所公開的資料來源。資料共用的消費者應用程式可使用 ADO.NET 連接至這些資料來源並擷取、操作及更新其中所含的資料。
    • 元件:
      • .NET Framework 資料提供者
      • DataSet
    • 架構資料提供者圖形
  • 在.NET中, 我們使用System.Data這個namespace為存取資料的主要方法。
  • 當存取任何形態的外部資料, 程式一定包含下列物件:
    • Connection物件
    • Command物件
    • 資料載體
  • 資料載體包括
    • DataReader
      • 能從資料庫擷取順向唯讀資料流資料。
      • 好處是提高應用程式的效能,方法是立即擷取可用的資料,及 (依預設) 一次只將一個資料列儲存到記憶體中,從而減少系統負荷。
    • DataAdapter
      • 表示 SQL 命令集和資料庫連接,用來填入 DataSet 並更新資料來源。
      • 是 DataSet 和資料來源之間的橋接器 (Bridge) ,用來擷取和儲存資料。
    • DataSet
      • 種離線運作的資料庫快取,存放在主機的記憶體裡面。DataSet是透過DataAdapter(資料配接器)來執行SQL指令,功能非常強大,幾乎就是資料庫的翻版(如:DataView、DataTable、Relationship等等都作得到)。可以把資料庫複製到主機的記憶體裡面,如此一來面對關係複雜的多重資料表,就能快速地處理。缺點是:使用DataSet比較消耗資源。[2]
      • DataSet 由 DataTable 物件的集合所組成.
      • 內部是用XML來描述數據的。
    • DataTable
      • DataSet內的元素。一個DataSet 可由一至多組 DataTable物件組成。
  • DataSet, DataReader比較如下[2]
    (資料來源,以MS SQL Server為例)
    ADO.NET兩大物件的比較
    DataSet
    DataReader
    連接資料庫(Connection
    (不需要,因為SqlDataAdapter會自動開啟連結,使用後自動關閉)

    SqlConnection.Open()
    執行SQL指令
    1. Select
    2. Delete/Update/Insert
    SqlDataAdapter
    1.      .Fill()方法
    2.      .Update()方法
    SqlCommand
    1.  .ExecuteReader()方法
    2.  .ExecuteNonQuery()方法
    資料指標
     移動
    DataSet類似資料庫行為的資料快取。這些資料將存放在記憶體裡面,所以可以自由靈活地操作內部資料。
    讀取資料時,只能「唯讀、順向(Forward)」的動作。
    如何處理資料庫
     資料表?
    可以處理複雜的資料庫關聯與多個DataTableDataView
    透過使用者自訂的SQL指令來存取。
    適合處理單一的資料表。
    消耗資源
    較大
    小,而且快速
    分頁功能
    Paging



[程式設計] 連結資料基本Steps(以連結SQL Server為例):


  1. 建立SqlConnection.
  2. 建立SqlCommand
  3. 把資料放入載體(如datareader)
  • 流程如下圖所示[3]
  • 例子


[程式設計] 連結Oracle資料庫 [4]
  1. 在 [伺服器總管] 中,以滑鼠右鍵按一下 [資料連接],再按一下 [加入資料連接]。
  2. 在 [資料提供者] 中,按一下 [.NET Framework Data Provider for OLE DB] ,然後資料來源選擇 [Oracle資料庫],按一下[確定]。
  3. 鍵入您要存取的資料庫所在的伺服器位置。
  4. 在登入至資料來源時,鍵入要用於驗證的密碼。
  5. 請按一下 [確定]。

參考資料:
1. http://msdn.microsoft.com/zh-tw/library/ms254509(v=vs.80).aspx msdn台灣
2. http://www.dotblogs.com.tw/mis2000lab/archive/2008/08/15/4919.aspx MIS2000 Lab.的 ASP.NET 4.0 專題實務/教學與分享 (Official Site)

3. moodle.ncnu.edu.tw/mod/resource/view.php?id=96526 C#與資料庫連線與存取

4. http://msdn.microsoft.com/zh-tw/library/cc437980(v=vs.71).aspx 建立到Oracle資料庫的連接


持續更新中....

Comments

Popular posts from this blog