Objective : 

   1. Setting for headless mode (No monitor, mouse, keyboard) - remote access via TightVNCServer

   2. Minimal attachment to the board : power, webcam and network cable (switch to wifi dongle later).

   3. GPIO setting for motor control

   4. Serial communication with ESP32 (ESP32 will handle Lidar, A/D, DAC)

 

===========================================================

1. Download server image from Odroid wiki site.

2. For now, you cannot use SSH log-in.  So, attach monitor, keyboard, mouse.

3. After login, 

sudo passwd root
  (enter default password "odroid" for sudo)
  (for new password, "111" and confirm) - enter extremely easy password.  Save yourself from password hell.
  
sudo passwd odroid
  (same thing.  change all password to "111")

// This steps are needed for NPU to work
sudo apt update
sudo apt upgrade

sudo apt-get install nano

sudo nano /etc/ssh/sshd_config
// Allow enable SSH login option, so "root" can be remotely log-in
# Authentication:
#LoginGraceTime 2m
PermitRootLogin yes   (<== change right here)
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

sudo reboot

// After reboot, make sure to log-in as root via SSH.  
// The user id "odroid" will not be used anymore.

// ************  IP RESERVATION with Router *************

// Try to reserve IP address for Odroid-M1 on your home or office router's configuration.

// If this device's MAC address is reserved with fixed local IP address, then this device will always have

// same local IP address everytime it boot-up.   In my case, I have set its IP to 192.168.1.96

 

// now log-in from PC using SSH as root, 111  (My case, I use Snowflake on Ubuntu.  With Snowflake, you can have file manager between PC & bot, text editor that can edit files on bot from PC, and endless number of terminals.)

// Install LXDE 

apt-get install lxde

  - during setting, it will as for gdm or lightdm, choose lightdm.

apt-get install libx11-dev libgtk2.0-dev libcairo2-dev libpango1.0-dev libxtst-dev libgdk-pixbuf2.0-dev libatk1.0-dev libghc-x11-dev
apt-get install xorg tango-icon-theme gnome-icon-theme

 

// Install Tight VNC Server

apt-get install tightvncserver thunar-volman udisks2 gvfs

 

// For NPU programming

apt install g++

apt install cmake

 

// Pre-install For Lazarus IDE

apt install gdb

apt-get install subversion

 

// For Webcam

apt-get install v4l-utils

apt-get install guvcview

apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio

 

// For general programming

apt-get install -y git

 

// For general monitoring

apt-get install htop

 

// GPIO library : How to download wiringOP
apt install odroid-wiringpi
apt install wiringpi-examples
gpio readall
gpio readall -a

 

// Disable auto hibernate.   It is extremely annoying if it keeps on hibernating and never wakes up.

systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

 

ip addr   <== to find out the local IP address of  Odroid-M1.  In my case, I have fixed its IP to 192.168.1.96 at router.

 

// Remote Log-in via VNC with Remmina Remote Desktop

tightvncserver

  - then it will ask for vnc remote password two times.   Enter "111" for simplicity

  - Would you like to enter a view-only password (y/n)?  <= Important.  You don't want view-only.

 

// Using Remmina from Ubuntu PC, log-in with VNC with the local IP address + ":1" at the end.

// Once you log-in via VNC, then now, you are READY! to run it in headless mode and develop Robot.

VNC remote log-in

 

I love this style, similar to old Windows 95.&nbsp; &nbsp; Perform USB webcam test with guvcview

===============================================================

NPU CAM demo (I have done it with UBS webcam.)

For this demo, you will have to follow the instruction from wiki site's RKNPU  project.

Important : If server image is used instead of desktop image, OpenCV must be installed from source in order to make this demo work.   

Otherwise, ./build-linux.sh step will terminate with error.

Refer this site for installing OpenCV from source - (Method 2) :  vitux.com/opencv_ubuntu/

 

WorkFocusClock.exe 는 요즘 유행하는 Deadline Driven Development (마감시간에 쫒기는 듯 개발하기?) 에 사용하기 편하도록 아주 단순하게 만들어진 PC용 모래시계입니다.

   

