สารบัญ:

Productivity Tracker - ขับเคลื่อนโดย Raspberry Pi: 9 ขั้นตอน (พร้อมรูปภาพ)
Productivity Tracker - ขับเคลื่อนโดย Raspberry Pi: 9 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Productivity Tracker - ขับเคลื่อนโดย Raspberry Pi: 9 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Productivity Tracker - ขับเคลื่อนโดย Raspberry Pi: 9 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Face & Movement Tracking System Using a Raspberry Pi + OpenCV + Pan-Tilt HAT + Python 2024, พฤศจิกายน
Anonim
Productivity Tracker - ขับเคลื่อนโดย Raspberry Pi
Productivity Tracker - ขับเคลื่อนโดย Raspberry Pi
Productivity Tracker - ขับเคลื่อนโดย Raspberry Pi
Productivity Tracker - ขับเคลื่อนโดย Raspberry Pi
Productivity Tracker - ขับเคลื่อนโดย Raspberry Pi
Productivity Tracker - ขับเคลื่อนโดย Raspberry Pi

Productivity Tracker เป็นกระจกวิเศษ แต่แทนที่จะแสดงเวลา สภาพอากาศ และคำพูดที่สร้างแรงบันดาลใจ จะแสดง 4 สิ่ง;

เปอร์เซ็นต์ของเวลาที่คุณใช้ไปกับเนื้อหาที่มีประสิทธิภาพบนคอมพิวเตอร์และโทรศัพท์ของคุณในวันนั้น (RescueTime)

รายการสิ่งที่ต้องทำของคุณจาก Trello

กราฟเรดาร์แสดงเวลาที่คุณใช้ไปพร้อมกับหมวดหมู่ของโปรแกรม-แอพที่คุณใช้ เทียบกับการใช้งานเมื่อวาน (RescueTime)

ภาพรวมรายสัปดาห์ (RescueTime)

และหากเปอร์เซ็นต์ของเวลาที่คุณใช้ไปกับวัสดุที่มีประสิทธิผลมากกว่า 50% ไฟ LED จะแสดงเป็นสีเขียวสดใส หากต่ำกว่า 50% จะแสดงเป็นสีแดง แสดงว่าคุณมีประสิทธิผลมากขึ้น! คุณสามารถตั้งเป้าหมายได้ด้วยตัวเอง

เค้าร่าง

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

จุดประสงค์ของคำแนะนำนี้ไม่ใช่เพียงเพื่อให้ตำราอาหารแก่คุณ ฉันจะแสดงให้คุณเห็นถึงวิธีที่ฉันสร้างโปรเจ็กต์นี้และให้คำถามปลายเปิดแก่คุณ เพื่อให้คุณสามารถเพิ่มความคิดของคุณเอง และทำให้โครงการนี้ดียิ่งขึ้นไปอีก ฉันขอแนะนำอย่างยิ่งให้คุณแชร์งานสร้างของคุณเมื่อเสร็จแล้ว! มาเริ่มกันเลย.

ขั้นตอนที่ 1: ไอเดีย

ความคิด
ความคิด

ฉันตั้งใจจะเขียนคำแนะนำนี้มาหลายเดือนแล้ว แต่เพื่อนเก่าของฉันที่ชื่อ "ผัดวันประกันพรุ่ง" ไม่ยอมให้ฉัน การผัดวันประกันพรุ่งคือการกระทำที่ล่าช้าหรือเลื่อนงานหรือชุดของงานออกไป และแทนที่จะทำงานเหล่านั้นให้เต็มเวลาด้วยการดูวิดีโอจากส่วนลึกของ YouTube

วันหนึ่งขณะอ่านบทความเกี่ยวกับการผัดวันประกันพรุ่ง ฉันเจอแอป/โปรแกรมหลายตัวที่จะช่วยแก้ปัญหาของฉันได้ Trello เป็นแอปจัดการงานและ RescueTime เป็นแอปจัดการเวลา ทั้งสองทำงานได้อย่างสมบูรณ์แบบสำหรับความต้องการของฉัน อย่างน้อยก็ชั่วขณะหนึ่ง ไม่นานฉันก็หยุดตรวจสอบแอปทั้งหมดและเพิกเฉยต่อการแจ้งเตือน นั่นคือตอนที่ฉันคิดโครงการนี้ขึ้นมา ฉันจะแสดงข้อมูลจากแอพบนกระจกที่แขวนอยู่บนผนังของฉัน วิธีนี้ไม่มีทางหนีจากความรับผิดชอบของฉัน

