วันอังคารที่ 31 พฤษภาคม พ.ศ. 2559

LabView Temp on Excel

LabView Temp on Excel

ขั้นตอนที่ 1 นำ code โหลดลงบอร์ด Arduino

// test_DS1820
#include 
float celsius, fahrenheit;

OneWire  ds(10);  // on pin 10

void setup(void) {
  Serial.begin(9600);
}
void loop(void) { celsius = ReadTempDS1820(); if (celsius!=99999.9) { fahrenheit = celsius * 1.8 + 32.0; Serial.print("sensorValue = "); Serial.print(celsius); } } float ReadTempDS1820(void) { byte i; byte present = 0; byte type_s; byte data[12]; byte addr[8]; float celsius, fahrenheit; if ( !ds.search(addr)) { //Serial.println("No more addresses."); //Serial.println(); ds.reset_search(); delay(250); return 99999.9; } //Serial.print("ROM ="); for( i = 0; i < 8; i++) { //Serial.write(' '); //Serial.print(addr[i], HEX); } if (OneWire::crc8(addr, 7) != addr[7]) { //Serial.println("CRC is not valid!"); return 99999.9; } //Serial.println(); // the first ROM byte indicates which chip switch (addr[0]) { case 0x10: //Serial.println(" Chip = DS18S20"); // or old DS1820 type_s = 1; break; case 0x28: //Serial.println(" Chip = DS18B20"); type_s = 0; break; case 0x22: ////Serial.println(" Chip = DS1822"); type_s = 0; break; default: //Serial.println("Device is not a DS18x20 family device."); return 99999.9; } ds.reset(); ds.select(addr); ds.write(0x44,1); // start conversion, with parasite power on at the end delay(1000); // maybe 750ms is enough, maybe not // we might do a ds.depower() here, but the reset will take care of it.
present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad
//Serial.print(" Data = "); //Serial.print(present,HEX); //Serial.print(" "); for ( i = 0; i < 9; i++) { // we need 9 bytes data[i] = ds.read(); //Serial.print(data[i], HEX); //Serial.print(" "); } //Serial.print(" CRC="); //Serial.print(OneWire::crc8(data, 8), HEX); //Serial.println(); // convert the data to actual temperature unsigned int raw = (data[1] << 8) | data[0]; if (type_s) { raw = raw << 3; // 9 bit resolution default if (data[7] == 0x10) { // count remain gives full 12 bit resolution raw = (raw & 0xFFF0) + 12 - data[6]; } } else { byte cfg = (data[4] & 0x60); if (cfg == 0x00) raw = raw << 3; // 9 bit resolution, 93.75 ms else if (cfg == 0x20) raw = raw << 2; // 10 bit res, 187.5 ms else if (cfg == 0x40) raw = raw << 1; // 11 bit res, 375 ms // default is 12 bit resolution, 750 ms conversion time } return ((float)raw / 16.0); }

ขั้นตอนที่2 ต่อวงจรตามภาพด้านล่างเลยครับผม

ขั้นตอนที่3 ลองใช้ LabViewเพื่อทดสอบว่ามีการรีบค่าเข้ามาจาก Sensor จริงไหม

ขั้นตอนที่4 ผลที่ได้จะแสดงเป็นไฟล์ Excel (.xls) ในโฟลเดอร์ที่เราบันทึก

Share:

วันจันทร์ที่ 30 พฤษภาคม พ.ศ. 2559

Arduino TPIC6B595

Arduino TPIC6B595
สำหรับ การทดลองนี้จะมี Item ใหม่เข้ามาเพิ่มนั่นก็คือ ET-MINI TPIC6B595 
เป็นการทดลองเกี่ยวกับการทดลองใช้สายแพ เพื่อความสะดวกในการเชื่อมต่อ 
LED เข้ากับบอร์ด Arduino และลดจำนวนสายจัมป์เปอร์ลง
เพื่อทดลองควบคุม TPIC6B595 ผ่านสายแพด้วย Arduino โดยจะมีการ
เขียน code เพื่อควบคุม pin ต่างๆที่ได้กำหนดไว้แล้ว ต่อเข้ากับ Switch
และ LED แล้วใช้ Switch กดดูว่า LED ติดหรือไม่ สามารถทำตามขั้นตอน
ด้านล่างนี้ได้เลยครับ

Source Code สำหรับการทดลอง

//Pin to clear the register  
const int clearPin = 12;
//Pin connected to latch pin (RCK) of TPIC6B595
const int latchPin = 10;
//Pin connected to clock pin (SRCK) of TPIC6B595
const int clockPin = 11;
////Pin connected to Data in (SER IN) of TPIC6B595
const int dataPin = 9;

int counter = 0;
int numLedsInUse = 8;
int switch1 = 2;
int switch2 = 3;
int switch3 = 4;
int switch4 = 5;
int switch5 = 6;
int switch6 = 7;
int switch7 = 8;
int switch8 = A0;

void setup() {
//set pins to output because they are addressed in the main loop
pinMode(clearPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(switch1, INPUT_PULLUP);
pinMode(switch2, INPUT_PULLUP);
pinMode(switch3, INPUT_PULLUP);
pinMode(switch4, INPUT_PULLUP);
pinMode(switch5, INPUT_PULLUP);
pinMode(switch6, INPUT_PULLUP);
pinMode(switch7, INPUT_PULLUP);
pinMode(switch8, INPUT_PULLUP);

Serial.begin(9600);
Serial.println("*");

// Always start by setting SRCLR high
digitalWrite( clearPin, HIGH);

// delay a little and then set
delay(100);
}

void loop() {

if(digitalRead(switch1) == 0){
while(digitalRead(switch1)==0){
counter = 0;
registerWrite(counter, HIGH);
delay(10);
}
registerWrite(counter, LOW);
delay( 100 );
}

if(digitalRead(switch2) == 0){
while(digitalRead(switch2)==0){
counter = 1;
registerWrite(counter, HIGH);
delay(10);
}
registerWrite(counter, LOW);
delay( 100 );
}

if(digitalRead(switch3) == 0){
while(digitalRead(switch3)==0){
counter = 2;
registerWrite(counter, HIGH);
delay(10);
}
registerWrite(counter, LOW);
delay( 100 );
}

if(digitalRead(switch4) == 0){
while(digitalRead(switch4)==0){
counter = 3;
registerWrite(counter, HIGH);
delay(10);
}
registerWrite(counter, LOW);
delay( 100 );
}

if(digitalRead(switch5) == 0){
while(digitalRead(switch5)==0){
counter = 4;
registerWrite(counter, HIGH);
delay(10);
}
registerWrite(counter, LOW);
delay( 100 );
}

if(digitalRead(switch6) == 0){
while(digitalRead(switch6)==0){
counter = 5;
registerWrite(counter, HIGH);
delay(10);
}
registerWrite(counter, LOW);
delay( 100 );
}

if(digitalRead(switch7) == 0){
while(digitalRead(switch7)==0){
counter = 6;
registerWrite(counter, HIGH);
delay(10);
}
registerWrite(counter, LOW);
delay( 100 );
}

if(digitalRead(switch8) == 0){
while(digitalRead(switch8)==0){
counter = 7;
registerWrite(counter, HIGH);
delay(10);
}
registerWrite(counter, LOW);
delay( 100 );
}

}

// This method sends bits to the shift register:
void registerWrite(int whichPin, int whichState) {
Serial.println(whichPin);
// the bits you want to send
byte bitsToSend = 0;
// write number as bits
bitWrite(bitsToSend, whichPin, whichState);

// turn off the output so the pins don't light up
// while you're shifting bits:
digitalWrite(latchPin, LOW);
Serial.println(bitsToSend);
Serial.println("_");
// shift the bits out
shiftOut(dataPin, clockPin, MSBFIRST, bitsToSend);
// turn on the output so the LEDs can light up:
digitalWrite(latchPin, HIGH);
}


1.อัพโค้ดลงบอร์ดโลดเลยจร้า

2.ต่อวงจรตามที่ได้เขียนโค้ดเอาไว้

ในบอร์ด TPIC6B595 จะต้องต่อไฟเลี้ยงจากBoard Arduino และ Ground ให้กับบอร์ด ดังภาพ

และก็ต่อตามภาพหรือ โค้ดด้านบนเลยครับผม

ต้องต่อให้ถูกนะครับ ไม่งั้นไฟไม่ติดกดปุ่มไม่ได้
ส่วนผลการทดลองก็จะเป็นไปตา่ม Video ด้านบนเลยครับผม

Share:

วันอาทิตย์ที่ 29 พฤษภาคม พ.ศ. 2559

Node MCU(Client) Connect to Network

Node MCU(Client) Connect to Network
การทดลองนี้ทำเพื่อทดสอบว่า NodeMCU ของเรา
สามารถเชื่อมต่อเข้ากับ Internet ได้หรือไม่
ได้หากได้ จะแสดงผลลัพธ์ ออกมาเป็น
หมายเลข IP ของ NodeMCU
อุปกรณ์การทดลอง
1.Node MCU ESP8266
2.สายDATA Android
3.Notebook ของเรา 1 เครื่อง
4.โทรศัพท์ที่สามารถแชร์ Hotspot ได้
วิธีการทดลอง
1.ติดตั้ง Library ESP8266
2.ทดลองเปิดโปรแกรม Arduino IDE
3.ลองแชร์ Wifi จากโทรศัพท์ของเรา
4.โหลด code ด้านล่างลงบอร์ด
5.ดูผลลัพธ์ที่ได้
Code
#include 
const char* ssid = "sleep"; //อย่าลืมแก้เป็นชื่อ SSID ของตัวเอง
const char* password = "22222222"; //อย่าลืมแก้เป็นชื่อ password ของ
void setup()
{
Serial.begin(115200); //ตั้งค่าใช้งาน serial ที่ baudrate 115200
delay(10);
Serial.println();
Serial.println();
Serial.print("Connecting to "); //แสดงข้อความ “Connecting to”
Serial.println(ssid); //แสดงข้อความ ชื่อ SSID
WiFi.begin(ssid, password); // เชื่อมต่อไปยัง AP
while (WiFi.status() != WL_CONNECTED) //รอจนกว่าจะเชื่อมต่อสำเร็จ
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected"); //แสดงข้อความเชื่อมต่อสำเร็จ
Serial.println("IP address: ");
Serial.println(WiFi.localIP()); //แสดงหมายเลข IP ของ ESP8266(DHCP)
}
void loop() {}
ผลลัพธ์

Share:

วันเสาร์ที่ 28 พฤษภาคม พ.ศ. 2559

Node MCU GPIO Input

Node MCU GPIO Input
การทดลองนี้เพื่อทดลอง Input ของบอร์ด
ESP8266ว่าสามารถใช้ได้หรือไม่
อุปกรณ์
1.Node MCU ESP8266
2.สายจัมป์เปอร์
3.LED
4.Switch
5.Notebook ของเรา
วิธีการทดลอง
1.ทดลองต่อวงจรตาม code ที่เขียนไว้ โดยต่อ Input เป็น GPIO 04
ให้กับ Switch และต่อ Output เป็น GPIO 05 ให้ LED 
2.เมื่อต่อเสร็จแล้วนำโค้ด Load ลง ESP8266
3.ดูผลลัพธ์ ลองกดสวิทช์ ที่ต่อกับ
ESP8266 ว่าไฟ LED ติดหรือไม่
Code
void setup() {
     pinMode(5,OUTPUT);
     pinMode(4,INPUT_PULLUP);
}
void loop()
{ 
     if(!digitalRead(4))
          digitalWrite(5,LOW);
     else
          digitalWrite(5,HIGH);
}
Share:

วันศุกร์ที่ 27 พฤษภาคม พ.ศ. 2559

NodeMCU esp8266 Web server

esp8266 Web server
การทดลองนี้มีจุดประสงค์เพื่อทดสอบว่า
ESP8266 สามารถควบคุมจาก PC ผ่าน IP ของ
ESP8266 ได้หรือไม่

อุปกรณ์

1.LED
2.ESP8266
3.สายจัมป์เปอร์
4.Notebook 
5.โทรศัพท์ที่สามารถแชร์ Wifi ได้

วิธีการทดลอง

1.Load Code ลงบอร์ด
2.ต่อ LED ตาม GPIO ที่ได้เขียนไว้ใน Code
3.แชร์ Wifi จากโทรศัพท์ของเรา
4.ทดสอบเข้า IP ของ ESP8266 ด้วย Browser
5.ลองกด Switch LED ON ,LED OFF

Code

#include 
#define LED D0 //กำหนดขาที่ต่อ LED เป็นขา D0
const char* ssid = "sleep"; //กำหนด SSID (อย่าลืมแก้เป็นของตัวเอง)
const char* password = "22222222"; //กำหนด Password(อย่าลืมแก้เป็นของตัวเอง)
unsigned char status_led = 0; //กำหนดตัวแปร ที่เก็บค่าสถานะของ LED
WiFiServer server(80); //กำหนดใช้งาน TCP Server ที่ Port 80
void setup() {
Serial.begin(115200); //เปิดใช้ Serial
pinMode(LED, OUTPUT); //กำหนด Pin ที่ต่อกับ LED เป็น Output
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password); //เชื่อมต่อกับ AP
while (WiFi.status() != WL_CONNECTED) //รอการเชื่อมต่อ
{ delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected"); //แสดงข้อความเชื่อมต่อสำเร็จ
server.begin(); //เปิด TCP Server
Serial.println("Server started");
Serial.println(WiFi.localIP()); // แสดงหมายเลข IP ของ Server
}
void loop() {
WiFiClient client = server.available(); //รอรับ การเชื่อมต่อจาก Client
if (!client) { //ถ้าไม่มี Client เข้ามาให้เริ่มกับไปวน loop รอรับใหม่
return;
}
Serial.println("new client");
while (!client.available())
{
delay(1);
}
String req = client.readStringUntil('\r'); //อ่านค่าที่ได้รับจากclient จากข้อมูลแรกถึง ‘\r’
Serial.println(req); //แสดงค่าที่ได้รับทาง Serial
client.flush();
if (req.indexOf("/ledoff") != -1) //ตรวจสอบว่า data ที่เข้ามามีข้อความ”/ledoff”หรือไม่
{
status_led = 0; //ถ้ามีให้กำหนดค่า ในตัวแปรใน status_led=0
digitalWrite(LED, HIGH); //ให้ LED ดับ
Serial.println("LED OFF");
}
else if (req.indexOf("/ledon") != -1) //ตรวจสอบว่า data ที่เข้ามามีข้อความ”/ledon”หรือไม่
{
status_led = 1; //ถ้ามีให้กำหนดค่า ในตัวแปรใน status_led=1
digitalWrite(LED, LOW); //ให้ LED ติด
Serial.println("LED ON");
}
String web = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n";
web += "\r\n";
web += "\r\n";
web += "

LED Status

\r\n"; web += "

\r\n"; if(status_led==1) web += "LED On\r\n"; else web += "LED Off\r\n"; web += "

\r\n"; web += "

\r\n"; web += "\r\n"; web += "\r\n"; web += "\r\n"; web += "

\r\n"; web += "\r\n"; web += "\r\n"; web += "\r\n"; web += "\r\n"; web += "\r\n"; client.print(web); }

ผลลัพธ์:




Share:

วันพฤหัสบดีที่ 26 พฤษภาคม พ.ศ. 2559

NodeMCU TCP Hercules server

การทดลองนี้จะเป็นการทดลองใช้โปรแกรมHercules กับ ESP8266 
โดยให้ Hercules เป็น Server แล้ว ESP8266 เป็น Client 
ใน Arduino IDE จะต้องเขียนโปรแกรมให้เชื่อมต่อ กับ IP ของ Notebook 
และ SSID กับ Password ของ Wifi ที่ Notebook กำลังเชื่อมต่ออยู่
อุปกรณ์การทดลอง
1.โปรแกรม Hercules
2.Board MCU ESP8266
3.Notebook
4.โปรแกรม Arduino IDE
วิธีการทดลอง
1.เปิดโปรแกรม Hercules เลือกtab TCP Server แล้วตั้ง Port เป็น 8000
2.โหลด code ลง ESP8266 3.กดที่ Serial port มีลักษณะคล้ายแว่นขยาย 4.ทดสอบดูผลลัพธ์ว่า มีการเชื่อมต่อเข้ามาจาก Client หรือไม่ คำเตือน! อย่าลืมตั้ง Baudrate ให้ตรงกับที่ set ไว้ใน code จาก code จะเห็นว่า Baudrate คือ 115200
Code
#include 
#define SERVER_PORT 8000 //ค่า port ที่ต้องการเชื่อมต่อ
IPAddress server_ip = {192, 168, 43, 215}; //ค่า ip ของ Server (อย่าลืมแก้เป็น IP ของตัวเอง)
const char* ssid = "sleep"; //ค่าของ SSID (อย่าลืมแก้เป็น ชื่อ SSID ของตัวเอง)
const char* password = "22222222"; //ค่าของ SSID (อย่าลืมแก้เป็น password ของตัวเอง)
WiFiServer server(SERVER_PORT); //สร้าง object server และกำหนด port ที่ต้องการเชื่อมต่อกับ server
WiFiClient client; //สร้าง object client
void setup()
{
Serial.begin(115200); //เปิดใช้ Serial
WiFi.begin(ssid, password); //เชื่อมต่อกับ AP
while (WiFi.status() != WL_CONNECTED) //รอการเชื่อมต่อ
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP()); //แสดงหมายเลข IP
Serial.println("Connect TCP Server");
while (!client.connect(server_ip, SERVER_PORT)) //เชื่อมต่อกับ Server
{
Serial.print(".");
delay(100);
}
Serial.println("Success");
ESP.wdtDisable(); //ปิด watch dog Timer
}
void loop()
{
while (client.available()) //ตรวจเช็ตว่ามี Data ส่งมาจาก Server หรือไม่
{
uint8_t data = client.read(); //อ่าน Data จาก Buffer
Serial.write(data); //แสดงผล Data ทาง Serial
}
client.println("Hello"); //ส่งค่าที่ได้รับกลับไปยัง Server
delay(1000);
}
ผลลัพธ์ :
คราวนี้มาลองให้ Hercules เป็น Client แล้วให้ ESP8266 เป็น Server ดูบ้างครับ
#include 
#define SERVER_PORT 8000 //กำหนด Port ใช้งาน
const char* ssid = "sleep"; //กำหนด SSID
const char* password = "22222222"; //กำหนด Password
WiFiServer server(SERVER_PORT); //สร้าง object server และกำหนด port
void setup()
{ Serial.begin(115200); //เปิดใช้ Serial
Serial.println("");
Serial.println("");
WiFi.begin(ssid, password); //เชื่อมต่อกับ AP
while (WiFi.status() != WL_CONNECTED) //รอการเชื่อมต่อ
{ delay(500);
Serial.print(".");
}
Serial.println("WiFi connected"); //แสดงข้อความเชื่อมต่อสำเร็จ
Serial.println("IP address: ");
Serial.println(WiFi.localIP()); //แสดงหมายเลข IP
server.begin(); //เริ่มต้นทำงาน TCP Server
Serial.println("Server started"); //แสดงข้อความ server เริ่มทำงาน
ESP.wdtDisable(); //ปิด watch dog Timer
}
void loop()
{ WiFiClient client = server.available(); //รอรับ การเชื่อมต่อจาก Client
if (client) //ตรวจเช็คว่ามี Client เชื่อมต่อเข้ามาหรือไม่
{
Serial.println("new client"); //แสดงข้อความว่ามี Client เชื่อมต่อเข้ามา
while (1) //วนรอบตลอด
{ while (client.available()) //ตรวจเช็ตว่ามี Data ส่งมาจาก Client หรือไม่
{ uint8_t data = client.read(); //อ่าน Data จาก Buffer
Serial.write(data); //แสดงผล Data ทาง Serial
}
if (server.hasClient()) //ตรวจเช็คว่ายังมี Client เชื่อมต่ออยู่หรือไม่
{ return; //ถ้าไม่มีให้ออกจาก ลูป ไปเริ่มต้นรอรับ Client ใหม่
}
}
}
ผลลัพธ์:
Share:

วันพุธที่ 25 พฤษภาคม พ.ศ. 2559

NODEMCU-DS18B20 with ThingSpeak

NodeMCU-DS18B20-ThingSpeak

NODEMCU-DS18B20-ThingSpeak


เขียนโค้ดและโหลดลงบอร์ด NODEMCU ได้ดังนี้

#include <esp8266wifi .h>  
#include <onewire .h>  
#include <dallastemperature .h> 
#define ONE_WIRE_BUS D3 
const char* ssid = "MKY_true_FTTx"; // กำหนด SSID[Wifi] (อย่าลืมแก้เป็นของตัวเอง) 
const char* password = "08199928031"; // กำหนด Password [Wifi](อย่าลืมแก้เป็นของตัวเอง)"; 
String apiKey = "XY0S5VLCFF5BMNDK";  // API KEY ที่ได้จาก ThingSpeak
const char* server = "api.thingspeak.com";  
OneWire oneWire(ONE_WIRE_BUS); 
DallasTemperature sensors(&oneWire); 
WiFiClient client; 
void setup()
{ Serial.begin(115200); 
delay(1000);
sensors.begin();
Serial.println(); 
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"); 
Serial.println("IP address: "); 
Serial.println(WiFi.localIP()); 
} 
void loop() 
{ Serial.println("-------------------------");
Serial.print("Requesting temperatures...");
sensors.requestTemperatures(); // Send the command to get temperatures 
float cTemp = sensors.getTempCByIndex(0); 
Serial.print("Temperature is: "); Serial.println(cTemp, 4); // Display Temperature 
if (client.connect(server, 80)) // "184.106.153.149" or api.thingspeak.com 
{ String postStr = apiKey;  
postStr += "&field1="; 
postStr += String(cTemp); 
postStr += "\r\n\r\n"; 
client.print("POST /update HTTP/1.1\n");  
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n"); 
client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n"); 
client.print("Content-Type: application/x-www-form-urlencoded\n"); 
client.print("Content-Length: "); 
client.print(postStr.length()); 
client.print("\n\n"); 
client.print(postStr); 
Serial.print("Temperature('C)= "); 
Serial.println(cTemp, 4); 
} 
client.stop(); 
Serial.println("Waiting..."); 
delay(20000); // thingspeak needs minimum 15 sec delay between updates 
} 
   
Share:

วันอังคารที่ 24 พฤษภาคม พ.ศ. 2559

How to Remote Desktop Raspberry pi by Window(Raspberry Pi 2)

How to Remote Desktop(Raspberry Pi 2)

วิธีการ Remote เพื่อเข้าไปควบคุม Raspberry Pi

อุปกรณ์ที่ใช้
-Raspberry Pi 2 (Board)
-สาย Lan (Cross) ใช้เพื่อทำการแชร์ internet ให้กับ Raspberry pi
-Notebook หรือ PC ของเรา
-micro SD card (แนะนำเป็นขนาด 8 GB Class10 ขึ้นไป)
-สาย USB adroid เพื่อจ่ายไฟเลี้ยงให้กับบอร์ด
-หน้าจอMonitor (เพื่อความชัวร์ หรือ อาจไม่ใช้ก็ได้)
-สายHDMI (หรือ อาจไม่ใช้ก็ได้)
-หัวแปลง HDMI to VGA หรือ DVI (อาจไม่ใช้ก็ได้)

1.ขั้นตอนแรก Download Raspbian Jessie Install Raspberry Pi ใส่เข้าไปยัง micro SD card

-สามารถทำการ Download ได้ตามลิงค์ด้านล่างนี้ครับ
Download Raspberry Pi Jessie(Offline Network Install)
Link Reference->(Download NOOBS)
-เมื่อได้File Zip มาให้ทำการแตกไฟล์จะได้ 2016-05-10-raspbian-jessie.img -ทำการ Download Win32DiskManager เพื่อ Write file .img ใส่เข้าไปยัง micro SD card ให้สามารถรัน Raspberry Pi ได้ -
-คลิกที่
-เลือก Open
-Write
-นำ micro SD card ที่เตรียมไว้ใส่เข้าไปยัง board

2.ทำการ Install xrdp เพื่อให้สามารถ Remote เข้าไปยัง Raspberrypi(Rpi) ได้

เมื่อเข้ามาที่ Board (สำหรับผู้ที่มี หน้าจอMonitor)

ทำการเปิด Terminal บน Rpi ขึ้นมา
sudo apt-get install xrdp
ทำการ Expand Filesystem เพื่อให้สามารถใช้พื้นที่ได้อย่างเต็มเนื้อที่บน micro SD card

-Menu->Preference->-Raspberry Pi Configuration
-System->Filesystem: Expand Filesystem
-เรียบร้อย ทำการ Restart Raspberry pi ได้

3.ทำการ ตั้งค่า Remote Desktop

-Control panel -> System and Security -> System

-เลือก Remote Setting

-ติ๊กเครื่องหมายถูก Allow Remote Assistance connections to this computer -เปิด Remote Desktop Connection ขึ้นมา (Start->Remote Desktop Connection)
-กรอก ip ของเครื่อง Raspberry Pi -> connect -> Yes
-username:pi password:raspberry

Happy Ending(ขอบคุณครับ)

ปล.วิธีการหากรณีที่ไม่มีจอMonitor ip อาจจะใช้โปรแกรม Advance IP Scanner แล้ว แสกน ไปที่ขอบเขต ipตั้งแต่ (192.168.137.0 - 192.168.137.255) -เลือก Name:raspberrypi.mshome.net IP:192.168.137.XXX Manufacturer:Raspberry Pi Foundation MAC address X7:89:1X:11:12:XX จากนั้น ให้ใช้โปรแกรม putty เพื่อ remote เข้าไปยัง บอร์ด Raspberry pi username:pi password:raspberry
Share:

วันจันทร์ที่ 23 พฤษภาคม พ.ศ. 2559

Raspberry Pi Blink 3 LED by Python (Left to Right)

Blink 3 LED by Python (Left to Right)
การทดลองเพื่อเปิดไฟ LED จากซ้ายไปขวา
โดยใช้ GPioของบอร์ด Raspberry Pi

อุปกรณ์ที่ผมใช้ทำได้แก่

1.Raspberry pi board
2.สายไฟ Jumper (F-F)
3.LED@100

Link install RPi GPIO Library -> link 
ภาพแสดง GPIO ของบอร์ด RPi


sudo idle

File -> New File &-> save (ชื่อไฟล์).py



Run(F5)

ต่อวงจรตามที่ได้เขียนโค้ดไว้ได้เลยครัชผม
Share:

วันอาทิตย์ที่ 22 พฤษภาคม พ.ศ. 2559

Raspberry Pi Blink 3 LED Switch(Left to Right || Right to Left)

Raspberry Pi Blink 3 LED Switch(Left to Right || Right to Left)
การทดลอง เพื่อใช้สวิทช์กดปุ่มหนึ่ง เพื่อให้ LED เลื่อนตำแหน่ง
การกระพริบจาก ซ้ายไปขวด และ อีกปุ่มหนึ่ง เพื่อให้ LED
เลื่อนตำแหน่งจาก ขวาไปซ้าย
อุปกรณ์
1.Raspberry pi Board
2.LED 3 LED
3.Switch 2 Switch
วิธีการทดลอง
  ขั้นแรก พิมพ์
  sudo idle 
  File -> new หรือ open -> save  (ชื่อไฟล์).py
  ใส่ code รัวๆ


  run code (F5)
  จากนั้น ต่อวงจรตามที่ ได้ SET GPIO ไว้ตาม code ครับ
  ทดลอง กด สวิทช์ ที่ต่อกับ GPIO 16 จะทำให้ LED ขยับจาก GPIO 11 -> GPIO 12 -> GPIO 15 
        กดสวิทช์ ที่ต่อกับ GPIO 18 จะทำให้ LED ขยับจาก GPIO 15 -> GPIO 12 -> GPIO 11
Share:

วันเสาร์ที่ 21 พฤษภาคม พ.ศ. 2559

Raspberry Pi Read Temperature DS18B20 python

Read Temperature DS18B20
การทดลองอ่านค่าอุณหภูมิ ด้วย DS18B20 sensor เพื่อรู้ว่าขณะนี้อุณหภูมิ 
ในที่ๆเราอยู่ตอนนี้ มีอุณหภูมิเป็นตัวเลขกี่องศา
อุปกรณ์
1.DS18B20 Sensor
2.Raspberry Pi Board
3.Resistor 10k

สามารถ ทำได้ตามการทดลองดังนี้

sudo apt-get update
sudo apt-get install python-dev
sudo apt-get install python-rpi.gpio

sudo nano /boot/config.txt

you will see some syntax like this.

dtparam=i2c0=on
dtparam=spi=on
dtparam=is2=on
dtoverlay=w1-gpio

ทำการทดสอบ Sensor เพื่อให้รู้ว่า Sensor ทำงานหรือไม่

sudo modprobe w1-gpio
sudo modprobe w1-therm
cd /sys/bus/w1/devices
ls
cd 28-xxxxxxxxxxxx
ls
cat w1_slave


เขียน code (ชื่อไฟล์).py

import os
import glob
import time

os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')

base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'

def read_temp_raw():
        f = open(device_file, 'r')
        lines = f.readlines()
        f.close()
        return lines

def read_temp():
        lines = read_temp_raw()
        while lines[0].strip()[-3:] != 'YES':
                time.sleep(0.2)
                lines = read_temp_raw()
        equals_pos = lines[1].find('t=')
        if equals_pos != -1:
                temp_string = lines[1][equals_pos+2:]
                temp_c = float(temp_string) / 1000.0
                temp_f = temp_c * 9.0 / 5.0 + 32.0
                return temp_c, temp_f


while True:
        print"temperature = " + str(read_temp())
        time.sleep(0.3)


You Will See Result Below on Picture:
อ้างอิงจาก
ds3noob.org
matthewmoisen.com
Share:

วันศุกร์ที่ 20 พฤษภาคม พ.ศ. 2559

Raspberrypi-Temperature-ThingSpeak

Rpi-Temp-ThingSpeak
การทดลองอ่านค่าจาก DS18B20 เพื่อส่งอุณหภูมิจาก Raspberry Pi
เข้าไปยัง Web Thingspek เพื่อรู้ว่าอุณหภูมิที่ ตำแหน่งของบอร์ด 
Raspberry Pi มีกี่องศา อาจใช้ส่งข้อมูลอุณหภูมิระยะไกลได้
อุปกรณ์
1.Raspberry Pi Board
2.DS18B20 Sensor
3.Resistor 10k

Raspberrypi Temperature ThingSpeak

sudo nano /boot/config.txt

แก้ไขที่บรรทัด #dtoverlay=w1-gpio and เอาcommentออก dtoverlay=w1-gpio

Install DS18B20

sudo pip install ds18b20
sudo modprobe w1-gpio
sudo modprobe w1-therm

ทดสอบว่า sensor ใช้ได้ไหม

cat /sys/bus/w1/devices/28-XXXXXXXXXXX/w1_slave

ถ้าใช้ได้จะแสดงภาพดังนี้

จากนั้นก็ละเลงโค้ดสร้างไฟล์.py python

import requests
import httplib, urllib
import urllib2
import os
import glob
import time

api_key='7X4YOL4NSS4TYQ4S'
os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')

base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'

def read_temp_raw():
        f = open(device_file, 'r')
        lines = f.readlines()
        f.close()
        return lines

def read_temp():
        lines = read_temp_raw()
        while lines[0].strip()[-3:] != 'YES':
                time.sleep(0.2)
                lines = read_temp_raw()
        equals_pos = lines[1].find('t=')
        if equals_pos != -1:
                temp_string = lines[1][equals_pos+2:]
                temp_c = float(temp_string) / 1000.0
                temp_f = temp_c * 9.0 / 5.0 + 32.0
                return temp_c


while True:
        temp = str(read_temp())
        payload = {'api_key':api_key,'field1':temp}
        r = requests.post('https://api.thingspeak.com/update',params=payload)
        print"temperature = " + str(read_temp())
        time.sleep(0.3)

จะได้ผลลัพธ์ตามภาพดังนี้ อย่าลืมใส่ API KEY(Write) ที่ได้จากThingSpeak ของท่านด้วยนะครับ



Share:

วันพฤหัสบดีที่ 19 พฤษภาคม พ.ศ. 2559

Control LED from ThingSpeak

Control LED from ThingSpeak
การทดลองนี้ใช้ทำเพื่อควบคุม LED เปิดปิดไฟจาก Web Browser
อาจใช้ในการทดลองจากระยะไกล ที่เราสามารถเข้า Internet
โดยมีบัญชี  Thingspeak ก็สามารถเข้าไปควบคุมหลอดไฟ LED
ได้ครับผม
หลักการทำงานของการ ควบคุม LED ผ่าน Thing Speak ด้วย python คือ
สร้างไฟล์ python เพื่อรับค่าจากข้อมูลที่เรากรอกจากเว็บ
อย่างเช่น 
https://api.thingspeak.com/update?key=(Write_key)&field1='ค่าของตัวแปรเช่น 100'
หมายความว่า จะ Write 100 ไปที่ field1 ที่เราได้สร้างเอาไว้
เหมือนกับการ Remote ผ่าน web thingspeak ของเรา นั่นเอง
อุปกรณ์
1.Raspberry pi Board
2.LED
3.สายไฟ
4.BreadBoard
Code python ThingSpeak Control LED
import requests
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11,GPIO.OUT)
GPIO.setup(12,GPIO.OUT)
GPIO.setup(15,GPIO.OUT)

while(True):
    r = requests.get('https://api.thingspeak.com/channels/121493/fields/1/last')
    print r.text
    if(r.text == '000'):
        GPIO.output(11,True)
        GPIO.output(12,True)
        GPIO.output(15,True)
        print "LED all Turnoff"
    if(r.text == '100'):
        GPIO.output(11,False)
        GPIO.output(12,True)
        GPIO.output(15,True)
        print "LED1 Turnon"
    if(r.text == '010'):
        GPIO.output(11,True)
        GPIO.output(12,False)
        GPIO.output(15,True)
        print "LED2 Turnon"
    if(r.text == '001'):
        GPIO.output(11,True)
        GPIO.output(12,True)
        GPIO.output(15,False)
        print "LED3 Turnon"
    if(r.text == '110'):
        GPIO.output(11,False)
        GPIO.output(12,False)
        GPIO.output(15,True)
        print "LED110 Turnon"
    if(r.text == '101'):
        GPIO.output(11,False)
        GPIO.output(12,True)
        GPIO.output(15,False)
        print "LED101 Turnon"
    if(r.text == '011'):
        GPIO.output(11,True)
        GPIO.output(12,False)
        GPIO.output(15,False)
        print "LED011 Turnon"
    if(r.text == '111'):
        GPIO.output(11,False)
        GPIO.output(12,False)
        GPIO.output(15,False)
        print "LED111 Turnon"

Result in python
Result in Field Chart

อ้างอิงจาก
http://www.instructables.com/id/An-inexpensive-IoT-enabler-using-ESP8266/step8/View-and-control-through-Thingspeakcom/
Share:

วันพุธที่ 18 พฤษภาคม พ.ศ. 2559

Google Spread Sheet Temperature with python Raspberry pi

Google Spread Sheet Temperature with python Raspberry pi
การทดลองนี้เพื่อส่งค่าอุณหภูมิจาก Raspberry Pi เข้าไปเก็บไว้
ใน Google Spread Sheet ที่เราสร้างไว้

อุปกรณ์การทดลอง

1.Raspberry pi Board
2.สาย LAN สำหรับ Remote จาก PC
3.Resistor 10k
4.DS18B20 sensor

ขั้นตอนการเตรียมการ

$ sudo apt-get install python-smbus
$ sudo apt-get install i2c-tools
$ sudo raspi-config
Select "Advanced Options"
Select "I2C"
Select "Yes"
Select "Yes"

$ sudo apt-get update
$ sudo apt-get install python-pip
$ sudo pip install gspread oauth2client
$ sudo apt-get install python-openssl

Exception Can't install oauth2client

หากเจอปัญหา ไม่สามารถลง oauth2client ได้
แก้ไขได้โดย $ sudo python -m pip install --upgrade --force setuptools $ sudo python -m pip install --upgrade --force pip
อ้างอิงจาก link นี้

เตรียม OAuth.json download จาก Window แล้วนำไปใส่ใน Rpi

(1.)ไปยัง https://console.developers.google.com และ log in Google IDของท่าน
(2.)เลือก Create Credential -> OAuth client ID
(3.)เลือก Other แล้วตั้งชื่อ
(4.)Enable APi เพื่อให้สามารถเข้าถึง Google sheetได้
(5.)คลิก Download JSON จะได้ ไฟล์ .JSON มา แล้วนำไปไว้ใน RPi

เข้าไปสร้าง Google Sheet

สร้างไฟล์และตั้งชื่อ ตัวอย่างเช่น tempDS18B20

เตรียมการเรียบร้อย

ลุยโค้ดเลยจร้า


Code python for live temperature google sheet

import os
import glob
import time
import datetime
import gspread
from oauth2client.service_account import ServiceAccountCredentials

scope = ['https://spreadsheets.google.com/feeds']

credentials = ServiceAccountCredentials.from_json_keyfile_name('My Project Raspberry-8d52fa6a989c.json', scope)

gc = gspread.authorize(credentials)

wks = gc.open("tempDS18B20").sheet1         #ชื่อไฟล์ต้องตรงกับที่สร้างไว้ใน Google Sheet

os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')

base_dir = '/sys/bus/w1/devices/'

device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'

def read_temp_raw():
        f = open(device_file, 'r')
        lines = f.readlines()
        f.close()
        return lines

def read_temp():
        lines = read_temp_raw()
        while lines[0].strip()[-3:] != 'YES':
                time.sleep(0.2)
                lines = read_temp_raw()
        equals_pos = lines[1].find('t=')
        if equals_pos != -1:
                temp_string = lines[1][equals_pos+2:]
                temp_c = float(temp_string) / 1000.0
                temp_f = temp_c * 9.0 / 5.0 + 32.0
                return temp_c

        
while True:
        x = 0
        temp_c = read_temp()
        times = datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d %H:%M:%S')
        for values in wks.col_values(1):
                x = x + 1
        rowToAdd = [times,temp_c]
        wks.resize(x)
        wks.append_row(rowToAdd)
        print"temperature = " + str(read_temp())
        time.sleep(0.3)


Result:


Share: