2014年8月7日 星期四

IOT(Internet of Things) Using Arduino MCU ABC - Session 3


接下來看一下 Arduino MCU + Analog/Digital Sensor 的簡單示範範例(溫溼度計) :

Arduino Mega2560 + DHT11 Sensor(Without LED Shield)
此圖由 fritzing 製作而成, 請自行下載使用

再來看看真實的Arduino在IOT 的實際應用, 由 Arduino AVR + Digital Seosor(DHT 11) + 1602 LCD Keypad Shield + LED, 所組合而成的簡易型溫濕度計, 如下圖
                                               Arduino Mega2560 +LCD Keypad Shield + DHT11 Sensor+Red LED

要如何讓溫濕度的感應器(DHT11 Sensor)所測得的數據顯示在 2*16 的LCD 螢幕上, 同時更新 溫濕度數據時, 讓紅色的LED燈亮一下, 這樣我們也可以看到溫濕度感應器(DHT11 Sensor, PIC 3-1)是有作用中, 所以來看一下 Arduino IDE 的 程式是如何寫的:

PIC 3-1



/*    將DHT11測得的溫濕度顯示在LCD顯示器 */ 

#include <LiquidCrystal.h>    //使用LiquidCrystal Library 
#include <dht11.h>                 //使用DHT11 Library
LiquidCrystal lcd(8,9,4,5,6,7);  //初始設定LCD1602 Keypad 的顯示器的介面 
dht11 DHT11;     //定義DHT11 物件
#define DHT11PIN 2  //定義讀取資料的 Pin腳 