이 프로그램은 PC에 어떤 화일도 생성하거나 고치지 않고 네트웍을 사용하지 않고 윈도우 자체에 따라오는 딱 3개의 음악 wav 화일만 알람용으로 읽기 전용으로 사용합니다.  그래서 따로 사용자 세팅을 저장하지 않습니다.   도움말도 없고 무지무지 단순하게 몇시간만에 뚝딱뚝딱 만든 공유하기도 민망한 프로그램인데 나름 쓸만 하더군요.   

진짜 모래시계는 시간을 못바꾸는데 이건 시간을 그냥 마음대로 지정해 줄 수 있고 단순하게라도 집중할 내용을 간단하게 적어놓을수 있게 만들었습니다.


처음 시작할때 1초 음악이 흐르고, 

종료 5분 전에 1초 음악이 흐르고,

종료때 15초간 긴 음악이 흐릅니다. 


화일 : WorkFocusClock.zip

      이 버전은 분(minute)의 값을 1~100000까지로 제한해서 에러확률을 줄인 버전입니다.

      이 버전은 마지막 15초 알람때 15초간은 잘 안꺼지던문제를 해결했습니다.  

      그리고 한글화작업을 조금 더 했습니다.

      그리고 도서실같은 곳 용으로 소리 묵음 (No Sound)기능 추가했습니다.




설치 : 다운받아 Zip 화일을 푸시면 그냥 WorkFocusClock.exe 화일 하나 딸랑 있고 다른 설치도 필요 없고 아무데나 원하시는 위치에 넣고 쓰시면 됩니다.


사용법 : 

실행하시면 다음 창이 뜹니다.


그럼 마우스로 아래 메모창을 쓱 긁어서 

첫줄에는 몇분을 원하시는 숫자만를 넣어 주시고 

그 다음줄부터는 아무 내용이나 

마음대로 넣으시면 됩니다.


예로 200분 동안을 모래시계의 시간으로 정하셨고,

밑에 내용은 본인에게 자기암시용

다짐같은걸 적어 놓으시면 됩니다.


그리고 (RESET-시작)을 누르시는 순간 모래시계가 작동하기 시작합니다.

중간에 잠시 멈추시거나 할때는 (PAUSE-멈춤)를 누르시면 됩니다.


참 쉬입죠잉~~



아래는 여러개의 사항을 프로그램을 상황의 수에 맞게 동시에 실행시킨 경우입니다.



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

소스코드는 Delphi 10.2로 만들어져 있습니다.  혹시 필요하신 분들을 위해서. 

WorkFocusTimer_DelphiCode.zip


NodeMCU w/ Motor Sheild 예문의 실제 실험 사진들

원본은 2015년 11월 제작.



코드 : code_rev.txt




예문의 소스는 브라우저에서뿐만이 아니라 USB Serial로도 동시에 컨트롤이 가능한 코드입니다.


실행시 양방향에서 명령을 받도록 만들어졌습니다


USB Serial로 직접 컨트롤할때는 명령어가 달라집니다.


예)  메인 라잇일 키고 끌때 ㅣ #ML:000>    #ML:001>


오른쪽 서보 속도   #RS:450>   450은 중립, 350이나 550은 각 방향대로 회전합니다.


왼쪽 서보 속도   #LS:450>   450은 중립, 350이나 550은 각 방향대로 회전합니다.


모터 스탑    #ST:000>   


서보 양쪽 바퀴의 속도를 동시에 명령할때     #MW:450,450>   


보드 위의 불을 킬때 #HL:000>   끌때는 001


전체 프로그램의 구조를 이해하면 자신의 명령어와 실행 코드를 만들어 넣을수 있읍니다.   기본적으로 두글자 명령어에 두개까지의 숫자 파라메터를 받는 구조입니다.


(위 : USB Serial 로 컨트롤하는 프로그램.  

속도가 빠르고 복잡한 코딩이 가능해서,  로봇용으로는 더 적합합니다..)

It is far easier and far faster to control through USB serial.  

Also extremely complex coding is possible on desktop PC application.



(아래부터는 웹 브라우저로 맨 밑의 로봇 제어하는 예.   자동화주택에 적합합니다)


