= Internship.work[5:6]

Entryนี้จะมาพูดถึงงานที่ทำในWeek5-6นะครับ

เข้าสู่ช่วงโค้งสุดท้ายของการฝึกงานล่ะ

This entry will talk about work in week 5-6 of internship

now i reach at final bend of internship.

 

[TL;DR]

ทำหุ่นยนต์ต่อ แก้ไขmodel ทำหน้าเว็ปสำหรับบังคับหุ่น /จบ.

Continue my robot work, Edit model, Create web for controlling robot /end.


[Long version]

ก็2weekนี้ก็ยังทำหุ่นยนต์ต่อเนี่ยแหละ

แล้วก็ทำinterfaceบังคับหุ่นยนต์ผ่านBrowserเพิ่มด้วย

แต่จะขออธิบายทุกProcessให้หมดเลยละกัน

 

i’m still doing my robot project for this 2 weeks

and create interface for controlling robot via browser additionally.

so i will describe all of process that i have to do.


สืบเนื่องมาจากสัปดาห์ที่แล้ว นั่งงมอยู่กับการทำ3D model ตอนนี้เลยเริ่มคล่องละ

ตอนแรกก็ใช้TinkerCAD ซึ่งมันก็ง่ายแหละ แต่เนื่องจากมันง่ายเกินไปเลยทำอะไรได้ไม่ค่อยเยอะ

เลยย้ายไปใช้ 123D Design เป็นApplicationในคอม ซึ่งก็ปรับนู่นนี่นั่นได้ละเอียดขึ้นเยอะ

ไม่ได้ใช้ยากจนเกินไป แต่ก็ไม่ง่าย 5555

2_5

ตอนออกแบบก็เริ่มจากใช้รูปทรงง่ายๆอย่างCubeหรือCylinder

มาปรับๆหมุนๆให้ได้modelตามที่ต้องการ แล้วก็exportเป็นSTL file

ได้ไฟล์เรียบร้อยก็ใช้โปรแกรมCuraในการสร้างGCodeสำหรับเครื่องปริ้น3D

ซึ่งก็ต้องปรับนู่นนี่นั่นอยู่ เช่นSupportใต้Model ความละเอียดของการปริ้น บลาๆ

พอหลังจากลองPrintส่วนหุ่นยนต์ง่ายๆอย่างขาเรียบร้อยแล้วเนี่ย

พอลองประกอบดูก็เจอปัญหายิบย่อยเยอะมาก ทำเอาปวดหัวอยู่เหมือนกัน

อย่างเช่น ปริ้นมาแล้วส่วนที่ใช้ยึดกับmotorหักมั่ง ขันน๊อตแล้วพลาสติกหักไรงี้

2_6

แต่พอแก้Model 3Dแล้วปริ้นแก้เรื่อยๆก็โอเคนะ ถึงจะเสียเวลาไปเยอะอยู่ก็เถอะ 555555

 

As a result of last week, now i am getting skillful in 3D modelling.

First i start with TinkerCAD but it can’t do more due to its simply.

then i move to 123D Design which is Application in computer that i can config

and adjust model for more. neither too hard to use nor too easy. LOL

 

In designing, i start with using easy shape such as cube or cylinder

rotate it, resize it until that become model that i need and export to STL file.

and then i have to use Cura to create GCode for 3D Printer

that i have too adjust for more for example support

under 3D model, precision, etc.

After i printed robot part that’s leg & foot already

various of problem occured later on. That make me worry.

Such as, part that use to attach motor is broken,

plastic breaks when i tighten screw.

But after edit 3D model, print it again and again, result is more satisfied.

Even though, That take a lot of time. LOL


ต่อไปจะอธิบาย ในส่วนของการทำงานกับArduinoบนRaspberry Piต่อ

เนื่องจากเราทำงานผ่านการsshเข้าRaspberry Pi (ย่อว่าRPiละกัน) เป็นหลัก

และต่อArduinoเข้ากับ RPi ทำให้ไม่สามารถรันArduino IDEที่รันบนGUIได้

จึงต้องใช้ Inotool เป็นหลัก ซึ่งตัวInotoolเนี่ย เป็นcommand line toolkit

