• Raspberry Pi 3 [Automated Relay Controller]


    ตอนที่แล้วเราได้ทดลองทำการสั่งงานรีเลย์แบบ Manual ผ่านหน้าเว็บไปแล้ว ครั้งนี้เราลองสั่งให้รีเลย์ทำงานโดยผ่านการประมวลผลค่าที่ได้จากเซนเซอร์ เพื่อให้ก้าวไปอีกขั้นของ IoT   โดยเราจะใช้เซนเซอร์ที่เคยได้นำเสนอไปก่อนหน้านี้แล้ว นั่นคือ DHT22 Temperature & Humidity Sensor (ต่อที่ PIN: 32 [GPIO 12]) และรีเลย์ 4 Channel ซึ่งสามารถนำไปต่อกับอุปกรณ์เครื่องใช้ไฟฟ้าได้ ต่อ PIN เดิมจากตอนที่แล้ว   ความต้องการเบื้องต้นคือ 1. เมื่ออุณหภูมิต่ำกว่าหรือเท่ากับ 28 องศา ให้เปิดพัดลมระบายอากาศ 1 (ที่ต่ออยู่กับ Relay 1) 2. เมื่ออุณหภูมิสูงกว่า 28 องศา ให้ปิดพัดลมระบายอากาศ 1 และเปิดพัดลมระบายอากาศ 2 (ต่ออยู่กับ Relay 2) 3. เมื่อความชื้นต่ำกว่า 50% ให้เปิดเครื่องสร้างความชื้น (Humidifier) (ต่ออยู่กับ Relay 3)  โดยไม่ต้องสนใจอุณหภูมิ เริ่มเขียนโค้ดเพื่อทำการประมวลผลกันเลย (โค้ดบางส่วน ได้อธิบายไว้ในตัวอย่างบทความก่อนหน้านี้แล้ว)…

    >> Read More <<

  • Raspberry Pi 3 [Relay Control via Web Interface]


    ตอนนี้เราจะมาสร้างหน้าเว็บสำหรับดูสถานะและควบคุมรีเลย์อย่างง่ายๆ   ก่อนอื่น ผมได้ทำการเปลี่ยน PIN ของ GPIO บน Raspberry Pi 3 เพื่อให้เป็นระเบียบมากขึ้นจากครั้งที่แล้ว โดยผมได้เลือกใช้ PIN: 12 (GPIO 18), PIN: 16 (GPIO 23), PIN: 18 (GPIO 24) และ PIN: 22 (GPIO 25) สำหรับสั่งงานรีเลย์ตัวที่ 1-4 ตามลำดับ ดังรูปด้านล่างนี้   หลังจากการทดสอบการทำงานของรีเลย์ทุกตัว (ในบทความที่แล้ว) จากนั้นเราจึงเริ่มขึ้นตอนการติดตั้ง Apache Web Server, PHP และเขียนหน้าเว็บ ดังขั้นตอนต่อไปนี้ครับ   ติดตั้ง Apache Web Server และ PHP ดังนี้ ใช้คำสั่ง sudo apt-get…

    >> Read More <<

  • Raspberry Pi 3 [Relay Control]


    จากตอนที่แล้ว เราได้ลองต่อเซนเซอร์ภายนอก ซึ่งเซนเซอร์จะเป็นประเภท Input เพื่อนำข้อมูลไปประมวลผลต่อตามที่เราต้องการ ยังมีอุปกรณ์บางตัวที่เราสามารถต่อเป็น Output จาก Raspberry Pi ได้ด้วย ซึ่งหนึ่งในนั้นจะเป็นอุปกรณ์หลักที่นำมาเชื่อมต่อกับอุปกรณ์อื่นๆ ได้อย่างหลากหลาย นั่นคือ รีเลย์ (Relay) – (ไม่ใช่ Delay นะครับ กรุณาอย่าสับสน)   Relay คืออะไร Relay ถ้าให้พูดจากความเข้าใจคือ สวิตซ์ ประเภทหนึ่งครับ ที่จะทำงานตามกระแสไฟ นั่นคือ เมื่อมีกระแสไฟไปเหนี่ยวนำภายใน สวิตซ์ก็จะทำงาน (Energize) (พูดให้เข้าใจอีกครั้งหนึ่งคือ เหมือนสวิตซ์ตามผนังนี่แหละครับ แต่แทนที่จะเอามือไปกด เราก็ใช้กระแสไฟเข้าไปให้มันทำงานแทนนั่นเอง) และในบางครั้ง ในระบบไฟฟ้ากำลัง อาจจะเรียกอุปกรณ์นี้ว่า Magnetic Contactor ซึ่งเป็นหลักการทำงานแบบเดียวกันครับ (ขออภัย หากรูปจะไม่ถูกต้องตามหลักการเป๊ะๆ เพราะวาดจากความเข้าใจ) จากในรูปด้านบนนี้ DC+, DC- คือ ไฟที่เราจะจ่ายให้ขดลวดแม่เหล็ก (ตาม spec ของ relay) เพื่อจะไปทำให้สวิตซ์ Relay ทำงาน…

    >> Read More <<

  • Email tracking By Google Chrome Extension


    เมื่อวันเวลาหมุนเวียนมาบรรจบพบกันอีกครั้ง ก่อนการเขียนผล TOR ในปีนี้ ก็ได้เวลาที่เหล่าเราทั้งหลายจะมาเริ่มต้นเขียน Blog กันอีกครั้ง และเช่นเคยสิ่งที่ผู้เขียนมีโอกาสศึกษา ค้นคว้าเพิ่มเติม หรือทดลองใช้งาน โดยมากแล้วก็จะเกี่ยวพันกับหน้าที่การงานในปัจจุบันนั่นแล ซึ่งหน้าที่หลักที่ผู้เขียนต้องทำทุกๆ วัน นั่นคือการรับแจ้งและตอบปัญหาให้กับลูกค้าผ่านทาง E-Mail และต้องขอบอกเลยว่าสำหรับผู้เขียน การตรวจสอบว่าเมลล์ถูกส่งไปถึงปลายทางหรือมีการเปิดอ่านหรือไม่นั้น มันเป็นเรื่องที่จำเป็นมากๆ ในงาน IT เพราะนอกจากการโทรแล้ว อีกหนึ่งช่องทางหลักในการติดต่อสื่อสารระหว่างกัน แถมยังประหยัดรายจ่ายอีกต่างหาก นั่นก็คือการส่ง E-Mail นั่นเองแหละหนา โดยหนึ่งวิธีที่ง่ายที่สุดคือการติดตั้ง Extension บน Google Chrome และใน Blog นี้ผู้เขียนจะขอแนะนำให้ผู้อ่านได้รู้จักกับ Chrome Extension ที่มีชื่อว่า “Email Tracking for Gmail & Inbox” ต้องขอบอกว่าจิ๋วแต่แจ๋วนะจ๊ะออเจ้าทั้งหลาย !! Email Tracking คืออะไร ??? เอาแบบสั้นๆ เลย มันคือตัว App ที่ไว้คอย Track (ติดตาม)…

    >> Read More <<

  • Choose Network Type In VirtualBox


    เมื่อต้องไปจัดอบรม และต้องใช้ Oracle VM VirtualBox สำหรับสร้าง Virtual Machine (VM) จำนวนหนึ่ง (มากกว่า 1 ตัว ฮ่า ๆ) เราจำเป็นจะต้องรู้ว่า สภาพแวดล้อมของห้องบริการคอมพิวเตอร์ที่เราไปขอใช้งานนั้น จัด IP ให้กับเครื่อง Windows แบบใด เช่น ในกรณีที่มีการปล่อย DHCP IP แบบเหลือเฟือ การเลือกชนิด network ของ VM แต่ละตัว ก็ง่าย เราก็เลือกตั้งค่าเป็น Bridges ซึ่งแบบนี้ VM แต่ละตัวก็จะได้ IP อยู่ในชุดเดียวกันกับ Windows แต่หากจัด IP แบบตายตัวให้กับ MAC Address ของ PC นั้นเลย และไม่ปล่อย DHCP IP เพิ่มให้ อย่างนี้ เราก็ต้องออกแบบว่าจะให้ VM…

    >> Read More <<

  • Raspberry Pi 3 [Temperature & Humidity Data Chart]


    จากตอนที่แล้ว เราได้เขียนคำสั่งเพื่อที่จะดึงค่าจากเซนเซอร์แล้ว ครั้งนี้จะเป็นการใช้วิธีดังค่าดังกล่าว มาเก็บไว้เป็นไฟล์ csv จากนั้นนำไปแสดงเป็นกราฟ โดยแสดงผลผ่าน Web Interface ด้วยวิธีดังต่อไปนี้ครับ   สร้างที่เก็บไฟล์ด้วยคำสั่งต่อไปนี้ mkdir –p /home/pi/projects/temp–and–humidity mkdir –p /home/pi/projects/temp–and–humidity/sensor–values cd /home/pi/projects/temp–and–humidity (หากใครไม่ต้องการสร้าง directory เพื่อเก็บข้อมูลตามตัวอย่างนี้ ให้แก้ไฟล์ temp_hud_csv_log.py ด้วยครับ) จากนั้นดาวน์โหลดสคริปด้วยคำสั่งนี้ wget https://sysadmin.psu.ac.th/wp-content/uploads/2018/03/temp_hud_csv_log.txt mv temp_hud_csv_log.txt temp_hud_csv_log.py (เนื่องจาก sysadmin นี้ไม่รองรับการอัพโหลดไฟล์ .py จึงต้องอัพโหลดเป็น .txt ไปก่อน แล้วค่อยเอามา rename เอาเอง)   ตรวจสอบและติดตั้ง dependencies ด้วยคำสั่งนี้ sudo easy_install apscheduler และรอจนเสร็จ          โดยค่า default สคริปนี้จะถูกเซ็ตให้เป็นเซนเซอร์ AM2302…

    >> Read More <<

  • Raspberry Pi 3 [Temperature & Humidity Sensor]


    สวัสดีและขออภัยที่ห่างหายไป เนื่องจากติดภารกิจทั้งงานราษฏร์และงานหลวงครับ   ครั้งนี้จะเป็นการเริ่มต่อเซนเซอร์ภายนอก เซนเซอร์พื้นฐานที่มีในปัจจุบันก็จะเป็นเซนเซอร์เกี่ยวกับสภาพแวดล้อม ไม่ว่าจะเป็น เซนเซอร์อุณหภูมิ, เซนเซอร์ความชื้นในอากาศ, เซนเซอร์ความชื้นในดิน, เซนเซอร์น้ำ (ทำงานเมื่อมีน้ำมาสัมผัสเซนเซอร์ – ใช้ตรวจเช็คฝนตก), เซนเซอร์แสง (สวิตซ์), เซนเซอร์ความเข้มแสง, เซนเซอร์วัด pH, เซนเซอร์ UV, เซนเซอร์วัดฝุ่นละอองในอากาศ, เซนเซอร์วัดความชื้นในดิน, เซนเซอร์วัดแรงสั่นสะเทือน และเซนเซอร์อื่นๆ อีกมากมาย ซึ่งหลักการทำงานนั้นส่วนใหญ่จะเหมือนกันหมด คือการอ่านค่ามาจากเซนเซอร์ และนำค่านั้นมาแปรผลที่เราสามารถอ่านได้ง่าย   บทความนี้จะเริ่มด้วยเซนเซอร์ที่ Basic ที่สุด เพื่อให้ทุกท่านพอจะได้เห็นหลักการทำงานและเป็นแนวทางในการเชื่อมต่อเซนเซอร์อ่นๆ ต่อไปครับ นั่นคือ เซนเซอร์วัดอุณหภูมิและความชื้น AM2302 (DHT22) นั่นเอง โดยจะมี Pinout ดังนี้ (จากซ้ายบน คือขาที่ 1) ขาที่ 1 คือ VCC รองรับ 3.6-6V ขาที่ 2 คือ Data ขาที่ 3 คือ…

    >> Read More <<

  • GET STRING FROM ENUM


    เพื่อนๆนักพัฒนาหลายคนก็คงจะรู้จัก enum กันพอสมควรแล้วนะคะ วันนี้เรามาทำความรู้จักเจ้า Enum กันให้มากขึ้นกว่าเดิมกันดีกว่านะคะ ว่านอกจากเราจะดึงค่า Integer ที่เก็บค่าในตัวแปร หรือ Tostring() เป็นค่าstring ตามชื่อของตัวแปร Enum แล้ว เรายังสามารถ ดึงค่า  String  เป็นประโยคยาวๆได้โดยที่ไม่จำเป็นต้องเหมือนกับชื่อตัวแปรแล้วนะคะ เอาล่ะค่ะ เรามาเริ่มจากการทำความรู้จักเจ้าตัว Enum กันตั้งแต่เริ่มต้นเพื่อระลึกความจำกันก่อนละกันนะคะ ^^ Enumeration จะมีชนิดเป็น integer type ซึ่ง เราสามารถกำหนดกลุ่มของข้อมูลได้ (User-defined) ในการสร้าง enumeration เราจะใช้ keyword คำว่า  enum  ดังนี้ public enum Colors {   White,   Black,   Red,   Green,   Blue } ในตัวอย่างนี้สร้าง enum…

    >> Read More <<

  • Configuration of TCP/IP with SSL and TLS for Database Connections


    สิ่งที่ต้องเตรียม Oracle Database Server ในตัวอย่างนี้ใช้ Oracle database บน Oracle Enterprise Linux 7 Oracle Database Client  ในตัวอย่างใช้ Windows Server 2008 R2 เริ่ม ฝั่ง Server เข้าระบบด้วยบัญชีผู้ใช้ oracle หรือบัญชีที่เป็นเจ้าของ Oracle Database เปิด terminal สร้าง Oracle Wallet ด้วยคำสั่ง mkdir -p /u01/app/oracle/wallet ต่อด้วย orapki wallet create -wallet “/u01/app/oracle/wallet” -pwd WalletPasswd123 -auto_login_local โดย -pwd WalletPasswd123 ตัว WalletPasswd123 คือรหัสผ่านที่ใช้ป้องกันการเข้าถึงข้อมูลต่างๆ ใน wallet กฎการตั้งมีอยู่คือ…

    >> Read More <<