2018年7月17日 星期二

智慧科技導入花園城市-中興新村



智創聯盟從2015年5月1日成立到現在已經有3年多了,前兩年主要的場域是初鄉茶間,其主要成果有時空旅人花語母親等。自2017年2月1日起,選定中興新村做為智創聯盟中心學校南開科技大學以及所有夥伴學校的共同場域,經過一年多的努力,已經有初步的成果,於2018/6/3舉辦成果展,非常感謝夥伴們的參與,讓我們持續為中興新村導入智慧生活科技努力。

智創聯盟聯絡電話:049-2563489#2814。

2018年5月13日 星期日

[Tinkercad Programming]光敏電阻實驗-小夜燈

本文將介紹光敏電阻的實驗,光敏電阻可以依照光線的強弱來改變電阻值,最常用於小夜燈,當白天時,小夜燈自動熄滅,到了晚上自動點亮。
如上圖,光敏電阻有2個接腳,其一是接到5V的電源,另一支腳則串接一個10K歐姆的電阻到GND,而與電阻連接地方,就是訊號線的接頭,接到A0腳位。
選擇變數(Varables)並按下Create variable按鈕後,輸入InValue,按下確定鈕後,就會出現上圖。接下來按照下圖配置程式。

上圖是設定inValue變數到讀取類比腳位A0的數值,然後把inValue數值從串列埠中輸出。接下來按下Start Simulation按鈕,就可以執行程式,然後調整在光敏電阻的上方出現的光源亮度調整鈕,您可以調整看看,並觀看右下方的串列埠Serial的輸出,其結果如下圖。



調整時會發現亮度愈亮,其電阻值愈高,其電路以及程式分別如下面兩張圖。






延伸練習:
PIR Sensor

Ultrasonic Sensor


2018年5月10日 星期四

[Tinkercad Programming]簡易通訊:兩片Arduino對傳


Tinkercad居然可以模擬兩片Arduino,這點讓敏哥很吃驚,把其中一片的TxD接腳連接到另一片RxD,再把RxD接到另一片的TxD,然後把兩片板子的GND連接起來。



上圖紅色地方可以切換不同板子,只需要一行print to serial monitor命令即可,記得兩片板子都要加喔!,我們把命令插在LED亮滅的中間,是為了讓使用者能知道有在進行通訊。在上圖的右下方,可以看到輸出的結果。下圖為接收端程式,圖中為何使用49呢?值得讀者思考。
相關文章:Arduino 筆記 – Serial Library 介紹

2018年5月7日 星期一

[Tinkercad Programming]樓梯電燈的程式設計



在生活中,當我們上、下樓梯時,用兩個開關來切換燈泡的狀態,其電路如上圖,不過上圖是直流電路使用1.5V的電源,我們家中是使用110V的交流電源,但兩者的電路概念都是一樣的,都是使用雙切開關,但燈泡因為交直電源控制電路會不同,對於家中的配線有興趣讀者不妨參考:雙切開關電路大解析

我們延續上一篇文章:[Tinkercad Programming]開關&LED的程式設計,我們增加一個開關,其電路圖如下圖,我想大家有看到,雖然我們也是使用雙切開關,但有一支腳位我們是不用的,而且每個開關都接上一顆10K歐姆的提升電阻,LED則是接330歐姆的限流電阻。

用微電腦來控制,不管接幾個開關,每個開關接線方式都一樣,而且開關之間是不需要有線接在一起,全部都是由微電腦來控制,因此都個開關都需要接到微電腦的輸入腳位,如上圖中的腳位4和5。接下來我們要撰寫程式來控制,如下圖,特別注意IF的命令。


[Tinkercad Programming]開關&LED的程式設計

接續上一篇:[Tinkercad Programming]開關的程式設計
1.在腳位12上,增加LED以及330歐姆的電阻。
2.增加控制LED的程式。


2018年5月6日 星期日

[Tinkercad Programming]開關的程式設計