สำหรับupload source code fileของArduinoที่เราเขียนลงไปในArduino

วิธีทำงานกับมันก็ง่ายๆ แค่แก้Code C++ในsrc/sketch.ino จากนั้น ใช้คำสั่ง

$ ino build ต่อด้วย $ ino upload แค่นี้ก็เรียบร้อย (ถ้าไม่เกิดBug,Errorตอนbuildนะ)

ส่วนCodeที่เขียนลงArduinoเนี่ย เราใช้logicจากหุ่นยนต์ของRapiroเลย

แล้วก็แก้ไขนิดหน่อยให้เข้ากับหุ่นของเรา ปรับค่าองศาการหมุนของMotor ประมาณนี้

2_3

 

next i will explain about working with arduino on Raspberry Pi.

Because i have to work by ssh throught Raspberry Pi(Abbreviate to RPi)

and connect Arduino to RPi. so i can’t run Arduino IDE that require GUI.

I have to use Inotool insteadly. Inotool is command line toolkit that allow

user to upload source code arduino file to Arduino

Working with this one is simple, just edit C++ code in src/sketch.ino

after that, use command $ ino build and $ ino upload

and then everything finish. (If it didn’t occur any bug & error in build phase)

Code that i have write for arduino, i have implemented from rapiro’s logic

and adjust code that will be compatible with my own robot.


ทีนี้ขั้นต่อไปที่ควรจะทำก็คือ ย้ายวงจรจากbreadboard

ไปบัดกรีลงperfboardหรือที่บ้านเราเรียกว่าบอร์ดไข่ปลาเนี่ยแหละ

ซึ่งก็ไม่เป็นปัญหาสักเท่าไหร่ เพราะผ่านวิชาCircuitสุดโหดร้ายเมื่อตอนปี2มาแล้ว

ผ่านการบัดกรีและสูดดมตะกั่วไม่รู้กี่ร้อยรอบ สบ๊าย 55555

2_1

 

next step should be moving circuit on breadboard to perfboard and soldering.

That is not my problem because i’m already pass cruel circuit course when i was a sophomore.

Used to soldering and smell lead for many times. LOL


2_2

หลังจากประกอบหุ่นยนต์ทุกอย่างเรียบร้อย ไขน๊อตยึดServo Motorกับmodelที่printออกมา

ทีนี้ปัญหามันคือ แต่หุ่นยนต์มีน้ำหนักไม่พอที่จะทำให้มันก้าวขาได้ ชิปหายมาก 55555

ก็พยายามแก้มาเรื่อยๆ หาอะไรมาถ่วงน้ำหนัก เปลี่ยนองศาการหมุนของMotor

แต่ก็ยังแก้ปัญหาไม่ได้ ก็คงต้องหาวิธีแก้ไขต่อไปยาวๆแหละ Orz

2_4

 

after i have assemble all part of robot and

bind servo motor with model that i’ve printed with screw.

and then i face a problem. Robot don’t have enough weight for make itself walking.

I try many solution such as finding something to put more weight,

adjust angle of motor in my code but it still not work.

By the way, i have to find another solution later.


พอไหนๆก็นึกทางแก้ไม่ได้ เลยมาลองทำอะไรอย่างอื่นก่อน เป็นการRelax(?)สมอง 5555

บังเอิญไปเจอIoT FrameworkตัวนึงสำหรับRPi ชื่อว่า Webiopi

ซึ่งทำตัวเป็นServerสำหรับControl GPIOและSerial CommunicationของRPiได้

เลยโหลดมาลองใช้ดูเล่นๆ…

ซึ่งตัวWebiopiเนี่ย ทำให้Clientสามารถcontrol RPiได้ผ่านbrowser

ผ่านCodeส่วนที่เป็นJavascript

อย่างเช่น ถ้าเราจะเขียนเว็ปให้มีปุ่มสำหรับส่งStringไปยังArduino Unoผ่านสายSerial

Codeก็จะประมาณนี้

<html>
<head>
<script>
function sendData(){
  webiopi().Serial("uno").write('Test String');
}
</script> 
</head>
<body>
  <button onclick="sendData()">Send Data</button>
