顯示具有 Arduino 標籤的文章。 顯示所有文章
顯示具有 Arduino 標籤的文章。 顯示所有文章

2016年11月22日 星期二

Python-將資料送至 FireBase

隨著物聯裝置多樣性
儲存的資料也越來越多
相對的我們要在資料儲存要更方便才行
像是 ThingSpeak 是最常見的
這篇則是用 Google 提供的 FireBase

參考資料 : 透過 Python 傳送溫溼度資訊到 Google Firebase

2015年7月26日 星期日

2015年7月5日 星期日

Arduino-ESP8266 Wifi 模組


AT Command
功能
-AT
測試溝通
-AT+RST
重製裝置
-AT+GMS
顯示韌體版本

AT Command
功能
備註
-AT+CWMODE?
顯示模組現在的模式

-AT+CWMODE=1(123)
設定模組現在模式
1 . Station
2 . AP
3 . AP & Station
-AT+CWLAP
掃描周邊Wifi
Mode:1
若不是1,則無法掃描顯示
-AT+CWJAP
連線
PS : 
-AT+CWJAP="SSID","pass"
-AT+CWQAP
離線



AT Command
功能
備註
-AT+CIPSR
查詢IP位置

-AT+CIPSTART
連到伺服器
-AT+CIPSTART="TCP",
"www.yahoo.com.tw",80
-AT+CIPSTATUS
顯示連線位置

-AT+CIPSEND
發送訊息。先送字串Btye
-AT+CIPSEND=5
hello
-AT+CIPCLOSE
停止發送訊號


AT Command
功能
-+IPD
接收Service傳來的封包


2015年3月1日 星期日

Arduino-利用L298N控制馬達

或許大家都有些小疑問
L293D跟L298N最大差別在於?
價格?板子大小?
最主要的差別在於L293D的電流負荷沒L298來的大
所以通常用於微控馬達 ; 若要控制遙控車、自走車則是用L298較恰當

ENA、ENB是用來判斷是否要啟動 A-Bridge、B-Bridge

ENA : 5V
1N1 : 2
1N2 : 3
1N3 : 4
1N4 : 5
ENB : 5V
























若要更改轉動方向,請修改電壓高低,不可A-Bridge、B-Bridge都雙高或雙低
以下是示範程式碼 :

int aIn1 = 2;
int aIn2 = 3;
int bIn3 = 4;      
int bIn4 = 5;       

void setup()  
{
  pinMode(aIn1, OUTPUT);
  pinMode(aIn2, OUTPUT);
  pinMode(bIn3, OUTPUT);
  pinMode(bIn4, OUTPUT);    
}

void loop()
{
  
}

void selfTest()
{
  // 兩輪同時向前
  digitalWrite(aIn1, HIGH);
  digitalWrite(aIn2, LOW);
  digitalWrite(bIn3, HIGH);
  digitalWrite(bIn4, LOW);
  delay(500);
  
}


參考資訊 : CooperMaa

歡迎轉載,請註明出處

2015年2月25日 星期三

Arduino-超聲感測器

這次測試的是超聲波感測器,

HC-SR04
Vcc : 5V
Trig : 2
Echo : 3
Gnd : Gnd

1 . 參考來源 : 不錯
2 . 參考來源 : 多工

2015年2月23日 星期一

Arduino-步進馬達 A3967驅動板


利用兩輸入腳位控制步進馬達( 兩相四線 )


//定義腳位
#define DIR_PIN 2
#define STEP_PIN 3

//腳位模式
void setup() { 
  pinMode(DIR_PIN, OUTPUT); 
  pinMode(STEP_PIN, OUTPUT); 
} 

void loop(){ 

  //rotate a specific number of degrees 
  rotateDeg(360, 1); 
  delay(1000);

  rotateDeg(-360, .1);  //reverse
  delay(1000); 


  //rotate a specific number of microsteps (8 microsteps per step)
  //a 200 step stepper would take 1600 micro steps for one full revolution
  rotate(1600, .5); 
  delay(1000); 

  rotate(-1600, .25); //reverse
  delay(1000); 
}


