วันเสาร์ที่ 29 เมษายน พ.ศ. 2560

OLED 0.96" I2C 128x64 LCD LED Display

      จาก Blog ที่แล้ว ได้พูดถึงการนำค่าที่ได้จาก Sensor DHT ออกมาแสดงทางหน้าจอ ซึ่งหน้าจอที่ใช้ก็คือ OLED 0.96" I2C 128x64 LCD LED Display
      รายละเอียดขอจอก็ตามนี้เลย

  • Needn't backlight, the display unit can self-luminous
  • High resolution: 128 * 64
  • Viewing angle:> 160 °
  • Supports many control chip: Fully compatible with Arduino, 51 Series, MSP430 Series, STM32 / 2, CSR IC, etc.
  • Ultra-low power consumption: full screen lit 0.08W
  • Voltage: 3V ~ 5V DC
  • Working Temperature: -30 ? ~ 70 ?
  • Module Size: 27.0MM * 27.0MM * 4.1MM
  • I2C/IIC Interface, need 2 IO only.
  • Driver IC: SSD1306
  • white color
  • I2C address 0x3C

      ส่วน Library ก็โหลดได้ตามนี้ครับ

  1. http://www.adafruit.com/products/326
  2. https://github.com/adafruit/Adafruit-GFX-Library
  3. https://github.com/adafruit/Adafruit_SSD1306


DHT11

      เมื่อต้นอาทิตย์ที่ผ่านมา มีปัญหาเกี่ยวกับปั๊มน้ำพัดลงไอเย็นที่โรงงานไม่ทำงาน ก็มีการตั้งข้อสมมุติฐานกันว่า ค่าที่ได้จาก Sensor วัดความชื้นที่เป็นเงื่อนไขให้ปั็มน้ำทำงาน ให้ค่าที่ผิดเพี้ยนไป



      จึงมีการขอยืมของเล่นที่ทำไว้นานละมาทดสอบเทียบเคียงค่า ก็คือเจ้า DHT ที่ต่อกับหน้าจอ TFT ใช้บอร์ดประมวลผลด้วย Arduino D1 และเมื่อจะต้องนำไปใช้งานจริง ก็ต้องปรับเปลี่ยนโปรแกรมนิดหน่อย โดยให้แสดงค่าที่ได้จาก Sensor ออกมาที่หน้าจอเลย แทนที่จะแสดงรูป หรือข้อความ Help Me!!! จาก Blog ที่เคย Post ไว้นานแล้ว

     คราวที่แล้วก็มีการแสดงให้เห็น Code บางส่วนแล้ว แต่ยังไม่ได้บอกที่มาของ Library ที่สำคัญเลย ก็คือ DHT.h แล้วจะโหลด Library ได้ที่ไหน ก็ตามนี้เลยครับ https://github.com/adafruit/DHT-sensor-library


วันอังคารที่ 25 เมษายน พ.ศ. 2560

ดู process ที่กำลังทำงานบน Linux

.     จากโปรเจ็คที่ได้รับมอบหมาย มีความจำเป็นต้องเช็ค process ที่กำลังทำงานอยู่ เพื่อตรวจสอบว่าทำไมไม่มีการตอบสนองมาจาก Node ที่สร้างไว้ ว่าแล้ว จะใช้คำสั่งอะไร เพื่อให้รู้ว่า สิ่งที่เราสร้างไว้ และสั่งให้ทำงาน มันยังคงทำอยู่หรือไม่

      ก็ต้องใช้คำสั่ง PS ซึ่งมันจะแสดง process หรือ program ที่กำลังทำงานอยู่ในขณะนั้น

      ซึ่งแน่นอน คำสั่งนี้ก็มีส่วนขยาย เพื่อเพิ่มขีดความสามารถให้กับตัวคำสั่งหลัก คือ

      ps -ef   : แสดงข้อมูลของ process โดยละเอียด

      ps -ax   : แสดงข้อมูลของ process พร้อมชื่อโปรแกรมที่รันได้

      ps -aux   : แสดงข้อมูลของ process พร้อมชื่อโปรแกรมที่รันได้ พร้อมบอกชื่อผู้สั่งด้วย

      ps -aux | grep Node   : ตรวจสอบว่า Node เชื่อมต่อไปที่ใดขณะนี้

     และด้านล่างก็จะเป็นตัวอย่างหน้าจอที่ได้จากคำสั่งนี้

     