1.建立專案後,先選擇一個Arduino Uno R3控制器,如上圖。
2.選擇Sideswitch以及一個電阻,並把電阻設定在10k。
3.再按下圖配線
4.撰寫程式



2018年5月4日 星期五

智慧音箱開啟語音控制的新時代



說起語音控制,大家會想起Siri,Siri在2007年還是iPhone手機內的微型應用程式,直到2010年才被Apple收購,成為iPhone的語音助理。在2014年Amazon因手機Fire Phone失敗,推出了Amazon Echo智慧音箱,沒想到在2015年大賣,因一次偷跑造就Amazon在智慧音箱霸主的地位。在2016年Google也推出Google Home,以相容和開放程度而言Google Home佔有優勢,在2017年Apple推出HomePod,也符合果迷的期待。然而這幾款的智慧音箱目前都不支援中文,要使用中文語音控制,可以選擇小米。讀者不妨參閱:智慧音箱亂鬥:始於2017,終於2018,以下讓我們來看看各家智慧音箱的功能。Alexa開發者也可以賺錢了!看亞馬遜怎麼開啟語音應用的全新獲利模式


小米人工智慧音箱 Xiaomi Ai

Google Home 智能科技家庭

WWDC登場 Siri智慧喇叭"HomePod"現身

你的家庭小精靈: Amazon Echo
HomePod與Google Home先別吵架,四台智慧音響比較一次看!

2018年4月29日 星期日

台灣魚菜共生產業促進會成立大會圓滿落幕


(大會參加人員合影,圖片來源:台灣魚菜共生產業促進會)

近年來由於食安的問題頻傳,造成人心惶恐,標榜安全循環可再利用的新農業「魚菜共生」,為許多人想要了解與追求的食材安全目標,坊間更有許多相關的魚菜共生團體因而產生,但也大都還處在模仿與學習的階段,從事水耕栽培多年的沈西岩先生就以其專業,從長遠的觀點看魚菜共生未來的發展,覺得可以將魚菜共生的模仿與學習階段,進一步發展成本土化魚菜共生系統往產業方向走。

(大會開始前邀敬台南農改場專家楊清富副研究員演講魚菜共生新絲路,圖片來源:台灣魚菜共生產業促進會)


因而結合一些志同道合的朋友開始籌備「台灣魚菜共生產業促進會」,歷經年餘的奔走以及申請,終於在107年4月28日在南開科技大學--樸華樓3樓召開成立會員大會,一切順利功成圓滿,選出沈西岩先生為第一屆理事長、林正敏陳霓瑄潘錦輝林清田等四位常務理事及林淑份等10位理事,高嘉宏常務監事及另外四位監事,並聘請陳滄松先生為促進會秘書長。


(理監事會後合影,圖片來源:台灣魚菜共生產業促進會)

此次「台灣魚菜共生產業促進會」成立大會能夠順利成功,除了感謝南開科技大學提供優質的開會場所外,更要感謝南開科技大學民生學院林正敏院長及特助林淑份秘書、御史社區協會的陳霓瑄總幹事、屏東魚菜共生推廣協會潘錦輝理事長及一些熱心魚菜共生的朋友共同努力之下,才能讓成立大會圓滿成功,在此再次感謝。

第一屆台灣魚菜共生產業促進會理事長沈西岩先生會後感言:

台灣魚菜共生產業促進會」籌組成立大會能夠順利成功,當然也是我對「魚菜共生」這新興的農業生產模式,讓我從資深農業人的觀點有一些比較深入的看法後,進而所具體號召同好共同來成立的目的。

近年來接觸了許多大小不一的所謂「魚菜共生」社團、協會,大都只是看網路資訊依樣畫葫蘆的在模仿與學習的階段,或因沒有養殖技術或水耕種植經驗,有的只是小確幸的觀念,還有更多的表裡不一的推廣說法,也有自認是魚菜共生先行者,開宗立派傳授獨門技法,殊不知這些不是正確的知識,慢慢地可能就會將「魚菜共生」這種生產方式消費殆盡。