</body>
</html>

ดูๆแล้วมันก็ง่ายดีนะ แค่จะปวดหัวตอนที่ต้องเขียนเว็ปภายในRPi Environmentเนี่ยแหละ

 

later that, i try to find any solution but still worthless.

so i find something to relax my brain. LOL.

Unexpectly, i find an IoT(Internet of things) Framework for RPi

that’s call webiopi. This will manage RPi as a server for

controlling GPIO & Serial communication. and i download to try it…

Webiopi will allow client to control GPIO & Serial directly via Browser

with Javascript programming. For example, if we want to create website

that have a button for send data to Arduino UNO via Serial cable

Code is as above.

It seem to be easy but will be a problem

when i have to coding website in RPi environment.


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

see you next week.

and next week is the last week of my internship.

= Internship.work[4]

Entryนี้จะมาพูดถึงงานที่ทำในWeekที่4นะครับ

ผ่านมาแปปๆก็จะเดือนนึงล่ะ รู้สึกโคตรเร็วเลย = =

This entry will talk about works in week 4 of internship.

It’s been 1 month. Time is passing so quickly  = =

 


 

[TL;DR]

ตบตีกับRaspberry Pi + Arduino, เขียนโค้ด+ออกแบบหุ่นยนต์ /จบ.

Deal with Raspberry Pi + Arduino, Coding and design Robot /end.

 

 


 

 

[Long version]

วีคนี้คือไม่ได้ยุ่งกับอีโต๊ะที่ทำมาตลอด3สัปดาห์ก่อนหน้าเลย 55555

กลัวว่าจะไม่มีอะไรเขียนลงReport เลยต้องมาทำอีหุ่นยนต์นี่แบบFull-time

ผ่านมาสัปดาห์นึง ตอนนี้ก็จะมีอะไรที่จับต้องขึ้นมาได้บ้างล่ะ

This week i don’t bind up with that table anymore LOL

I’m afraid that i will have nothing to write in report

so i have to work on robot for Full-time.

1 week passed, now i have somethings that tangible

 

ก็ที่ทำหุ่นยนต์เนี่ย งานแบ่งออกมาได้ 3 Part ใหญ่ๆ

อย่างแรกเลยคือเขียนโค้ดให้ตัวหุ่นยนต์ ซึ่งอันนี้เสร็จเรียบร้อย

ใช้RPiรับข้อมูลจากคอม ใช้PythonเขียนรับStringแบบง่ายๆเลย 55555

แล้วRPiก็ส่งข้อมูลผ่านสายSerialไปยังArduino สบายๆ

ในArduinoก็รับข้อมูลมาแล้วก็สั่งMotorตามที่เขียนเอาไว้ เย้

1_1

About robot works, i have split it into 3 main tasks

First is programming for robot, that is finished

Using RPi to get data from computer and

write some python script to get String data from user

and pass it to arduino by serial wire. easy

after arduino get data from RPi

then do functions to control motor that already defined. yeah.

 

อย่างที่2คือเรื่องของวงจรไฟฟ้าและServo Motor

ซึ่งServoที่ใช้เนี่ย ใช้ไฟ6V แต่ซื้อแบต9Vมา…..

ลองทำวงจรvoltage dividerให้แบต9Vเหลือ6Vมา

ตามสมการ Vout = (R2/R1+R2) * Vin

ดังนั้นถ้าVout/Vin = 6/9 = 2/3 ก็คือ R2เป็น2เท่าของR1

พอเอาไฟ6Vที่โดนแบ่งมาเรียบร้อยไปต่อMotor4ตัวเท่านั้นแหละ

อ่าว มอเตอร์ไม่ทำงาน เป็นไรวะ volt meterจิ้มปุ๊ป อ่าว เหลือ2volt GG

สุดท้ายก็เลยลองต่อตรง อ่าว ทำงานได้เฉยเลย 55555

1_2

Second is about circuit and servo motor

Voltage requirement for motor is 6V

but i already buy a 9 volt battery…..

so i decide to do a voltage divider circuit from 9V to 6V

According to Equation : Vout = (R2/R1+R2) * Vin