วันอาทิตย์ที่ 23 เมษายน พ.ศ. 2560

รีวิว LEOTECH AVR101SL

      พอดีอยากได้กล้องตัวนึงไปติดรถจักรยานต์ เพราะช่วงนี้มีเหตุการณ์ไม่คาดคิดบ่อยครังบนท้องถนน แต่จะใช้กล้อง Action Camera ก็ราคาแพงไปนิด ด้วยที่กลัวลืมถอดออกตอนจอดรถ แล้วจะติดกล้องไรล่ะ กล้องที่ติดในรถยนต์ก็ไปกันน้ำ โดนแค่ละอองก็ไปแล้ว กลับบ้านเก่า ดูไป ดูมา ก็เจอกล้องตัวนี้ครับ เค้าบอกใช้ติดรถจักรยานยนต์ เอ??? พอจะเอามาติดรถจักรยานยนต์ได้ป่าวน๊าาาาา ว่าแล้วก็ลองสั่งมาเลยครับ จาก Lasada เอาร้านที่ถูกสุดของรุ่นนี้

      Spec ก็ไม่มีไรมาก อย่างแรก ตรงตามที่ต้องการ กันน้ำ ติดแฮนด์ได้ กล้องความละเอียด 1.3M Pixels CMOS Sensor ที่ความละเอียด 720P (1280 * 720) 30Fps. ใส่เมมโมรี่ Micro SD ได้สูงสุด 32GB และ สามารถต่อออก TV ด้วยสายจากกล้องได้เลย อีกอย่างที่โดนใจ (คิดไปคิดมาก็ดีนะ) ก็คือ ใช้ถ่านอัลคาไลน์ 2 ก้อน (หรือถ่านชาร์ตก็ได้) ซึ่งมันก็สะดวกดีนะ หมดก็ไม่ต้องกังวลว่าจะหาที่ชาร์ตที่ไหน แล้วก็ไม่ต้องเสียเวลาชาร์ต

      ทีนี้เรามาดูภาพที่ได้จากกล้องกันครับ ถายตอนช่วงสายๆ


      ส่วน video ที่ถ้ายแล้วเป็นไง ทดลองเข้าไปดูได้ที่ Link ด้านล่างครับ แต่ในนั้นเค้าใช้ติดกับจักรยานครับ ซึ่งภาพที่ได้จากการติดรถจักรยานยนต์ ก็ไม่ต่างกันมากครับ
https://www.youtube.com/watch?v=kicwqvP4s0U


Create Shortcut in Raspberry pi

      ปกติก็เป็นคนชอบลืมครับ พอผ่านไปหลายวันหน่อย เคยเขียนไรไป บางทีต้องมานั่งทบทวน นี่ก็เป็นอีกเรื่องที่ลืมครับ วันก่อน จะต้องสร้าง Shortcut ให้กับเครื่องที่ไปติดตั้งให้กับใน Line การผลิต แต่ดันลืมจะสร้างยังไง ก็ต้องงี้เลยครับ สร้างไฟล์ที่มีนามสกุล .desktop แล้วใส่ Code ตามนี้


[Desktop Entry]
Name=My Name
Comment=My application which does this
Icon=/usr/share/pixmaps/openbox.xpm
Exec=/usr/bin/leafpad
Type=Application
Encoding=UTF-8
Terminal=false
Categories=None;


แล้ว Save ไฟล์ ก็จะปรากฏ Shortcut ที่เรากำหนดชื่อและปลายทางของโปรแกรม ที่ Desktop ครับ


วันพฤหัสบดีที่ 20 เมษายน พ.ศ. 2560