ร่างแรกที่ฉันวาดสำหรับโครงการของฉันค่อนข้างง่าย ฉันจะใช้ RescueTime API เพื่อแสดงเปอร์เซ็นต์การทำงานที่มีประสิทธิผล/เบี่ยงเบนความสนใจ และใช้ Trello API เพื่อแสดงรายการสิ่งที่ต้องทำสำหรับวันนี้ แต่หลังจากนั้นไม่นาน ฉันได้เพิ่มคุณสมบัติเพิ่มเติมซึ่งฉันจะอธิบายโดยละเอียดในขั้นตอนต่อไป

ขั้นตอนที่ 2: เครื่องมือและชิ้นส่วน

หมายเหตุ: นี่คือรายการเครื่องมือที่ฉันใช้ระหว่างงานสร้าง ไม่จำเป็นต้องเหมือนกันสำหรับงานสร้างของคุณ!

สำหรับฐาน:

เพลย์วูด 7x15 ซม. 4 เมตร - 6$ - ขึ้นอยู่กับขนาดหน้าจอของคุณ

กระจกข้างเดียว 30x40 ซม. - ขึ้นอยู่กับขนาดหน้าจอของคุณ

จอมอนิเตอร์ Samsung 25x35cm - 15$ - หาซื้อได้ที่ตลาดนัด จอภาพใด ๆ จะทำ

Raspberry Pi 3 Model B- 35$ - Raspberry pi 2 ก็ใช้ได้ แต่คุณจะต้องมีโมดูล wifi

สาย HDMI - 2$

สำหรับ Led Lightning:

200cm smd5050 RGB Led strip- 4$ - จะต้องเป็น smd5050 มากกว่านี้ในภายหลัง…

  • MOSFET N-channel สามตัว (เช่น IRLZ34N) - 2$
  • อแดปเตอร์ 12V-2A - 3.15$
  • การสร้างต้นแบบ PCB - 1$

เครื่องมือ:

  • เลื่อยไม้
  • กาวไม้
  • หัวแร้ง (สำหรับไฟ LED)

ขั้นตอนที่ 3: รหัส

รหัส
รหัส

ขั้นตอนนี้จะแบ่งเป็น 3 ส่วน คุณไม่จำเป็นต้องมีชิ้นส่วนทั้งหมดที่ระบุไว้ในขั้นตอนก่อนหน้า Raspberry Pi และจอภาพที่คุณจะใช้สำหรับโครงการนี้น่าจะเพียงพอสำหรับขั้นตอนการสร้างต้นแบบ

การตั้งค่า Raspberry Pi. ของคุณ

หากคุณยังไม่ได้ตั้งค่า Raspberry Pi ให้ดำเนินการที่นี่ สำหรับบิลด์นี้ คุณจะต้องติดตั้ง Apache สำหรับเว็บเซิร์ฟเวอร์และคอนโทรลเลอร์ PHP-LED

ในการติดตั้ง Apache ให้ทำตามคำแนะนำอย่างเป็นทางการนี้

ในการติดตั้งคอนโทรลเลอร์ PHP-LED ให้ทำตามคำแนะนำนี้โดย Christian Nikkanen

ตอนนี้ดาวน์โหลดไฟล์ index.php จากที่เก็บโครงการไปยัง Raspberry Pi ของคุณและวางไว้บนเส้นทางนี้:

/var/www/html/

หากคุณไม่คุ้นเคยกับการย้ายไฟล์ไปมาใน Linux Terminal คุณสามารถดูคู่มือนี้เพื่อเริ่มต้นใช้งาน

ปรับแต่งโค้ด

หมายเหตุ: ส่วนนี้ต้องใช้ความรู้ HTML/CSS เล็กน้อย หากคุณใช้จอภาพอื่น