//迴轉
void rotate(int steps, float speed){ 
  
  //先確認要正/逆時鐘,所以先確認腳位的高低電壓
  int dir = (steps > 0)? HIGH:LOW;
  steps = abs(steps);
      
  digitalWrite(DIR_PIN,dir); 

  float usDelay = (1/speed) * 70;

  
  for(int i=0; i < steps; i++){ 
    digitalWrite(STEP_PIN, HIGH); 
    delayMicroseconds(usDelay); 

    digitalWrite(STEP_PIN, LOW); 
    delayMicroseconds(usDelay); 
  } 
} 

//旋轉角度
void rotateDeg(float deg, float speed){ 
  //rotate a specific number of degrees (negitive for reverse movement)
  //speed is any number from .01 -> 1 with 1 being fastest - Slower is stronger
  int dir = (deg > 0)? HIGH:LOW;
  digitalWrite(DIR_PIN,dir); 

  int steps = abs(deg)*(1/0.225);
  float usDelay = (1/speed) * 70;

  for(int i=0; i < steps; i++){ 
    digitalWrite(STEP_PIN, HIGH); 
    delayMicroseconds(usDelay); 

    digitalWrite(STEP_PIN, LOW); 
    delayMicroseconds(usDelay); 
  } 
}

A3967 DateSheet : 連結在此
參考網址 : 連結在此

歡迎轉載,請註明出處

2015年2月7日 星期六

Arduino-紅外線 發送/接收 證明實驗

這幾天測試紅外線一直遇到讓人無奈的事

挑選紅外線LED記得要慎選( 記得一定要問元件規格!!! )
水藍色紅外線LED有可能是發射也有可能是接收!
但深色( 不透光 )的紅外線接收器很大的機率就是接收器了

要慎選!!!
要慎選!!!
要慎選!!!

因為紅外線的波長人類的肉眼是無法分析的,所以一定要有一個測試方法
但光一個儀器動輒就是幾張小朋友
今天我們就以簡單的電路來實測紅外線 發射( 發送 ) / 接收 電路

電路圖如下 :
注意 :
1 . 串接LED前一定要接電阻,避免直接讓元件燒毀。
2 . 發送 / 接收 的紅外線LED腳位不一樣的。



















未收到紅外線訊號( 燈亮 ) :
















收到紅外線訊號 ( 熄滅 ) :















實驗結果 :

紅外線接收器屬於被動元件
若接收到紅外線,則元件產生變化,讓電路導通;反之,則無法導通。

歡迎轉載,請註明出處。

2015年1月31日 星期六

Arduino-Arduino 基本概念與認知



















0 - 13 腳 : 數位輸入/輸出
數位腳位有標示PWM( ~ ) : 具有模擬類比信號輸出功能
A0-A5 ( 14-19 ) 腳 : 類比輸入腳( 無法類比訊號輸出 )
IOREF : 供應擴充版的電壓腳位

Arduino nano :
PWM : 3、5、6、9、10、11
有些必須先安裝USB驅動,不然是無法被認知的
位置 : usb-serial-ch340

  • Driver Version: 3.3.2011.11
  • Release Date: 2011-11-04
  • File Size: 41.02K
  • Supported OS: Windows XP 64bit, Windows Vista 64bit, Windows 7 64bit, Windows 8 64bit


電阻 : 用來阻礙電流的流動,避免元件直接被電流破壞。
電容 : 用來儲存電的容器,像是蓄水池般的穩定輸出,不會因為輸入不穩造成影響。
二極體 : 只准許電流單一流過

//參數設定
void setup()
{
  //腳位設定
}
//迴圈
void loop()
{
  //會不斷的執行主程式敘述
}


常用參數宣告方法

1 . 宣告腳位用途
pinMode( 腳位 , 動作 );
setup內設定
腳位 : 1-13 or A0-A5
動作
OUTPUT : 控制腳位
INPUT  : 接收感測器

2 . 設定腳位動作
digitalWrite(腳位,動作);
loop內設定
腳位 : 1-13 or A0-A5
動作
HIGH : 高電位
LOW  : 低電位