หมุนหน้าจอใน Raspberry pi

      กันลืมครับ วันนี้ติดตั้ง Raspberry pi ให้ LineA แต่ก็ต้องประสบปัญหาเดิมๆ ลืมสิครับต้องทำไง หน้าจอเป็นแนวนอน ต้องให้แสดงเป็นแนวตั้ง

      ก็ไม่ยากนี่ เข้าไปที่ไฟล์ config.txt ที่อยู่ใน boot จากนั้น เพิ่ม code สั้นๆ ด้วย display_rotate=1 เพียง reboot ใหม่ก็จะได้หน้าจอแสดงผลทางแนวตั้ง แล้วค่าคื่นล่ะ นอกเหนือจาก 1 มีมั๊ย? แล้วมันมีความหมายยังไง ก็ตามนี้ครับ

      display_rotate=0   คือ Nomal
      display_rotate=1.  คือ 90 องศา
      display_rotate=2.  คือ 180 องศา
      display_rotate=4.  คือ 270 องศา



String กับ Javascript

      จากวันก่อนรับงานมาเรื่องหน้าเว็บแสดงสต็อคงานของไลน์ที่ย้ายใหม่ ก็จัดเลยครับด้วย javascript แต่พอเปรียบเทียบค่าที่ได้จาก json แล้วใส่ค่าสีให้ตารางใน cell นั้นตามเงื่อนไข มีบางรายการไม่เป็นไปตามเงื่อนไข ก็ไล่อยู่พักนึง ค่าที่ได้ กับข้อมูลในฐานข้อมูลตรงกัน แล้วจะไม่ได้ได้ไง

      ก็ตะหงิดใจเรื่องตัวแปรกับข้อมูลที่ถูกปั้นด้วย json ทีนี้มาพร้อมเสียงกระซิบที่ด้านข้างว่า ชนิดตัวแปรถูกป่าว? ชัดเลยครับ Alert ชนิดตัวแปรด้วย typeof ออกมา string ล้วนๆ เมื่อรู้แล้วก็จัดการแปลงชนิดตัวแปลให้เป็นตัวเลขด้วยคำสั่ง Number แค่นี้จบเลย

      javascript จะ return ค่าออกมาเป็นชนิด string เสมอ จุดนี้เลยที่ต้องระวังเมื่อต้องมีการเทียบค่า ต้องแปลงชนิดตัวแปรให้ตรงกับสิ่งที่เราต้องการใช้ก่อนเสมอ. 



วันอังคารที่ 18 เมษายน พ.ศ. 2560

Keyword จากลูกพี่ (Non Blocking)

      วันนี้นั่งงง?งง?งง ทำไมมันไม่ออกนะ ลอง Debug ค่าออกมา มันก็มีค่านี่นา แล้วทำไม่ ไม่แสดงค่าออกมาที่หน้าเว็บล่ะ ลองหลายท่า เท่าที่น่าจะเป็นตามความคิด สุดท้าย น้องมาช่วยดู บวกกับได้คำชี้แนะจากลูกพี่มา เพียงแค่ "ลองไปอ่าน Non Blocking ดู"

      Blocking กับ Non Blocking ต่างกันก็ตรงที่ Blocking จะไม่ยอมให้การทำงานของ Function ที่อยู่ถัดไปทำงานจนกว่าการทำงานก่อนหน้าจะเสร็จ ส่งค่าออกไปแล้วจึงจะยอมให้ทำงานได้ (เหมือนกับ Sequence เลยแฮะ) ส่วน Non Blocking เป็นการทำงานที่ไม่ Block การทำงานใดๆเลย (ตรงตัว) หากมีการทำงานอยู่ 3 function คือ Function A , Function B , Function C ในการทำงานแบบนี้ จะไม่รอจนกว่าการทำงาน A จะเสร็จจนส่งค่าออกไปแล้วถึงจะทำงาน B แต่หากการทำงานของ Function B เสร็จก่อน ก็ให้ส่งผลของ B ออกไปก่อน โดยไม่ต้องรอให้ A เสร็จก่อน ถ้า C เสร็จก่อน ก็ให้ C ส่งผลออกไปก่อนได้ ข้อดีคือ ทำให้การทำงานของ โปรแกรมเร็วขึ้น เพราะไม่ต้องรอกัน แต่ก็มีจุดที่ทำให้ งงกันครับ ก็มันน่าจะได้ค่าแล้วนี่ เหมือนผมเลย

      พอได้รู้ตามนี้ ก็ลองมะโนตามเลย ผลที่ Debug โปรแกรมไว้ มันใช่เยย ค่าที่เราคาดหวัง มันอยู่ด้านล่าง ส่วนค่าที่อยู่ส่วนประกาศออกมาที่เว็บ มันอยู่ด้านบนซึ่ง ไม่มีค่าใดๆ (เป็นค่าว่าง) ใช่เลยงานนี้ แทนที่มันจะทำงานใน function ให้เสร็จก่อน แต่ไม่ใช่ มันดันเป็น Non Blocking มันประกาศค่าออกทางเว็บก่อนที่ function จะทำงานเสร็จเสียอีก ค่าที่คาดหวังจะได้ที่หน้าเว็บก็เลยไม่มีอะไรมาสู่สายตาครับ

      คราวนี้คิดสิ จะทำไงต่อหว่า ไว้พรุ่งนี้ต้องลองใหม่ครับ