「台灣魚菜共生產業促進會」看名稱就知道是一種期許,農業是民生必要的產業,除了要有食材安全上的生產考量外,最重要的是要有永續經營性與經濟規模的觀念,魚菜共生也是一種循環式生產的農業,可永續來經營的,不可只是用操襲與模仿來建立魚菜共生的系統;借鏡與參考進而開發屬於本土化的魚菜共生系統,還有結合目前在這方面有研究的專家學者共同來研發也是必要的,也這樣才能夠成為一種產業,這也是本促進會起始的目標;有前輩說「魚菜共生」目前能知道的原理技術大概是20%而已,就本促進會的成立目的,也就是要來致力研討發展「魚菜共生」那80%的奧秘原由,而後將「魚菜共生」做成一種高品質的、永續的、善用自然資源的食材安全產業。

(智創聯盟助理游承翰協助擔任司儀,圖片來源:智創聯盟)

第一屆台灣魚菜共生產業促進會袐書長陳滄松先生會後感言:

消費者因為食安問題,所在意的是魚與菜生產過程中,透明正確的資訊,讓消費者自己選擇所需的食材。

台灣魚菜共生產業促進會未來將朝兩個方向運作:

第一、無添加:整個魚菜共生系統運作中,除了魚飼料外,不再加入任何東西。

第二、可添加:魚飼料是以魚為主,經由過濾系統轉換到種植槽,給菜吸收的養份是不足,而菜類所需的16種養份略有不同,要適量給於補充,菜才能真正長的健康。

2018年4月7日 星期六

物聯網通訊協定MQTT的測試

MQTT是物聯網很重要且經常被使用的通訊協定,主要是運用主題/訊息(Topic/Message)來換資訊,有發送資料以及接收資訊。通常採用發佈(Publish)和訂閱(Subscribe)訊息機制,有兩個角色,其一是仲裁者(Broker),另一個是客戶端(Client),我們分別使用CloudMQTT和MQTTlens進行測試。

CloudMQTT:

1.請選擇下圖右上角地方有一個登入按鈕。


2.進入登入視窗,我們可以看到兩種登入方式,右方是建立帳號,左方是已有帳號者用來登入使用。

3.測試結果

MQTTLens:

1.在Goolge輸入MQTTLens,就可以來安裝,點選下圖右上方。

2. 測試結果


2018年3月27日 星期二

物聯網的應用

聯成觀點 -- 物聯網,原來如此

為什麼你要認識「工業4.0」?台灣轉型新力量

機器動刀.大數據 創造智慧醫院



2018年2月20日 星期二

Google表單存入自己的資料庫Mysql

google表單很好用,界面很完整,不只能存入google的試算表文件,能存入自己的mysql就可以用來其他的用途,很棒吧。
請在表單中,選擇指令碼編輯器,便可以開啟google app script。

在script中重要的指令如下
function myFunction() {
  // 建立jdbc連線
  var conn = Jdbc.getConnection("jdbc:mysql://host ip:port/databasename", "username", "password");
  var stmt = conn.createStatement();
  //綁定工作表
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var ss = SpreadsheetApp.getActive();
  //設定資料範圍
  var data = sheet.getDataRange().getValues();

  //存入mysql
  var row_del = new Array();
  for (var i = 0; i < data.length; i++)
  {
      var sql = "INSERT INTO test (test, num) VALUES ('" + data[i][1] + "'," + data[i][2] + ")";
      var count = stmt.executeUpdate(sql,1);
      //紀錄等等要刪除範圍
      row_del.push(i+2);
  }
   // 刪除資料
  for (var i = row_del.length - 1; i>=0; i--)
  {
      sheet.deleteRow(row_del[i]);
  }
    stmt.close();
    conn.close();
}