so Vout/Vin = 6/9 = 2/3 then R2 is twice of R1

After that, i connect 4 motors with that 6V circuit

Nothing move….. WTF!? so i check with my volt meter

it become only 2 volt OK…..

Finally i connect 4 motors with 9V Battery directly, it’s work! LOL

1_3

 

อย่างสุดท้าย อันที่3 นั่นก็คือ ปั้นModelหุ่นยนต์

ไอ้นี่แหละยากที่สุดเลยยฟหยกาด่นฟวเ่น่กหดืเา่ดหกเาด

ให้เด็กวิศวะทำ3D Model อื้อหือ ร้องไห้สิครับ

โปรแกรมก็ไม่รู้ว่าต้องใช้ไร แถมโหลดมาก็ใช้ไม่เป็น (รู้สึกโง่อย่างมาก)

สุดท้ายก็ต้องพึ่งที่พึ่งสุดท้าย Google & Youtube เปิดคลิปนั่งทำตาม ฮือออ

ตอนแรกก็ลองใช้ Blender (ใช้ยากชิปหาย ยอม)

มาต่อที่ SketchUp (โหลดมาแล้วลองแก้STLปุ๊ป บึ้มไปเลย สุดท้ายก็ลบ)

จนมาจบที่Web-based อย่างTinkerCAD

ซึ่ง ใช้ง่ายดี เหมาะแก่คนที่ไม่เคยแตะ3D Modellingอย่างเราๆ 55555

ตอนนี้ก็ลองปั้นอะไรง่ายๆอย่างส่วนขาก่อน

ซึ่งเอาจริงแล้ว โอ๊ยยย ยากชิปหายยยยยย

ทั้งต้องวัดขนาดMotor ขนาดแขนServo กว้างยาวหนาเป็นหลักmm

อื้อหือ น้ำตาจะไหล อยากจะกราบเท้าDesignerสายนี้จริงๆ ยากกว่าเขียนโค้ดอีก

 

1_4

Last one is Modelling Robot’s part

This one is “HARDEST” part of my workkkksdkjfgnp;osijhgoueg.

assign an engineering student to do 3D modelling? oh god why

i have no idea which program can do it and how to use it (Feeling : Foolish)

so i have to depend on my last refuge, Google & Youtube.

Open some web and video, follow instruction and go on….

First i have use Blender for 3D modelling (Hard to use, give up)

next is sketchup (i open .stl file and then.. BOOM, uninstall it… )

and then i come to end at tinkerCAD which is web-based application

that is easy to use, suitable for people who don’t have

experience with 3D modelling before.

i try to create some part that easy to model such as leg part

actually, it’s damnnnn harddddddd.

Measure motor size, mechanic parts in mm, and many others….

Salute all Designer, it’s very difficult and painful more than programming.

 

ตอนแรกว่าจะทำPrototypeขึ้นมาโดยใช้หุ่นRapiroเป็นต้นแบบ

แต่ปัญหามันก็ยังเกิดขึ้นจนได้ เกิดแบบโง่ๆเลย 5555

ตอนแรกคือโหลดTemplateของRapiroมา เกือบจะPrintตัวModelออกมาล่ะ

แต่พอลองCheckโครงสร้างดูดีๆ อ่าว อีชิปหาย Servo Motorที่มีกับที่หุ่นใช้มันคนละแบบกัน

สุดท้ายก็ต้องมาปั้น3D Modelเอง *ร้องไห้หนักมาก*

At first time i think i will create prototype by using Rapiro Robot as template

but it’s still have a problem.

I have download 3D model of Rapiro.

almost print it out, i have check for model’s structure

Holy sh*t, i can’t use my motor with this model. it’s different.

so i have to modelling 3D robot’s part by myself *Cry*

 

พอได้ลองปริ้นตัวที่ปั้นออกมานี่ อ่าวชิปหาย ไม่พอดี ต้องแก้modelอีก

โอ๊ยยยย เกลียดงานDesignที่สุดล่ะ T_T

and then i have print out one that i’ve made. it don’t fit, i have to edit for more..

i hate designing very much. T_T

 

ไว้มาต่อWeekต่อๆไปนะครับ

See you next week!