วันเสาร์ที่ 8 เมษายน พ.ศ. 2560

คำที่คนไทยใช้ผิดบ่อยๆ (ต่อ)

มาดูเพิ่มกันครับ ว่ายังมีคำที่คนไทยหลายคนยังเข้าใจผิด

      1. Pretty
            เวลาเราไปงานแสดงสินค้างต่างๆ อย่างเช่น Motor Show เราจะเห็นนางแบบของบู๊ตต่างๆ คนไทยจะเรียกว่า พริตตี้ หากแปลตรงตัว Pretty แปลว่า น่ารัก หรือสวย น่ามอง ซึ่งถ้าจะใช้ให้ถูกต้องเป็น Model ครับ เพียงแต่ระบุว่า models at exhibitions ก็คือพริตตี้ที่คนไทยเรียกกัน

      2. Out of order
            คำนี้คนไทยนิยมใช้ในความหมายว่า สินค้าหมด แต่ความหมายจริงๆคือ สินค้าชำรุด ไม่สามารถใช้งานได้แล้ว โดยส่วนใหญ่จะแปะติดกับตู้หยอดเหรียญ เป็นต้น ส่วนที่ถูกต้องใช้ "Sold out" ซึ่งจะแปลว่าสินค้าหมด พบได้ตามเว็บขายของต่างๆครับ

      3. Fitness
            "ไปฟิตเนสกันมั๊ย?" คนไทยมักเรียกสถานที่ออกกำลังกายว่า "ฟิตเนส" แต่ไม่รู้เลยว่าจริงๆแล้วมันมีความหมายว่า "สมรรถนะทางร่างกาย" ซึ่งไม่ใช่สถานที่ออกกำลังกาย หากจะใช้ให้ถูก เราต้องใช้
Gym หรือ Fitness center

      4. In trend
            "ทันสมัย" คนไทยมักใช้คำนี้ คิดว่าที่มาของการใช้งานคำนี้ มาจากประโยค "It is in trend" แปลว่า "มันทันสมัย" แต่สำหรับฝรั่งแล้วเค้าจะไม่ใช้ "In trend" แต่จะใช้ Trendy หรือ fashionable

วันศุกร์ที่ 7 เมษายน พ.ศ. 2560

คำที่คนไทยใช้ผิดบ่อยๆ (ต่อ)

