python으로 브라우저 컨트롤시에 selenium를 이용해서 컨트롤하는 경우

드라이버 생성을 특정함수 안에서 하게 되면 함수가 종료될때 브라우저도 같이 종료되는데,

가끔 종료되지 않았으면 할때 아래 방법대로 하면 됩니다.(다른 방법도 있을건데 잘 몰라서..)

 

핵심은 option에 add_experimental_option를 추가하고 "detach"를 True로 활성화 하면됩니다.

 

Edge의 경우(Chrome이나 다른 브라우저는 확인하지 않아서 잘 모름, 뭐 비슷하지 않을까 합니다.)

 

pip install msedge-selenium-tools

 

from msedge.selenium_toos import Edge, EdgeOption

이렇게 하면 from selenium import webdriver를 하지 않아도 됩니다.(당연히 msedgedriver.exe도 받지 않아도 되고)

 

edge_options = EdgeOptions()

edge_options.use_chromium = True

edge_options.add_experimental_option("detach", True)

 

browser = Edge(options=edge_options)

browser.get("http://~")

'기타' 카테고리의 다른 글

VSCode에서 Rust개발하기 - 개발환경설정(Windows 10)  (0) 2021.03.23
앞으로  (0) 2015.03.10
컬러매치  (0) 2013.11.14

WRITTEN BY
CAPAS

,

프로그램을 이것저것 막 하다보니 개발 환경 설정하는 것도 나름 힘들다. 예전에는 그냥 막 했던거 같은 것도 요즘다시 하려니 기억이 안나서 하나씩 정리해 둘까 한다.

 

오늘은 2번째로 C++이다

https://code.visualstudio.com에 들어가보면 쉽게 설명되어 있는데, 설명이 길어서 간단하게 요약정리한다.

 

1. C++컴파일러를 컴퓨터에 설치한다.
  위 사이트에 예로 MinGW-x64를 가지고 설치하는 법이 자세하게 나와있어 그대로 이용한다.
  sourceforge.net 에서 MinGW-w64 - for 32 and 64 bit Windows를 찾아서 설치한다.
  문제는 설치파일(installer)를 실행하면 에러를 내품고 중지한다. (2021-03-31) 위치를 바꿔보고, i686, x86_64, sjlj, seh 뭐 다 바꿔봐도
  그냥 에러만 내고 종료한다.  구글 검색해보니 나만 그런게 아니다....ㅎㅎㅎ

  파일 탭을 누르고 아래에서 "x86_64-posix-seh"를 찾아서 클릭하면 다운로드 페이지로 이동하면
  "x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7zx86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z"를 다운로드 받게된다.
  적당한 위치에 압축을 풀고 환경설정에서 PATH를 추가 해주면 된다.

  C:\Program Files 폴더에 복사해 놓고 여기에 풀기 하면 mingw64폴더가 생성되고 그 아래 파일이 생성된다.
  탐색기 내PC에서 오른쪽 버튼 클릭후 속성에서 고급 시스템 설정 -> 환경변수 -> 시스템변수에서 path 편집

  C:\Program Files\mingw64\bin를 추가후 확인.

  CMD창에서 g++ --version, gdb --version을 실행해서 버전 정보가 나오면 제대로 설치된것이다.

 

2. 프로젝트 폴더를 생성하고

3. VSCode를 실행, 확장프로그램에서 C/C++를 설치한다.

4. 프로젝트 폴더를 열어서

5. 확장자가 cpp인파일을 생성한다.

// helloworld.cpp

#include <iostream>

using namespace std;

int main() {

    cout << "Hello World" << endl; 

}

6. 메뉴의 Terminal에서 Run Build Task를 선택하고 C/C++: g++.exe build active file를 선택하면 빌드가 된다.

7. 아래 터미널 창에서 ./helloworld.exe입력하면 정상 실행된다.

8. 다시 Run Build Task를 선택하고 C/C++: g++.exe build active file의 오른쪽 톱니바퀴를 선택하면 .vscode폴더가 생성되고 tasks.json파일이 열린다.

{

    "version": "2.0.0",

    "task": [

        {

            "type": "cppbuild",

            "label": "C/C++: g++.exe 활성화 파일 빌드",

            "command": "C:\\Program Files\\mingw64\\bin\\g++.exe",

            "args": [

                "-g",

                "${file}",

                "-o",

                "${fileDirname}\\${fileBasenameNoExtension}.exe"

            ],

            "options": {

                "cwd": "${workspaceFolder}"

            },

            "problemMatcher": [

                "$gcc"

            ],

            "group": {

                "kind": "build",

                "isDefault": true

            },

            "detail": "컴파일러: \"C:\\Program Files\\mingw64\\bin\\g++.exe\""

        }

    ]

}

 

