Arduino ส่งข้อมูลเข้าฐานข้อมูล MySQL

Started by ayanami0, October 08, 2013, 03:08:09 PM

Previous topic - Next topic

ayanami0

ท้าวความก่อนนะคะ ตอนนี้มีบอร์ด Arduino ที่สามารถรับข้อมูล ความชื้นในดิน และสามารถแสดงผลในหน้าจอของโปรแกรม Arduino ได้แล้ว

สิ่งที่ต้องการปรึกษาคือ การนำข้อมูลมาใส่ในฐานข้อมูล MySQL เพื่อให้สามารถใช้ PHP หรือ VB เรียกดูข้อมูลจากหน้าเว็บไซต์ได้ค่ะ

พอจะมีท่านไหนให้คำปรึกษาเรื่องการเขียนโค้ดได้บ่างมั้ยคะ ขอบคุณค่ะ



wlasoi

http://combustory.com/wiki/index.php/Arduino_Communications_-_SQLite

อันนี้นของ SQLite ของ  MySQL ก็ไม่น่าจะหนีกันมาก ... พอเป็นแนวทางได้ อยู่ .. เข้าทาง RS232

skytec

Quote from: ayanami0 on October 08, 2013, 03:08:09 PM
ท้าวความก่อนนะคะ ตอนนี้มีบอร์ด Arduino ที่สามารถรับข้อมูล ความชื้นในดิน และสามารถแสดงผลในหน้าจอของโปรแกรม Arduino ได้แล้ว

สิ่งที่ต้องการปรึกษาคือ การนำข้อมูลมาใส่ในฐานข้อมูล MySQL เพื่อให้สามารถใช้ PHP หรือ VB เรียกดูข้อมูลจากหน้าเว็บไซต์ได้ค่ะ

พอจะมีท่านไหนให้คำปรึกษาเรื่องการเขียนโค้ดได้บ่างมั้ยคะ ขอบคุณค่ะ



คำถามไม่ชัดครับ  Arduino เป็น Web server  หรือว่ามันจะเป็นเพียงตัวส่ง Data เข้า Web Server ซึ่งทั้งสองแบบแตกต่างกันโดยสิ้นเชิงครับ
"จินตนาการสำคัญกว่าความรู้ ความรู้มีข้อจำกัด จิตนาการไร้ขอบเขต " --อัลเบิร์ต ไอสไตน์


Lastman

อ่านคำถามจขกท. แล้วอยากจะบอกว่าปวดตับเลยนะครัซ  :o

ที่บอกว่าใช้ Arduino นี่เข้าใจว่าน่าจะใช้ mega328 นะ ซึ่งถ้าเป็นอย่างนั้นก็หมายความว่า
มันเป็น MCU 8bit มี flash แค่ 32k กับแรมนิดหน่อย การจะส่งข้อมูลไปเขียนใน MySQL
ก็ต้องยิงข้อมูลเป็นชุดๆเข้า network ซึ่งทั่วไปก็เป็นพวก TCP/UDP อาจจะต้องมีระบบ Authen
และ protocol อื่นๆ อีกนิดหน่อยในการสื่อสารอีก
หลักการก็แค่ต้องเอา board Arduino ไปเชื่อมต่อกับ Ethernet module เสียก่อน หรือถ้าต้องการไร้สายก็ใช้พวก
Wifi module แล้วค่อยเริ่ม implement ระบบต่างๆ ข้างต้นเข้าไปใน source code ของระบบหลัก...
ผมรับประกันว่าการเขียนโปรแกรมไม่ยากหรอก (แค่สาหัส) แต่การที่จะทำให้โปรแกรมที่เขียนเนี่ย
ไปรันใน environment ที่ MEGA328 มันมีอยู่นั้นเนี่ย   มันแทบจะเป็นไปไม่ได้เลย (แหม กลัวเสียกำลังใจจัง)
หรือมันอาจจะทำได้ก็ได้ เพียงแต่ต้องต่ออุปกรณ์เพิ่มเติมอย่างมากมาย ซึ่งไม่คุ้มเวลากับค่าเหนื่อย แน่ๆ
มันเหมือนเป็นการดันทุรัง ขี่มอเตอร์ไซค์ ไปเที่ยวรอบโลก ประมาณนั้น คืออาจจะทำได้ แต่คุ้มมั๊ย เสี่ยงมั๊ย ลองพิจารณาดูครับ