วันนี้ก็มาต่อกันอีกครับ วันนี้ขอสัก 4 คำนะครับ

      1. Jam
            คนไทยส่วนใหญ่มักจะใช้คำว่า "แจม" นี้แบบที่ฝรั่งไม่เข้าใจ เช่น เวลาที่เราจะไปขอทานข้าวร่วมกับเพื่อน ก็จะพูดว่า "จะขอแจมด้วยคน" ซึ่งฝั่งจะใช้ Join ไม่ใช่ Jam

      2. Back
            นี่ก็อีกคำนึงที่คนไทยใช้ในความหมายว่า คนที่คอยสนับสนุนอยู่ข้างหลัง แต่ความหมายที่แท้จริงก็คือ หลัง(อวัยวะ) ฝรั่งงงครับว่าเกี่ยวอะไรกับหลัง ซึ่งที่ถูกจะต้องใช้ a backup หรือ support

      3. Check bill
            คนไทยเวลาจะเรียกให้เก็บเงินด้วย มักจะใช้ประโยคว่า เช็คบิลด้วย (Check bill) แต่ฝรั่งงงครับ หากเป็นชาวอังกฤษจะใช้แค่ บิล (bill) เฉยๆ หรือประโยคที่ว่า Bill, Please  แต่ถ้าเป็นอเมริกัน ก็จะใช้คำว่า เช็ค (Check) หรือประโยคว่า Check, Please

      4. Mansion
            คำว่า แมนชั่น มักจะเป็นการเรียกที่พักหรือห้องพัก หอพักของเรา และก็มีหมอพักหลายที่ใช้คำว่าแมนชั่นมาติดที่หน้าหอหรือ เอามาทำเป็นชื่อหอพัก แต่ถ้าแปลตามตัว มีความหมายว่า คฤหาสน์ หากเราเอาไปพูดไปว่าเราอยู่แมนชั่น ฝรั่งคงอิจฉาเราแน่ๆว่าเรารวย อยู่คฤหาสน์ ซึ่งที่ถูกจะต้องใช้คำว่า แฟรท (Flat)  หรือ อพาร์ตเมนต์ (Apartment) ครับ

วันอาทิตย์ที่ 2 เมษายน พ.ศ. 2560

คำที่คนไทยใช้ผิดบ่อยๆ (ต่อ)

      มาดูเพิ่มเติมครับจากวันก่อน

      1. Suit กับ Suite
            หลายคนคงตุ้นเคยกับคำนี้ Suit (สูท) หรือชุดสูท แค่เติม e ต่อท้าย ความหมายและการออกเสียงก็จะเปลี่ยนทันที ถ้า suite room เราออกเสียงว่า "สูทรูม" จะได้ความหมายว่า ห้องเก็บชุดสูท ซึ่งที่ถูกต้องออกเสียงว่า "ส-วีทรูม" จึงจะให้ความหมายว่า ห้องชุดหรูหราในโรงแรม

      2. Sword
            คำว่า Sword มีความหมายว่า นักดาบ มักพบในหนังและเกมส์ หลายคนออกเสียงว่า "สะหวอด" ซึ่งผิด ที่จริงแล้วต้องออกเสียงว่า "ซอร์ด" โดยการตัดเสียง "W" ออกไป

      3. Dove
            คำนี้คุ้นตากันดีกับยี่ห้อสบู่ในท้องตลาด นั่นก็คือ "โดฟ" และหลายคนก็เข้าใจว่ามันหมายถึง "นกเขา" แต่ถ้าจะให้แปลว่า นกเขา ต้องออกเสียงว่า "เดิฟ" ส่วน "โดฟ" จะให้ความหมายว่า "ดำน้ำ , กระโดดลงนำ้"

      4. Volume
            คำนี้มักออกเสียงกันว่า "วอลุ่ม" หรือ "โวลุ่ม" แต่ฝรั่ง งง!! เพราะเค้าจะออกเสียวว่า "โวลยุ่ม"

      5. Value
            คำนี้ก็อีกคำที่มักออกเสียงกันว่า "แวลู่" แต่ที่ให้ถูกต้องออกเสียง "แฟยิ่ว" ฟังแล้วไม่ค่อยคุ้นเลยจริงป่ะ