Main Menu
Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - tumrobot

#1
เนื่องจากว่า มีความจำเป็นที่จะต้องทิ้งบ้าน เพื่อเดินทางไปธุระ บ่อยๆ จึงค่อนข้างที่จะเป็นห่วงทรัพย์สินของตนเองภายในบ้าน ซึ่งก่อนหน้านี้ ก็ได้แต่เพียงใช้การสั่งงานเปิดปิดไฟฟ้า และตั้งเวลา ผ่านระบบอินเตอร์เน็ต ซึ่งคิดว่ายังไม่น่าจะเพียงพอที่จะป้องกัน โจร ขโมย ที่อาจจะเข้ามาบุกรุกบ้านได้ เพราะเคยได้ข่าวว่า ปัจจุบัน พวกโจร ขโมย จะสังเกตุพฤติกรรมของผู้อาศัยภายในบ้าน สังเกตุเวลาเปิด ปิดไฟ ว่าอยู่บ้านเหรอเปล่า และตอนนี้ก็มีระบบกล้องวงจรปิด ที่เริ่มเป็นที่นิยมมากขึ้น ไว้คอยบันทึกเหตุการณ์ต่างๆ ที่เกิดขึ้นในขณะที่เราไม่ได้อยู่ที่บ้านให้เจ้าของ สามารถเห็นเหตุการณ์ในบ้านของตนเอง ขณะที่ไม่อยู่บ้านได้ แต่การติดกล้องวงจรปิด ก็เป็นแค่การป้องปรามโจรผู้ร้าย ไม่อาจจะช่วยขับไล่ได้ ดังนั้นจึงมีความคิดที่ว่าน่าจะมีระบบกันขโมยที่สามารถสั่งควบคุมได้ และแจ้งเตือนการบุกรุก เข้ามาที่โทรศัพท์มือถือของเราได้ด้วย

แนวคิดการแจ้งเตือนการบุกรุก เข้าโทรศัพท์มือถือ มีอยู่ 2 ทางก็คือ

1. ส่งการแจ้งเตือนผ่านระบบ SMS เข้าทางโทรศัพท์มือถือ ข้อดีก็คือสามารถทำได้ง่าย เพราะแค่ส่งคำสั่งไปที่ GSM Module ไม่กี่คำสั่งก็สามารถทั้งส่ง SMS และโทรไปยังเครื่องปลายทางได้ทันที แต่ข้อเสียก็คือ มีค่าใช้จ่ายในการที่ต้องเสียค่าส่งข้อความ และยังจะต้องเติมเงินเพื่อรักษาสภาพซิมการ์ดอีก

2. ส่งการแจ้งเตือนผ่านระบบอินเตอร์เน็ต แบบ Push Notification ก็จะมีหลายวิธี ไม่ว่าจะ Push ผ่านเวปเช่น pushbullet.com หรือผ่านทาง google notification แต่ก็รู้สึกว่ามีความยุ่งยากซับซ้อนในการทำงานมากเกินไป

จนกระทั่ง Line ได้เปิดให้ใช้งาน Line Bot Notification ให้สามารถส่งแจ้งเตือนข้อความเข้า App ไลน์ ได้โดยผ่านการส่งข้อมูลแบบ POST หรือ GET จึงทำให้ง่ายต่อการที่เราจะส่งข้อความแจ้งเตือนเข้าโทรศัพท์มือถือของเรา ประกอบกับปัจจุบันตัว WiFi Module ESP8266 ก็มีความสามารถที่จะเชื่อมต่ออินเตอร์เน็ตและสามารถเขียนโปรแกรมเพื่อพัฒนาผ่าน Arduino IDE จึงทำให้ยิ่งสะดวกมากขึ้นที่จะทำระบบการแจ้งเตือนการบุกรุก ส่งข้อความแจ้งเตือนเข้าทาง ไลน์ ซึ่งเราก็ใช้แอพพลิเคชั่นนี้เป็นประจำอยู่แล้ว

อุปกรณ์ที่ใช้ในการทดสอบ คร่าวๆ มีดังต่อไปนี้

1. สวิตช์แม่เหล็ก แบบ NO

2. อุปกรณ์ ส่วนควบคุม , MCU, WiFi Module , รีเลย์ , PCB และ Power Supply 5V

