แสดงกระทู้

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.


Messages - Watchara A.

หน้า: [1] 2
1
ผู้ช่วยผู้ประสานงาน ศูนย์ประสานงานภูมิภาคฯ ภาคกลางและภาคตะวันออก

นายกัปปน์ สร้อยคำพา
ผู้ช่วยผู้ประสานงานฯ
จดหมายอิเล็กทรอนิกส์ kupp.soy@gmail.com
หมายเลขโทรศัพท์ 096-607-6051

2
ถ้าเป็น ณ เวลานี้อาจารย์ใช้ KBIDE จะง่ายที่สุดครับ
ลองค้นด้วยคีย์เวิร์ดนี้ในกูเกิ้ลนะครับ

3
KidBright IDE Q&A / Re: การอัพเดท kidbright IDE
« เมื่อ: สิงหาคม 22, 2019, 01:31:37 PM »
โดยปกติแล้ว ควรใช้เวลาไม่นานครับ
แต่หลายกรณีในคอมพิวเตอร์บางเครื่องพบปัญหาการอัพเดทเช่นกันครับ

ผมจะพยายามแจ้งทีมพัฒนา KidBright IDE ให้ครับ
ในช่วงนี้สามารถทดลองใช้ KBIDE ไปพลางก่อนได้ครับ

4
เซ็นเซอร์ที่นำไปใช้เป็นรุ่นไหนครับ

5
การ Reset ที่บอร์ดเป็นการเริ่มต้นการทำงานใหม่เหมือน Computer ครับ
ไม่ใช่การล้างโปรแกรมที่มีอยู่ครับ

6
ตัวอย่าง KidBright with Arduino IDE : ต่อเซ็นเซอร์ DHT22 เพิ่ม

ตัวอย่างนี้เป็นการอ่านค่าอุณหภูมิและความชื้นจากการต่อเซ็นเซอร์ DHT22 บน KidBright เพิ่มเติมด้วย Single Wire Bus ที่ Pin 19 และ ส่งค่าผ่าน Serial กลับมาที่ Serial Monitor ของ Arduino

Sourcecode จะแสดงอุณหภูมิและความชื้นผ่าน Serial Monitor ทุก 1 วินาที

โค๊ด: [Select]
#include <DHT.h>
#define DHTTYPE DHT22
#define DHTPIN 19

DHT dht(DHTPIN, DHTTYPE);

float humiddht = 0;     // ค่าความชื้น
float tempdht  = 0;     // ค่าอุณหภูมิ

void dhtreadTempAndHumid()
{
          humiddht = dht.readHumidity();     
          tempdht  = dht.readTemperature(); 
         
          Serial.print("Humid: "); Serial.print(humiddht); Serial.print(" %, ");
          Serial.print("Temp: "); Serial.print(tempdht); Serial.println(" °C ");
 
}

void setup() {
  Serial.begin(9600);
  Wire1.begin(4, 5);
  dht.begin(); // initialize โมดูล DHT
}

void loop() {
  dhtreadTempAndHumid();
  delay(1000);
}

แก้ไขเพิ่มเติมจาก : PIEAcademy - NETPIE-KidBright-Workshop2018

7
ตัวอย่าง KidBright with Arduino IDE : อ่านค่า RTC

ตัวอย่างนี้เป็นการอ่านค่าเวลา และตั้งเวลา ด้วย Realtime Clock Module (RTC) บน KidBright และ ส่งค่าผ่าน Serial กลับมาที่ Serial Monitor ของ Arduino

MCP7941x บน KidBright ทำหน้าที่เป็น RTC ต่อกับ I2C Bus ที่ I2C1 ด้วย Address 0x6F

Sourcecode จะแสดงเวลาผ่าน Serial Monitor ทุก 1 วินาที

โค๊ด: [Select]
#include <Wire.h>

#define MCP7941x_RTC_I2C_ADDR 0x6F
#define RTC_LOCATION 0x00
#define WireSend(x) Wire1.write(x)
#define WireReceive() Wire1.read()

byte decToBcd(byte val)
{
 return ( (val/10*16) + (val%10) );
}


byte bcdToDec(byte val)
{
 return ( (val/16*10) + (val%16) );
}

void setDateTime(
  byte second,        // 0-59
  byte minute,        // 0-59
  byte hour,          // 1-23
  byte dayOfWeek,     // 1-7
  byte dayOfMonth,    // 1-28/29/30/31
  byte month,         // 1-12
  byte year)          // 0-99
{
  Wire1.beginTransmission(MCP7941x_RTC_I2C_ADDR);
  WireSend(RTC_LOCATION);
 
  WireSend(decToBcd(second) & 0x7f);              // set seconds and disable clock (01111111)
  WireSend(decToBcd(minute) & 0x7f);              // set minutes (01111111)
  WireSend(decToBcd(hour) & 0x3f);                // set hours and to 24hr clock (00111111)
  WireSend(0x08 | (decToBcd(dayOfWeek) & 0x07));  // set the day and enable battery backup (00000111)|(00001000)
  WireSend(decToBcd(dayOfMonth) & 0x3f);          // set the date in month (00111111)
  WireSend(decToBcd(month) & 0x1f);               // set the month (00011111)
  WireSend(decToBcd(year));                       // set the year (11111111)
 
  Wire1.endTransmission();

  // Start Clock:
  Wire1.beginTransmission(MCP7941x_RTC_I2C_ADDR);
  WireSend(RTC_LOCATION);
  WireSend(decToBcd(second) | 0x80);     // set seconds and enable clock (10000000)
  Wire1.endTransmission();
}


void enableClock()
{
  // Get the current seconds value as the enable/disable bit is in the same
  // byte of memory as the seconds value:
  Wire1.beginTransmission(MCP7941x_RTC_I2C_ADDR);
  WireSend(RTC_LOCATION);
  Wire1.endTransmission();

  Wire1.requestFrom(MCP7941x_RTC_I2C_ADDR, 1);
 
  int second = bcdToDec(WireReceive() & 0x7f);  // 01111111

  // Start Clock:
  Wire1.beginTransmission(MCP7941x_RTC_I2C_ADDR);
  WireSend(RTC_LOCATION);
  WireSend(decToBcd(second) | 0x80);     // set seconds and enable clock (10000000)
  Wire1.endTransmission();
}

void getDateTime(
  byte *second,
  byte *minute,
  byte *hour,
  byte *dayOfWeek,
  byte *dayOfMonth,
  byte *month,
  byte *year)
{
  Wire1.beginTransmission(MCP7941x_RTC_I2C_ADDR);
  WireSend(RTC_LOCATION);
  Wire1.endTransmission();

  Wire1.requestFrom(MCP7941x_RTC_I2C_ADDR, 7);
 
  // A few of these need masks because certain bits are control bits
  *second     = bcdToDec(WireReceive() & 0x7f);  // 01111111
  *minute     = bcdToDec(WireReceive() & 0x7f);  // 01111111
  *hour       = bcdToDec(WireReceive() & 0x3f);  // 00111111
  *dayOfWeek  = bcdToDec(WireReceive() & 0x07);  // 01111111
  *dayOfMonth = bcdToDec(WireReceive() & 0x3f);  // 00111111
  *month      = bcdToDec(WireReceive() & 0x1f);  // 00011111
  *year       = bcdToDec(WireReceive());         // 11111111
}

void displayDateTime(byte second, byte minute, byte hour, byte dayOfWeek, byte dayOfMonth, byte month, byte year) {
  if (hour < 10) {
    Serial.print("0");
  }

  Serial.print(hour, DEC);
  Serial.print(":");

  if (minute < 10) {
    Serial.print("0");
  }

  Serial.print(minute, DEC);
  Serial.print(":");

  if (second < 10) {
    Serial.print("0");
  }

  Serial.print(second, DEC);
  Serial.print("  ");

  if (dayOfMonth < 10) {
    Serial.print("0");
  }

  Serial.print(dayOfMonth, DEC);
  Serial.print("/");

  if (month < 10) {
    Serial.print("0");
  }

  Serial.print(month, DEC);
  Serial.print("/");

  Serial.print(year, DEC);

  Serial.print(" (");

  switch (dayOfWeek) {
    case 1:
      Serial.print("Sunday");
      break;

    case 2:
      Serial.print("Monday");
      break;

    case 3:
      Serial.print("Tuesday");
      break;

    case 4:
      Serial.print("Wednesday");
      break;

    case 5:
      Serial.print("Thursday");
      break;

    case 6:
      Serial.print("Friday");
      break;

    case 7:
      Serial.print("Saturday");
      break;
  }

  Serial.println(")");
}

