2017年4月25日 星期二

Teensyduino (筆記 三) Teensy 3.6 Winsen MH-410D Sensor NDIR二氧化碳傳感器模組

****軟體使用 Teensyduino  1.36  + Arduino 1.82 ********

MH-410D 介紹

MH-410D 紅外氣體傳感器是通用型、智能型、微型傳感器,該红外傳感器利用非色散红外(NDIR)原理對空氣中存在的CO2進行探測,具有很好的選擇性,無氧氣依賴性,性能稳定、壽命長。内置温度補償。該红外傳感器是通過氣體將紅外光吸收氣體檢測技術與微型機械加工、精良電路設計緊密结合而制作出的小巧型高性能红外傳感器。

傳感器特點

高靈敏度、高分辨率、低功耗
提供UART、 類比電壓輸出方式
響應時間快
温度補償,卓越的線性輸出 ,優異的稳定性
使用壽命長
抗水氣干擾、不中毒

主要應用

     MH-410D 紅外傳感器可廣泛應用於室内空氣品質監控、工業過程及安全防護監控、農業及畜牧業生產過程監控。






接好線路後




#include <Adafruit_GFX.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_ILI9341.h>

#define TFT_RST   25       //LCM  接腳
#define TFT_DC    26
#define TFT_CS    27
#define TFT_MOSI  28
#define TFT_MISO  29
#define TFT_CLK   30

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO);


byte Read_Gas[]={0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79};  //Sensor 讀取指令
char Gas_Return[9];                                  


void setup()
{
    Serial2.begin(9600);
    tft.begin();                                          //LCM 啟始
    tft.fillScreen(ILI9341_BLACK);      //LCM 畫面更新為黑色
    tft.setRotation(1);                             // LCM 旋轉90度
}
void loop()
{

    Serial2.write(Read_Gas,9);               //
    Serial2.readBytes(Gas_Return, 9);        //讀取Sensor
    int responseHigh = (int) Gas_Return[2];
    int responseLow = (int) Gas_Return[3];
    float  o2 = (responseHigh*256+responseLow)*0.01;   //只有這裡不一樣

  tft.setCursor(0,0);
  tft.setTextSize(2);
  tft.fillRect(0,0,320,40,0);
  tft.print("02 = ");
  tft.print(o2);
  tft.print(" % ");
  delay(2000);
}

注意 MH-410D 通電後5~10分後數值才會正常



2017年4月24日 星期一

Teensyduino (筆記 二) Teensy 3.6 Winsen ZE03-O2 Sensor 電化學氧氣傳感器模組

ZE03-O2 介紹

  電化學模組ZE03-O2氧氣傳感器模组是高性能的、通用的電化學系列模组,它採用三電極化學氣體傳感器和高性能微處理器,搭載不同的氣體傳感器就可以測量對應的氣體。内置温度傳感器進行溫度補償,可精確的測量環境中的氣體濃度,同時具有數位輸出與類比電壓輸出,方便用户使用和調整,大大縮短了用户的設計研發周期。ZE03-O2氧氣傳感器模组將電化學傳感器和電路完美結合,滿足客户對不同氣體探測場合的需求。

傳感感器特點

高灵靈敏度、分辨率
低功耗
提供UART、類比電壓信號輸出方式
高稳定性、較强的抗干擾能力

主要應用

廣泛適用於携帶式、固定式氣體探測儀,以及各種氣體檢測的場合和設備。


傳感器附有鍍金接腳套筒


注意電化學傳感器對溫度非常敏感不可以在接腳上焊接!!


接好線後


    一切就緒後就可以上傳程式,Teensyduino 安裝好後就有Adafruit 的大部分 library 所以ILI9341.h 與GFX.h 不需另外下載 !!


#include <Adafruit_GFX.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_ILI9341.h>

#define TFT_RST   25       //LCM  接腳
#define TFT_DC    26
#define TFT_CS    27
#define TFT_MOSI  28
#define TFT_MISO  29
#define TFT_CLK   30

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO);


byte Read_Gas[]={0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79};  //Sensor 讀取指令
char Gas_Return[9];                                  