การปรับแต่งจะทำในไฟล์ index.php ซึ่งเป็นส่วนสำคัญของโครงสร้างนี้ ตอนนี้ไปข้างหน้าและเชื่อมต่อจอภาพของคุณกับ Raspberry Pi หากคุณยังไม่ได้ทำ

ตอนนี้ ถ้าคุณพยายามเปิดไฟล์ index.php มันจะไม่ทำงาน เพราะคุณต้องกรอกคีย์ API ในโค้ดก่อน เพื่อไปที่เว็บไซต์ RescueTime และเปิดบัญชี จากนั้นไปที่ส่วนนักพัฒนาและสร้างคีย์ API โดยกดเปิดใช้งานคีย์นี้ เขียนคีย์ API ของคุณไปที่ใดที่หนึ่ง

ทำเช่นเดียวกันกับคีย์ Trello API เปิดบัญชีและไปที่พอร์ทัลนักพัฒนาเพื่อสร้างคีย์ API

ถัดไป เปิดไฟล์ index.php ที่คุณใส่ใน /var/www/html/ ในโปรแกรมแก้ไขข้อความที่คุณชื่นชอบ และแทนที่ [API_KEY] ด้วยคีย์ API ของคุณเองที่คุณได้รับจาก RescueTime และ Trello ตามลำดับ [list_number] คือหมายเลขรายการที่คุณใช้สำหรับรายการสิ่งที่ต้องทำของคุณ Trello ในการรับหมายเลขนั้นก่อนอื่น ให้สร้างรายการใหม่บน Trello และเรียกมันว่า "สิ่งที่ต้องทำ" นี่จะเป็นรายการที่คุณจะใช้สำหรับรายการสิ่งที่ต้องทำและจะปรากฏบนมิเรอร์

ถัดไป นำ URL บนแถบที่อยู่ของคุณที่มีลักษณะดังนี้:

trello.com/b/3hS6yyLo/board-name

และเพิ่ม.json เข้าไปดังนี้:

trello.com/b/3hS6yyLo/board-name.json

แล้วกด Enter ถัดไปคุณจะเห็นรหัสเลอะบนหน้าจอ พยายามหาชื่อรายการของคุณ ''สิ่งที่ต้องทำ" ในระเบียบนั้น ควรมีลักษณะดังนี้: {"name":"To Do", "id":"5981c123cd1b23f13907cd18"} รหัสนั้นคือรหัสรายการของคุณ ตัวเลขนั้นถึง [list_number] ในไฟล์ index.php

ตอนนี้เปิดเบราว์เซอร์ของคุณแล้วพิมพ์ localhost ไปที่แถบที่อยู่และกด Enter คุณควรเห็นข้อมูลของคุณแสดงบนกราฟ

หมายเหตุ: ตำแหน่งของกราฟอาจแตกต่างกันเนื่องจากความละเอียดของจอภาพที่คุณใช้ คุณสามารถแก้ไขความกว้าง ความสูง และตำแหน่งขององค์ประกอบในส่วน CSS ของโค้ดได้

ตอนนี้เหลือเพียงการออกแบบกล่องรอบๆ จอภาพและเชื่อมต่อ LED

หมายเหตุ: หากคุณไม่สนใจรายละเอียดของ API คุณสามารถข้ามไปยังขั้นตอนถัดไปได้ ในส่วนของ API ฉันจะดูรายละเอียดว่าโปรแกรมทั้งหมดทำงานอย่างไรและรับข้อมูลจาก API

ของ API (โดยละเอียด)

หัวใจของโครงการนี้คือ Two APIs;

  • Trello API
  • RescueTime API

แม้ว่าเอกสารประกอบจะมีข้อมูลโดยละเอียด แต่ฉันจะอธิบายว่าข้อมูลใดจาก API ที่โปรเจ็กต์นี้ใช้อยู่

ในส่วนการจัดการเวลา การเรียก RescueTime API ที่ได้รับข้อมูลเวลาสำหรับวันปัจจุบันคือ