สิ่งที่น้องคิดใช่ว่าจะไม่มีคนคิด แต่ส่วนใหญ่เค้าจะใช้วิธีเลี่ยง คือฝากข้อมูลที่ต้องการไปให้เครื่องที่มี
สมรรถนะสูงกว่าทำให้ เช่น Embedded Linux หรืออาจจะเป็น pc ที่ติดต่อกับ Arduino เป็นตัวทำให้ก็ได้
โดยอาจจะมี script ที่จะทำงานนี้ แต่รอการเรียกใช้อยู่


หรือในกรณีที่คิดไม่ออก ก็ลองดูพวกโปรแกรม Redirect Serial to Keyboard เพื่อใช้เปลี่ยนข้อมูลที่รับจาก
Serial Port ไปจำลองเป็นการพิมพ์คีย์บอร์ดแทน (ทำนองนั้น)
ซึ่งแบบนี้ก็สามารถใช้งานได้ง่ายกว่าการใช้ Arduino ติดต่อไปที่ Server MySQL ตรงๆ
เช่น คำสั่งเพิ่มข้อมูล "insert into TABLE_NAME (xxx,yyy,zzz) values('123','456','789');"
ก็สั่งส่งไปที่ serial port ธรรมดา แต่ pc ปลายทาง(หรือ linux embedded) เมื่อปลายทาง รับไป แล้วจะ redirect
ไปเสมือนการพิมพ์คีย์บอร์ด เพื่อเพิ่มข้อมูลเข้า Database โดยตรง

ยังมีอีกหลายวิธีมากครับ ลองเลือกดู แต่การต่อ Arduino ไปที่ MySQL ตรงๆ คงไม่มีคนใช้สักเท่าไหร่
ไม่แน่น้องอาจจะเป็นคนแรกก็ได้ อยากดังก็ลองทำเลยครับ เดี๋ยวช่วยโปรโมท ;D

dynamic

Arduino <--serial port--> PC (vb script)---->Server (Mysql)

Server(mysql)--->Php--->web page


เขียนสคริปต์ดัีกรอข้อมูลทาง serial port ที่รับมาจากบอร์ดอาดูอิโน่ ก่อนครับ รับให้แม่นยำ อย่าให้พลาด แล้วยัดลง server ซึ่งติดตั้ง mysql แล้ว

จากนั้น เขียน php ไฟล์ให้มาดึงข้อมูลจาก mysql ไปแสดงผลอีกที

อันนี้เคยทำนานแหละ ตอนนี้โค๊ดหายไปไหนก็ไม่รู้ แต่จำได้เลาๆ ประมาณนี้

https://www.youtube.com/v/LM7THOeEILA

tumrobot

ส่งข้อมูลเข้า MySQL ไม่ยากอย่างที่คิดนะครับ มีข้อมูลในเน็ตเยอะแยะ ลองหาดูสิครับ
ผมลองหาเล่นๆ เจออยู่ 2 โปรเจคเค้าทำให้ดูทั้งให้ Code ฝั่ง Arduino ฝั่ง PHP ครบเลยครับ

ลองดูครับเผื่อมีประโยชน์

หลักการก็ Arduino ==> Ethernet Shield ==> GET หรือ POST ==> PHP ==> MySQL

http://drcharlesbell.blogspot.com/2013/04/introducing-mysql-connectorarduino_6.html

https://www.jfkreuter.com/?p=9

:)
Contact Me:
Line ID: openfog      

My Web: www.openfog.net
GPS Tracking Online: www.openfoggps.com

s4m3l0

อืมถามก่อน เคยใช้ mysql ใช่ไหมครับ?
ดูจากในรูป เห็นว่าน่าจะเชื่อมต่อโดยพวก Ethernet? หรืออาจจะใช้อย่างอื่นก็ได้ครับ แล้วแต่เทคนิคกับทริค ที่จะทำ
ขอให้ส่ง packet เป็น TCP ได้ก็พอเพราะเวลาเชื่อมต่อ mysql จะใช้ TCP ครับโดยใช้ Port ดังเดิมน่าจะเป้น 3306 ครับ

ใช่การเชื่อมต่อโดยตรงๆ
aduino ==> Server? ถ้าเคยใช้ mysql ก็น่าจะเข้าใจตรงนี้

ถ้าต้องการอะไรที่มันตรงเปะๆ ก็พยายามทำให้ขั้นตอนการส่งค่าต่าง ให้มันสั้นสุดๆ เช่น

aduino ===> Server(mysql)
              TCP

ไม่จำเป็นต้องผ่าน php หรือ อื่นๆ (ถ้าเคยใช้ mysql ตรงๆ น่าจะเข้าใจอ่ะน่ะ คิดว่า จขกท ทำมาขนาดนี้แล้วน่าจะเข้าใจเยอะแล้วล่ะ  :))
แล้วเขียน php ลงใน server แบบ online เพื่อโชว์ค่าต่างๆ สามารถดูที่ไหนก็ได้?

