[TH] ESP-IDF Ep.1: ESP-IDF on Raspberry Pi

บทความนี้เป็นขั้นตอนการติดตั้ง ESP-IDF บนบอร์ด Raspberry Pi 3 หรือ 4 ที่ติดตั้ง Raspbian เป็นระบบปฏิบัติการ (หรือประยุกต์เข้ากับการติดตั้งบนระบบปฏิบัติการอื่น ๆ ของเครื่องที่ใช้หน่วยประมวลผลของ AMD/Intel ได้) เพื่อใช้เป็นตัวแปลภาษา C++ สำหรับพัฒนาโปรแกรมสำหรับบอร์ด ESP32 ซึ่งเรียกกว่า bare metal หรือใช้ในการคอมไพล์ MicroPython โดยเฉพาะตัว mpy-cross ซึ่งเป็นตัวแปลภาษาไพธอน (.py) ให้เป็นไบต์โค้ด (.mpy) ซึ่งทำให้สามารถปกป้องรหัสที่เขียน (Source code) ช่วยให้การประมวลผลคำสั่งไวขึ้น (เนื่องจากถูกแปลมาก่อนแล้ว) และขนาดของไฟล์มีขนาดเล็กลง

ภาพที่ 1 หน้าจอเมื่อเข้าใช้ Terminal

[TH] ESP8266+PCF8583

บทความนี้เป็นการเขียนโปรแกรมภาษา Python ของ MicroPython เพื่อตั้งค่า/อ่านค่าวันที่และเวลาของ pcf8583 ซึ่งเป็น RTC ที่พวกเราชอบใช้ ซึ่งพวกเราพบว่ามีตัวอย่างที่เป็นภาษาไพธอนค่อนข้างน้อยจึงนำโค้ดตัวอย่างที่ทำไว้ออกมาให้ได้ลองศึกษากัน

ภาพที่ 1 บอร์ด ET-mini PCF8583

[TH] Arduino : repetition

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

  • กระทำครั้งละคำสั่งจากบนลงล่าง
  • สามารถเพิ่มเติมให้เกิดเงื่อนไขของการประมวลผลคำสั่ง
  • สามารถให้เกิดการทำซ้ำคำสั่งที่ต้องการ

[TH] Arduino : condition

บทความนี้อธิบายรูปแบบของการใช้ชุดคำสั่งสำหรับการตรวจสอบเงื่อนไขเพื่อสร้างทางเลือกในการเขียนโปรแกรม ทั้งนี้การเขียนโปรแกรมภาษา C++ ใช้เครื่องหมาย { และ } เป็นเครื่องหมายบ่งบอกบล็อกของการทำงานแต่ละบล็อก นั่นหมายความว่า ชุดคำสั่งในแต่ละบล็อกมีขั้นตอนการทำงานเรียงจากบนลงล่างเสมอ โดยกระทำทีละ 1 และสามารถเลือกทำคำสั่งด้วยการสร้างเงื่อนไข นอกจากนี้สามารถให้ทำซ้ำในส่วนของคำสั่งที่ต้องการได้ด้วยการทำซ้ำซึ่งจะกล่าวถึงในบทความตอนถัดไป

[TH] Arduino: Expression

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

[TH] Arduino: Operators

บทความนี้รวบรวมเนื้อหาเกี่ยวกับเครื่องหมายดำเนินการ (Operators) ที่ใช้ใน C++ เพื่อใช้เขียนนิพจน์ (Expression) ของคำสั่ง โดยเครื่องหมายดำเนินการแบ่งเป็น 5 กลุ่ม คือ เครื่องหมายดำเนินการทางคณิตศาสตร์ (Arithmetic) เครื่องหมายดำเนินการทางบูล (Boolean) เครื่องหมายดำเนินการเปรียบเทียบ (Comparison) เครื่องหมายดำเนินการทางบิต (bitwise) และเครื่องหมายดำเนินการแบบประกอบกัน (Compound)

[TH] Arduino: data types

ในบทความนี้กล่าวถึงตัวแปร ประเภทของข้อมูลและค่าคงที่สำหรับใช้กับ Arduino ซึ่งเป็นพื้นฐานของการเขียนโปรแกรม ทั้งนี้เนื่องจากการเขียนโปรแกรมมีหลักการ ดังที่ Niklaus Wirth  ได้กล่าวไว้ตั้งแต่ ค.ศ. 1976 ในหนังสือ ว่า

Algorithms + Data Structures = Programs

หรือ

โปรแกรม = ข้อมูล + ขั้นตอนวิธี

ทั้งนี้ เนื่องจากโปรแกรมคือขั้นตอนวิธีการแก้ปัญหาที่นำข้อมูลมาประมวลผล ซึ่งเป็นสาเหตุสำคัญของความแตกต่างระหว่างการคำนวณกับโปรแกรม

[TH] Arduino: Serial Class

บทความนี้อธิบายการใช้งานคลาส Serial ในเฟรมเวิร์กของ Arduino เพื่อใช้เป็นคำสั่งสำหรับรายงานผลจากบอร์ดไมโครคอนโทรลเลอร์กลับมายังโปรแกรม Arduino IDE ทำให้สะดวกต่อการตรวจสอบการทำงานและการเรียนรู้พื้นฐานภาษา C++

[TH] Arduino: ESP32/ESP8266

บทความนี้อธิบายการติดตั้งเฟรมเวิร์ก Arduino สำหรับบอร์ด ESP32 และ ESP8266 เพื่อใช้งานกับ Arduino IDE ทำให้สามารถใช้ C++ กับบอร์ดทั้ง 2 ได้ โดยบทความจะบอกขั้นตอนการติดตั้งเพื่อเป็นแนวทางสำหรับผู้ที่สนใจ

[TH] Arduino: Arduino Uno

บทความนี้แนะนำบอร์ด Arduino รุ่น Uno ซึ่งเป็นบอร์ดที่นิยมใช้ในการศึกษาการเขียนโปรแกรมเพื่อควบคุมอุปกรณ์ โดยกล่าวถึงคุณสมบัติของบอร์ด และการใช้ Arduino IDE รุ่น 2 (beta 7) เป็นพื้นฐานสำหรับการเขียนโปรแกรมต่อไป