Temperature Logger โดยใช้ Arduino

เล่น Arduino มาสัปดาห์นึง ลองทำ Temperature Logger ดู อุปกรณ์มี

  1. Arduino nano
  2. TMP175 I2C Temperature Sensor
  3. ESP8266 Wifi module
  4. 5V to 3.3V regulator module

ต่อ TX จาก Arduino เข้ากับ RX ของ Wifi module ตรงๆ ก็ใช้งานได้ แต่ไม่มั่นใจเลยใช้วงจร voltage divider เป็นตัวต้านทานขนาด 330 โอห์มจำนวน 3 ตัว ส่วนทางฝั่ง TX จาก Wifi module เข้า RX ของ Arduino ก็ต่อตรงเลยไม่มีปัญหาอยู่แล้ว

code arduino



#include 
#include 

#define SSID "SSID"
#define PASS "PASSWORD"
#define IP "api.thingspeak.com" //"184.106.153.149" // thingspeak.com

String GET = "GET /update?key=[ThingSpeakAPI-Key]&field1=";
SoftwareSerial esp8266(4, 3); // RX, TX
const int I2C_address = 0x48;  // I2C write address
byte TempHi;              // Variable hold data high byte
byte TempLo;              // Variable hold data low byte
float Decimal;     // Variable hold decimal value
int TempValue;
char TempString[7];   // Array to hold temperature string
void Cal_Temp();

void setup()
{
  Wire.begin();             // join i2c bus (address optional for master) 
  esp8266.begin(9600);
  Serial.begin(9600);
  sendDebug("AT");
  delay(5000);
  if(esp8266.find("OK")){
    Serial.println("RECEIVED: OK");
    connectWiFi();
  }
  delay(100);
  Wire.beginTransmission(I2C_address);
  Wire.write(0x01);             // Setup configuration register
  Wire.write(0x60);          // 12-bit
  Wire.endTransmission(); 
}

void loop(){
  Wire.beginTransmission(I2C_address);
  Wire.write(0x00);             // Setup Pointer Register to 0
  Wire.endTransmission(); 
  // Read temperature value
  Wire.requestFrom(I2C_address, 0x02);
  while(Wire.available())          // Checkf for data from slave
  {                                
    TempHi = Wire.read();       // Read temperature high byte
    TempLo = Wire.read();       // Read temperature low byte
  } 
  Cal_Temp (); // Decimal updated with latest temperature read
  String tempC = dtostrf(Decimal,4,1,TempString); // char buffered filled
  Serial.print(TempString);
  Serial.println(" degree C");
  Serial.print(TempHi, HEX);
  Serial.println(TempLo, HEX);
  updateTemp(tempC);
  delay(12000);
}

void updateTemp(String tempC){
  String cmd = "AT+CIPSTART=\"TCP\",\"";
  cmd += IP;
  cmd += "\",80";
  sendDebug(cmd);
  delay(2000);
  if(esp8266.find("Error")){
    Serial.print("RECEIVED: Error");
    return;
  }
  cmd = GET;
  cmd += tempC;
  cmd += "\r\n";
  esp8266.print("AT+CIPSEND=");
  esp8266.println(cmd.length());
  if(esp8266.find(">")){
    Serial.print(">");
    Serial.print(cmd);
    esp8266.print(cmd);
  }else{
    sendDebug("AT+CIPCLOSE");
  }
  if(esp8266.find("OK")){
    Serial.println("RECEIVED: OK");
  }else{
    Serial.println("RECEIVED: Error");
  }
}
void sendDebug(String cmd){
  Serial.print("SEND: ");
  Serial.println(cmd);
  esp8266.println(cmd);
} 
 
boolean connectWiFi(){
  esp8266.println("AT+CWMODE=1");
  delay(2000);
  String cmd="AT+CWJAP=\"";
  cmd+=SSID;
  cmd+="\",\"";
  cmd+=PASS;
  cmd+="\"";
  sendDebug(cmd);
  delay(5000);
  if(esp8266.find("OK")){
    Serial.println("RECEIVED: OK");
    return true;
  }else{
    Serial.println("RECEIVED: Error");
    return false;
  }
}

void Cal_Temp()
{
  
  TempValue = 0;
  TempValue = TempValue | (TempHi);
  TempValue = TempValue << 8;
  TempValue = TempValue | (0x00FF & TempLo);
  TempValue = TempValue >> 4;  
  
  Decimal = TempValue * 0.0625;
}
Posted in Uncategorized | Leave a comment

Windows 8.1 กับ Hitachi Touro Pro ตอนที่ 2