ตัวอย่าง ด้านล่าง ถ้ามีอะไรที่ไม่เข้าใจถามได้ครับ หรือสงสัยอะไร ผมจะช่วยอธิบายเท่าที่ผมพอทำได้ครับ ;D
V
http://drcharlesbell.blogspot.com/2013/04/introducing-mysql-connectorarduino_6.html

ปล.กะจะไม่เข้ามาตอบแล้วน่ะเนี่ย
ปล2. โลกนี้ไม่มีอะไรที่เป็นไปไม่ได้
ปล3. 8bit ก็รันเกม Minecraft ได้น่ะฮับ lolz
GNU/Linux User.
Underground computer group.
The GNU people aren't evil. but i'm evil. :P

Lastman

Quote from: s4m3l0 on October 09, 2013, 11:38:46 PM
อืมถามก่อน เคยใช้ mysql ใช่ไหมครับ?
ดูจากในรูป เห็นว่าน่าจะเชื่อมต่อโดยพวก Ethernet? หรืออาจจะใช้อย่างอื่นก็ได้ครับ แล้วแต่เทคนิคกับทริค ที่จะทำ ขอให้ส่ง packet เป็น TCP ได้ก็พอเพราะเวลาเชื่อมต่อ mysql จะใช้ TCP ครับโดยใช้ Port ดังเดิมน่าจะเป้น 3306 ครับ

ใช่การเชื่อมต่อโดยตรงๆ aduino ==> mysql?

ถ้าต้องการอะไรที่มันตรงเปะๆ ก็พยายามทำให้ขั้นตอนการส่งค่าต่าง ให้มันสั้นสุดๆ เช่น
aduino ===> mysql
              TCP

แล้วเขียน php ที่เป้น server แบบ online เพื่อโชว์ค่าต่างๆ สามารถดูที่ไหนก็ได้?

ตัวอย่าง ด้านล่าง ถ้ามีอะไรที่ไม่เข้าใจถามได้ครับ หรือสงสัยอะไร ผมจะช่วยอธิบายเท่าที่ผมพอทำได้ครับ ;D
V
http://drcharlesbell.blogspot.com/2013/04/introducing-mysql-connectorarduino_6.html

ปล.กะจะไม่เข้ามาตอบแล้วน่ะเนี่ย
ปล2. โลกนี้ไม่มีอะไรที่เป็นไปไม่ได้
ปล3. 8bit ก็รันเกม Minecraft ได้น่ะฮับ lolz

คุณพ่อวิลลี่ แมคอินทอช เป็นกัปตันจนเกษียณ คุณแม่เป็นผู้อำนวยการการบิน  (หรือไงเนี่ยแหละถ้าจำไม่ผิดนะ)
ตัวคุณวิลลี่ เอง ก็จบวิศวการบินจากอเมริกา ทั้งสูง ทั้งหล่อ เทห์ แข็งแรง ไปสมัครสอบเป็นนักบิน....
การสอบก็เป็นไปอย่างเข้มข้น และเค้าทำคะแนนได้สูงมากๆ ยิ่งในกรณีคับขัน เค้าตัดสินใจได้เด็ดขาด ว่องไว
ที่สุดแล้วเค้าก็สอบไม่ผ่าน !!! (เพราะถ้าผ่านขึ้นมา เราคงไม่ได้เค้าเป็นพระเอกชื่อดังในเมืองไทย....)

สาเหตุที่เค้าไม่ผ่านคือ "เค้ามั่นใจเกินไป" (หรือก็คือเค้ากล้าเอาชีวิตลูกเรือ ไปเสี่ยง "เกินไป") ::)



กลับมาที่เอกสาร คนพัฒนา Library ยังบอกเลยว่าแค่ลำพัง compile source code ต้องการ 16-20k
นี่ยังไม่นับรวม ระบบอื่นๆ ที่ arduino ยังต้องไป control, เรื่อง flash ไม่กังวลเท่าไหร่ กังวลเรื่องแรมมากกว่าครับ
งานนี้เชื่อว่าเค้าใช้ Arduino 328 Flash 32k ram 1k (อนุมานจากคำถาม)**

ถ้าผมเป็นอาจารย์น้องคนนี้ ผมจะให้เค้า 90 คะแนนในความพยายาม 
และจะให้ -100 คะแนนสำหรับความฉลาดที่ไม่เฉลียวครั้งนี้  ;)