void setup() {
  byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
  //while (!Serial);
  Serial.begin(9600);

  Wire1.begin(4, 5);

  second = 0;
  minute = 59;
  hour = 23;
  dayOfWeek = 3;   // 1 = Sunday, 7 = Saturday
  dayOfMonth = 8;
  month = 11;
  year = 11;
  setDateTime(second, minute, hour, dayOfWeek, dayOfMonth, month, year);
  getDateTime(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
  displayDateTime(second, minute, hour, dayOfWeek, dayOfMonth, month, year);
}

void loop() {
 
 byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
 
  getDateTime(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
  delay(500);
  // Display the Date/Time on the serial line:
  displayDateTime(second, minute, hour, dayOfWeek, dayOfMonth, month, year);
  delay(500);
}

แก้ไขเพิ่มเติมจาก : PIEAcademy - NETPIE-KidBright-Workshop2018

8
ตัวอย่าง KidBright with Arduino IDE : อ่านค่า Light Sensor (Analog Input)

ตัวอย่างนี้เป็นการอ่านค่า Light Sensor บน KidBright และ ส่งค่าผ่าน Serial กลับมาที่ Serial Monitor ของ Arduino

Light Dependent Resistor (LDR) บน KidBright ทำหน้าที่เป็น Light Sensor ต่อกับชุด Analog to Digital Conver (ADC) ของ KidBright ที่ Pin 36

Sourcecode จะแสดงค่าความเข้มแสงผ่าน Serial Monitor ทุก 5 วินาที

โค๊ด: [Select]
int analog_value = 0;
void setup()
{
     Serial.begin(9600);
}

void loop()
{
     analog_value = analogRead(36);
      if(analog_value > 1000){
        analog_value = 1000;
      }
      int ll = (1000 - analog_value)*100/1000;
      Serial.println(ll);
      delay(5000);
}

แก้ไขเพิ่มเติมจาก : PIEAcademy - NETPIE-KidBright-Workshop2018

9
ตัวอย่าง KidBright with Arduino IDE : อ่านค่า Temperature Sensor บน KidBright

ตัวอย่างนี้เป็นการอ่านค่า Temperature Sensor บน KidBright และ ส่งค่าผ่าน Serial กลับมาที่ Serial Monitor ของ Arduino

LM73 ซึ่งเป็น Temperature Sensor บน KidBright ต่อกับ KidBright ผ่าน I2C Bus ทาง I2C1 ที่ Address 0x4D
ไม่จำเป็นต้องติดตั้ง Library ใดๆเพิ่มเติม (ขอขอบคุณข้อมูลจาก NETPIE Academy)

Sourcecode จะแสดงค่าอุณหภูมิผ่าน Serial Monitor ทุก 5 วินาที

โค๊ด: [Select]
#include <Wire.h>
#define LM73_ADDR 0x4D

int analog_value = 0;
double temp=0;

float readTemperature() {
  Wire1.beginTransmission(LM73_ADDR);
  Wire1.write(0x00); // Temperature Data Register
  Wire1.endTransmission();
 
  uint8_t count = Wire1.requestFrom(LM73_ADDR, 2);
  float temp = 0.0;
  if (count == 2) {
    byte buff[2];
    buff[0] = Wire1.read();
    buff[1] = Wire1.read();
    temp += (int)(buff[0]<<1);
    if (buff[1]&0b10000000) temp += 1.0;
    if (buff[1]&0b01000000) temp += 0.5;
    if (buff[1]&0b00100000) temp += 0.25;
    if (buff[0]&0b10000000) temp *= -1.0;
  }
  return temp;
}

void setup() {
  Serial.begin(9600);
  Wire1.begin(4, 5);
}

void loop() {
      temp = readTemperature();
      Serial.print("Temp:");Serial.println(temp);
      delay(5000);
}

แก้ไขเพิ่มเติมจาก : PIEAcademy - NETPIE-KidBright-Workshop2018

10
ตัวอย่าง KidBright with Arduino IDE : ควบคุม LED Matrix 16x8

ตัวอย่างนี้เป็นการควบคุม LED Matrix 16x8  ของ KidBright

โดยเบื้องต้น LED Matrix 16x8 นี้จะถูกควบคุมผ่าน I2C Bus ที่ Address 0x70
และจำเป็นต้องมี Library Adafruit_GFX และ Adafruit_LEDBackpack ติดตั้งไว้ใน Arduino IDE ก่อน

ตัวอย่างต่อไปนี้ จะเป็นการแสดงตัวอักษร

โค๊ด: [Select]
#include <Wire.h>
#include <Adafruit_GFX.h>
#include "Adafruit_LEDBackpack.h"

Adafruit_8x16minimatrix matrix = Adafruit_8x16minimatrix();

void setup() {
  matrix.begin(0x70);  // pass in the address
}

void loop() {
 
 
  matrix.setTextSize(1);
  matrix.setTextWrap(false);  // we dont want text to wrap so it scrolls nicely
  matrix.setTextColor(LED_ON);
  matrix.setRotation(1);

  for (int8_t x=7; x>=-100; x--) {
    matrix.clear();
    matrix.setCursor(x,0);
    matrix.print("Hello World!");
    matrix.writeDisplay();
    delay(100);
  }
}

แก้ไขเพิ่มเติมจาก : PIEAcademy - NETPIE-KidBright-Workshop2018

11
ตัวอย่าง KidBright with Arduino IDE : ควบคุม OUTPUT (LED + USB + BUZZER)

ตัวอย่างนี้จะแนะนำการควบคุม GPIO บนบอร์ด KidBright อย่างง่าย
ดังนี้ครับ

เบื้องต้นจะเป็นการแนะนำ OUTPUT จำนวน 5 ชุด ได้แก่ LED WIFI, LED IOT, LED BT, พอร์ต USB และ BUZZER
โดยทั้ง 5 OUTPUT จะถูกต่ออยู่เข้ากับขาของ ESP32 ดังนี้
  • WIFI_LED PIN 2
  • IOT_LED PIN 12
  • USB_IO PIN 25
  • BT_LED PIN 23
  • BUZZER 13

ตัวอย่างต่อไปนี้จะทำการ เปิด-ปิด OUTPUT ทั้ง 5 ชุดสลับกัน ทุก 500 มิลลิวินาที
โดยสามารถประยุกต์นำไปใช้งานอื่นได้ตามต้องการครับ

โค๊ด: [Select]
void setup(){
pinMode(2, OUTPUT);
pinMode(12, OUTPUT);
pinMode(25, OUTPUT);
pinMode(23, OUTPUT);
pinMode(13, OUTPUT);
}

void loop(){
digitalWrite(2,HIGH);
digitalWrite(12,HIGH);
digitalWrite(25,HIGH);
digitalWrite(23,HIGH);
digitalWrite(13,HIGH);

delay(500);
digitalWrite(2,LOW);
digitalWrite(12,LOW);
digitalWrite(25,LOW);
digitalWrite(23,LOW);
digitalWrite(13,LOW);
delay(500);
}

แก้ไขเพิ่มเติมจาก : PIEAcademy - NETPIE-KidBright-Workshop2018

12
สอบถามค่ะ..กำลังทำ Project กับเด็ก ๆ ที่ รร. ไม่ทราบว่า บอร์ด Kidbrigth กับ Ultrasonic sensor ทำงานร่วมกันต้องผ่าน Arduino IDE ใช่หรือไม่
แล้วการต่อพ่วงต้องต่ออย่างไร ขอคำแนะนำด้วยค่ะ

แนะนำให้ทดลองใช้ KidBright กับ Arduino IDE ในการทำงานร่วมกับ Ultrasonic Sensor ครับ
สามารถทดลองตามตัวอย่างนี้ โดยใช้ PIN 18,19 บน KidBright ครับ

https://www.instructables.com/id/Pocket-Size-Ultrasonic-Measuring-Tool-With-ESP32/

ผมยังไม่ได้ทดลองใช้งาน ได้ผลเป็นอย่างไรช่วยแจ้งด้วยนะครับ

13
จากบทความที่แล้ว [http://quantum.engr.tu.ac.th/smf/index.php?topic=81.0]
พบว่า Plugin ของ KidBright ที่สามารถติดตั้งเพิ่มเติมได้ จะอยู่ที่ %LocalAppData%/KidBright/app-1.0.0/resources/app/kbide/plugins
(ศึกษาวิธีการเปิด จากลิงค์กระทู้ที่แล้ว)

บทความนี้จะแนะนำโครงสร้างของ Plugin ในแต่ละส่วนให้ทุกท่านทราบ โดยยกตัวอย่าง Plugins จอแสดงผล (display)

- display (โฟลเดอร์) 
           # lcd_i2c (โฟล์เดอร์)
                      msg (โฟล์เดอร์)
                              en.js (ไฟล์)
                              th.js (ไฟล์)
                      blocks.js (ไฟล์)
                      generators.js (ไฟล์)
                      lcd_i2c.cpp (ไฟล์)
                      lcd_i2c.h (ไฟล์)
           # lcd_spi (โฟล์เดอร์)
                      msg (โฟล์เดอร์)
                                 en.js (ไฟล์)
                                 th.js (ไฟล์)
                      blocks.js (ไฟล์)
                      generators.js (ไฟล์)
                      lcd_spi.cpp (ไฟล์)
                      lcd_spi.h (ไฟล์)

โดยแต่ละไฟล์และโฟล์เดอร์ จะมีความสำคัญและมีหน้าที่ ดังนี้
  • โฟล์เดอร์ display :: ใช้เก็บ Plugins, ชื่อโฟล์เดอร์มีความสำคัญมาก และต้องสอดคล้องกับไฟล์ display.json ด้านในโฟล์เดอร์
  • โฟล์เดอร์ msg :: ใช้เก็บข้อความสำหรับแสดงบนบล็อกใน KidBright IDE ทำให้การเขียนโปรแกรมครั้งเดียว สามารถแสดงได้ทุกภาษา (คล้ายกับ Translate, Translation ใน Opensource Software ต่างๆ)
  • ไฟล์ en.js :: ไฟล์ข้อความภาษาอังกฤษ
  • ไฟล์ th.js :: ไฟล์ข้อความภาษาไทย
  • ไฟล์ block.js : ไฟล์สำหรับการสร้าง Block ในการใช้งาน Function ต่างๆบน KidBright IDE สามารถสร้าง Sourcecode นี้ได้จากโปรแกรมสำเร็จรูป
  • ไฟล์ generator.js :: ไฟล์ Generator เพื่อเชื่อมโยงการต่อ Block INPUT/OUTPUT ต่างๆบนโครงสร้าง Block เพื่อใช้ในกระบวนการ C Code Generator
    สังเกตุได้จาก กระบวนการ parse ของ INPUT ต่างๆ และการ return ค่าเป็นฟังก์ชั่นที่คุ้นเคยในการเรียกใช้ Library ใน C++ ซึ่งการ return นี้จะไปปรากฏใน Sourcecode ที่จะถูก Deply ไปยัง KidBright32
  • ไฟล์ lcd_i2c.cpp หรือ lcd_spi.cpp :: ไฟล์ Sourcecode ในรูปแบบ C++ อาจเป็น Library เดิมของอุปกรณ์นั้นๆ ที่จะนำมาทำ Plugins
  • ไฟล์ lcd_i2c.h หรือ lcd_spi.h :: ไฟล์ Header ของ lcd_i2c.cpp

14
การติดตั้ง Plugin สำหรับ KidBright สามารถทำได้บน KidBright IDE เวอร์ชั่น 1.23 ขึ้นไป
โดยวิธีการอย่างง่ายในการติดตั้ง Plugin คือ




วิธีอย่างง่าย
  • ดาวน์โหลดปลั๊กอิน และ Extract ไว้รอการติดตั้ง (ควร Extract ในรูปแบบของโฟล์เดอร์)
  • คลิกขวาที่ไอคอน KidBright IDE บน Desktop
  • คลิก Open file location...
  • ไปที่โฟลเดอร์ app-1.0.0 -> resources -> app -> kbide -> plugins
  • คัดลอกไฟล์ที่ Extract ไว้ในข้อที่ 1. ลงในโฟล์เดอร์นี้
  • ปิดแล้วเปิด KidBright IDE ใหม่ จะพบ Plugin ถูกติดตั้งโดยสมบูรณ์

วิธีอย่างง่ายกว่า
  • กดปุ่ม Windows Icon บนคีย์บอร์ดค้างไว้ตามด้วยตัวอักษร R เพื่อเปิดหน้าต่าง Run
  • ใส่ข้อความ %LocalAppData%/KidBright/app-1.0.0/resources/app/kbide/plugins
  • กด Enter

** บทความนี้กำลังอยู่ในระหว่างปรับปรุง **

15
ปัจจุบันสามารถดาวน์โหลด KidBright IDE เวอร์ชั่นใหม่ล่าสุดได้ที่ :: https://www.kid-bright.org/download

โดยผู้ที่สนใจในการพัฒนา KidBright IDE เอง สามารถ Fork KidBright IDE มาพัฒนาเองได้ที่ :: https://gitlab.com/kidbright/kbide

Credit :: NEXPIE and NECTEC NSTDA

16
KidBright IoT Q&A / Re: FAQ : ใช้งาน KidBright IoT : Internet of Things อย่างไร ?
« เมื่อ: พฤศจิกายน 02, 2018, 06:08:42 PM »
เมื่อเปิดการใช้งานใน IDE แล้วเชื่อมต่อกับมือถือยังไงครับ (แอนดรอยด์ ลงแอพ kidbright แล้ว)

Application "KidBright" นั้น สำหรับเขียนโปรแกรมให้บอร์ด KidBright เวอร์ชั่นก่อนหน้าครับ
สำหรับการเชื่อมต่อ KidBright เพื่อใช้งาน IoT ให้ใช้ Application "KidBright IoT" ครับ

17
Code อยู่ใหนครับ

อยู่ในไฟล์แนบในกระทู้นี้ครับ อาจจะต้องสมัครสมาชิกก่อนครับ

18
สำหรับผู้พัฒนาโครงงานที่ผ่านเข้ารอบ และได้รับทุนรอบแรก จำนวน 3,000 บาท ขอให้ปฏิบัติ ดังนี้

1. ตรวจสอบรายชื่อและตัวสะกดของชื่อโครงงาน ชื่อผู้พัฒนา อาจารย์ที่ปรึกษา และโรงเรียน ให้เรียบร้อย หากมีการเปลี่ยนแปลงโปรดแจ้งให้ศูนย์ประสานงานที่ท่านสังกัดทราบ และแก้ไขต่อไป ภายในระยะเวลาไม่เกิน 15 วัน นับจากวันที่ได้จัดพิธีรับทุนรอบแรก

2. ผู้พัฒนาโครงงาน ที่มีความประสงค์จะขอเปลี่ยนแปลงข้อมูลโครงงาน สามารถ ดาวน์โหลดแบบฟอร์มการเปลี่ยนแปลงข้อมูลโครงงานได้ที่หน้าเว๊ปไซต์โครงการ หรือในระบบ SIMS และดำเนินการดังนี้
2.1 การขอเปลี่ยนชื่อโครงงาน: จะต้องดำเนินการก่อนการลงนามในสัญญารับทุน โดยหัวหน้าโครงงานต้องดำเนินการยื่นแบบฟอร์มขออนุมัติเปลี่ยนแปลงข้อมูลพร้อมแนบสำเนาบัตรประชาชนเป็นหลักฐานกับศูนย์ประสานงานที่ตนสังกัด
2.2 การขอเปลี่ยนสาขาโครงงาน: ให้เป็นอำนาจการตัดสินใจของศูนย์ประสานงาน ตามที่คณะกรรมการเห็นว่าเหมาะสม
2.3 หากมีการเปลี่ยนแปลงใดๆ ที่นอกเหนือจากข้อ 2.1 และ 2.2อาทิ การขอเพิ่ม ลด หรือเปลี่ยนแปลงรายชื่อผู้พัฒนาโครงงาน อาจารย์ที่ปรึกษา และหัวหน้าโครงงาน จะต้องดำเนินการก่อนการลงนามในสัญญารับทุน โดยผู้พัฒนาโครงงานต้องดำเนินการยื่นแบบฟอร์มขออนุมัติเปลี่ยนแปลงข้อมูลกับศูนย์ประสานงานที่ตนสังกัด ภายในระยะเวลาไม่เกิน 15 วัน นับจากวันที่ประกาศผล และการขอเพิ่มรายชื่อผู้พัฒนาใหม่จะต้องไม่เป็นผู้ที่มีรายชื่อซ้ำกับผู้พัฒนาในโครงงานอื่นๆ ซึ่งส่งผลงานเข้าร่วมการประกวด YSC2019 แล้ว ทั้งนี้การเปลี่ยนแปลงใดๆ ต้องได้รับความเห็นชอบจากศูนย์ประสานงานและเนคเทคเท่านั้น

3. โครงงานที่ผ่านการพิจารณา สามารถเริ่มพัฒนาโครงงานได้ตั้งแต่บัดนี้ และโปรดเตรียมตัวนำเสนอผลงานในรอบที่ 2 ในเดือนมกราคม 2561 ซึ่งจะประกาศกำหนดการและสถานที่ให้ทราบต่อไป

4.โครงงานที่ผ่านการพิจารณาได้รับทุน ต้องส่งไฟล์รายงานสำหรับการตรวจประเมินรอบนำเสนอผลงาน (รอบ 2) ใน ระบบ SIMS https://www.nectec.or.th/sims ภายในวันที่ 15 มกราคม 2562 เวลา 17.00 น. เท่านั้น หากพ้นกำหนดจะถูกตัดสิทธิ์การพิจารณาในรอบถัดไป และศูนย์ประสานงานและส่วนกลาง YSC ขอสวงนสิทธิ์ไม่ทำการอัฟโหลดไฟล์รายงานให้ทุกกรณี พร้อมขอคืนทุกการพัฒนาผลงานด้วย

5. โครงงานที่ผ่านการพิจารณาได้รับทุน ต้องนำส่งเอกสารข้อตกลงการรับทุนทั้ง 2 ฉบับ ซึ่งผู้พัฒนาต้องพิมพ์ออกจากระบบ SIMS พร้อมสำเนาบัตรบัตรประชาชน ที่มีการลงนามเรียบร้อย ส่งมอบให้แก่ศูนย์ประสานงานในพิธีมอบทุนโครงงานตามวันที่ที่ศูนย์ประสานงานที่ท่านสังกัดกำหนด ซึ่งจะประกาศให้ทราบอย่างเป็นทางการผ่านทาง Facebook: Young Scientist Competition - YSC Thailand และ YSC Thailand Fanpage อีกครั้งหนึ่ง

โดยผู้พัฒนาสามารถติดต่อส่งเอกสารขอรับทุนพัฒนาโครงงานงวดที่ 1 จำนวน 3,000 บาท ได้ที่ ศูนย์ประสานงานภูมิภาคที่ท่านสังกัด ภายใน 30 วัน หลังจากวันจัดพิธีมอบทุนตามที่ศูนย์ประสานงานกำหนด หากพ้นกำหนดศูนย์ฯ จะถือว่าท่านสละสิทธิ์การขอรับทุนสนับสนุนการพัฒนาโครงงาน และสิทธิ์ในการแข่งขันต่อไป

ทั้งนี้ ศูนย์ประสานงานภูมิภาค จะจัดพิธีมอบทุนและค่ายโครงงานวิทยาศาสตร์ ตามที่จะประกาศให้ทราบต่อไปดังนี้
1. ภาคเหนือ ณ มหาวิทยาลัยนเรศวร วันที่ 1 - 2 พฤศจิกายน 2561
2. ภาคตะวันออกเฉียงเหนือ (ศูนย์มหาวิทยาลัยเทคโนโลยีสุรนารี) ณ มหาวิทยาลัยเทคโนโลยีสุรนารี วันที่: รอการยืนยัน 3. ภาคตะวันออกเฉียงเหนือ (ศูนย์มหาวิทยาลัยอุบลราชธานี) ณ มหาวิทยาลัยอุบลราชธานี วันที่: 12 - 13 พฤศจิกายน 2561
4. ภาคใต้ ณ มหาวิทยาลัยวลัยลักษณ์ วันที่: 17 พฤศจิกายน 2561
5. ภาคกลาง ณ มหาวิทยาลัยธรรมศาสตร์ วันที่: รอการยืนยัน

เอกสารที่ใช้ประกอบการทำสัญญาและเบิกจ่ายเงินทุน ประกอบด้วย
1. ข้อตกลงการรับทุนอุดหนุน จำนวน 2 ชุด สามารถดาวน์โหลดและจัดพิมพ์จำนวน 2 ชุด ได้จากระบบ SIMS ตั้งแต่วันที่ 19 ตุลาคม 2561 โดยผู้พัฒนาที่เป็นหัวหน้าโครงงานและอาจารย์ที่ปรึกษาต้องลงนามให้ครบถ้วน ทั้ง 2 ชุด ในกรณีที่ผู้พัฒนาอายุน้อยกว่า 15 ปีบริบูรณ์ให้ผู้ปกครองลงนามในฐานะผู้แทนโดยชอบธรรมด้วย
2. สำเนาบัตรประจำตัว 1 ฉบับ ที่ลงนามสำเนาถูกต้องและยังไม่หมดอายุของผู้พัฒนาที่เป็นหัวหน้าโครงงาน อาจารย์ที่ปรึกษา และผู้ปกครอง (กรณีผู้พัฒนาอายุน้อยกว่า 15 ปี)
3. ใบสำคัญรับเงินของผู้พัฒนาที่เป็นหัวหน้าโครงงาน (รับได้ที่ศูนย์ประสานงาน) จำนวน 1 ฉบับ
4. หนังสือมอบอำนาจ ในกรณีที่หัวหน้าโครงงานไม่สามารถมารับทุนได้ ให้ทำหนังสือมอบอำนาจลงนามโดยหัวหน้าโครงงาน พร้อมทั้งสำเนาบัตรประชาชน และบัตรประจำตัวของผู้รับมอบอำนาจ

หมายเหตุ
: ผลการตัดสินของคณะกรรมการถือเป็นที่สิ้นสุด
: วิธีการรับเงินทุนสนับสนุนขึ้นอยู่กับการบริหารงานของศูนย์ประสานงาน ที่ท่านสังกัด
: หากโครงงานใดได้รับคัดเลือกและต้องการสละสิทธิ์ ขอให้แจ้งได้ที่ศูนย์ประสานงานที่ท่านสังกัดก่อนทำสัญญารับทุน
: สำหรับน้องๆ ผู้พัฒนา ที่ไม่สามารถจำรหัสผ่านในการเข้าระบบ SIMS ของตนเองได้ ให้ใช้ ฟังก์ชั่น Forget password ที่หน้า login ของระบบ SIMS หลังจากนั้นจะมีข้อความแจ้งรหัสผ่าน ไปยังอีเมล์ของท่าน ให้ท่านใช้รหัสผ่านนั้นเป็นข้อมูลเดิม ในการกำหนดรหัสผ่านใหม่ค่ะ

ทั้งนี้ สามารถติดตามความเคลื่อนไหวของโครงการแข่งขัน YSC ได้ที่เว็บไซต์หลักของโครงการ หรือ Facebook ของโครงการ

ดาวน์โหลดเอกสารเพิ่มเติม

19
สำหรับน้องๆ โครงการ YSC 2019 จากภาคกลาง กาคตะวันออกเฉียงเหนือ (ศูนย์ ม.อุบลราชธานี) ภาคเหนือ และภาคใต้ ที่ทราบผลการตัดสิน โดยมีชื่อผ่านเข้ารอบข้อเสนอโครงงาน และมีสิทธิ์ได้รับทุน 3,000 บาท ไปนอนในกระเป๋าเป็นที่เรียบร้อย

หากมีความประสงค์จะขอเปลี่ยนแปลงข้อมูลโครงงาน ผู้พัฒนาโครงงานต้องดำเนินการยื่นแบบฟอร์มขออนุมัติเปลี่ยนแปลงข้อมูลกับศูนย์ประสานงานที่ตนสังกัด ภายในระยะเวลาไม่เกิน 15 วัน นับจากวันที่ประกาศผล โดยสามารถ ดาวน์โหลดแบบฟอร์มการเปลี่ยนแปลงข้อมูลตามไฟล์ที่แนบมานี้ หรือสามารถ ดาวน์โหลดแบบฟอร์มฯ ได้ที่หน้าเว๊ปไซต์โครงการ หรือในระบบ SIMS และดำเนินการดังนี้

2.1 การขอเปลี่ยนชื่อโครงงาน: จะต้องดำเนินการก่อนการลงนามในสัญญารับทุน โดยหัวหน้าโครงงานต้องดำเนินการยื่นแบบฟอร์มขออนุมัติเปลี่ยนแปลงข้อมูลพร้อมแนบสำเนาบัตรประชาชนเป็นหลักฐานกับศูนย์ประสานงานที่ตนสังกัด ภายใน 15 วัน นับจากวันจัดพิธีรับทุนรอบแรกตามที่ศูนย์ประสานงานกำหนด

2.2 การขอเปลี่ยนสาขาโครงงาน: ให้เป็นอำนาจการตัดสินใจของศูนย์ประสานงาน ตามที่คณะกรรมการเห็นว่าเหมาะสม

2.3 หากมีการเปลี่ยนแปลงใดๆ ที่นอกเหนือจากข้อ 2.1 และ 2.2อาทิ การขอเพิ่ม ลด หรือเปลี่ยนแปลงรายชื่อผู้พัฒนาโครงงาน อาจารย์ที่ปรึกษา และหัวหน้าโครงงาน จะต้องดำเนินการก่อนการลงนามในสัญญารับทุน โดยผู้พัฒนาโครงงานต้องดำเนินการยื่นแบบฟอร์มขออนุมัติเปลี่ยนแปลงข้อมูลกับศูนย์ประสานงานที่ตนสังกัด ภายในระยะเวลาไม่เกิน 15 วัน นับจากวันที่ประกาศผล และการขอเพิ่มรายชื่อผู้พัฒนาใหม่จะต้องไม่เป็นผู้ที่มีรายชื่อซ้ำกับผู้พัฒนาในโครงงานอื่นๆ ซึ่งส่งผลงานเข้าร่วมการประกวด YSC2019 แล้ว ทั้งนี้การเปลี่ยนแปลงใดๆ ต้องได้รับความเห็นชอบจากศูนย์ประสานงานและเนคเทคเท่านั้น

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

20
ขอบพระคุณมากครับอาจารย์ที่สละเวลามาตอบคำถาม  ตอนนี้น่าจะแก้แบบง่ายไปก่อน เข้าใจแล้วว่าทำไมมันไม่เป็นอย่างที่เราคิด เพราะผมคิดแบบกราฟที่หนึ่งจริงๆ  ไม่เคยคิดถึงว่าแนวคิดแบบที่สองนั้นมีอยู่และเป็นไปได้ ตอนนี้เข้าใจในหลักการแล้วครับ  ในส่วนวิธีการยังไม่รู้จะเริ่มอย่างไร  ว่าจะเริ่มจากไปแกะรอย RTOS ตามลายแทงที่อาจารย์ให้ออกมาอีกทีครับ   ;D ;D ;D

รักเกียรติ

ถ้าอยากเริ่มได้ไว
แกะรอยจาก Example ไฟล์ ก่อนก็ได้ครับ

อาจจะยากไปสักหน่อย แต่เพลินดีครับ  ;D ;D

21
มีผู้ใหญ่ใจดีในวงการ Embedded Systems ไทยหลายคน
เขียนบทความเกี่ยวกับ FreeRTOS (ระบบปฏิบัติการ RTOS แบบ Opensource) ในภาษาไทยไว้จำนวนมาก
สามารถติดตามดูได้ดังนี้ครับ


22


ลักษณะการทำงานของ Real-Time Operating System
รูปบน - ความรู้สึกของเรา เมื่อใช้ RTOS และเขียนโปรแกรมในรูปแบบ Task :: เหมือนโปรแกรมทุกอย่างรันไปพร้อมๆกันตลอดเวลา
รูปล่าง - อันที่จริงแล้ว โปรแกรมของเราจะถูกซอยย่อยๆใน 1 หน่วยเวลา แล้วค่อยๆสลับทำงานแต่ละ Task

รูปจาก :: https://www.freertos.org/implementation/a00004.html

23
โค๊ด: [Select]
#include <WiFi.h>
#include <WiFiClientSecure.h>

#define LINE_TOKEN "ZZZZ"

#define WIFI_STA_NAME "XXXX"
#define WIFI_STA_PASS "YYYYY"


#include "Adafruit_LEDBackpack.h"

Adafruit_8x16minimatrix matrix = Adafruit_8x16minimatrix();




bool LINE_Notify(String message) {
  WiFiClientSecure client;

  if (!client.connect("notify-api.line.me", 443)) {
    Serial.println("connection failed");
    return false;
  }

  String payload = "message=" + message;
  String req = "";
  req += "POST /api/notify HTTP/1.1\r\n";
  req += "Host: notify-api.line.me\r\n";
  req += "Authorization: Bearer " + String(LINE_TOKEN) + "\r\n";
  req += "User-Agent: ESP32\r\n";
  req += "Content-Type: application/x-www-form-urlencoded\r\n";
  req += "Content-Length: " + String(payload.length()) + "\r\n";
  req += "\r\n";
  req += payload;
  // Serial.println(req);
  client.print(req);

  delay(20);

  // Serial.println("-------------");
  long timeOut = millis() + 30000;
  while (client.connected() && timeOut > millis()) {
    if (client.available()) {
      String str = client.readString();
      // Serial.print(str);
    }
    delay(10);
  }
  // Serial.println("-------------");

  return timeOut > millis();
}

void setup() {
  Serial.begin(115200);
 
  pinMode(14, INPUT_PULLUP); // S2
  pinMode(16, INPUT_PULLUP); // S1
  pinMode(32, INPUT_PULLUP); //IN1
  pinMode(17, OUTPUT);    // Bluetooth monitor S1
  pinMode(2, OUTPUT);     // Wifi monitor wifi
  pinMode(15, OUTPUT);    // NTP monitot IN1
  pinMode(12, OUTPUT);    // IoT

//Initial state set all LED trig in1 to off
  digitalWrite(17, HIGH);
  digitalWrite(2, HIGH);
  digitalWrite(15, HIGH);
  digitalWrite(12, HIGH);
  digitalWrite(32, HIGH);

  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(WIFI_STA_NAME);

  WiFi.mode(WIFI_STA);
  WiFi.begin(WIFI_STA_NAME, WIFI_STA_PASS);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    digitalWrite(2, LOW); //monitor wifi connect
  }


  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

  matrix.begin(0x70);
  matrix.setRotation(1);
  matrix.setTextSize(1);
  matrix.setTextWrap(false);
  matrix.setTextColor(LED_ON);
  matrix.setRotation(1);
}

void loop() {
  if (digitalRead (32) == LOW){digitalWrite(15, LOW);in1();digitalWrite(15, HIGH);}
  if (digitalRead (16) == LOW) {S1(); }
}

void in1(){
for (int16_t x = 0; x >= -500; x--) {
    matrix.clear();
    matrix.setCursor(x, 0);
    matrix.print("Hello Mr. Postman. Lift Top cover up and put mail in. Thanks you. ");
    matrix.writeDisplay();
    delay(40);
  }
 
}

void S1(){
   if (digitalRead(16) == LOW) {
      Serial.println("You Have Mail !");
      digitalWrite(17, LOW);
      LINE_Notify("%E0%B8%A1%E0%B8%B5%E0%B8%9C%E0%B8%B9%E0%B9%89%E0%B8%9A%E0%B8%B8%E0%B8%81%E0%B8%A3%E0%B8%B8%E0%B8%81+%21%21%21");
      digitalWrite(17, HIGH);
      //while (digitalRead(PIR_PIN) == HIGH) delay(1);
    }
}

พิจารณาจากคำถาม ที่ถามเข้ามา
และ Sourcecode แล้ว พบว่าเป็นปัญหาที่มักพบบ่อย และ มีประโยชน์มากที่จะตอบเป็นสาธารณะครับ

ลักษณะนี้เรียกว่า การทำงานที่ไม่ทันเวลาของไมโครคอนโทรลเลอร์
ถ้าจะอธิบายอย่างง่ายคือ

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

เช่น ถ้าเขียนโปรแกรมด้วยภาษาซีบน Arduino ในลักษณะเช่นนี้
โค๊ด: [Select]
ฯลฯ
delay(10000);
if(digitalRead(1)==HIGH)
  {
    //digitalWrite(13,HIGH);
  }
ฯลฯ

ในขณะที่ดีเลย์ 10 วินาที นั้น จะไม่สามารถประมวลผลคำสั่งถัดไปได้เลย (กล่าวคือจะรอเฉยๆ 10 วินาที) เมื่อผ่าน 10 วินาทีไปแล้ว จึงจะทำคำสั่งบรรทัดถัดไป

ซึ่งเมื่อเปรียบเทียบกับ Sourcecode ที่ส่งเข้ามาแล้ว จะพบว่า
เมื่อ digitalRead(32); ให้ค่าออกมาเป็น LOW นั้น ฟังก์ชั่น inl(); ซึ่งใช้ในการแสดงข้อความผ่านทาง dot matrix display จะทำงาน
โดยจะค่อยๆเลื่อนตัวอักษรทีละตัว (ในทางเทคนิคคือเปิด-ปิดไฟ ทีละดวงด้วยความรวดเร็ว) ซึ่งใช้เวลาในการทำงานมาก จึงจำเป็นต้องรอให้ทำงานจบก่อน (ข้อความเลื่อนแสดงครบก่อน) จึงจะทำคำสั่ง digitalWrite(15, HIGH); และคำสั่งอื่นๆซึ่งอยู่ถัดไปได้

วิธีการแก้ไขทำได้โดย
- แบบง่าย
ทำงานที่เสร็จเร็วก่อน ในกรณีนี้คือ ส่งข้อความด้วย LineNotify ก่อน ค่อยมาแสดงข้อความวิ่งผ่าน dotmatrix display
- แบบยาก
ใช้ Real-Time Operating System มาช่วย ซึ่งเป็นการเขียนโปรแกรมในรูปแบบ Task โดยเมื่อ Microcontroller ทำงาน จะสามารถแบ่งย่อยจังหวะการทำงานของ Task ต่างๆให้ดูเหมือนว่าทำงานไปพร้อมกันได้ แต่ต้องใช้เทคนิคการเขียนที่ยากกว่า

ซึ่งจะได้อธิบายการประยุกต์ใช้ Real-Time Operating System (RTOS : ระบบปฏิบัติการแบบทันเวลา) ไว้ในโอกาสต่อไปครับ

24
[คำถามจากทางบ้าน] คำถาม kitbright จากเด็กบ้านเรียน :: [โปรแกรมทำงานไม่ทันเวลา]
เห็นว่ามีประโยชน์จึงนำมาลงไว้ครับ

อ้างถึง
เรียน อาจารย์ วัชระ


ต้องขอโทษครับที่รบกวนเวลาของอาจารย์ คือนึกไม่ออกว่าจะถามใคร พอดีได้เข้ามาอยู่ในกลุ่ม kitbright ของธรรมศาสตร์ เลยต้องรบกวนอาจารย์เฉลยแนวทางแก้ปัญหาให้หน่อยครับ


ผมซื้อ kitbright มาหัดเขียนโคดกับลูกครับ   เราก้อเอาตัวอย่างจากในเนท  จากเวบโน่นผสมเวบนี่  โครงานที่ผมกับลูกทำคือตู้จดหมายอัจฉริยะครับ   หลักการคือ เมื่อุบุรุษไปรษณียเข้ามาใกล้กล่องเครื่องรับ จะมีข้อความบอกวิธีใส่จดหมาย   และเมื่อจดหมายถูกหย่อนเข้าในกล่อง จะมีข้อความแจ้งเตือนทางไลน์ไปบอกเจ้าของบ้านให้มาเปิด


โปรแกรมในส่วนข้อความบอกบุรุษไปรษณีย์ทำงาน
โปรแกรมในส่วนแจ้งเตือนทางไลน์ทำงาน

ปัญหาคือโปรแกรมทั้งสองไม่สามารถทำงานพร้อมกัน  เมื่อ led บอกบุรุษไปรษณีย์ทำงาน คำสั่งเตือนทางไลน์จะไม่ทำงาน ต้องรอจนข้อความจาก LED จบสถานะก่อน  การแจ้งเตือนทางไลน์จึงจะทำงานได้  สังเกตจาก led ที่ถูกเซทให้เป็นมอนิเตอร์  ไม่ทราบว่าต้องแก้โคดอย่างไร สองส่วนจึงจะทำงานได้เป็นอิสระอย่างที่ควรจะเป็นครับ


ขอบพระคุณ

รักเกียรติ ท.

25
เรียน คุณครู/อาจารย์ที่ปรึกษาโครงงาน KidBright ที่เคารพทุกท่าน

โครงการ "การประกวดโครงงานของนักวิทยาศาสตร์รุ่นเยาว์ (Young Scientist Competition - YSC)" โดย
ศูนย์เทคโนโลยีอิเล็กทรอนิกส์และคอมพิวเตอร์แห่งชาติ (NECTEC) สำนักงานพัฒนาวิทยาศาสตร์และเทคโนโลยีแห่งชาติ (NSTDA) ร่วมกับมหาวิทยาลัยนเรศวร  มหาวิทยาลัยอุบลราชธานี มหาวิทยาลัยเทคโนโลยีสุรนารี มหาวิทยาลัยวลัยลักษณ์ และมหาวิทยาลัยธรรมศาสตร์ ศูนย์รังสิต  ขอเชิญอาจารย์ที่ปรึกษาทุกท่าน ที่ได้ส่งผลงานเข้าร่วมการประกวดโครงงาน KidBright ซึ่งปัจจุบันอยู่ระหว่างระยะการพัฒนาผลงานเพิ่มเติม เพื่อเตรียมตัวเข้าสู่รอบชิงชนะเลิศนั้น

อาจารที่ปรึกษาทุกท่าน สามารถส่งผลงานนักเรียนมัธยมศึกษาปีที่ 2 - 6 หรือเทียบเท่า เข้าร่วมการแข่งขันในการประกวดโครงงานของนักวิทยาศาสตร์รุ่นเยาว์ ครั้งที่ 21: Young Scientist Competition - YSC: YSC 2019 เพื่อชิงทุนการศึกษา และโอกาสในการเป็นตัวแทนประเทศไทยเดินทางเข้าร่วมการแข่งขันประกวดโครงงานนานาชาติ Intel ISEF 2019 ณ  ณ เมือง Phoenix, Arizona, ประเทศสหรัฐอเมริกา และโอกาสเข้าร่วมการแข่งขันโครงงงานนานาชาติอื่นๆ อีกมากมาย

โครงงานที่มีข้อเสนอ KB อยู่แล้ว สามารถส่งแข่งในการประกวดโครงงาน YSC 2018 เพียงให้หัวหน้าโครงงานเข้ามาส่งข้อเสนอในกิจกรรม YSC 2019 อีกครั้งหนึ่ง หากโครงงานผ่านเข้ารอบข้อเสนอโครงงานจะได้รับทุนการศึกษา 3,000 บาท และมีระยะเวลาพัฒนาผลงานจนถึงเดือนมกราคม 2561 พร้อมการอบรม  และคำชี้แนะจากคณะกรรมการเพิ่มเติม พร้อมทุกนการศึกษาในแต่ละรอบอีกมากมาย รอบชิงเดือนมีนาคม 2561 โปรดดูกำหนดการตามโปสเตอร์ประชาสัมพันธ์โครงการ

กำหนดระยะเวลาการเปิดรับสมัคร
- สมัครและส่งไฟล์ข้อเสนอโครงการ Online ได้ที่ www.nectec.or.th/sims ระหว่าง 1 กันยายน - 29 กันยายน 2561 (ปิดรับ 17.00 น.) โดย YSC 2019 ปีนี้ เปิดรับส่งโครงงานทาง Online เท่านั้น รอบแรกไม่ต้องส่งข้อเสนอโครงงานและเอกสารใดๆ มาที่ศูนย์ประสานงาน ดูรายละเอียดวิธีการสมัครและการเตรียมเอกสารได้ตามไฟล์แนบ

อาจารย์ทุกท่านสามารถติดตามผลการลงทะเบียนของนักเรียนในความดูแลได้ที่ https://www.nectec.or.th/sims/login/index.php?class=AnnounceView

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

สาขาที่เปิดแข่งขัน
ชีววิทยา (Biology)
เคมี (Chemistry)
คอมพิวเตอร์ (Computer)
วิศวกรรม (Engineering)
วิทยศาสตร์สิ่งแวดล้อม (Environmental Science)
คณิตศาสตร์ (Mathematics)
วัสดุศาสตร์ (Material Science)
ฟิสิกส์ พลังงาน และดาราศาสตร์ (Physics, Energy, and Astronomy)

ประกาศข้อห้ามต่างๆ
ห้ามงานที่เกี่ยวข้องกับเชื้อก่อโรคที่ต้องใช้ biosafety level BSL-3 หรือ BSL-4 โดยใช้หลักการ biosafety level ตามแบบมาตรฐานนานาชาติ
ห้ามงานที่ก่อให้เกิดเชื้อต้านยาเพิ่มขึ้น (เช่นเพิ่มการต้านยาจาก 1 ตัวยาเป็น 2 ตัวยา)
ห้ามงานที่ก่อให้เกิดแอลกอฮอล์เพื่อการกิน หรือ ยาเสพติดร้ายแรง
ห้ามงานที่เกี่ยวข้องกับสารชีวภาพที่สามารถใช้ทำเป็นอาวุธได้ (biological agents)
ห้ามการทดลองที่ก่อให้เกิดความเครียดหรือความเจ็บปวดกับคนห้ามงานที่ผิดกฏหมาย
ห้ามโครงงานที่มีการฆ่าสัตว์โดยตรง โดยเฉพาะสัตว์มีกระดูกสันหลัง
ห้ามโครงการที่ทดลองกับสัตว์เลี้ยงลูกด้วยนม หรืออาจทำได้หากได้รับการยินยอมจาก YSC Fair Director เป็นลายลักษณ์อักษร
ห้ามโครงงานที่ใช้เลือดมนุษย์ประกอบการทดลอง หรืออาจทำได้หากได้รับการยินยอมจาก YSC Fair Director เป็นลายลักษณ์อักษร
ห้ามงานที่เกี่ยวข้องกับระเบิดและดินปืน (explosive materials) อาจทำได้ถ้าได้รับการยินยอมจาก YSC Fair Director เป็นลายลักษณ์อักษร และอยู่ภายใต้กฏหมายงานที่ใช้สารกัมมันตรังสี หรืออาจทำได้ถ้าได้รับการยินยอมจาก YSC Fair Director เป็นลายลักษณ์อักษร และอยู่ภายใต้กฏหมาย

รางวัล
- โครงงานที่ผ่านเข้ารอบข้อเสนอโครงงานจะได้รับทุนการศึกษาพัฒนาผลงาน โครงงานละ 3,000 บาท
- โครงงานผ่านรอบ 2 ได้รับทุนสนับสนุนเพิ่มเติม 9,000 บาท พร้อมใบประกาศนียบัตร (แบ่งจ่ายเงินสำหรับผู้พัฒนา 80% และอาจารย์ที่ปรึกษา 20 % และทุกคนที่มีชื่อจะได้รับใบประกาศในรอบนี้ )
- โครงงานเข้ารอบชิงชนะเลิศ  ได้รับทุนสนับสนุนเพิ่มเติม 9,000 บาท ค่าเดินทางเข้าร่วมประกวดรอบชิงตามเกณฑ์ที่โครงการกำหนด พร้อมใบประกาศนียบัตรเข้ารอบ 2 และรอบชิงชนะเลิศ  (แบ่งจ่ายเงินสำหรับผู้พัฒนา 80% และอาจารย์ที่ปรึกษา 20 % และทุกคนที่มีชื่อจะได้รับใบประกาศในรอบนี้ )
- โครงงานได้รับรางวัลชนะเลิศ มูลค่า 60,000 บาท พร้อมการอบรมเตรียมความพร้อมอย่างเข้มข้น เพื่อเป็นตัวแทนประเทศไทยเข้าร่วมการแข่งขัน Intel ISEF 2019
- โครงงานได้รับรางวัลรองชนะเลิศ มูลค่า 30,000 บาท พร้อมโอกาสในการได้รับคัดเลือกเป็นตัวแทนประเทศไทยเข้าร่วมการแข่งขัน Intel ISEF 2019 และการประกวดเวทีอื่นๆ
พิเศษ!!  ปีนี้ สำหรับนักเรียนผู้พัฒนาโครงงานทุกโครงงานที่ได้รับการคัดเลือกให้เป็นตัวแทนประเทศไทยไป Intel ISEF 2019 จะได้รับการสนับสนุนค่าเดินทางเต็มจำนวนนะคะ

หมายเหตุ:
ประเด็นหลักๆ จาก YSC 2018 ที่ผ่านมา ซึ่งทางโครงการ YSC ต้องขอความกรุณาอาจารย์แนะนำให้นักเรียนพึงระวังระหว่างการสมัครคือ
1. นักเรียนกรอกข้อมูลเบื้องต้น แล้วไม่ทำการ Verify อีเมล์ที่ใช้ในการลงทะเบียน ทำให้ไม่สามารถดำเนินการขั้นตอนต่อไปได้
2. นักเรียน ไม่ใช้ข้อมูลจริงในการลงทะเบียน เช่น หมายเลขบัตรประชนของคนอื่น และอีเมล์ที่ไม่สามารถใช้งานได้จริง
3. นักเรียนกรอกข้อมูลการศึกษาไม่เสร็จ จึงทำให้ไม่มีชื่อปรากฏในขั้นตอนกรอกข้อเสนอโครงงาน
4. การส่งข้อเสนอโครงงาน น้องๆ ทำการแก้ไขข้อเสนอโครงงาน แล้วไม่คลิ๊กส่งใหม่อีกครั้งทำให้เมื่อระบบปิดรับแล้วไม่ปรากฏว่าน้องทำการส่งไฟล์  ซึ่งน้องๆ สามารถแก้ไขไฟล์ได้เรื่อยๆ จนกว่าจะระบบจะปิดรับสมัคร แต่ทุกครั้งที่น้องแก้ไขไฟล์ ต้องคลิีกส่งข้อเสนอโครงงานใหม่ทุกครั้ง
5. อาจารย์ลงทะเบียนในฐานข้อมูลเยาวชน ทำให้นักเรียนไม่สามารถเลือกชื่อคุณครูเข้าโครงการได้ในขั้นตอนการส่งข้อเสนอโครงงาน  ซึ่งหากท่านใดลงไปแล้วสามารถแจ้งให้แอดมินลบข้อมูลของท่านออกจากระบบได้
6. นักเรียนทำการลงทะเบียนวันสุดท้าย ทำให้โครงการไม่สามารถช่วยแก้ไขใดๆ ได้ทัน

หากมีปัญหาเรื่องการลงทะเบียน และการส่งข้อเสนอโครงงาน

โปรดแจ้งปัญหาของท่านที่เมนู รายการแจ้งปัญหาที่หน้าระบบ SIMS พร้อมระบุปัญหา และสิ่งที่ต้องการแก้ไขมาให้ชัดเจน www.nectec.or.th/sims/login/index.php   จะมีแอดมินดูแลและคอยตอบคำถามผ่านระบบให้ทุกท่านในระหว่างวันจันทร์ - ศุกร์ในเวลาราชการ ดังนั้นหากนักเรียนสนใจเข้าร่วมโครงงานควรเร่งดำเนินการสมัครลงทะเบียนเยาวชนให้เรียบร้อยก่อน

ติดตามข่าวโครงการ YSC และผลงานน้องๆ ได้ที่ Facebook: YSC Thailand Fanpage  และ YSC Thailand  หรือเว๊ปไซต์ของโครงการ YSC

26
หัวข้อนี้ได้ถูกย้ายไปบอร์ด KidBright with Arduino IDE Q&A.

http://quantum.engr.tu.ac.th/smf/index.php?topic=62.0

27
อาจารย์ครับ ผมทำโค้ดคิดต่อกับบอร์ดได้แล้ว  แต่ยังไม่ทราบการกำหนดพอร์ต input 1-4 ที่จะนำค่ามาใช้ ต้องกำหนดอย่างไรครับ  ขอบคุณครับ

ดู Pin Mapping ได้ที่นี่ครับ :: http://quantum.engr.tu.ac.th/smf/index.php?topic=15.0

28
Arduino: 1.8.5 (Windows 10), Board: "Node32s, 80MHz, 921600"

WARNING: library Servo claims to run on (avr, sam, samd, nrf52, stm32f4) architecture(s) and may be incompatible with your current board which runs on (esp32) architecture(s).
In file included from C:\Users\lay\OneDrive\เธ?เน?เธญเธกเธนเธฅonedrive\เน€เธญเธ?เธชเธฒเธฃ\Arduino\sketch_sep05c\sketch_sep05c.ino:1:0:

C:\Program Files (x86)\Arduino\libraries\Servo\src/Servo.h:73:2: error: #error "This library only supports boards with an AVR, SAM, SAMD, NRF52 or STM32F4 processor."

 #error "This library only supports boards with an AVR, SAM, SAMD, NRF52 or STM32F4 processor."

  ^

exit status 1
Error compiling for board Node32s.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

เนื่องจาก Library version ที่ติดมาพร้อม Arduino นั้น รองรับเฉพาะ Microcontroller ตระกูล AVR,SAM,SAMD,nrf52,STM32F4 เท่านั้น การใช้ ESP32 ทำงานร่วมกับ Arduino สามารถศึกษาโดยลง Library ESP32Servo (สามารถดาวน์โหลดได้ผ่าน Library Manager ของ Arduino) และ สามารถดูตัวอย่างการเขียนได้จากไฟล์ใน Examples ที่มาพร้อมกับ Library นี้ครับ

ตัวอย่างการใช้ Library[/code]
โค๊ด: [Select]
/* Sweep
 by BARRAGAN <http://barraganstudio.com>
 This example code is in the public domain.
 modified 8 Nov 2013
 by Scott Fitzgerald
 modified for the ESP32 on March 2017
 by John Bennett
 see http://www.arduino.cc/en/Tutorial/Sweep for a description of the original code
 * Different servos require different pulse widths to vary servo angle, but the range is
 * an approximately 500-2500 microsecond pulse every 20ms (50Hz). In general, hobbyist servos
 * sweep 180 degrees, so the lowest number in the published range for a particular servo
 * represents an angle of 0 degrees, the middle of the range represents 90 degrees, and the top
 * of the range represents 180 degrees. So for example, if the range is 1000us to 2000us,
 * 1000us would equal an angle of 0, 1500us would equal 90 degrees, and 2000us would equal 1800
 * degrees.
 *
 * Circuit: (using an ESP32 Thing from Sparkfun)
 * Servo motors have three wires: power, ground, and signal. The power wire is typically red,
 * the ground wire is typically black or brown, and the signal wire is typically yellow,
 * orange or white. Since the ESP32 can supply limited current at only 3.3V, and servos draw
 * considerable power, we will connect servo power to the VBat pin of the ESP32 (located
 * near the USB connector). THIS IS ONLY APPROPRIATE FOR SMALL SERVOS.
 *
 * We could also connect servo power to a separate external
 * power source (as long as we connect all of the grounds (ESP32, servo, and external power).
 * In this example, we just connect ESP32 ground to servo ground. The servo signal pins
 * connect to any available GPIO pins on the ESP32 (in this example, we use pin 18.
 *
 * In this example, we assume a Tower Pro MG995 large servo connected to an external power source.
 * The published min and max for this servo is 1000 and 2000, respectively, so the defaults are fine.
 * These values actually drive the servos a little past 0 and 180, so
 * if you are particular, adjust the min and max values to match your needs.
 */

#include <ESP32_Servo.h>

Servo myservo;  // create servo object to control a servo
                // 16 servo objects can be created on the ESP32

int pos = 0;    // variable to store the servo position
// Recommended PWM GPIO pins on the ESP32 include 2,4,12-19,21-23,25-27,32-33
int servoPin = 18;

void setup() {
  myservo.attach(servoPin);   // attaches the servo on pin 18 to the servo object
                              // using default min/max of 1000us and 2000us
                              // different servos may require different min/max settings
                              // for an accurate 0 to 180 sweep
}

void loop() {
  for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
  for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
}

29
สวัสดีค่ะ
พอดีกำลังจะทำให้ motor มันขับไปหน้าและถอยหลัง จะต้องต่อวงจรยังไงค่ะ

ใช้motor  drive board(L298N)

บอร์ดไดรฟ์มอเตอร์ (Motor Driver) สำเร็จรูป ซึ่งใช้ L298N เป็นวงจรรวม (Integrated Circuit : IC) แบบ H-Bridge ออกแบบวงจรไว้ดังนี้


สามารถทดลองต่อใช้งานได้ดังนี้
- กรณีขับมอเตอร์ทั้งสองให้ไปในทิศทางเดียวกัน
  • IN1,IN3 ต่อรวมกันเข้าขา Output (OUT1 หรือ OUT2) ของ KidBright โดย Pull-up ด้วย ตัวต้านทาน (ประมาณ 1k ขึ้นไป แนะนำ 4.7k ohm)
  • IN2,IN4 ต่อรวมกันเข้าขา Output (OUT1 หรือ OUT2 แต่ไม่ซ้ำกับด้านบน) ของ KidBright โดย Pull-up ด้วย ตัวต้านทาน (ประมาณ 1k ขึ้นไป แนะนำ 4.7k ohm)
  • ENA,ENB ต่อเข้าขา 5V ของ KidBright
  • GND ของ L298N ต่อเข้า GND ของ KidBright
  • ต่อไฟเลี้ยงให้ L298 เพื่อใช้ในการขับมอเตอร์ ตามขนาดมอเตอร์ตามความเหมาะสม

ตัวอย่างการ Pull-up
- ใช้ตัวต้านทานค่าสูงๆ ต่อ 5V กับ Output Pin ของ Arduino เนื่องจาก Output เป็น Open-Drain

30
ตอนนี้ต้องทำโครงงานโดยใช้บลูทูธครับ

Keyword ที่สามารถใช้ค้นหา การใช้งาน Bluetooth Low Energy บน Arduino IDE เมื่อทำการค้นหาบน Google สามารถตรวจสอบได้ดังนี้ครับ
Google

จะพบว่ามีบทความ Tutorial หลายบทความ และวีดีโอแนะนำจำนวนมากครับ
ผมรวบรวมให้เบื้องต้นดังนี้ครับ

บทความ Getting Started with ESP32 Bluetooth Low Energy (BLE) on Arduino IDE โดย Random Nerd Tutorials
รวบรวมข้อมูลพื้นฐานของ Bluetooth Low Energy และ Sourcecode ตัวอย่าง [Recommend]

บทความ ESP32 Arduino: Serial communication over Bluetooth Hello World โดย TECHTUTORIALSX
บทความแนะนำการเชื่อมต่อ Bluetooth Low Energy กับ คอมพิวเตอร์เพื่อทดสอบการสื่อสาร โดยแสดงผลผ่านทาง Serial Monitor ของ Arduino IDE

31
ถาม : ทำไมไม่ต่อะไร แต่ INPUT แสดงค่าเป็น 0,1 สลับไปมาเอง

ตอบ : เนื่องจาก INPUT ของบอร์ดไมโครคอนโทรลเลอ์ทุกชนิด จะมีความไว (Sensitivity) ต่อการเปลี่ยนสถานะ (จาก HIGH เป็น LOW หรือ จาก 0 เป็น 1 หรือกลับกัน) เป็นอย่างมาก
ไม่ว่าจะเป็นการเปลี่ยนสถานะของ PIN ข้างเคียง , อากาศ , บอร์ดต่อวงจร (Breadboard) , หรือแม้กระทั่งอากาศ

ลักษณะดังกล่าวนี้เรียกว่า "ขาลอย" (Floating Pin)

ซึ่งสามารถแก้ไขปัญหานี้ด้วยการ Pull-up หรือ Pull-down ขา INPUT นั้น ซึ่งจะได้อธิบายในบทความต่อไป

บทความที่เกี่ยวข้อง :::
- Coming Soon-

32
บอร์ดสมองกลฝังตัว KidBright และ เซนเซอร์ KidBright มีผู้แทนจำหน่ายอย่างเป็นทางการที่ เว็บไซต์ https://www.kidbright.io/

ทั้งนี้ ยังสามารถหาซื้อเซนเซอร์และอุปกรณ์ต่อพ่วงอื่นๆได้จากผู้จำหน่ายผลิตภัณฑ์ทางด้านอิเล็กทรอนิกส์อื่นๆทั่วไป

หมายเหตุ : หากผู้จำหน่ายรายใดต้องการประชาสัมพันธ์ KidBright Sensor ของตน สามารถแจ้งได้ที่กระทู้นี้ครับ
ผมจะทยอยมาอัพเดทให้เป็นระยะครับ

33
NECTEC ได้พัฒนาโปรแกรมจำลองสำหรับการพัฒนาบอร์สมองกลฝังตัว KidBright
โดยสามารถเข้าถึงได้ที่

http://kidbright.in.th:8000/home

KidBright สามารถเขียนโปรแกรมแบบ Simulation บนหน้าเวปโดยที่ไม่ต้องมีบอร์ดได้แล้ว http://kidbright.in.th:8000


รายละเอียดการจำลองอินพุตเอาท์พุตบนบอร์ด KidBright32

LED 16x8 = ทำงานตามคำสั่งแสดงผล
LM73 = จำลองการตั้งค่าค่าอุณหภูมิด้วยการใช้เมาส์ลาก Slider
LDR = จำลองการตั้งค่าความเข้มแสงด้วยการใช้เมาส์ลาก Slider
S1,S2 = กดเมาส์ค้างเพื่อกดปุ่ม ปล่อยเมาส์เพื่อปล่อยปุ่ม
USB = แสดงสถานะด้วยรูป USB LED
IN1 = เซ็นเซอร์ตรวจจับการเปิดปิดประตู กำหนดสถานะด้วยการคลิ๊กเมาส์เพื่อเปิดปิดประตู
IN2,IN3,IN4 = กำหนดสถานะด้วยการคลิ๊กเมาส์ที่จุดเชื่อมต่อบนบอร์ด
OUT1 = แสดงสถานะด้วยรูปแอนนิเมขั่นมอเตอร์
OUT2 = แสดงสถานะด้วยรูป LED ติดดับ
BUZZER = สร้างเสียงตามคำสั่ง

หมายเหตุ: แนะนำให้ใช้งานบน Google Chrome Browser


34
KidBright Dev. Board Q&A / Re: ใช้งาน servo motor กับบอร์ด kidbrigth
« เมื่อ: กันยายน 07, 2018, 04:45:08 PM »
ต้องการใช้งาน servo motor กับarduino ide อยากได้ตัวอย่างโค๊ด การใช้งานครับผม ลองใส่โค๊คตัวนี้
โค๊ด: [Select]
#include <Servo.h>

Servo myservo; // เรียกใช้งานคำสั่งจาก Library
int pos = 0; // ประกาศตัวแปรสำหรับเก็บค่าองศา Servo กำหนดให้เริ่มที่ 0 องศา

void setup() {
myservo.attach(9); // ต่อ Servo กับ Digital Pin 9
}

void loop() {
for (pos = 0; pos <= 180; pos += 1) // ค่อยๆเพิ่มองศาการหมุน จาก 0 ถึง 180 เพิ่มขึ้นที่ละ 1 องศาในเวลา 0.015 วินาที
{
myservo.write(pos); // คำสั่งองศาการหมุน
delay(5);
}
for (pos = 180; pos >= 0; pos -= 1) // ถ้าองศาถึง 180 แล้ว ให้ลดทีละ 1 องศาจนถึง 0 แล้ววนไปเรื่อยๆ
{
myservo.write(pos);
delay(5);
}
}

โค๊ดตัวนี้ผมเอามาใส่แล้วไม่ได้ครับผม

ช่วยเขียน Diagram การต่อมาได้ไหมครับ

35
ถาม : จะหา ไฟล์ Library (Arduino IDE) ของจอ Dot Matrix ของบอร์ด KidBright32 ได้อย่างไร

ตอบ : สามารถดาวน์โหลดไฟล์ Library จอ Dot Matrix สำหรับ Arduino IDE ของบอร์ด KidBright IDE ได้ตามไฟล์แนบ
โดยจำเป็นต้องลง Libraries ทั้ง 2 ชุดในโฟล์เดอร์ Libraries ของ Arduino

และเปลี่ยนค่าตัวแปรในไฟล์ตัวอย่างให้เป็นดังรูป (ขอขอบคุณรูปจาก ครูจรูญ น้อยแก้ว โรงเรียนวัดยายร่ม)



ตัวอย่าง Code (ขอขอบคุณ คุณ Jack จากกลุ่ม KidBright Master)
โค๊ด: [Select]
#include <Wire.h>
#include <Adafruit_GFX.h>
#include "Adafruit_LEDBackpack.h"

Adafruit_8x16minimatrix matrix = Adafruit_8x16minimatrix();

void setup() {
matrix.begin(0x70);
}

static const uint8_t PROGMEM
smile_bmp[] =
{ B00111100,
B01000010,
B10100101,
B10000001,
B10100101,
B10011001,
B01000010,
B00111100 },
neutral_bmp[] =
{ B00111100,
B01000010,
B10100101,
B10000001,
B10111101,
B10000001,
B01000010,
B00111100 },
frown_bmp[] =
{ B00111100,
B01000010,
B10100101,
B10000001,
B10011001,
B10100101,
B01000010,
B00111100 };

void loop() {
matrix.setRotation(1);
matrix.setTextSize(1);
matrix.setTextWrap(false);
matrix.setTextColor(LED_ON);
for (int8_t x=7; x>=-75; x--) {
matrix.clear();
matrix.setCursor(x,0);
matrix.print("Hello World");
matrix.writeDisplay();
delay(100);
}
matrix.setRotation(1);
}

36
วิธีการเปิดโปรแกรม KidBright IDE แบบ Run as Administrator


37
ตอนนี้ Arduino core for the ESP32 สามารถติดตั้งผ่าน Board Manager ของ Arduino IDE ได้แล้วนะครับ

โดย ใส่ URL นี้ลงไป
โค๊ด: [Select]
https://dl.espressif.com/dl/package_esp32_index.json
ดูรายละเอียดเพิ่มเติมได้ที่นี่ครับ
https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/boards_manager.md

ขอบคุณครับ เป็นประโยชน์มากครับ

39
หัวข้อนี้ได้ถูกย้ายไปบอร์ด KidBright IoT Q&A.

http://quantum.engr.tu.ac.th/smf/index.php?topic=17.0

40
หัวข้อนี้ได้ถูกย้ายไปบอร์ด KidBright Sensor Q&A.

http://quantum.engr.tu.ac.th/smf/index.php?topic=25.0

42
ตัวอย่างมอเตอร์ ขนาด 6 โวลต์ (สามารถใช้แรงดัน 5 โวลต์ ได้) กินกระแสประมาณ 80 มิลลิแอมแปร์
ซึ่งสามารถนำมาใช้งาน KidBright32 โดยต่อกับช่อง OUT1/OUT2 ได้ทันที




43
ถาม : จะหาไฟล์ภาษาซี จากการ Build ของ KidBright IDE ได้อย่างไร

ตอบ : สามารถหาไฟล์ที่เกิดจาก Code Generation ของ KidBright IDE ในรูปแบบของภาษา C++ ได้โดย
  • คลิกขวาที่ไอคอน KidBright IDE ที่หน้า Desktop
  • คลิก Properties
  • คลิก Open File Location
  • ดับเบิ้ลคลิกที่โฟล์เดอร์ resources
  • ดับเบิ้ลคลิกที่โฟล์เดอร์ app
  • ดับเบิ้ลคลิกที่โฟล์เดอร์ esp32
  • ดับเบิ้ลคลิกที่โฟล์เดอร์ build
  • ดับเบิ้ลคลิกที่โฟล์เดอร์ ตาม MAC ADDRESS ของบอร์ดที่ต้องการไฟล์
  • เปิดไฟล์ user_app.cpp ด้วยโปรแกรม Text Editor เช่น Notepad , Notepad++ , atom , Arduino IDE, etc.


44
ถาม : จะออกแบบวงจรบน KidBright ด้วยโปรแกรม Fritzing ทำอย่างไร ?

ตอบ : สามารถดาวน์โหลดไฟล์ Part สำหรับบอร์ด KidBright32 ได้จาก ไฟล์แนบ หลังจากดาวน์โหลดแล้วให้ทำการเปิดโดยใช้โปรแกรม Fritzing โดยใช้เมนู Files -> Open


45
ถาม : การใช้งาน OUTPUT (OUT1/OUT2) บน KidBright ทำอย่างไร ??

ตอบ : การใช้งาน OUTPUT บนบอร์ด KidBright อันได้แก่ OUT1 หรือ OUT2 นั้น จะมีลักษณะพิเศษกว่าบอร์ดทดลองอื่นๆ เนื่องจาก KidBright ออกแบบวงจรภาค OUTPUT เป็นลักษณะวงจรแบบ Open-Drain Circuit เพื่อป้องกันความเสียหายอันมีโอกาสจะเกิดขึ้นกับบอร์ดในกรณีต่อวงจรผิดพลาด   ดังนั้น การต่อ OUTPUT ของ KidBright จึงมีลักษณะพิเศษกว่าบอร์ดอื่นๆ

ก่อนใช้งาน OUTPUT ของ KidBright ขอให้ตรวจสอบก่อนว่า อุปกรณ์ไฟฟ้าที่จะนำมาต่อ มีคุณสมบัติดังต่อไปนี้
  • เป็นอุปกรณ์ไฟฟ้าที่ใช้แรงดันไฟฟ้ากระแสตรง (DC | Direct Current)
  • แรงดันขณะทำงานไม่เกิน 60 โวลต์ และกินกระแสไม่เกิน 115 มิลลิแอมแปร์

การเชื่อมต่อ
  • ขั้วบวก (Positive) ของอุปกรณ์ต่อพ่วง ต่อกับ 5V ของบอร์ด KidBright (กรณีอุปกรณ์ทำงานที่แรงดัน  5V) หรือ ไฟเลี้ยง (กรณีอุปกรณ์ทำงานที่แรงดันระดับอื่น)
  • ขั้วลบ (Ground) ของอุปกรณ์ต่อพ่วง ต่อกับ OUT1 หรือ OUT2 ของบอร์ด KidBright ตามต้องการ
  • กรณีใช้ไฟเลี้ยงอุปกรณ์จากแหล่งอื่นๆ ให้ต่อ Ground ของแหล่งจ่ายไฟนั้น ร่วมกับ Ground (GND) ของบอร์ดทดลอง KidBright เสมอ

ผังการต่อวงตรดูได้ตามไฟล์แนบ

46
ถาม : Sensor แบบใดบ้าง ที่สามารถนำมาใช้กับบอร์ด KidBright ได้

ตอบ : ช่องเชื่อมต่อ IN1/IN2/IN3 และ IN4 ของ KidBright นั้น รองรับการเชื่อมต่อเฉพาะ Sensor แบบ Digital
โดยในเบื้องต้นสามารถเลือกซื้อ Sensor สำหรับ KidBright ผ่านทางผู้แทนจำหน่ายได้ที่เว็บไซต์ http://www.kidbright.io

47
KidBright IoT Q&A / FAQ : ทำไมไม่สามารถใช้งาน KidBright IoT ได้ ??
« เมื่อ: สิงหาคม 22, 2018, 03:10:59 PM »
ถาม : ทำไมบอร์ด KidBright บางบอร์ดไม่สามารถใช้งาน IoT ได้ ??

ตอบ : ปัญหาการใช้งาน KidBright IoT เกิดขึ้นได้หลายประการ เช่น

ไม่สามารถเชื่อมต่ออินเตอร์เน็ตได้
ในกรณีนี้เกิดขึ้นจาก KidBright ไม่สามารถต่ออินเตอร์เน็ตได้ สังเกตุได้จาก ไฟ WiFi บนบอร์ดไม่ติด สามารถตรวจสอบได้โดยการตั้งค่า Wi-Fi ใหม่ในโปรแกรม KidBright IDE

ไม่สามารถเชื่อมต่อ IoT ได้
เกิดขึ้นได้ 2 กรณีคือ
1) ไม่ได้ทำเครื่องหมายถูก ในเมนู Wi-Fi Config ว่าให้เปิดการใช้งาน IoT และ
2) บอร์ด KidBright ของท่านยังไม่ได้รับการลงทะเบียนให้ใช้งาน KidBright โปรดติดต่อ contact@nexpie.com และแจ้ง โรงเรียน/ผู้ใช้งานบอร์ด รวมถึง MAC Address เพื่อขอลงทะเบียน