3. ไซเรน ขนาด 12V แต่ใช้ไฟเพียงแค่ 5 โวลต์ ก็สามารถทำงานได้แล้ว









      
วงจรตัวอย่างที่ต่อเสร็จแล้ว




       
สาเหตุที่ต้องเพิ่ม MCU เบอร์ PIC18F14K50-I/P เข้ามาในวงจรอีกทั้งๆ ที่ตัว ESP8266 ก็สามารถเขียนโปรแกรมให้ทำงานได้เองและมี I/O ที่น่าจะเพียงพอกับการใช้งาน ก็เนื่องมาจากว่า ก่อนหน้านี้เคยทดสอบนำตัว ESP8266 มาทำงานในลักษณะนี้แบบเดี่ยวๆ แล้วผลที่เจอก็คือ ในขณะที่มีการเชื่อมต่อไวไฟ เข้ากับเร้าเตอร์แล้วถ้าสัญญาณอินเตอร์เน็ตเกิดมีปัญหา แล้วเวลาเราให้ตัว ESP8266 ที่การ reset ตัวเองแล้วมีบางครั้งที่ตัว ESP8266 รีบูตกลับมาทำงานเองไม่ได้ดังนั้นเบื้องต้นจึงให้ทำงานควบคู่กับ MCU ไปก่อน และคอยให้ตัว MCU คอยเช็คสถานะการทำงานของ ESP8266 ซึ่งถ้าหากตรวจพบการทำงานที่ผิดปกติก็ให้ตัว MCU ทำการรีเซ็ตตัว ESP8266 แทน แล้วในอนาคตเดี๋ยวค่อยหาทางแก้ปัญหานี้ และพัฒนาให้สามารถทำงานได้ด้วยตัวโมดูลเองให้ได้อย่างเต็มประสิทธิภาพอีกครั้งนึง อีกสาเหตุนึงก็คือตัว ESP8266 นั้นการใช้ Interupt Timer ในตัวนั้นค่อนข้างจำกัด ในที่่นี้ก็คือนอกจากจะมีให้ใช้น้อยแล้ว บางครั้งยังพบการทำงานของ Timer ที่ผิดพลาดจนเป็นสาเหตุทำให้ตัว WDT ทำการรีเซ็ตตัวมันเองอีกด้วย เพราะฉะนั้น หากต้องการการทำงานของตัว ESP8266 ที่ค่อนข้างเสถียร เราจึ่งให้ตัว ESP8266 ทำหน้าที่แค่เชื่อมต่อสัญญาณอินเตอร์เน็ตเท่านั้น

ทดสอบการทำงานของ ตัวแจ้งเตือนการบุกรุก ส่งข้อความเข้าไลน์

      

https://www.youtube.com/watch?v=nZ8QYV0KPbM


Source Code:

MCU: เขียนด้วย CCS สามารถดาวน์โหลดได้ ที่นี่ http://openfog.net/MyPicture/Document/Alert/MCU_CODE.zip

ESP8266: เขียนด้วย Arduino IDE สามารถดาวน์โหลดได้ ที่นี่ http://openfog.net/MyPicture/Document/Alert/ESP8266_LINE_ALERT.zip


App Android :




Android Code: พัฒนาด้วย Android SDK บน Eclipse IDE สามารถดาวน์โหลดได้ ที่นี่ http://openfog.net/MyPicture/Document/Alert/MQTT_Test.zip



จากการทดลองนี้ เราสามารถนำการแจ้งเตือนการบุกรุก ส่งข้อความเข้าไลน์ ไปประยุกต์ใช้งานสำหรับการแจ้งเตือนในรูปแบบอื่นๆ ได้อีกด้วย เช่น

1. แจ้งเตือนการกดกริ่งหน้าบ้าน ทำเป็น Smart Ring Bell

2. แจ้งเตือนเหตุ ไฟใหม้ ไฟฟ้าลัดวงจร

3. แจ้งเตือนสำหรับกันขโมยของรถยนต์ กรณีรถโดนทุบ หรือประตูรถถูกเปิด

ไว้ถ้าหากมีโอกาสจะมาลองทำโปรเจ็คเหล่านี้เล่นๆดูครับ


ขอบคุณ ข้อมูลจาก

http://www.ioxhop.com/article/47/esp8266-esp8285-%E0%B8%81%E0%B8%B1%E0%B8%9A%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%AA%E0%B9%88%E0%B8%87%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%81%E0%B8%88%E0%B9%89%E0%B8%87%E0%B9%80%E0%B8%95%E0%B8%B7%E0%B8%AD%E0%B8%99%E0%B9%80%E0%B8%82%E0%B9%89%E0%B8%B2-line


https://python3.wannaphong.com/2016/10/%E0%B8%97%E0%B8%B3%E0%B8%A3%E0%B8%B0%E0%B8%9A%E0%B8%9A%E0%B9%81%E0%B8%88%E0%B9%89%E0%B8%87%E0%B9%80%E0%B8%95%E0%B8%B7%E0%B8%AD%E0%B8%99%E0%B8%9A%E0%B8%99-line-%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-py.html
#5
แนะนำให้หาหนังสือ มาอ่านก่อนแล้วค่อยเขียนได้นะครับ ถ้าอยากให้โปรแกรมคอมไพล์ผ่าน และ Run ได้
เดี๋ยวผมช่วยแนะนำจุดผิดให้ก่อนละกัน

Quote from: underdog on October 21, 2014, 01:10:08 PM
#include <16F877A.h>
-- ตรงนี้เพิ่ม #fuses HS,PROTECT,NOWDT
-- เพิ่ม #use delay(clock=20000000)