이렇게 저장해 주고 다시 Run Build Task하면 컴파일러 선택창이 나오지 않고 자동으로 실행된다.

 

9. 마지막으로 F5눌러서 실행하도록 만들려면 

F5를 누르면 나오는 창에서 C++(Windows)를 선택하면 launch.json파일이 생성되면서 열리는데

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: http://go.microsoft.com/fwlink/?linkid=830387

    "version": "0.2.0",
    "configurations": [
        {
            "name": "(Windows) 시작",
            "type": "cppvsdbg",
            "request": "launch",
            "program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "console": "externalTerminal"
        }
    ]
}

이렇게 수정후 저장하고 F5를 누르면 CMD창이 열리면서 프로그램이 실행된다.

CMD창이 열리는게 싫으면 console의 'externalTerminal'을 'internalTerminal'로 바꾸면 아래 터미널 창에서 실행된다.

 

이상..


WRITTEN BY
CAPAS

,

최근에 다시 Rust를 공부해보려고 VSCode랑 다시 설치하는데 예전에 했던게 기억이 안 나서 몇일을 고생했다.

다른 분들의 설치를 보면 예전에 내가 했던거랑 조금 다르다. 이것저것 많이 설치하는거 같기도 하고,

어째거나 몇일 고생해서 알아낸 부분들을 순서대로 입력해 둔다.

 

1. Visual Studio 사이트에서 vs_BuildTools.exe를 다운받아 설치한다. (mingw도 된다고 하는데 안 해봐서 잘 모름)

   리눅스의 경우 셋팅을 해보지 않아서 잘 모르겠는데, 윈도우즈의 경우 C++의 빌드 환경을 사용하도록 되어 있어

   미리 설치되어있지 않으면 설치하도록한다.

 

2. Rustup-init.exe 파일을 실행해서 설치한다.

   설치가 다되면 cmd 또는 Powershell환경에서 rustup --version, cargo --version를 실행후 정보가 나오는지 확인한다.

 

3. 새로운 Rust용  워크스페이스 폴더를 생성한다

   예) D:\Projects\Rust

 

4. VSCode를 실행하여 Rust용 확장기능을 추가한다.
   여기서 부터 예전과 달라서 많이 고생좀 했다. 사실 맞는지도 잘 모르겠다.
   이글을 작성하면서 다른 블로그를 보니까 C/C++확장기능 없이 실행환경을 꾸미는 것도 가능한가 보다

 

   Rust라고 치면 예전에선 Rust(rls)만 설치해서 사용했던거 같은데 지금은 Rust만나오고 뒤에 (rls)이 붙은거는
   찾아 보기
어렵다.  그냥 Rust(녹슨톱니바퀴,  rust-lang)만 설치하면 추가로 관련 기능을 설치한다고 오른쪽 아래

   알림이 뜬다. 모두 설치한다.

   첫번째 방법

   C/C++ 확장기능을 찾아 설치한다. ( 예전에는 설치하지 않았던거 같은데, 기억이 안난다)

 

   두번째 방법

   code runner를 설치한다.

   예전엔 이걸로 사용한 기억은 있다. 그때 c/c++ 확장기능설치는 안 했던거 같다. 

   여기서 끝 다른 아무것도 할 필요가 없다.

   코드를 작성하고 마우스 오를쪽 버튼으로 맨위 코드 실행을 선택하면 된다.

 

   근데 나는  다른 언어처럼 F5키로 컴파일과 실행을 진행하고 싶다.
   그래서 두번째 방법보다 첫번째 방법으로 진행한다.

 

5. VSCode에서 폴더열기를 해서 위에서 만들어 놓은 폴더를 선택한다.

 