48
ถาม : Feed และ Guage แตกต่างกันอย่างไรบน KidBright IDE ?

ตอบ :
ในแง่ของการใช้งานบน KidBright IoT Application : Feed จะแสดงเป็นกราฟโดยมีแกนนอนเป็นเวลา และ แกนตั้งเป็นข้อมูลตัวเลข , Guage จะแสดงข้อมูลล่าสุดในรูปแบบของมาตรวัด (เกจ)
ในแง่ของการเก็บข้อมูลบน NETPIE Cloud : Feed จะเก็บข้อมูลตามเวลา, Guage จะเก็บเฉพาะข้อมูลล่าสุด

49
ถาม :  เขียนโปรแกรมด้วย KidBright IDE แล้ว จะใช้งาน KidBright IoT ได้อย่างไร ?

ตอบ : ดาวน์โหลดโปรแกรม KidBright IoT จาก Play Store (สำหรับระบบปฏิบัติการ Android) และ KidBright IoT จาก App Store (สำหรับระบบปฏิบัติการ iOS) จากนั้นสแกน QR Code ที่ปรากฏในโปรแกรม KidBright IDE (ในเมนู QR Code) เพื่อเข้าใช้งาน KidBright IDE

โปรแกรม KidBright IoT สามารถดาวน์โหลดได้ที่ :
Google Play Store : https://play.google.com/store/apps/details?id=io.netpie.kbiot
Apple App Store : https://itunes.apple.com/tt/app/kidbright-iot/id1417884943?mt=8





50
สามารถดูตัวอย่างการเขียนบทคัดย่อโครงงานวิทยาศาสตร์ที่น่าสนใจได้ทาง
http://fic.nectec.or.th/abstract

หน้า: [1] 2