ความเดิมจาก ตอนที่ 1 หลังจากอัปเดตไดรเวอร์กับเฟิร์มแวร์แล้วทำให้ Hitachi Touro พอใช้งานกับ Windows 8.1 ได้บ้าง ผ่านมาจนถึงตอนนี้ได้ลองหาข้อมูลอีกครั้ง ปรากฏว่า Microsoft Windows USB Core Team ได้เขียนเรื่องนี้ไว้ใน blog ว่า harddisk drive บางตัวมีปัญหากับ windows เกี่ยวกับ suspend mode

ลองตรวจสอบ Hitachi Touro ดูก็พบว่ามี vendor id และ device id ตรงกับในรายการ drive ที่มีปัญหาใน blog ดังกล่าว คือ

USB\VID_4971&PID_1012

ทำตามวิธีการใน blog ก็ดูเหมือนว่าจะดีขึ้น แต่มีเรื่องแทรกซ้อนคือ Partition ใน drive มันหายไปไหนไม่รู้ กำลังดูว่ามีปัญหากับตัว drive จนต้องส่งเคลมหรือไม่

Posted in Uncategorized | Leave a comment

Windows 8.1 กับ Hitachi Touro Pro ตอนที่ 1

มีตอนที่ 2

จากก่อนหน้านี้ที่เคยเขียนไว้ว่า Windows 8 Release Preview มีปัญหากับ Hitachi Touro Pro 500GB และแก้ปัญหาไปด้วยการ update firmware และ driver ของ Renesas usb controller สุดท้ายก็ยังมีปัญหาอยู่บ้าง แต่ก็พอใช้งาน harddisk ตัวนี้ได้

ถึงตอนนี้ได้ upgrade เครื่องเป็น Windows 8.1 แล้ว มันก็ยังมีปัญหาเดิมอยู่ เลยลองดูว่ามี firmware หรือ driver ตัวใหม่ออกมาหรือเปล่า ผลคือมี update กว่าเดิม firmware จะเป็นรุ่น 3.0.3.4 วันที่ 09/07/2012 ส่วน driver จะเป็น 2.1.39.0 วันที่ 17/10/2012 ทั้งสองตัวออกมาได้ปีกว่าแล้ว

ติดตั้งทั้ง firmware และ driver ใหม่ (ตัวติดตั้ง firmware คราวนี้ใช้แบบ GUI ได้) แล้วลองใช้งาน harddisk เจ้าปัญหามาหลายชั่วโมงยังไม่เจอปัญหาอะไร เหมือนคราวนี้จะแก้ปัญหาได้เรียบร้อย

driver and firmware : http://www.station-drivers.com/index.php/10-drivers/42-renesas-nec

Posted in computer | Tagged , | Leave a comment

Wireless USB dongle กับ Snow Leopard

จับ Macbook White (mid-2007) มาทำเป็น music library หลังจากเช็คสภาพและปรากฏว่าแบตเสื่อม ก็ซื้อมาเปลี่ยนจาก usedmacshop วันนี้เจออีกปัญหาคือ wifi ไม่เสถียร ใช้ไปสักพักก็นิ่งไปเฉยๆ คิดว่าต้องหาแบบ usb มาใช้แทน

ลองหาข้อมูลจากใน google ก็พบว่าตัวที่ใช้ chipset ของ Ralink จะสามารถใช้งานกับ OS X ได้ วันนี้ (5 ธ.ค. 55) เลยไปเดินหาดูที่ mega bangna ก็เจอเจ้าตัวนี้ D-Link DWA-125 ตอนแรกตั้งใจหาของ Linksys รุ่นเล็กๆ แต่ไม่มีขาย มีแต่รุ่นแพงเว่อร์

dlink dwa 125

dlink dwa 125

หน้านี้ของ dlink.co.th บอกว่าเจ้าตัวนี้ใช้งานได้กับ 10.4 10.5 และ 10.6

วิธีติดตั้งกับ snow leopard (10.6.8)

  1. download driver จาก Ralink (จะ download จาก Ralink หรือจาก link ข้างล่างนี้ก็ได้ ถ้าจะ download จาก Ralink ให้เลือก USB(RT2870/RT2770/RT3X7X/RT537X))
  2. อย่าเพิ่งเสียบ wireless adapter กับเครื่องคอมพิวเตอร์ ให้ติดตั้ง driver ก่อน แล้ว restart
  3. หลัง restart เสร็จ จะเห็นไอคอน Ralink อยู่บน menu bar ให้เสียบ wireless adapter เข้ากับช่อง usb ที่คอมพิวเตอร์ได้ อย่าลืมปิด wifi ของตัว AirPort ด้วย
  4. โปรแกรม wireless utility ของ Ralink จะโผล่ขึ้นมา ให้ตั้งค่า wireless access point ก็จะใช้งานได้แล้ว
แค่นี้เอง

download Ralink driver (at trekkieland.info)

resources:

 

Posted in computer | Tagged , | Leave a comment