"https://www.rescuetime.com/anapi/data?key=[API_KEY]&perspective=rank&interval=hour&restrict_begin=".date('Ym-d')"&restrict_end=".date('Ym-d')."&format=json"

ที่ไหน, date('Ymd') คือวันที่ปัจจุบัน

มุมมอง = อันดับคือประเภทการจัดเรียงข้อมูลในกรณีนี้ "อันดับ" ซึ่งหมายถึงเวลาส่วนใหญ่ที่ใช้ไป

การเรียกนี้จะให้ไฟล์ในรูปแบบ JSON ที่มีลักษณะดังนี้:(ดูที่ data.json ที่ส่วนท้ายของขั้นตอนนี้)

ข้อมูลที่เราใช้จากไฟล์นี้คือ "เวลาที่ใช้ไป (วินาที)" และ "ประสิทธิภาพการทำงาน" ซึ่งมีค่าระหว่าง -2 ถึง 2, -2 เป็นการรบกวนสมาธิและ 2 ทำให้เกิดประสิทธิผล ด้วยข้อมูลนี้ เราสามารถสร้างมูลค่ามากกว่า 100 สำหรับคะแนนประสิทธิภาพการทำงาน

การเรียก API อีกครั้งไปยัง RescueTime

"https://www.rescuetime.com/anapi/daily_summary_feed?key=[API_KEY]"

ซึ่งจะให้ข้อมูลสรุปรายสัปดาห์แก่คุณ ซึ่งมีลักษณะดังนี้:(ดูที่ summary.json ที่ส่วนท้ายของขั้นตอนนี้) ฉันใช้ข้อมูลนี้เพื่อสร้างกราฟสรุปรายสัปดาห์ที่ให้ภาพรวมของสัปดาห์

การเรียก Trello API

"https://api.trello.com/1/lists/[list_number]/cards?fields=name&key=[API_KEY]&token=[Token]"

สิ่งนี้จะให้การ์ดในรายการ Trello ของคุณดังนี้:

[{"id":"5a4160103bfcd14994852f59", "name":"ceylan cinemagraph"}, {"id":"59e8241f6aa8662a51eb7de6", "name":"Learn GitHuB"}, {"id":"5981c19577c732f826ad8025", "name ":"Publish Instructible"}, {"id":"5a341dba7f17d235d7c5bbd1", "name":"SPACE PROGRAM"}]

อีกครั้งคุณสามารถดึงข้อความบนการ์ดเหล่านั้นและนำไปไว้ที่อื่นได้

data.json

