วันเสาร์ที่ 26 มกราคม พ.ศ. 2562

ทฤษฎี สป.10

สอนใช้งาน GY-521 IMU 3-axis Accelerometer/Gyro Module (MPU6050) กับ arduino



ตัวอย่างการใช้งาน

MPU6050 ->  Arduino
Vcc -> 5V
GND -> GND
SCL -> A5
SDA -> A4





 ตัวอย่าง Code  

#include "I2Cdev.h"
#include "MPU6050.h"
#include "Wire.h"
MPU6050 mpu;
int16_t ax, ay, az;
int16_t gx, gy, gz;
int valx , valy , valz;
char rd;
int prevVal;
int led = 13 ;
int pin11 = 11 , pin10 = 10 ;
int val1 , val2 ;
int valgy1 = 0 , valgy2 = 0;
void setup() 
{
pinMode(led,OUTPUT) ;
Wire.begin();
Serial.begin(38400);
Serial.println("Initialize MPU");
mpu.initialize();
Serial.println(mpu.testConnection() ? "Connected" : "Connection failed");
}
void loop() 
{
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
valx = map(ax, -17000, 17000, 0, 179);
valy = map(ay, -17000, 17000, 0, 179);
valz = map(az, -17000, 17000, 0, 179);
Serial.print("axis x = ") ; 
Serial.print(valx) ; 
Serial.print(" axis y = ") ; 
Serial.print(valy) ; 
Serial.print(" axis z = ") ; 
Serial.println(valz) ; 
delay(100);
}

อ้างอิง

https://www.myarduino.net

ทฤษฎี สป.9

สอนใช้งาน Arduino สัญญาณ 

Digital OutPut ควบคุมไฟวิ่ง







การกำหนดหลอดไฟ LED ติด จะใช้คำสั่ง HIGH
digitalWrite(led1,HIGH); สั่งให้ขา2 arduino เป็น HIGH ทำให้ไฟไหลผ่าน LED ลง GND ได้
digitalWrite(ขาของarduinoที่จะควบคุม,ตำแหน่งควบคุมลอจิ H L);
การกำหนดหลอดไฟ LED ดับ จะใช้คำสั่ง LOW
digitalWrite(led1,LOW); สั่งให้ขา2 arduino เป็น LOW ทำให้ไฟไหลผ่าน LED ไม่ได้เราจะใช้สั่ง delay ในการคงสถานะการติดของไฟ
delay(50); ห
น่วงเวลา 50ms

โค้ดสั่งการ
1
int led1 = 2; // กำหนดขาใช้งาน
2
int led2 = 3;
3
int led3 = 4;
4
int led4 = 5;
5
int led5 = 6;
6
void setup()
7
{
8
pinMode(led1, OUTPUT); // กำหนดขาทำหน้าที่ให้ขา 2 เป็น OUTPUT
9
pinMode(led2, OUTPUT); // กำหนดขาทำหน้าที่ให้ขา 3 เป็น OUTPUT
10
pinMode(led3, OUTPUT); // กำหนดขาทำหน้าที่ให้ขา 4 เป็น OUTPUT
11
pinMode(led4, OUTPUT); // กำหนดขาทำหน้าที่ให้ขา 5 เป็น OUTPUT
12
pinMode(led5, OUTPUT); // กำหนดขาทำหน้าที่ให้ขา 6 เป็น OUTPUT
13
14
digitalWrite(led1,LOW);
15
digitalWrite(led2,LOW);
16
digitalWrite(led3,LOW);
17
digitalWrite(led4,LOW);
18
digitalWrite(led5,LOW);
19
}
20
void loop()
21
{
22
digitalWrite(led1,HIGH); // ไฟ LED 1 ติด 50 ms
23
delay(50);
24
digitalWrite(led1,LOW); // ไฟ LED 1 ดับ50 ms
25
delay(50);
26
digitalWrite(led2,HIGH);
27
delay(50);
28
digitalWrite(led2,LOW);
29
delay(50);
30
digitalWrite(led3,HIGH);
31
delay(50);
32
digitalWrite(led3,LOW);
33
delay(50);
34
digitalWrite(led4,HIGH);
35
delay(50);
36
digitalWrite(led4,LOW);
37
delay(50);
38
digitalWrite(led5,HIGH);
39
delay(50);
40
digitalWrite(led5,LOW);
41
delay(50);
42
}