unsinged char  up, down
char i

--เพิ่ม Void main(){


ในนี้ผมไม่เข้าใจครับ ว่าต้องการจะทำอะไร
up= V[1]    <== V[1]  มาจากไหน และไม่ได้ประกาศตัวแปรเอาไว้ แล้วจู่จับมา = up เฉยเลย
V[1]= u     <== u ข้อมูลมาจากไหนครับ
u>=2 ;i++       <== i++ ต้องการทำอะไรครับ
printf("Volum up +++")  <== printf ต้องมีการเรียก uart นะครับ
gotoxy(1,2);      <== อะไรครับ จะเรียก LCD เหรอเปล่าครับ

เอาแค่นี้ก่อนนะครับ ผมเหนื่อย


if down=V[2]

V[2]= L
l>=2 ;i++
printf("Volum up +++")
gotoxy(1,2);

}



ผมจะแก้ไขโค็ตอย่างไรครับ

สรุปคือ ตอนนี้เขียนไปเรื่อยเปื่อยใช่เหรอเปล่าครับ  :'(
ป.ล. ปิด syntax c อย่าลืม ; ด้วยนะครับ ลองไปฝึกเขียนใหม่นะครับ อ่านไปเรื่อยๆ ทำไปเรื่อยๆ เดี๋ยวก็จะเข้าใจเองครับ
#6
Microchip PIC / Re: RS232
May 20, 2014, 11:20:22 AM
มีความเป็นไปได้ว่าค่า buad rate ของ Board กับ คอมไม่ตรงกัน หรือไม่ก็มีปัญหาเรื่องสัญญาณ เลยทำให้ข้อมูลเพี้ยน
ลองไล่ debug ดูทีละอย่าง ครับ
#7
เรื่องของเรื่องก็คือผมไปสร้าง buffer ไว้รับข้อมูล String ไว้ที่ 100 ตัวอ่ะครับ เอาไว้เผื่อที่ต้องส่งข้อมูลเยอะๆจาก Android
ก็เลยต้องส่งข้อมูลให้ถึง 100 ตัวครับ ไม่อย่างงั้น
interrupt ที่ผมรับข้อมูลเข้าเป็น ++ จะรอจนกว่า buffer จะเต็มถึงจะทำงานได้

ซึ่งเป็นวิธีการที่ไม่ค่อยถูกต้องเท่าไหร่ครับ แต่นั่นเป็นวิธีการเมื่อประมาณ 4 ปีที่แล้วที่ผมเริ่มเขียนโปรแกรมใหม่ๆ น่ะครับ
ปกติแล้วเค้าจะเขียน โปรแกรมปิดคำสั่งด้วย \n กันน่ะครับแล้วก็ตรวจเช็คคำสั่งด้วย header + command + end เอาน่ะครับ
ถ้าจะให้ถูกต้องที่สุด ก็ให้ใส่ check sum เข้าไปด้วยครับ

ลองศึกษาเพิ่มเติมเรื่องการ รับ ส่งข้อมูล ดูครับ
#8
Quote from: jamappa on January 22, 2014, 05:12:25 PM

เอ่อ ไม่ทราบว่าพอจะมีโค้ด Arduino ในการเชื่อมต่อ กับ Web มั่งมั้ยครับ แล้วถ้าผมใช้ Module Wifi ที่เชื่อมต่อกับ Access Point แล้ว
ผมต้อง Setup ค่า SSID กับ Encryption ให้ตรงกับ Access Point ใช่มั้ยครับ

อีกอย่างครับ การที่ผมจะทำให้ Output จาก Sensor ไปโชว์บนหน้า Web สามารถทำได้มั้ยครับ? ขอบคุณครับ

ตัว WiFi Module ตัวนี้ใช้ ASCII Command สื่อสารกับ Arduino ผ่านทาง RS-232 ครับ Code ก็เขียนรับส่งผ่าน Serial เอาครับ
ส่วน ค่า SSID, Password, Encrypt ก็ต่องให้ตรงกับ Access Point ครับไม่งั้นก็จะเข้าระบบ Network ไม่ได้

ส่วนการที่เราจะส่งค่า Sensor ไปที่หน้าเวป ทำได้อยู่แล้วครับ มีอยู่ 2 ทางเลือกคือ
1. ส่งข้อมูลขึ้น Server แล้วไปเก็บลงบน Database จากนั้นหน้าเวปก็ดึงข้อมูลจาก Database มาแสดงผล ซึ่งวิธีนี้ต้องมี Server ครับ
2. ทำให้ Arduino เป็นเวป Server เอง ไม่ต้องมี Server นอก เวลาเปิดดูหน้าเวป ก็ดูจาก IP ที่กำหนดให้ตัว Arduino นี่แหล่ะครับ วิธีนี้ความยุ่งยาก และความซับซ้อนน้อยกว่า