ประเด็นคือทำได้เรื่องนึง แต่ทำให้ดี มันก็อีกเรื่องนึงครับ...


เรื่อง Minecraft อย่าว่าแต่ 8bit เลยครับ แค่เกมกดมีแต่ LCD ขยับซ้ายขวาผมก็เล่นมาแล้ว  ::)


==================== Update ====================
หลังจากตั้งกระทู้ไปครั้งแรกนั้น จำได้ว่า จขกท.ไม่มีรูปนี่นา  :o  นี่มาตอบกระทู้อีกที จึงพึ่งเห็น
แล้วรูปที่เอามาแสดงนี้คือ บอร์ด Arduino ที่ทำเองใช่ไหมครับ (มองไม่ออก ไม่แน่ใจ) ???
แต่ถึงอย่างไร เบอร์ขนาดนั้นก็คงไม่พ้น 328 (รู้สึกดีใจที่คาดการณ์ไม่ผิด 8))

อยากจะบอกว่าผมไม่เก่งนะ แต่ผมมั่นใจว่า indy (และเวอร์อลังการกว่าน้องเยอะ  8))
และผมก็เห็นอุปกรณ์ที่คุณมีแล้ว จากรูปข้างต้น (พึ่งเห็นเนี่ยแหละ) ก็อยากจะแนะนำเพิ่มเติมจากองค์ความรู้ที่ผมมี
ซึ่งผมคิดว่า คุณน่าจะมีทางเลือกสองทาง ที่เหมาะสมกับคุณในตอนนี้ ดังนี้...
- ทางแรกถ้าคุณจะทำต่อ คุณอยากพิสูจน์ให้มนุษย์บนโลกเห็น คือถ้าคุณจะใช้วิธีดิบๆ ยิงข้อมูลจาก Arduino -> MySQL ตรงๆ
ก็แนะนำได้ว่า ให้เปลี่ยนต้องเปลี่ยนไปใช้ Arduino ที่ Hiso กว่านี้ และถ้าไม่อยากปวดหัวเรื่อง library ก็ต้องไปหา shield ที่เหมือนๆ กันกับ
ที่ library ใช้ด้วย ทั้งหมดนี้คงไม่กี่พันบาท แต่ลดความยาก ความซับซ้อน และเพิ่ม % ในการเสร็จได้สูงมาก

- ทางที่สองคือเลิกล้มความตั้งใจซะ เอาพลังงานในการ "ดันทุรัง" ไปหาทางที่ง่ายกว่านี้ เอาแบบมนุษย์ทั่วๆ ไปทำกัน
ตามที่หลายๆ คนข้างต้นแนะนำ อย่าบ้า อย่าเพ้อเจ้อ ถ้าทำแล้วเสร็จก่อน จนเวลาเหลือก็เอาไปอ่านหนังสือเพิ่มเติม
หรือทำกิจกรรมที่มีประโยชน์มากกว่านี้ การส่ง project ไม่ได้ชี้วัดว่าคุณจะประสบความสำเร็จในชีวิต ชีวิตมันไกลกว่านั้น
เอาให้เสร็จก่อน  ก่อนที่จะทำให้มันเลิศอลังการ  พยายามเข้าใจคำว่า "ทำให้ได้ กับ ทำให้ดี" มันคนละเรื่องกัน


ไม่ว่าจะเลือกไหน ผลจะออกมาแบบนี้
1. ทางแรก ใครก็ตามที่เห็นงานคุณ เค้าก็จะรู้ว่า  อ๋อออออ บอร์ดนี้ทำเองไม่ได้หรอกต้องซื้อ เพราะซื้อเอาถูกกว่าทำเอง
library ก็ copy เค้ามา shield ก็ซื้อเหมือน Library , sensor code ฯลฯ ก็ copyๆ กันมา แต่โอเค พยายามดี ผ่าน

2. ทางที่สอง ใครก็ตามที่เห็นงานคุณ เค้าก็จะรู้ว่า อ๋ออออ คนส่วนใหญ่ก็ทำแบบนี้ เลือกทางได้เหมาะสม
, sensor code ฯลฯ ก็ copyๆ กันมา แต่โอเค พยายามดี ผ่าน

เลือกเอาแล้วกัน... พี่เอาใจช่วยนะน้อง ::)

ปล.*** อย่าลืมว่าผมอนุมาณความรู้คุณจากคำถามที่คุณถามอยู่นะ ที่จริงคุณน้องอาจจะเก่งมากๆๆๆๆ ก็ได้
และถ้าเป็นแบบนั้นจริง มันก็อาจจะมีทางออกอื่นๆ มากกว่านี้ ::)