3 . 延遲
delay((單位 : 毫秒));
setup 、 loop 都可設定
delay(1000);//延遲一秒鐘
delay(60000);//延遲一分鐘

4 . 判斷腳位電壓強度
boolean var = digitalRead( 腳位 );
loop內設定
腳位 : 1-13 or A0-A5
var : 以2.5V為基準。以上則為高電壓;以下為低電壓。

5 . 讀取腳位參數
int sensorValue = analogRead(腳位);
loop內設定
腳位 :  A0-A5

6 . 設定腳位輸出電壓
analogWrite( 腳位, 範圍 );
腳位 : 必須是PWM( ~ ) 3、5、6、9、10、11
範圍 : 0 ~ 255 ( 0V ~ 5V )


本文章內容參考 : 超圖解 Arduino 互動設計入門 2
歡迎轉載,請註明出處。


2015年1月29日 星期四

Arduino-Arduino 藍芽模組

藍芽連線

目前有遇到的狀況 :
藍芽模組瑕疵( 無法接收,但能發送 )
藍芽模組和紅外線模組共用直流電來源,紅外線感測會有問題

先簡單PO接圖
接線圖


















藍芽模組 對 板子
VCC -> 5V( 注意 : 因為每個模組不支援到5V,若不確定請接到3.3V )
GND -> GND
TXD -> RX
RXD -> TX

基本上這樣就完成了
之後可能是Application 連結 或 模組的問題居多

Arduino.ino 程式碼 :
char val; 
void setup()
{
  Serial.begin(9600);
}

void loop()
{
  //接收端
  if( Serial.available() ) // if data is available to read 
  { 
   val = Serial.read();
   Serial.println(val);
  } 
  
  //發射端
  Serial.write('a');
  
  delay(1000);
}

#include<SoftwareSerial.h>
SoftwareSerial BT(10, 9);

const byte ledPin = 13;
char val;

void setup(){
  pinMode(ledPin,OUTPUT);
  BT.begin(9600);
  BT.println("BT is ready");
}
void loop(){
  if(BT.available()){
    val = BT.read();
    Serial.println(val);
  }
}


歡迎轉載,請註明出處。

2015年1月27日 星期二

Arduino-紅外線 接收 Example

這幾天剛好有這機會要測試有關紅外線的應用
話不多說,馬上開始吧 !
本人是使用Arduino UNO版本,若其他大大用不同的版本記得做修改的動作

首先去下載 Lib : 點這裡

並且更改下載後的檔案名稱

 將IRromote放置在














並將以下程式碼進編譯執行

#include <IRremote.h>
#include <IRremoteInt.h>


int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop()
{
  if (irrecv.decode(&results))
    {
     Serial.println(results.value, HEX); //results.value 為十進位數字

     irrecv.resume(); // Receive the next value
    }
}

如果是第一次編譯、執行,一定會發生以下的錯誤訊息
error: TKD2 was not declared in this scope
直接說白了,剛剛下載的Lib內有跟官方提供的Lib有衝突
目前看到最好的方法就是直接把官方提供的直接刪除
Arduino/libraries/RobotIRremote/src/IRremoteTools.h
Arduino/libraries/RobotIRremote/src/IRremoteTools.cpp
注意 : 盡量不要用搜尋的方式,要直接去檔案夾內一步一步尋找



2014年11月10日 星期一

Arduino-Upload 後 avrdude: stk500_getsync(): not in sync: resp=0x00

最近在玩Arduino UNO
卻發生avrdude: stk500_getsync(): not in sync: resp=0x00



結果只是藍芽裝置必須先拔除,不然無法同步更新
說真的只因為好懶呀~!

Arduino-藍芽發送資料( 測試藍芽功能是否正常 )

#define BUFFERSIZE 127
int numLoop = 0; // number of times we looped

void setup() {
  Serial.begin(9600);

}
void loop() {

  Serial.println(numLoop);
  char str[20];
  sprintf(str,"\nanalogRead,%d@",50);
  Serial.write(str);
  delay(5000);
  numLoop++;
}