ทฤษฎี สป.8





วิธีการต่ออุปกรณ์ สอนใช้งาน NodeMCU ESP8266 เชื่อมต่อ 
DHT11 เซ็นเซอร์วัดอุณหภูมิและความชื้น แสดงค่าผ่าน wifi web server
  1. NodeMCU ESP8266 -> DHT11
  2. Vin -> ขา +
  3. GND -> ขา -
  4. D1 -> ขา out

/*********
Rui Santos
Complete project details at http://randomnerdtutorials.com
*********/
// Including the ESP8266 WiFi library
#include <ESP8266WiFi.h>
#include "DHT.h"
// Uncomment one of the lines below for whatever DHT sensor type you're using!
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
// Replace with your network details
const char* ssid = "my_arduino";
const char* password = "0927566556";
// Web Server on port 80
WiFiServer server(80);
// DHT Sensor
const int DHTPin = 5;
// Initialize DHT sensor.
DHT dht(DHTPin, DHTTYPE);
// Temporary variables
static char celsiusTemp[7];
static char fahrenheitTemp[7];
static char humidityTemp[7];
// only runs once on boot
void setup() {
// Initializing serial port for debugging purposes
Serial.begin(115200);
delay(10);
dht.begin();
// Connecting to WiFi network
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// Starting the web server
server.begin();
Serial.println("Web server running. Waiting for the ESP IP...");
delay(10000);
// Printing the ESP IP address
Serial.println(WiFi.localIP());
}
// runs over and over again
void loop() {
// Listenning for new clients
WiFiClient client = server.available();
if (client) {
Serial.println("New client");
// bolean to locate when the http request ends
boolean blank_line = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (c == '\n' && blank_line) {
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
strcpy(celsiusTemp, "Failed");
strcpy(fahrenheitTemp, "Failed");
strcpy(humidityTemp, "Failed");
}
else {
// Computes temperature values in Celsius + Fahrenheit and Humidity
float hic = dht.computeHeatIndex(t, h, false);
dtostrf(hic, 6, 2, celsiusTemp);
float hif = dht.computeHeatIndex(f, h);
dtostrf(hif, 6, 2, fahrenheitTemp);
dtostrf(h, 6, 2, humidityTemp);
// You can delete the following Serial.print's, it's just for debugging purposes
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t Temperature: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(f);
Serial.print(" *F\t Heat index: ");
Serial.print(hic);
Serial.print(" *C ");
Serial.print(hif);
Serial.print(" *F");
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t Temperature: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(f);
Serial.print(" *F\t Heat index: ");
Serial.print(hic);
Serial.print(" *C ");
Serial.print(hif);
Serial.println(" *F");
}
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
// your actual web page that displays temperature and humidity
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<head></head><body><h1>ESP8266 - Temperature and Humidity Myarduino.net</h1><h3>Temperature in Celsius: ");
client.println(celsiusTemp);
client.println("*C</h3><h3>Temperature in Fahrenheit: ");
client.println(fahrenheitTemp);
client.println("*F</h3><h3>Humidity: ");
client.println(humidityTemp);
client.println("%</h3><h3>");
client.println("</body></html>");
break;
}
if (c == '\n') {
// when starts reading a new line
blank_line = true;
}
else if (c != '\r') {
// when finds a character on the current line
blank_line = false;
}
}
}
// closing the client connection
delay(1);
client.stop();
Serial.println("Client disconnected.");
}
}

อ้างอิง
https://www.myarduino.net

มินิโปรเจค

โปรเจค Arduino เปิด ปิดไฟ AC 220V ด้วยเสียง เปิดปิดไฟ AC 220V ด้วยเสียง          เรียนรู้วิธีควบคุม  Arduino  ด้วยเซ็นเซอร์เส...