Controlling through web browser is rather slow and dull.   

It can be good for home automation.








(아래 로봇은 최소한의 장비로 교육용으로 간단하게 만들었습니다.)

BOM (Bill of material)

NodeMCU w/ Motorshield  ~ $13

1 Main Light (12V DC Flashlight) - 폐품이용

2 Continous Servo w/ rubber tire wheel  ~ $25

3 Metal plates from dead hard-disk drives - 폐품이용

Some nuts and bolts & 2-side tape (나사랑 볼트랑 그리고 양면테잎)

Cellphone Power Bank 셀폰용 파워팩(5V 1.2A)  ~ $10 cheap one.

Cut-off USB Cable for Power Connection (한쪽을 짤라서 파워 연결용으로 사용) - 폐품이용

앞바퀴는 일반 싸구려서랍장에 따라오는 바퀴(주로 안쓰고 놔뒀다가 이런데 사용) - 폐품이용


(*) 가장 힘든 부분은 메탈판에 나사용 구멍뚫기 (드레멜 드릴 사용)


대략 비용 $50 아래  (오만원 이하)

보통 익숙하면 하루면 대충 조립가능.  작동실험중으로 아직 조립도 완벽히 끝나지 않은 상태 사진입니다.)













비행 시뮬레이션을 위한 게임용 입력 컨트롤러들.



   잠시 그냥 궁상스런 생각을 해 봤습니다.  무엇인가 컨트롤을 한다면 저에게는 항상 건담이 떠 오릅니다.   건담시드에 나오는 조종석.  현실적으로 이족 보행(bi-ped) 로봇을 격렬한 전투기능까지 갖춰야 한다면 인공지능이 아니고서는 이런 단순 컨트롤로 조종이 과연 가능할까 하며 허무맹랑하게 봤습니다.   대한민국 로봇대전 같은데서 보면 사람이 리모트로 조종하는 장난감크기의 이족보행로봇들이 완전 바보같은 움직임으로 발로 차고 주먹질하고 경기를 하지만 진짜 전투라면 미사일 한방에 죽음이라 상황은 전혀 달라집니다.    하지만 전투용을 만드는 것도 아닌데 시도를 한번 해 보는건 재미있겠다고 느껴왔습니다.   물론 컨트롤유닛까지만.   건담 자체를 만든다는건 크기를 아무리 작게 10살짜리 어린이 크기로 만들어도 상당한 비용과 시간이 드는 일이기 때문에 거기까지는 노리지 않고 3D 시뮬래이션정도로 만족을 해야 하지 않을까요?   뭐 그건 쉽나요?


만화영화에 나오는 건담의 조종석



진짜 갖고 놀고 싶지만 너무 크기가 커서 놔둘곳이 마땅치 않은 상황.  쩝.



신형 F-16C는 이런 전자오락용 게임컨트롤러를 닳은 조종기를 쓰네요.



에어버스 380조차 조종석과 부조종석에 다 게임용 조종기 스타일로 나오는군요.






샤오미 Yi 액션 캠


3년쯤 전에 완전 집돌이 생활패턴을 벗어던지고 와일드한 패턴으로 바꿔보려고 바닷물 속에 들어가 랍스터나 크랩도 잡는  꿈에 젖어 구입했던 샤오미 액션캠입니다.   꿈은 꿈이었을 뿐이었나...바닷물속에 나를 맡기고 물고기들과 유영하고 하는 기적같은 일은 일어나지 않았습니다.   태평양 바닷물이 이렇게 얼음장일줄은 꿈에도 몰랐습니다.  7mm 방수복을 입어도 뼛속까지 전해지는 냉기에 후덜덜덜...


검정색 밴드는 머리에 잠수용 카메라 방수케이스를 부착하게 해 주는 밴드입니다.   이 놈들을 다시 꺼낸 이유는 실험할때 셀폰으로 찍었더니 한 손을 못쓰니깐 너무 힘들어서 앞으로는 새로운 방식으로 촬영하려고 합니다.   몸에 부착하는 밴드도 구입했지만 야외에 나가서 촬영하지 않는 이상에는 필요가 없을것 같습니다.   














+ Recent posts