void setup()
{
    Serial2.begin(9600);
    tft.begin();                                          //LCM 啟始
    tft.fillScreen(ILI9341_BLACK);      //LCM 畫面更新為黑色
    tft.setRotation(1);                             // LCM 旋轉90度
}
void loop()
{

    Serial2.write(Read_Gas,9);               //
    Serial2.readBytes(Gas_Return, 9);        //讀取Sensor
    int responseHigh = (int) Gas_Return[2];
    int responseLow = (int) Gas_Return[3];
    float  o2 = (responseHigh*256+responseLow)*0.1;

  tft.setCursor(0,0);
  tft.setTextSize(2);
  tft.fillRect(0,0,320,40,0);
  tft.print("02 = ");
  tft.print(o2);
  tft.print(" % ");
  delay(2000);
}

上傳後 LCM 就會開始顯示目前氧氣的百分比。



2017年4月15日 星期六

Arduino MH-Z14 NDIR CO2 Sensor 測試

MH-Z14 原廠介紹

      MH-Z14二氧化碳氣體傳感器(以下簡稱傳感器)是一個智能通用型、小型傳感器,利用非色散紅外(NDIR)原理對空氣中存在的CO2進行探測,具有很好的選擇性和無氧氣依賴性,壽命長。內置溫度補償;同時具有數字輸出與模擬電壓輸出,方便使用。該傳感器是將成熟的紅外吸收氣體檢測技術與精密光路設計、精良電路設計緊密結合而製作出的高性能傳感器。

傳感器特點

高靈敏度、高分辨率、低功耗
提供UART、模擬電壓信號、PWM波形等多種輸出方式
響應時間快
溫度補償,卓越的線性輸出                        
優異的穩定性
使用壽命長
抗水汽干擾、不中毒

產品型號MH-Z14
檢測氣體二氧化碳
工作電壓4.5~5.5 V DC
平均電流< 85 mA
接口電平3.3 V
測量範圍0~5%VOL範圍內可選(詳見表2)
輸出信號0.4~2 V DC
UART
PWM
預熱時間3 min
響應時間T90 < 90 s
工作溫度0~50 ℃
工作濕度0~95% RH (無凝結)
外形尺寸57.5 mm×34.7 mm×17 mm(L×W×H)
重 量15 g
壽 命> 5年



這程式是使用 URAT 接口,板子使用 Arduino Mega2560 LCD 使用 2004 (4 *20)。


// 載入 LCD  Library
#include <LiquidCrystal.h>

//      LCD 接腳:  rs, enable, d4, d5, d6, d7 
LiquidCrystal  lcd(13, 12, 11, 10 , 9, 8);

// MH-Z14 初始化指令

byte QueqyPkt[]={0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79};  
char ResponsePkt[9]; 

void setup() {
 //設定 LCM 為 20*4
lcd.begin(20, 4);         

//設定Serial2
Serial2.begin(9600);
}

void loop() {
  
//寫入MH-Z14 指令 
Serial2.write(QueqyPkt,9);
//讀取MH-Z14
Serial2.readBytes(ResponsePkt, 9);

// 轉成十進位數值 要使用unsigned int 才不會變成負值

unsigned int responseHigh = (int) ResponsePkt[2];
unsigned int responseLow = (int) ResponsePkt[3];
unsigned int ppm = (256*responseHigh)+responseLow;

//在LCD上顯示CO2 濃度
lcd.setCursor(0, 0);  
lcd.print("CO2 = ");
lcd.setCursor(8,0); 
lcd.print(ppm);
lcd.print(" ppm     ");
delay(2000);
}




Teensyduino (筆記 一) Teensy 3.6 Teensyduino 安裝

 Teensy 3.6

    Teensy 3.6 具有帶浮點單元的32位元180 MHz ARM Cortex-M4處理器。所有數位和類比接腳為3.3伏特。不要對任何信號引腳施加超過3.3V的電壓。

極簡的包裝


沒焊接排針的  Teensy 3.6



 下載 Teensyduino  目前 1.36 版已經支援到Arduino 1.82 。

https://www.pjrc.com/teensy/td_download.html


下載後直接安裝 選擇 Arduino 存放位置 這裡是使用免安裝版本的 Arduino 1.82 。





     Windows 10 的作業系統下不需要特別安裝驅動程式。第一次插入Teensy 3.6 Windows 10 裝置管理員會是HID裝置。




        開啟安裝過 Teensyduino 的 Arduino 1.82 這時候在Arduino 也看不到 COM只要確認板子部分是選對的就好。底下顯示的COM10無須理會!



開啟Blink範例