External harddisk problem in Windows 8 Release Preview

Update: ดูโพสต์นี้แทน Windows 8.1 กับ Hitachi Touro Pro

เพิ่งลง Windows 8 Release Preview ไปก็เจอปัญหากับ external harddisk ที่้เป็น usb 3.0 อย่าง Hitachi Touro Pro 500GB USB 3.0 มีปัญหาทั้ง

  1. detect ไม่เจอ
  2. detect เจอแต่ไม่ได้ drive letter
  3. ได้ drive letter แต่ทำงานช้ามาก

ในขณะที่เมื่อลองกับ Seagate GoFlex 500GB USB 3.0 กลับไม่มีปัญหาอะไรเลย

ลองไป post ถามคำถามนี้ใน forum ของ Microsoft ได้คำตอบว่าการ update firmware ของชิป NEC ที่อยู่บน main board จะแก้ปัญหาได้

Firmware update instruction: (GUI updater ใช้ไม่ได้กับ Gigabyte GA-880GA-UD3H และ Windows 7 64-bit)
http://pete.akeo.ie/2011/10/flashing-necrenesas-usb-30.html

download firmware ได้จาก
http://www.station-drivers.com/page/renesas.htm

Posted in computer | Tagged | 3 Comments

Page สำหรับ Thai to Unicode

คิดว่าจะต้องทำ Page สำหรับ Thai to Unicode ขึ้นมาซะที เพื่อรวบรวมข้อมูลทั้งหมดที่เกี่ยวข้องไว้ในที่เดียวกัน ไม่ใช่กระจัดกระจายไปทั่ว blog อย่างที่เป็นอยู่ตอนนี้

จะค่อยๆ เพิ่มเติมข้อมูลเข้าไปเรื่อยๆ

สามารถเข้าได้จาก tab ด้านบน หรือที่นี่

 

Posted in computer | Tagged , , | Leave a comment

ไม่ได้ update นานมากแล้ว

เพิ่งมาสังเกตว่าไม่ได้เขียน blog มานานมากแล้วนะนี่ เรื่องยาวๆ ไม่ค่อยมีให้เขียนเท่าไหร่ อยากบ่นอยากพ่นอะไร เดี๋ยวจะไปอยู่ใน Facebook ซะเยอะ ที่นี่จะเป็นเรื่องมีสาระมากกว่า

Posted in Uncategorized | Tagged | Leave a comment

ตัวติดตั้ง Thai to Unicode

วันนี้ได้ทำตัวติดตั้งสำหรับ script Thai to Unicode มันจะติดตั้งเข้าไปที่ /Library/iTunes/Scripts หรือที่ ~/Library/iTunes/Scripts แล้วแต่เลือก

ไม่ต้องเสียเวลาแตก zip และ copy ไฟล์อีก

download: ThaitoUnicode.dmg

Posted in computer | Tagged , , , , | 15 Comments

วิธีติดตั้งและใข้ iTunes Thai to Unicode script

จาก post นี้ ยังไม่ได้เขียนวิธีใช้เลย มาเขียนไว้ตรงนี้แล้วกัน

วิธีติดตั้ง

  1. แตกไฟล์ zip จะได้ไฟล์ .scpt ออกมา
  2. copy script (ไฟล์ .scpt) ไปไว้ที่ ~/Library/iTunes/Scripts ( Home folder > Library > iTunes > Scripts )


  1. double click ที่ไฟล์ dmg จะเห็นตัวติดตั้ง script
  2. double click ที่ตัวติดตั้ง ทำตามขั้นตอนไปเรื่อยๆ

วิธีใช้

  1. เลือกชื่อเพลงใน iTunes
  2. เลือกเมนู script ข้างบน แล้วก็เลือก Thai to Unicode (Leopard) — ที่เดียวกับ ThaiTunes นั่นล่ะ
Posted in computer, music | Tagged , , | 8 Comments

Logitech R400 and R800 with Keynote

As mentioned in this post, LPresent does not work with recent macs.

Newer macs register R400 as a keyboard. To make it work with Keynote, we have to remap the keycode of the remote to the respective Keynote shortcut. I found a program “KeyRemap4MacBook” (free) to do the remap work.

This program has great functionality. It comes with hundreds (or thousands) stock keyboard configs and it is super easy to add new mapping rules.

I created a set of rules to do the mapping for R400 to control Keynote (private.xml.txt). Load this into KeyRemap4Macbook and you get this (copy the text into your private.xml),

Screen shot 2011-03-28 at 3.18.44 PM.png

Check the R400 group and “Don’t remap an internal keyboard”. I put the new rule in a separate setting so I can switch it on and off with only a mouse click.

Screen shot 2011-03-28 at 3.37.42 PM.png

Resources:

Posted in computer | Tagged , , | 16 Comments