6. 터미널 창을 열고(Ctrl+`) 

   D:\Projects\Rust>cargo new helloworld를 입력하여 helloworld 프로젝트을 생성한다.

   제대로 되었다면 helloworld폴더가 생성되고 그 아래 src등 몇가지 폴더및 파일이 생성된다. 정상이다.

 

7. VSCode에서 src폴더아래 main.rc파일을 열고

   Terminal > Run Task를 선택 cargo -> cargo build helloworld를 선택한다.

   아래 터미널창에서 Build가 이루어 진다.

   다시 Terminal > Run Task를 선택 cargo -> cargo run helloworld를 선택한다.

   아래 터미널에서 hello world가 나오면 정상적으로 실행된 것이다.

 

여기까지는 그냥 몇번이고 실패없이 실행했다. 문제는 다음부터다.
다른 블로그에선 확장기능을 몇가지 더 추가 하고, 하는게 난 뭔소린지 모르겠고 그대로 해도 안되고..짜증이..막..후~

 

8. main.rs 코드 화면에서 F5키를 누르면 컴파일 환경 선택하라고 나온다.
난 윈도우즈니까 C++(Windows)를 선택했다.

뭔가 에러가 나면서 launch.json추가하고 열건지 물어본다. 확인을 선택한다.

아무것도 수정하지 않고 다시 main.rs를 실행하면 ""파일을 찾을 수 없다고 나오면서 launch.json을 열겠냐고 물어본다

여기서부터 무한 반복이다. 온몸이 간질거린다.. 막 그만두고 싶다.

 

코드를 실행시키려고 'F5'키를 누르면 컴파일이 진행되면서 실행파일이 만들어 진다.

그 실행파일 위치는 프로젝트폴더의 target > debug 폴더아래 helloworld.exe(우리가 만든 프로젝트이름)파일로 생성되어 있다. 근데 F5키로 실행파일 찾지 못하는 것이다.

launch.json파일을 열어서  "program":"(~~~)" 이부분을 수정하면 된다.

 

VSCode에는 환경변수를 대신하는 단어들이 몇개 있는데 이거를 이용해서 위 가로 부분을 채우면 된다.

 

대부분 다른 블로그에선 "program": "${workspaceRoot}/target/debug/${workspaceFolderBasename}"이렇게 만 쓰라고 나온다. 난 아무리해도 안된다. 서로 환경이 달라서 그런건지. 

 

"program":"${workspaceRoot}/${command:extension.commandvariable.file.relativeFileDirname1Up}/target/debug/${command:extension.commandvariable.file.relativeFileDirname1Up}.exe"

 

이렇게 입력하면되는데, VSCode확장기능인 'Command Variable'을 설치해야된다.

원래 VSCode환경변수중는 'command:extension.commandvariable.file.relativeFileDirname1Up' 이런게 없다. 'relativeFileDirname'만 있다. 'relativeFileDirname'는 main.rs의 위치를 가리키는데 'helloworld/src' 이다. 이거를

둘로 나눠서 helloworld만 가져와야 하는데, 이 기능을 제공해주는 확장기능이 'Command Variable'이다.

'Command Variable'를 확장기능 설치하는 곳에서 찾아 설치한다.

 

9. main.rs에서 F5를 눌러 실행을 시킨다.. 돌아간다.

   프로그램을 수정하고 다시 F5키를 누른다. 수정 전의 프로그램만 수행된다. 

   미리 컴파일을 해줘야 한다.  위 7번의 첫번째줄을 먼저 실행하고 F5를 누르면된다.

   아래는 내 VSCode Rust launch.json, tasks.json파일이다.

   tasks.json은 컴파일 할때 사용되는 파일이다. 여러 파일을 컴파일 하다보면 cargo build 프로젝트명이 많이 나온다.

   그중에 선택하려면 힘드니까 tasks.json을 만들어 놓고  Terminal > Run Task 에서 맨위 Rust: cargo build만

   선택해 주면 된다. 나중에 launch.json에 컴파일 기능까지 추가 해야 함. 미리 컴파일을 해야되는 불편없이.

 

launch.json

--------------------------------------

{

    // Use IntelliSense to learn about possible attributes.

    // Hover to view descriptions of existing attributes.

    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387

    "version": "0.2.0",

    "configurations": [

        {

            "name": "시작",

            "type": "cppvsdbg",

            "request": "launch",

            "program": "${workspaceRoot}/${command:extension.commandvariable.file.relativeFileDirname1Up}/target/debug/${command:extension.commandvariable.file.relativeFileDirname1Up}.exe",

            "args": [],

            "stopAtEntry": false,

            "cwd": "${workspaceFolder}",

            "environment": [],

            "console": "integratedTerminal",

        }

    ]

}

------------------------------------------------

 

task.json

------------------------------------------------

{

    "version": "2.0.0",

    "tasks": [

        {

            "type": "cargo",

            "subcommand": "build",

            "problemMatcher": [

                "$rustc"

            ],

            "group": "build",

            "label": "Rust: cargo build"

        }

    ]

}

---------------------------------------------

 

몇일을 고생했다. 아~ 걍 하지 말까...

'기타' 카테고리의 다른 글

selenium 사용 중 브라우저 종료 하고 싶지 않을 때  (5) 2021.06.04
앞으로  (0) 2015.03.10
컬러매치  (0) 2013.11.14

WRITTEN BY
CAPAS

,

이번에도 개인적인 사정(뭐 게을러서 그런 부분도 있긴 하지만서도..쩝)으로 오랫동안 게시물을 올리지 못했습니다. 

지난번 게시물에 이어서 작성하도록 하겠습니다.


우드락 프레임을 조금 수정했습니다. 막상 만들어 놓고 보니까 모터마운트하고 바디와의 거리가 너무 멀고 프로펠러가 아래쪽에 위치하고 있어 무게 중심이 위로 올라가 있는 부분이 생겼습니다. 그래서 모터마운트부분을  제거 했습니다. 보다 바디쪽으로 붙이기 위해서이고, 추가로 위로 올리기 위해 마운트부분을 덧 붙였습니다.



수정 전 보다 바디하고 모터 하고 가까워 졌고, 프로펠러 위치가 더 위로 올라 갈수 있도록 되었습니다.


본격적으로 모터를 제어하는 모터 드라이브부분입니다. 모터를 회전시키기 위해서는 모터에 맞는 전압과 전류가 필요합니다. 사용되는 모터가 지난 게시물에 나오는 사양과 비슷하다면, 아두이노에서 나오는 전류로는 모터에 충분한 힘을 주지 못할 뿐더러 모터에서 소모되는 전류를 감당하지 못해 아두이노가 망가 집니다.


아두이노의  digital I/O포트 한개에서 나오는 전류는 최대 40mA이고 권장은 20mA입니다. 그리고 아두이노에서 출력되는 전류의 합이 200mA를 넘어선 안됩니다. 그런데 모터1개가 사용하는 최대 전류가  2.7A(2700mA)이고 그러면 아두이노 최대 출력을 사용하더라도 모터 하나 제대로 돌릴 수 없습니다. 그래서 보통 모터 드라이버를 사용합니다.

모터 드라이버의 종류는 많이 있습니다. 쉴드 형태로 나오는 것도 있습니다. 대표적인것인 L298N, L293D를 이용한 모터드라이브입니다.


       

작은 전류로 큰 전류를 제어하기 위해 사용하는 모터 드라이버(왼쪽: L293D, 오른쪽: L298N)


근데 위 모터 드라이버는 크기도 하지만 무게도 만만치 않습니다.  출력이 약한 모터를 사용하는 비행체에 사용하기에는 많은 무리가 있습니다. 그래서 부품을 가지고 직접 만들어 사용하거나 아니면 데이터 수신부터 모터 제어까지 한꺼번에 되는 All-in-ONE보드형태를 사용합니다. 하지만 All-in-ONE 보드 형태는 구하기가 쉽지않습니다. 대부분 시중에 판매되는 상용 드론에 사용되는 것이고, 또 구했다 하더라도 송신기도 그 보드에 맞는 것을 사용해야 합니다.


 이 블로그에선 부품을 구입해서 직접 만들어 사용합니다.. 뭐 그렇게 어렵지도 않습니다. 

모터 드라이버에 사용된 전자 부품입니다. TIP120 NPN트랜지스터, 1㏀저항, FR107다이오드가 각각 4개씩 필요합니다.


모터드라이버 전자부품



123D를 이용한 모터 드라이버 시뮬레이션


위 시뮬레이션 그램 아래쪽의 전류량 표시는 아두이노에서 출력되는 전류량입니다. 각 포트당 출력되는 전류량이며, 저항을 작은것으로 연결하면 전류량은 더 커집니다. 제 경우에는 모터 출력에는 별 영향이 없습니다.



브래드보드에 올려본 드라이버부품들



   

어깨동무하고 있는 모터 드라이버들- 수축튜브로 마무리 되었습니다.



모터 드라이브 테스트



위 동영상은 스케치프로그램으로 아두이노에서 모터 속도를 제어하는 과정입니다. 스마트폰으로 찍어서 제대로 나오지 않았지만 실제로는 멈춤에서 최대회전으로, 최대 회전에서 멈춤으로 반복하도록 되어 있습니다.

아래는 스케치 프로그램입니다.


int i;

int motorPin = 6;


void setup() {

}


void loop() {

while ( i < 256) {

analogWrite(motorPin, i);

i++;

delay(10);

}

delay(2000);

while( i>=0) {

analogWrite(motorPin, i);

i--;

delay(10);

}

delay(2000);

}


오늘은 여기까지 입니다.







'Arduino' 카테고리의 다른 글

드론, 프로펠러 돌다... 2번째  (0) 2016.03.28
드론, 프로펠러 돌다...  (0) 2016.03.15
아두이노 나노를 다시 한번 되살리다.  (2) 2016.03.07
아두이노 나노를 되살리다.  (1) 2016.02.26
아두이노 드론만들기  (9) 2016.02.24

WRITTEN BY
CAPAS

,

시간이 좀 지나고 그동안의 일도 있긴 했지만 이어서 쓰도록하겠습니다. 

실은 프로펠러가 돌다 한쪽프레임이 부러졌습니다. 모터 출력을 우드락 프레임이 견디질 못했습니다. 역시 배터리랑 스텝다운 그리고 PCB보드등 처음에 없던 것들이 추가가 되어 무게가 많이 늘어났던게 원이이었던거 같습니다. 바디와 모터를 이어주는 축 경계부분이 모터 출력을 충분히 받쳐주지 못 했습니다.(하나 해결했다 싶으면 다른 문제가 생깁니다) 그래서 프레임을 다시 만들고 있습니다.  어차피 처음부터 다시 조립해야 되는 상황이라 동체 만드는 부분 부터 설명하려 합니다.


우드락에 붙일 디자인 - 아래부분 십자모양대로 세로로 세워 붙여줍니다.

일러스트같은 프로그램으로 위처럼 그리고 프린터로 출력해서 우드락에 풀로 붙여줍니다. 스프레이본드가 있음 편한데 없어서 딱풀로 붙여습니다. 다 마를때 까지 기다립니다. 마르지 않은 상태에서 칼로 자르면 종이가 찢어지니 정성스레 조심히 자릅니다.(무지 신경쓰입니다. 힘조절 잘못하면 다시 붙여서 잘라야 합니다)


우드락을 잘라서 이어 붙인 최종 모습

위에 사진이 우드락 프레임 완성본 입니다. 칼로 자를때 모터마운트 부분정도만 수평이 되도록 합니다. 나머지는 대충 잘라도 거의 비슷하게 맞습니다. 그리고 모터가 마운트에 들어 갈 수 있도록 조금 더 넓혀 주었습니다.  이번에는 전체적으로 세로를 좀더 두껍게 만들어 지난번 보다 튼튼 합니다.

이번에는 배터리의 전원이 모터에 고루 전해지도록 하는 부품을 만듭니다. 일종의 전원공급장치로 보면됩니다. 

하드보드지 위에 랜선으로 만든 전원공급장치(?)

하드보드지에 구멍뚫고 랜선을 위처럼 연결합니다. 네 귀퉁이쪽 전선은 모터와 모터 드라이브에 연결될 부분이고 가운데 2줄의 한쪽은 배터리에 다른 한쪽은 스텝다운회로에 연결됩니다.  이게 우드락 프레임 아래쪽으로 배터리와 함께 들어 갑니다.


동체와 모터 그리고 전원공급기(?)

완성된 프레임과 전원공급기(?) 그리고 프로펠러가 달린 모터입니다.  근데 이걸 어떻게 달아야할지 고민입니다.  그냥 납땜을 해도 되는데 나중에 고장이라도나면 떼어내는게 힘듭니다.

마지막으로 모터와 프로펠러입니다. 모터에 대한 자세한 스펙은 알 수 없지만 http://micro-motor-warehouse.com의 하나가 아닐까 하는 추측만 할뿐입니다. 알리 내용과 비교해 위 사이트의 0820-15T와 사양이 같을 거 같습니다. 모터 하나당 최대 2.7A, 4개면 10.8A에 아두이노에서 사용되는 전류를 0.5A라고 했을때 11.3A를 사용하게 되며, 고방전배터리(RC용 리튜폴리머)가 아니면 날리기가 어렬울 수도 있겠다는 생각이 듭니다.

모터, 프로펠러, 모터마운트 그리고 기어축은 JJRC H8C에 들어가는 부품으로 구매를 했습니다. 저작권때문에 알리사이트의 주소를 붙여놓긴했지만 국내 오픈마켓에서도 쉽게 구할 수 있는 부품들입니다.

모터와 모터 드라이브연결은 다음번 글에서 작성하도록 하겠습니다.




'Arduino' 카테고리의 다른 글

드론, 프로펠러 돌다... 3번째  (0) 2016.04.18
드론, 프로펠러 돌다...  (0) 2016.03.15
아두이노 나노를 다시 한번 되살리다.  (2) 2016.03.07
아두이노 나노를 되살리다.  (1) 2016.02.26
아두이노 드론만들기  (9) 2016.02.24

WRITTEN BY
CAPAS

,

드디어 돌려봤습니다.. 드론 프로펠러. 그리고 뜨는 것 확인했습니다. 

그냥 뜹니다. 날지 않습니다. 모터 속도도 맞춰야 하고, 약간 틀어진 모터 마운트도 다시 잡아야 합니다. 그리고 결정적으로 무게를 줄여야 합니다. 너무 무겁습니다.

지금부터 그동안 진행했던 부분에 대해 이야기 하도록 하겟습니다. 
글쓰기가 처음이어서 두서없이 마구 써 나갈예정입니다. 

처음에 만들었던 드론의 아두이노 나노에 전원공급이 원활하지가 않아 스텝다운회로를 구매했습니다.


LM2596 DC-DC스텝다운 컨버터
입력: 3.2V~35V, 출력: 1.25V~30V 3A(최대)

입력전압은 7.4V로 2S 리튬전지를 사용할 예정이고, 출력전압은 대충 6.2V로 맞췄습니다. 원래 최소 6.5V인데 지난번 수리한 1117의 최소전압강하가 1.5V가 아닌 1.2V입니다. 그래서 1.2V를 뺀 출력전압입니다. 조금만 7.4V 아래도 내려가도 아두이노에 들어가는 전압은 불안정할 수 밖에 없는 실정입니다. 그래도 2S리튬전지 만충전압이 8.4V인거를 감안하면 여유가 있을 거라고 생각이 되는데.. 모터를 4개 돌려도 출력이 유지가 될지가 의문입니다.

이번에는 가로세로 5cm인 만능기판에 헤더핀 소켓을 납땜하고 그위에 아두이노 나노와 NRF24L01 그리고 MPU6050를 올렸습니다.

나중에 분리하기 편하도록 올렸는데, 무게가 장난이 아닙니다. 더군다나 스텝다운까지 아래 붙어 있으니 원래 생각했던 무게보다 3배 정도(? 집에 작은 용량을 재는 저울이 없습니다. 그래서 손저울로)는 더 나가는 거 같습니다. 

배선은 랜선피복 버끼고 최대한 겹치지 않는 범위내에서 납땜을 했습니다. 랜선 가늘고 좋긴한데 피복이 열에 너무 약합니다. 구리에 조금만 열이 가해져도 근처 2~3cm는 바로 녹습니다. 어째거나 장장 3시간 동안 이리 저리 연구해 가며 위치 잡고 하나 하나 연결해 나갔습니다. 아쉽게도 아래 부분을 찍은 사진이 없네요. 이번에 돌려 보니까.. 무거워서 아마 제거 해야 될거 같습니다. 그때 아래 부분 연결부분 사진 올리도록 하겠습니다.

제어부분을 제외한 나머지 레이어는 지난번과 동입합니다. 대신 배터리에서 아두이노로 바로 전원이 공급되는게 아니고 스텝다운 회로를 거쳐서 공급되도록 한 것만 추가 되었습니다.



위에 화살표가 가리키는 것이 스텝다운 회로입니다.

사진찍을때는 동체에서 헤더와의 간격이 너무 멉니다. 무게 중심을 조금이라도 아래로 되도록 높이를 조절해서 지금은 높이가 사진보다 절반은 더 아래로 되어 있습니다. 마지막으로 연결안된 부분 모두 확인해서 납땜완료했습니다.

이번에는 송신기 입니다. 이것도 역시 아두이노를 사용합니다. 크기나 무게와는 상관없기 때문에 아두이노 우노를 사용하고 XY-조이스틱 모듈 2개와, NRF24L01모듈을 사용했습니다.



아두이노우노 호환품 CH340G칩을 사용합니다.

정품보다 5V나 3.3V출력 그리고 그라운드가 더 많습니다. 적은수의 부품을 가지고 실험하는 경우 브래드 보드 없이도 왠만하면 거의 다 됩니다.



NRF24L01


입력전원으로 3.3V를 사용합니다. 아두이노에서 3.3V를 공급받을때는 전류가 약해서 송.수신이 잘 안됩니다.
그래서 전원과 그라운드사이에 100uF콘덴서를 달아줬습니다. 여러 사이트에서 10uF이면 충분하다고 하는데 100uF으로도 잘 된다고 외국사이트에서 확인하고 100uF으로 달았습니다. 없을때 송수신이 잘 안되던것이 붙여 주니까 아주 잘 됩니다.



조이스틱 모듈입니다.


2개를 사용해서 위, 아래, 앞뒤, 오르쪽, 왼쪽, 좌,우로 미끄러지도록 하기 위해 조이스틱모듈중 하나를 분해했습니다. 이 모듈은 XY모두 중심에 맞춰줘 있기 때문에 오른쪽, 왼쪽, 앞, 뒤로 움직은 경우에는 잘 됩니다. 그런데 모터 출력을 조절하는 throttle기능을 하기에는 출력값이 너무 한정적입니다. 아래끝에서 위끝까지 범위를 가지고 있어야 하는데, 중앙에서 맨 위까지범위만 가지고 있기 때문에 모터출력을 조절하는데 조금 모자랍니다.

그래서 분해해서  중심으로 되돌아 가도록 하는 역할을 하는 스프링을 제거했습니다. 이 때문에 좌우방향 역시 중심으로 되돌아가지 않습니다. 스프링을 잘라서 붙여 보기도 했지만 잘 안됩니다. 그래서 그냥 제거 해습니다.

오늘은 여기까지만 올리겠습니다.
최종 모습은 이전에 올렸던 드론 모양과 거의 비슷합니다. 동체는 그대로 사용했으니까요.
잠깐 몇글자만 쓸려고 했는데, 많이 길어 졌습니다. 나머지 내용은 뒤에 이어서 쓰도록 하겠습니다. 사진도 자세하게 찍어서...






WRITTEN BY
CAPAS

,

지난번 잘못된 연결(?)로 반만 죽어버린(외부전원안됨) 나노를 온전히 다시 살렸습니다.

AMS1117 5V레귤레이터라는 가로세로 5mm*3mm 전자 부품을 용산에 들렀다가 구매했습니다. 무려 열개씩이나(1개는 판매를 안함).. 형식을 물어 보시는데, 잘 모른다고 했더니 형식을 알아야 한다고.. 마침 사진찍어 둔게 있어서 보여드렸더니 일반적인것이라고 '1117'이면 다 된다고 같은걸로 주셨습니다. 참고로 앞에 'AMS'는 만드는 회사에서 붙이는 그런거라고 하시더군요..

어째거나 저녁에 인두를 들었습니다.
나노에 붙어있는 새끼손톱 1/4만한 놈을 떼어내려니까, 어지간히 안떨어집니다. 곤충핀으로 밑을 살짝 눌러주고 인두로 가열하니까, 그제서야 떨어집니다. 하지만 첫번째 다리 뗄때 인두끝이 조금 덜 달궈졌던지 PCB보드에 붙어있는 배선부분도 떼어져 버렸습니다. 나머지 부분을 잘 떨어 졌는데.. 쩝.. 어쩔수 없이 칼로 PCB코팅을 조금 버껴내고 그분에 납을 조금 묻혀 전기가 통하도록 했습니다.


역할을 다한(?) 1117 5V 레귤레이터

이번에 새로운 놈으로다가 교체하는 작업입니다. 기존에 있던 자리에 납을 조금씩 더 묻혀두고 위에 올린후 인두로 눌러 붙도록 했습니다. 붙이는건 떼는 것보다 쉬웠습니다.


교체하고 난 1117 레귤레이터 - 오른쪽 다리부분이 떨어져 나간 PCB부분에 칼로 수술해서 봉합한 자리..



교체하고 난 후 부품 비교 



지난번 교체한 범용 다이오드와 이번에 교체한 레귤레이터



13번 LED켜지는 소스를 업로드후 외부 전원인가.

그나저나 5,000원도 안된는 호환품에 참 정성입니다.. 새로 사는게 더 나을텐데.. 그래도 완전히 죽지 않은 것을 버릴려니 아깝기도 하고 뭐 경험이다 생각하면서 나름 만족하며 다시 드론만들기에 들어 갑니다.




'Arduino' 카테고리의 다른 글

드론, 프로펠러 돌다... 2번째  (0) 2016.03.28
드론, 프로펠러 돌다...  (0) 2016.03.15
아두이노 나노를 되살리다.  (1) 2016.02.26
아두이노 드론만들기  (9) 2016.02.24
아두이노생각  (0) 2016.02.04

WRITTEN BY
CAPAS

,
몇일전 드론에 탑재 했다가 죽어버린 나노를 되살렸습니다.

USB에 연결하면 파워는 들어 오는데, 컴퓨터에서 인식은 하지 못해 포기 하고 있었습니다. 그러다 인터넷에서 나노를 되살렷다는 내용을 보고 확인 작업에 들어 갔습니다.

결론은 다이오드 교체.. 되살아 난 나노 다시 드론에 올렸습니다. 이번엔 조심히, 그리고 선 일일이 확인하면서.

그러다 또 죽었습니다. 아니 반만 죽었다고 해야하나..
이번엔 USB에선 인식하는데, 외부전원이 안된다는거. 뭐가이래..

되살아난 아두이노나노(인터넷에서 4500원인가에 주고 산 호환품). 옆에 조그만한 칩같은게 스위칭 다이오드.. 크기가 쌀알 2분의 1정도 사이즈..


1N1418범용다이오드로 교체하고 난 후 사진입니다.
손상된 다이오드 위에 표기가 82인줄 알았는데 B2더군요.


MBR0520 0.5A 20V Schottky Rectifier Diode


이놈 구하느라 여기 저기 안쓰는 전자제품 다 뒤지고 했는데 없어서 다른분들이 했던거 처럼 범용다이오드로 교체했습니다.
왼쪽에 살짝 크랙이 있고 B자 안으로 조그만 구멍이 있네요..

나중에 보니까 옛날 IDE하드디스크에 같은 종류의 B2z다이오드가 붙어 있는 거를 확인 했습니다.

그나저나 외부전원 인식하도록 하려면 AMS1117 5v 레귤레이터라는 거를 구해야 되는데.. 어디서 찾아야 할지..


'Arduino' 카테고리의 다른 글

드론, 프로펠러 돌다... 2번째  (0) 2016.03.28
드론, 프로펠러 돌다...  (0) 2016.03.15
아두이노 나노를 다시 한번 되살리다.  (2) 2016.03.07
아두이노 드론만들기  (9) 2016.02.24
아두이노생각  (0) 2016.02.04

WRITTEN BY
CAPAS

,
요즘 아두이노를 가지고 뭔가를 만들어야겠다는 생각에 무작정 드론 만들기에 돌입했다.

첫번째로 만들어진 모형

우드락 프레임,TIP120 트렌지스터를 이용한 모터 드라이브, 아두이노 나노, mpu6050, nrf24 l01을 붙여서 1차로 만들었다.

근데 프로펠러를 돌려보지도 못했다.
아두이노에 프로그램을 올리려구 usb를 연결한순간 타는 냄새가 나더니 나노가 죽어 버렸다. 제어파트와 드라이브파트 연결에서 그라운드를 바로 플러스에 연결했던 것이다. 
졸린 눈으로 연결하다보니 중간에 헛갈렸나 보다..

다시 다 뜯었다.

이렇게해서 첫번째 드론은 프로펠러도 못 돌리고 실패했다.

'Arduino' 카테고리의 다른 글

드론, 프로펠러 돌다... 2번째  (0) 2016.03.28
드론, 프로펠러 돌다...  (0) 2016.03.15
아두이노 나노를 다시 한번 되살리다.  (2) 2016.03.07
아두이노 나노를 되살리다.  (1) 2016.02.26
아두이노생각  (0) 2016.02.04

WRITTEN BY
CAPAS

,

아두이노생각

Arduino 2016. 2. 4. 10:24

한참전에 3D프린터와 빅데이터에 대해 간단하게 올린글이 있었는데.. 이미 구현이 되고 있었습니다.

아두이노, 라즈베리파이등 오픈소스하드웨어쪽에선 이미 여러가지 모듈이 나와있고 이런 모듈을 가지고 여러응용 하드웨어를 만들고, 개발하며, 발전시켜 나가고 있는 상황입니다. 특히 전자 부품쪽에선 이런 모듈화 산업이 활발하게 이루어 지고 있는 거 같습니다. 거리를 측정하는 초음파센서 모듈이라든지, 적외선 입출력센서, 온습도센서 등 일상생활 여기저기서 이미 사용되고 있는 것들이 모듈로 거의 대부분 나와 있고, 온라인 쇼핑몰등에서 아주 쉽게 구할 수 가 있습니다.

앞으로 초등학교에서 프로그램을 가르친다고 합니다.
프로그램이라는게 키보드로 입력해서 단지 모니터 출력에만 의존하는 그런 프로그램은 솔직히 어른들 입장에서나 어린이들 입장에선 그닥 재미있지는 않을 겁니다. 이런 심심한 프로그램을 하드웨어 제어와 같이 사용하면 아주 재미있게 배울 수 가 있을 것이고, 그런 점에선 아주 훌륭한 도구가 아두이노, 라즈베리파이라는 것이 제 생각 이기도 합니다.

현재 저는 초등생 딸 아이가 한명 있습니다. 저를 닮아서 만들기를 좋아하고 그리는 것을 좋아하는 아이 입니다.
이 아이한테 프로그램을 가르쳐 주려고 하는데 아두이노와 라즈베리파이를 가지고 진행할까 합니다. 물론 방과후 수업에서 하는 로봇수업같은 것도 같이 연계해서 하면 더욱 재미있어 할거 같습니다.

'Arduino' 카테고리의 다른 글

드론, 프로펠러 돌다... 2번째  (0) 2016.03.28
드론, 프로펠러 돌다...  (0) 2016.03.15
아두이노 나노를 다시 한번 되살리다.  (2) 2016.03.07
아두이노 나노를 되살리다.  (1) 2016.02.26
아두이노 드론만들기  (9) 2016.02.24

WRITTEN BY
CAPAS

,