上傳程式

   程式上傳後會跳出小對話視窗提醒需按一下Teensy 3.6 板上的按鈕開關 第一次上傳程式需手動去按Teensy 3.6 板上的按鈕開關 日後再次上傳時就會自動啟動。


完成後就可看到板上LED在閃爍


裝置管理員也會出現CMM


在 Teensyduino 也會出現 串列埠COM




2017年4月6日 星期四

Energia 筆記 (一) 使用 MSP430FR6989 LaunchPad

Energia 介紹

       Energia 是由  Robert Wessels於2012年1月開始的開放子原型平台,目的是將Arduino框架引入使用Texas Instruments MSP430的LaunchPad。Energia IDE是跨平台 Mac OS.Windows和Linux上都有支持。Energia使用Peter Bigot的  mspgcc  編譯器,Energia 包括整合開發環境(IDE),Energia 和 Arduino一樣是使用  Procssing 為基礎Energia也是可以在其他流行IDE中使用的便攜式框​​架/抽象層。也可以轉換  Energia 程式碼到 TI 的CCS IDE 
       新版的Energia 預設核心是MSP430 其他核心如 TivaC,CC3200,MSP432 可透過版子管理員安裝。

MSP430FR6989 LaunchPad 

     MSP-EXP430FR6989 LaunchPad 開發套件是使用 MSP40FR6989 微控制器 (MCU) 的易於使用的評估模塊 (EVM)。它包含在超低功耗 MSP430FRx FRAM 微控制器平台上開始開發所需要的全部資源,包括用於編程、調試和電能計量的板載仿真。該電路板具有可快速集成簡單用戶界面的板載按鈕和 LED,以及展示可驅動高達 320 段的集成驅動器的液晶顯示器 (LCD)。該電路板還提供對擴展掃描接口的直接訪問,該接口是為低功耗旋轉檢測創建的雙模擬前端 (AFE)。 MSP430FR6989 MCU採用 128 KB 的超低功耗嵌入式 FRAM(鐵電隨機存取存記憶體),FRAM是一種以超低功耗、高擦寫次數和高速寫入而聞名的非揮發性記憶體。

MSP-EXP430FR6989 特性 



使用 MSP ULP FRAM 的 MSP430FR6989 16 位 MCU

100 uA/MHz 開機模式和 350 nA 待機(具有 RTC 和 3.7 pF 晶體)
經ULPBench認證  得分 109
128KB FRAM
16 位元 RISC 架構,支持高達 8MHz 的 FRAM 讀取速度/16MHz 的系統時鐘速度
320 段 LCD 控制器
擴展掃描接口
16 通道 12 位元 ADC
比較器
5 個計時器
直接存儲器存取
256 位元 AES
83 個 GPIO
可用於超低功耗調試的 EnergyTrace++™ 技術
利用 BoosterPack 生態系統的 40 引腳 LaunchPad 標準
板載 eZ-FET 仿真
2 個按鈕和 2 個 LED,便於使用者互動

MSP-EXP430FR6989 LaunchPad  開箱




MSP-EXP430FR6989 LaunchPad  的背面


MSP-EXP430FR6989 LaunchPad  的接腳



Energia 下載安裝

到這裡下載最新版 Energia ,下載後直接解壓縮就好不用安裝

http://energia.nu/download/


MSP-EXP430FR6989 LaunchPad 與電腦連線,使用Win7 系統不需額外安裝驅動程式,裝置管理員會出現兩個COM , 上傳程式時要使用 MSP Application URAT1


MSP-EXP430FR6989 LaunchPad 通電時LCM會有展示程式


開啟下載解壓縮的Energia 檔案夾


執行Energia 



選擇目標板子與COM ,



開啟範例 >>01.Basics >> Blink


上傳程式 第一次上傳時Energia 會更新 MSP-EXP430FR6989 LaunchPad 的Boot load 會花費比較久的時間


上傳後就可看到板子上的LED1閃爍


Energia Blink 的程式碼
    
// most launchpads have a red LED
#define LED RED_LED

//see pins_energia.h for more LED definitions
//#define LED GREEN_LED
  
// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(LED, OUTPUT);     
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(LED, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(LED, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
}


     這一段程式碼跟Arduino幾乎一樣,差別在於LED並不是指定Pin腳Energia 的Pin定義可在這裡找到 \energia-1.6.10E18\hardware\energia\msp430\variants\MSP-EXP430FR6989LP