原文發表於:夜市小霸王(google表單存入Mysql

2018年2月14日 星期三

Line Bot Notify 聊天機器人 使用 ASP.net VB.net

Line是台灣最流行的聊天軟體,因此如果IoT的一些裝置能透過LINE傳送就很棒了,簡單的來說,例如說當倉庫的溫度濕度或濕度超過某一溫度時,就傳訊到管理員手機LINE中進行提醒來查看,或者,家中窗戶被打開時,就拍照並傳訊到使用者LINE中。

LINE的自動化傳訊工具目前來說分成兩種,BOT跟Notify
本文只說明Notify的用法,LINE Notify 製作過程分成四個部份
  • 一、申請LINE Notify服務:利用自己的LINE申請一個Notify服務帳號,過程中需要確認對象為何,只能自己或自己所在的群組,無法針對其他個人用戶,需將對方拉入群組中
  • 二、取得使用者Token:在步驟一完成後,需要由Authorize Code轉成用戶的傳訊代號(Token),只須做一次,取得群組Token後即可傳遞訊息到群組內
  • 三、POSTMAN簡易測試傳遞訊息:完成步驟二之後,可以透過POSTMAN快速測試服務是否正常。
  • 四、ASP自動化訊息:透過IIS網站,以ASP.net透過POST來傳遞訊息,也可透過IFTTT來取代(請參考:使用 LINE Notify 接收網站更新通知),這樣就可以省去寫ASP跟IIS的部份
  • 本文所需工具:POSTMAN(簡易POST工具)、VS.net、IIS、自己固定IP的網址
一、申請LINE Notify服務
1.申請Line 服務:https://notify-bot.line.me/zh_TW/,拉到最下面的登錄服務

2.輸入自己的帳號密碼登入LINE服務

3.輸入相關資訊,
資料可以自行選擇輸入,不過最後好像沒什麼用,最後都是以官方圖片為主,但其中Callback URL則最為重要,到時要接收Authorize Code,例如我輸入我自己的網站:http://210.60.88.47/

4.完成新增服務

5.收信並驗證服務

6.點選我的服務

7.點選剛剛新增的服務內容

8.驗證完畢後,點選顯示,查看Client ID及Client Secret,馬上要用到

9.取得發行權杖

10.輸入相關資訊後,點選發行

11.獲得發行權杖,記得要把它先複製存到其他地方,但是這組文字現在(2018/02月)好像沒啥用

12.這時你的LINE會收到一個訊息,表示權杖已經申請完畢

13.要取得Authorize Code,須透過網頁POST一個網址給Line做認證,因此在IIS中建立名為Line.htm的一個網頁,內容如下,請更換紅色標示的部份

<html lang="tw">
    <head>
        <title></title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <script>
        function oAuth2() {
            var URL = 'https://notify-bot.line.me/oauth/authorize?';
            URL += 'response_type=code';
            URL += '&client_id=你的Client ID';
            URL += '&redirect_uri=你的CALLBACK_URL';
            URL += '&scope=notify';
            URL += '&state=NO_STATE';
            window.location.href = URL;
        }
    </script>
    </head>
    <body>
        <button onclick="oAuth2();"> 連結到 LineNotify 按鈕 </button>
    </body>
</html>

14.瀏覽你這個IIS的Line.htm網址會得到下面的按鈕,點選這個按鈕

15.連結需要的群組(不懂為何要做兩次)

16.取得Authorize Code,請複製起來以後要用

到此已經完成第一步驟,以目前的程序來猜,可能未來會省略13-16的步驟

二、取得使用者Token
步驟一最後取得的Authorize Code並非群組代號,因此必須由Authorize Code轉換成Token,這時可以利用Postman來做,請自行下載安裝後啟動,或者也可以自行建立一個網頁來POST資訊
POSTMAN下載:POSTMAN,下載、安裝並登入(用Gmail帳號即可登入)後,開啟一個頁簽
1.使用POST
2.網址輸入Token 的服務網址:https://notify-bot.line.me/oauth/token
3.點選Params打開參數視窗
4.依序輸入參數如下(請注意前後不能有空白)
Key欄位Value欄位
grant_type上面取得的authorization code
codeAuthorize Code
redirect_uri你的Callback URL
client_id你的client id
client_secret你的client secret
5.點選Send送出POST
6.查看收回的Token值,將之複製下來,這個Token代表你上面申請傳訊的群組對象ID,步驟三每次傳訊時都會用到


三、POSTMAN簡易測試傳遞訊息
步驟二中取得Token就是代表傳訊的群組,有了這個就可以透過網址傳訊息到該群組,也是利用POST的方法,可以先用POSTMAN測試,再改用ASP設定自動傳訊。
在POSTMAN中依序完成以下
1.修改傳遞方式為POST
2.輸入Notify傳訊網址: https://notify-api.line.me/api/notify
3.點選Header頁簽
4.新增一個Header參數,請注意Bearer與Token之間有一個空白
Key欄位Value欄位
AuthorizationBearer 上面取得的群組Token


5.點選Body頁簽
6.選擇傳送格式x-www-form-urlencoded
7.點選Params設定參數
8.新增一個message參數,此為真正的傳訊內容
Key欄位Value欄位
message訊息內容....
9.完成後,點選Send送出,即可得到結果,若結果為OK,代表傳送完成
10.查看手機,可得到訊息已經進來了



四、ASP自動化訊息
用POSTMAN只能手動傳遞訊息,如果要能系統自動傳訊息,則需要利用IIS+ASP,例如說當Arduino偵測到溫度或濕度(或有害氣體濃度)過高,則發送訊息到網站,而網站接收到Arduino傳來的訊息之後,將訊息以LINE Notify轉發群組內,所以下面我們將介紹如何以ASP(VB.net)來說明如何傳遞訊息到LINE
本部份也可透過IFTTT來取代,請參考:使用 LINE Notify 接收網站更新通知,但之所以用自己的網站是因為這樣將會有更多的權限及可能,例如我們可以把訊息存到sql資料庫,或者給予一些準則或機制等等
1.Arduino傳遞部份
參考範例檔的Wifi/WifiWebClient範例

分別修改WIFI AP的SSID及密碼、Server的IP=自己IIS網站的IP、將get 後面的網址改為要接收網頁的網址(本文為default.aspx),並加上後續要接收的參數,以本例而言,將接收user(使用者代號)及value(有害氣體濃度ppm)
2. ASP程式碼(本文CodePage採用VB.net)
建立一個網頁,檔案名稱為上述default.aspx,用以接收Arduino傳來的參數,並立即轉發,因此在Codepage程式主要分成兩個部份,A接收及B轉送
在default.aspx的Load事件函數中,輸入以下的程式碼(要記得Import兩個Lib:System.IO跟System.Net)
A.接收參數:利用request接收user及value
B.轉送到LINE Notify:建立一個WebRequest,並以Stream方式把資料POST給LINE網頁將訊息送出
其中,訊息要換行時,使用"%0D%0A"換行
Private Sub default_Load(sender As Object, e As EventArgs) Handles Me.Load
        'A.接收參數
        Dim user As String = Request.QueryString("user")
        Dim value As String = Request.QueryString("value")
   
        'B.轉送到LINE Notify:
        Dim request1 As WebRequest = WebRequest.Create("https://notify-api.line.me/api/notify")
        request1.Method = "POST"
        '
        request1.Headers.Set("Authorization", "Bearer 你的Token")
        Dim postData As String = "message=%0D%0A用戶:" & user & "%0D%0A偵測器發現有害氣體濃度過高(數值=" & value & ")。%0D%0A時間:" & Now().ToString("yyyy/MM/dd HH:mm")
        Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData)
        request1.ContentType = "application/x-www-form-urlencoded"
        request1.ContentLength = byteArray.Length
        Dim dataStream As Stream = request1.GetRequestStream()
        dataStream.Write(byteArray, 0, byteArray.Length)
        dataStream.Close()
        Dim response As WebResponse = request1.GetResponse()
        Console.WriteLine(CType(response, HttpWebResponse).StatusDescription)
        dataStream = response.GetResponseStream()
        Dim reader As New StreamReader(dataStream)
        Dim responseFromServer As String = reader.ReadToEnd()
        Console.WriteLine(responseFromServer)
        reader.Close()
        dataStream.Close()
        response.Close()
End Sub
訊息內容