void setup() {     
   lcd.begin(16, 2);  // 設定LCD有2列16欄  
      Serial.begin(9600);  

void loop() {  
   lcd.setCursor(0, 0); //將游標設定在第一行第一個位置(column 0, line 1)  
   int chk = DHT11.read(DHT11PIN);  //檢查DHT感測器的回應  

      switch (chk) {     
   case 0:       
     lcd.print("Humidity:");       
     lcd.print((float)DHT11.humidity, 1);       
     lcd.print("%");       
     lcd.setCursor(0, 1);       
     lcd.print("Tempure:");       
     lcd.print((float)DHT11.temperature, 1);       
     lcd.print("oC");     // 無法顯示度,只好用小寫的O表示  
     digitalWrite(3, HIGH);   
     delay(1000);//Wait rest of 1 second recommended delay before
        //accessing sensor
     digitalWrite(3, LOW);
           break;     
   case -1:       
     lcd.print("Checksum error"); 
     break;     
   case -2:       
     lcd.print("Time out error"); 
     break;     
   default:       
     lcd.print("Unknown error"); 
     break;   
   }  
   delay(1000);  //延遲 1 秒

另一個 Arduino OOwatch 智慧手錶原型範例:

這個實驗用的電子材料使用的是: Arduino Pro MINI 328(MainBoard) + HC05(BLUE TOOTH Device)+SSD3016 SPI模式  雙色 0 .96" OLED 背光螢幕 + 8鍵 KEYPAD MODULE + USB to UART module (FTDI) Transfer compiled program to  Arduino Pro Mini + 3.7V 電池


2014年7月30日 星期三

IOT(Internet of Things) Using Arduino MCU ABC - Session 2

IOT(Internet of Things) Using Arduino MCU ABC - Session 2

Arduino MCU(8/16 位元微型控制板), 是義大利開發的 開放原始碼(open source) 的軟硬體平台, 所以有很多國家的工廠在生產, 同樣規格或變更/加強 Arduino 原始規格的微控制(MCU)電子元件/線路的複製或改良的微控制板(MCU).

 由於使用者的不同實驗目的或生產產品的功能定位, 所以Arduino AVR 有一系列的不同規格的微型控制板(MCU), 大概可分為以下幾種系列 Uno, Mega2560, Duemilanove, Mega, or Diecimila ..等(請參考原廠的 MCU &amp; Accessory Series 介紹, 其網址如右所示: Arduino.cc Hardware Reference):



                                             規格比較(Compare Specs)
NameProcessorOperating Voltage/Input VoltageCPU SpeedAnalog In/Out   Digital
IO/PWM
            EEPROM[KB]          SRAM[KB]  Flash[KB]             USB          UART
UnoATmega3285V/7-12V16Mhz6/014/61232             Regular1
DueAT91SAM3X8E3.3V/7-12V84Mhz6/054/15                                  -965122            Micro4
LeonardoATmega32u45V/7-12V16Mhz6/054/1512.532              Micro1
Mega2560ATmega25605V/7-12V16Mhz16/054/1548256             Regular4
Mega ADKATmega25605V/7-12V16Mhz16/054/1548256             Regular4
MicroATmega32u45V/7-12V16Mhz12/020/712.532              Micro1
MiniATmega3285V/7-9V16Mhz8/014/61232                  -                  -
NanoATmega1685V/7-9V16Mhz8/014/60.512116              Mini-B1
NanoATmega3285V/7-9V16Mhz8/014/61232              Mini-B1
EthernetATmega3285V/7-12V16Mhz6/014/41232             Regular                  -
EsploraATmega32u45V/7-12V16Mhz--12.532              Micro                  -
ArduinoBTATmega3285V/2.5-12V16Mhz6/014/61232                  -1
FioATmega328P3.3V/3.7-7V8Mhz8/014/61232              Mini1
Pro (168)ATmega1683.3V/3.35-12V8Mhz6/014/60.512116                  -1
Pro (328)ATmega3285 V/5-12V16Mhz6/014/61232                  -1
Pro MiniATmega1683.3V/3.35-12V8Mhz6/014/60.512116                  -1
Pro MiniATmega1685V/5-12V16Mhz6/014/60.512116                  -1
LilyPadATmega168V2.7-5.5V8Mhz6/014/60.512116                  -                  -
LilyPadATmega328V2.7-5.5V8Mhz6/014/60.512116                  -                   -
LilyPad USBATmega32u43.3V/3.8-5V8Mhz4/09/412.532               Micro                  -
LilyPadSimpleATmega3282.7-5.5V/2.7-5.5V8Mhz4/09/41232                   -                  -
LilyPadSimpleSnapATmega3282.7-5.5V/2.7-5.5V8Mhz4/09/41232                   -                  -
Yún(Dual CPU MCU)      ATmega32u4 5V/5V  16Mhz      12/0 20/7     1 2.5 32Type-A
                   Atheros AR9331 
UnoATmega3285V/7-12V16Mhz6/014/61232             Regular1
DueAT91SAM3X8E3.3V/7-12V84Mhz6/054/15                                  -965122            Micro4
LeonardoATmega32u45V/7-12V16Mhz6/054/1512.532              Micro1
Mega2560ATmega25605V/7-12V16Mhz16/054/1548256             Regular4
Mega ADKATmega25605V/7-12V16Mhz16/054/1548256             Regular4
MicroATmega32u45V/7-12V16Mhz12/020/712.532              Micro1
MiniATmega3285V/7-9V16Mhz8/014/61232                  -                  -
NanoATmega1685V/7-9V16Mhz8/014/60.512116              Mini-B1
NanoATmega3285V/7-9V16Mhz8/014/61232              Mini-B1
EthernetATmega3285V/7-12V16Mhz6/014/41232             Regular                  -
EsploraATmega32u45V/7-12V16Mhz--12.532              Micro                  -
ArduinoBTATmega3285V/2.5-12V16Mhz6/014/61232                  -1
FioATmega328P3.3V/3.7-7V8Mhz8/014/61232              Mini1
Pro (168)ATmega1683.3V/3.35-12V8Mhz6/014/60.512116                  -1
Pro (328)ATmega3285 V/5-12V16Mhz6/014/61232                  -1
Pro MiniATmega1683.3V/3.35-12V8Mhz6/014/60.512116                  -1
Pro MiniATmega1685V/5-12V16Mhz6/014/60.512116                  -1
LilyPadATmega168V2.7-5.5V8Mhz6/014/60.512116                  -                  -
LilyPadATmega328V2.7-5.5V8Mhz6/014/60.512116                  -                   -
LilyPad USBATmega32u43.3V/3.8-5V8Mhz4/09/412.532               Micro                  -
LilyPadSimpleATmega3282.7-5.5V/2.7-5.5V8Mhz4/09/41232                   -                  -
LilyPadSimpleSnapATmega3282.7-5.5V/2.7-5.5V8Mhz4/09/41232                   -                  -
Yún(Dual CPU MCU)      ATmega32u4 5V/5V  16Mhz      12/0 20/7     1 2.5 32Type-A
                   Atheros AR9331      










Linux microprocessor
ProcessorAtheros AR9331
ArchitectureMIPS @400MHz
Operating Voltage3.3V
EthernetIEEE 802.3 10/100Mbit/s
WiFiIEEE 802.11b/g/n
USB Type-A2.0 Host
Card ReaderMicro-SD only
RAM64 MB DDR2
Flash Memory16 MB

Arduino  MCU 區分了如此多的系列, 無非就是考量終端使用者的使用需求, 有些人需要外接的

控制元件的多寡 Arduino 的控制程式語言使用了類似 Java,C 語言的 Arduino Programming Language(Base on Processing / Wiring) 開發環境, 閣下可以使用官方的 Arduino IDE 程式控制碼編

譯軟體來編譯及下載到微控制板上(**不過有些微形控制板(MCU)是無法被直接下載已經編譯

的程式碼, 還需經過 RS-232 <-> USB 的線路轉換後, 才能從 Arduino IDE 下載至 MCU 上).

Arduino IDE 編譯器可以在官方 Arduino.cc 網站的 Arduino IDE Software Download 的網址取得所

需的免費程式控制碼編譯軟體.

2014年7月28日 星期一

IOT(Internet of Things) Using Arduino MCU ABC

Arduino 是一個名片大小的電子電路控制板,也可以說是一個開放原始碼8/16位元微電腦自動控制電路板,在 2005 年由幾位義大利教授所創造, 而其原始動機只是想讓不懂自動控設計的藝術家也可以用簡單的方式來設計出具有人機互動科技的藝術作品。
Arduino 使用了 Atmel AVR 單晶片的微控制板,是一個基於開放原始碼的軟硬體平台,構建於開放原始碼 simple I/O 介面板,使用類似 Java,C 語言的 Arduino Programming Language(Base on Processing / Wiring) 開發環境。

Arduino 讓您可以快速與 Macromedia Flash, Processing,Max/MSP,Pure Data ...等軟體作出互動
作品,延伸使用到創意設計、藝術家等任何有趣的開發互動式物件及環境。
一般使用者可以很輕易的在 Arduino 微控制板上設計及插上各種不同功能的電子裝置,例如 溫濕度感測器、煙霧感測器、LCD 顯示裝置、直流馬達、步近馬達、LED 燈、紅外線發射與接收器,也可以接上 網路模組(Ethernet)、無線網路模組(WiFi)、藍芽模組(Bluetooth)、無線電收發模組(RFID)、全球定位接收儀模組(GPS) 等各種通訊模組。
如果會寫一些自動控制程式或是簡單的按照 Arduino 的 Library 範例,就能利用 Arduino 很輕易的建置不同使用目的的軟硬體設計的自動控制實驗應用。

例如,利用溫度感測器及繼電器模組來控制外接馬達的運轉的控制、高感度聲音感測器來開啟/關閉電燈裝置、使用可變電阻零件來控制燈光的亮度明暗、利用紅外線感測器來遙控 家電/機器車/機器狗...等、或利用伺服機模組(Servo Module)來控制機器手臂、機器人,以及機器狗、四軸飛行器.....等等。