ข้อมูล JSON ที่จัดรูปแบบ
{
"notes":"data คืออาร์เรย์ของอาร์เรย์ (แถว) ชื่อคอลัมน์สำหรับแถวใน row_headers",
"row_headers":[
"อันดับ",
"เวลาที่ใช้ไป (วินาที)",
"จำนวนคน",
"กิจกรรม",
"หมวดหมู่",
"ผลผลิต"
],
"แถว":[
[
1,
1536,
1,
"en.0wikipedia.org",
"ไม่มีหมวดหมู่",
0
],
[
2,
1505,
1,
"youtube.com",
"วิดีโอ",
-2
],
[
3,
1178,
1,
"โอเพ่นออฟฟิศ"
"การเขียน",
2
],
[
4,
709,
1,
"moodle.bilkent.edu.tr",
"ข้อมูลอ้างอิงทั่วไป \u0026 การเรียนรู้"
2
],
[
5,
602,
1,
"google.com.tr",
"ค้นหา",
2
],
[
6,
439,
1,
"reddit.com",
"ข่าวทั่วไป \u0026 ความคิดเห็น",
-2
],
[
7,
437,
1,
"tr.sharelatex.com",
"การเขียน",
2
],
[
8,
361,
1,
"yemeksepeti.com",
"ช้อปปิ้งทั่วไป",
-2
],
[
9,
356,
1,
"จีเมล",
"อีเมล",
0
],
[
10,
328,
1,
"Google Chrome",
"เบราว์เซอร์",
0
],
[
11,
207,
1,
"stars.bilkent.edu.tr",
"ข้อมูลอ้างอิงทั่วไป \u0026 การเรียนรู้"
2
],
[
12,
179,
1,
"วอทแอพ",
"ข้อความโต้ตอบแบบทันที",
-1
],

ดู rawdata.json โฮสต์ด้วย ❤ โดย GitHub

สรุป.json

[
{
"รหัส":1515657600,
"วันที่": "2018-01-11",
"ผลผลิต_pulse":54,
"very_productive_percentage":34.2,
"productive_percentage":10.6,
"เป็นกลาง_เปอร์เซ็นต์":25.6,
"distracting_percentage":0.0,
"มาก_distracting_percentage":29.6,
"all_productive_percentage":44.8,
"all_distracting_percentage":29.6,
"uncategorized_percentage":16.1,
"business_percentage":6.0,
"communication_and_scheduling_percentage":4.3,
"social_networking_percentage":0.0,
"design_and_composition_percentage":0.0,
"entertainment_percentage":15.2,
"news_percentage":3.3,
"software_development_percentage":5.4,
"reference_and_learning_percentage":22.8,
"shopping_percentage":12.9,
"utilities_percentage":14.1,
"total_hours":2.51,
"very_productive_hours":0.86,
"productive_hours":0.27,
"neutral_hours":0.64,
"ฟุ้งซ่าน_hours":0.0,
"very_distracting_hours":0.74,
"all_productive_hours":1.12,
"all_distracting_hours":0.74,
"uncategorized_hours":0.4,
"business_hours":0.15,
"communication_and_scheduling_hours":0.11,
"social_networking_hours":0.0,
"design_and_composition_hours":0.0,
"entertainment_hours":0.38,
"news_hours":0.08,
"software_development_hours":0.13,
"reference_and_learning_hours":0.57,
"shopping_hours":0.32,
"utilities_hours":0.35,
"total_duration_formatted":"2h 30m",
"very_productive_duration_formatted":"51m 26s",
"productive_duration_formatted":"15m 56s",
"neutral_duration_formatted":"38m 34s",
"distracting_duration_formatted":"ไม่มีเวลา",
"very_distracting_duration_formatted":"44m 30s",
"all_productive_duration_formatted":"1h 7m",
"all_distracting_duration_formatted":"44m 30s",
"uncategorized_duration_formatted":"24m 11s",
"business_duration_formatted":"9m 6s",
"communication_and_scheduling_duration_formatted":"6m 26s",
"social_networking_duration_formatted":"ไม่มีเวลา",
"design_and_composition_duration_formatted":"ไม่มีเวลา",
"entertainment_duration_formatted":"22m 49s",
"news_duration_formatted":"4m 55s",
"software_development_duration_formatted":"8m 3s",
"reference_and_learning_duration_formatted":"34m 17s",
"shopping_duration_formatted":"19m 22s",
"utilities_duration_formatted":"21m 17s"
},
{
"รหัส":1515571200,
"วันที่": "2018-01-10",
"ผลผลิต_pulse":33,
"very_productive_percentage":21.9,
"productive_percentage":2.3,
"neutral_percentage":14.4,
"distracting_percentage":11.0,
"มาก_distracting_percentage":50.3,
"all_productive_percentage":24.2,
"all_distracting_percentage":61.4,
"uncategorized_percentage":0.3,
"business_percentage":0.0,
"communication_and_scheduling_percentage":13.5,
"social_networking_percentage":0.0,
"design_and_composition_percentage":6.3,
"ความบันเทิง_เปอร์เซ็นต์":44.7,
"news_percentage":4.2,
"software_development_percentage":0.0,
"reference_and_learning_percentage":15.5,
"shopping_percentage":0.0,
"utilities_percentage":15.4,
"total_hours":2.24,
"very_productive_hours":0.49,
"productive_hours":0.05,
"neutral_hours":0.32,
"ฟุ้งซ่าน_hours":0.25,
"very_distracting_hours":1.13,
"all_productive_hours":0.54,
"all_distracting_hours":1.37,
"uncategorized_hours":0.01,
"business_hours":0.0,
"communication_and_scheduling_hours":0.3,
"social_networking_hours":0.0,
"design_and_composition_hours":0.14,
"entertainment_hours":1.0,
"news_hours":0.09,
"software_development_hours":0.0,
"reference_and_learning_hours":0.35,
"shopping_hours":0.0,
"utilities_hours":0.34,
"total_duration_formatted":"2h 14m",
"very_productive_duration_formatted":"29m 22s",
"productive_duration_formatted":"3m 8s",
"neutral_duration_formatted":"19น. 18 วินาที",
"distracting_duration_formatted":"14m 48s",
"very_distracting_duration_formatted":"1h 7m",
"all_productive_duration_formatted":"32m 30s",
"all_distracting_duration_formatted":"1h 22m",
"uncategorized_duration_formatted":"27s",
"business_duration_formatted":"1s",
"communication_and_scheduling_duration_formatted":"18m 5s",
"social_networking_duration_formatted":"ไม่มีเวลา",
"design_and_composition_duration_formatted":"8m 30s",
"entertainment_duration_formatted":"59m 54s",
"news_duration_formatted":"5 นาที 39 วินาที",
"software_development_duration_formatted":"ไม่มีเวลา",
"reference_and_learning_duration_formatted":"20m 51s",
"shopping_duration_formatted":"ไม่มีเวลา",
"utilities_duration_formatted":"20m 39s"
},
{
"รหัส":1515484800,
"วันที่": "2018-01-09",
"ผลผลิต_pulse":68,
"very_productive_percentage":60.4,
"productive_percentage":0.5,
"neutral_percentage":11.0,
"distracting_percentage":7.1,
"very_distracting_percentage":21.0,
"all_productive_percentage":60.9,
"all_distracting_percentage":28.1,
"uncategorized_percentage":9.1,
"business_percentage":21.9,
"communication_and_scheduling_percentage":7.2,
"social_networking_percentage":5.1,
"design_and_composition_percentage":1.2,
"ความบันเทิง_เปอร์เซ็นต์":1.6,
"news_percentage":12.5,
"software_development_percentage":9.1,
"reference_and_learning_percentage":28.2,
"shopping_percentage":2.9,
"utilities_percentage":1.2,
"total_hours":2.78,
"very_productive_hours":1.68,
"productive_hours":0.01,
"neutral_hours":0.31,
"ฟุ้งซ่าน_hours":0.2,
"very_distracting_hours":0.58,
"all_productive_hours":1.69,
"all_distracting_hours":0.78,
"uncategorized_hours":0.25,
"business_hours":0.61,
"communication_and_scheduling_hours":0.2,
"social_networking_hours":0.14,
"design_and_composition_hours":0.03,
"entertainment_hours":0.04,
"news_hours":0.35,
"software_development_hours":0.25,
"reference_and_learning_hours":0.78,
"shopping_hours":0.08,
"utilities_hours":0.03,
"total_duration_formatted":"2h 46m",
"very_productive_duration_formatted":"1h 40m",
"productive_duration_formatted":"47s",
"neutral_duration_formatted":"18m 23s",
"distracting_duration_formatted":"11m 49s",
"very_distracting_duration_formatted":"34m 57s",
"all_productive_duration_formatted":"1h 41m",
"all_distracting_duration_formatted":"46m 46s",
"uncategorized_duration_formatted":"15 นาที 7 วินาที",
"business_duration_formatted":"36m 26s",
"communication_and_scheduling_duration_formatted":"11 นาที 59 วินาที",
"social_networking_duration_formatted":"8m 28s",
"design_and_composition_duration_formatted":"2m 4s",
"entertainment_duration_formatted":"2m 39s",
"news_duration_formatted":"20m 49s",
"software_development_duration_formatted":"15m 5s",
"reference_and_learning_duration_formatted":"46m 59s",
"shopping_duration_formatted":"4m 51s",
"utilities_duration_formatted":"2m 3s"
}
]

ดู rawsummary.json โฮสต์ด้วย ❤ โดย GitHub

ขั้นตอนที่ 4: การสร้างต้นแบบ

รางวัลใหญ่ในการประกวด Raspberry Pi 2017

แนะนำ: