micro:bit 지니어스키트 : 개봉기

OS/micro:bit 2018.11.18 22:09 Posted by 파란크리스마스

본 체험 제품은 아이씨뱅큐㈜ 에서 진행하는 무상 체험단 활동으로 작성한 것입니다.

마이크로비트에 관심이 많아서 여러가지 확장하려고 알아 보던중에 지니어스키트를 알게 되었는데,
이번 체험단에 당선되어서 지니어스키트를 얻게 되었습니다.

확장보드와 확장보드를 통해 각종 센서로 부터 입력 받은 값을 여러가지 아웃풋으로 보여 줄수 있고,
확장보드와 연결도 간단한 클립형태로 연결할 수 있어서 초등학생도 어렵지 않게 사용할 수 있도록 구성되어 있습니다. 


마이크로비트 지니어스키트 공식 구입처 : 아이씨뱅큐 http://www.icbanq.com/
아이씨뱅큐 공식 카페 : http://cafe.naver.com/icbanq
아이씨뱅큐 공식 블로그 : http://blog.naver.com/icbanq
마이크로비트 공식 카페 : http://cafe.naver.com/bbcmicro
나도메이커 유튜브 채널 : https://www.youtube.com/user/ICbanQ

무상체험단 모집(마이크로비트 지니어스키트)

OS/micro:bit 2018.10.31 01:22 Posted by 파란크리스마스


안녕하세요 ! :D
요즘 가장 핫한 오픈소스하드웨어는? 바로!
마이크로비트 라고 할 수 있죠!
마이크로비트를 더욱 더 다양하게 활용해볼 수 있는 <지니어스키트> 가 드디어 체험단을 진행하게 되었습니다.

이번에는 이전과 조금 다른 체험단 신청 방법으로 진행 될 예정인데요!

아래 순서로 진행해주시면 됩니다.

1. 나도메이커 카페 가입 : https://cafe.naver.com/icbanq
2. 마이크로비트 카페 가입 : https://cafe.naver.com/bbcmicro
3. 지금 보고 계시는 게시글을 SNS 에 스크랩 !
4. 체험단 신청서 작성!
5. 유튜브 '나도메이커' 채널 구독 시 당첨 확률 UPUP!!
체험단 신청하러 가기 ▶ https://goo.gl/Y1ByVP
유튜브 구독 하러 가기 ▶ https://goo.gl/tJ9Znc


출처

언어 설정

메뉴 [기본 설정] > [Raspberry Pi Configuration] 선택

탭 [Localisation] 선택

버튼 [Set Locale...] 선택하고, 팝업 창[Locale] 에서 Language, Character Set 설정

버튼 [Set Timezone...] 선택하고, 팝업 창[Timezone] 에서 Area, Location 설정

버튼 [Set Keyboard...] 선택하고, 팝업 창[Keyboard] 에서 Model, Layout, Variant 설정

버튼 [Set WiFi Country Code...] 선택하고, 팝업 창[WiFi Country Code] 에서 Country 설정

한글 입력기(uim) 설치

$ sudo apt-get install uim uim-byeoru fonts-unfonts-core

uim로 입력기 설정

$ im-config -n uim

입력기 설정 확인

$ cat .xinputrc 
## im-config(8) generated on Sat, 20 Oct 2018 21:14:47 +0900
run_im uim
## im-config signature: 7e7926db202ba349880ee57ac6ef0013  -

입력기 설정 후 재부팅

$ sudo shutdown -r now

uim 입력기 설정

메뉴 [기본 설정] > [Raspberry Pi Configuration] 선택

[디폴트 입력기 지정]에서 ]디폴트 입력기]를 [벼루]로 설정

[Display behavior]에서 [Display]를 Never로 설정

[전체] 켜기, [전체] 끄기를 한영전환키 설정과 충돌이 생기지 않도록 비워두고 적용

벼루 키 설정 1

Ubuntu 18.04 : Tomcat 설치

OS/Linux 2018.10.08 03:11 Posted by 파란크리스마스

출처

Tomcat 8.5 다운로드 및 압축해제

$ wget http://apache.tt.co.kr/tomcat/tomcat-8/v8.5.34/bin/apache-tomcat-8.5.34.tar.gz
$ tar xvf apache-tomcat-8.5.34.tar.gz
$ sudo mv apache-tomcat-8.5.34 /usr/local/

jdk 설치

$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer

서비스 파일 작성

$ sudo vi /etc/systemd/system/tomcat.service

[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/lib/jvm/java-8-oracle
Environment=CATALINA_PID=/usr/local/apache-tomcat-8.5.34/temp/tomcat.pid
Environment=CATALINA_HOME=/usr/local/apache-tomcat-8.5.34
Environment=CATALINA_BASE=/usr/local/apache-tomcat-8.5.34
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

ExecStart=/usr/local/apache-tomcat-8.5.34/bin/startup.sh
ExecStop=/usr/local/apache-tomcat-8.5.34/bin/shutdown.sh

User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

Tomcat 8.5 서비스 등록

$ sudo systemctl daemon-reload
$ sudo systemctl enable tomcat      (재부팅시 자동실행)
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /etc/systemd/system/tomcat.service.

Tomcat 8.5 서비스 실행

$ sudo systemctl start tomcat

Tomcat 8.5 서비스 실행 정보 확인

$ systemctl status tomcat.service
● tomcat.service - Apache Tomcat Web Application Container
   Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2018-10-04 07:13:23 KST; 17s ago
  Process: 5797 ExecStart=/usr/local/apache-tomcat-8.5.34/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 5805 (java)
    Tasks: 48 (limit: 4915)
   CGroup: /system.slice/tomcat.service
           └─5805 /usr/lib/jvm/java-8-oracle/bin/java -Djava.util.logging.config.file=/usr/local/apache-to
 
10월 04 07:13:23 bluesanta-ubuntu systemd[1]: Starting Apache Tomcat Web Application Container...
10월 04 07:13:23 bluesanta-ubuntu startup.sh[5797]: Using CATALINA_BASE:   /usr/local/apache-tomcat-8.5.34
10월 04 07:13:23 bluesanta-ubuntu startup.sh[5797]: Using CATALINA_HOME:   /usr/local/apache-tomcat-8.5.34
10월 04 07:13:23 bluesanta-ubuntu startup.sh[5797]: Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.5.34
10월 04 07:13:23 bluesanta-ubuntu startup.sh[5797]: Using JRE_HOME:        /usr/lib/jvm/java-8-oracle
10월 04 07:13:23 bluesanta-ubuntu startup.sh[5797]: Using CLASSPATH:       /usr/local/apache-tomcat-8.5.34
10월 04 07:13:23 bluesanta-ubuntu startup.sh[5797]: Using CATALINA_PID:    /usr/local/apache-tomcat-8.5.34
10월 04 07:13:23 bluesanta-ubuntu startup.sh[5797]: Tomcat started.
10월 04 07:13:23 bluesanta-ubuntu systemd[1]: Started Apache Tomcat Web Application Container.

Tomcat 8.5 서비스 종료

$ sudo systemctl stop tomcat

Ubuntu 18.04 : svn 설치

OS/Linux 2018.10.08 03:11 Posted by 파란크리스마스

출처

svn 설치

# apt-get install -y subversion

svn 환경파일(/conf/svnserve.conf) 수정

# vi /bluesanta/Repositories/conf/svnserve.conf

[general]
#인증되지않은(즉 계정이 없는) 사용자에 대해 접근을 거부한다.
anon-access = none
#인증된 사용자에 대해 쓰기 권한을 준다.
auth-access = write
#인증된 사용자에 대한 계정 정보(아이디/패스) 정보가 기록된 파일명을 의미한다.(기본값 passwd) 
password-db = passwd
#인증된 사용자에 대해 저장소에 대한 권한 설정이 기록된 파일명(기본값)
#authz-db = authz
#현재 파일에 해당되는 저장소의 영역에 대해 설정
#realm = bluesanta_proj

사용자 관리(/conf/passwd) 파일

# vi passwd

[users]
bluesanta = {password}

사용자 관리(/conf/authz) 파일

# vi authz

[/android_library]
bluesanta = rw

svn 시작

# svnserve -d -r /bluesanta/Repositories

svn 종료

# killall svnserve

svn 포트 개발(3690)

# firewall-cmd --permanent --zone=public --add-port=3690/tcp
# firewall-cmd --reload

svn editor 설정

# SVN_EDITOR=/usr/bin/vim
# export SVN_EDITOR

svn 기본 디렉토리 만들기

$ svn mkdir svn://localhost/work2

svn 데몬 자동실행

$ sudo vi /etc/rc.local

# Subversion
svnserve -d -r /bluesanta/Repositories

서비스 등록

$ vi svnserve

#! /bin/sh
### BEGIN INIT INFO
# Provides:          svnserve
# Required-Start:    $local_fs $syslog $remote_fs
# Required-Stop:     $local_fs $syslog $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start svnserve
### END INIT INFO

# Author: Michal Wojciechowski <odyniec@odyniec.net>

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="svnserve"
NAME=svnserve
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="-d -r /bluesanta/Repositories"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

[ -x "$DAEMON" ] || exit 0

[ -r /etc/default/$NAME ] && . /etc/default/$NAME

. /lib/init/vars.sh

. /lib/lsb/init-functions

do_start()
{
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
                || return 1
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
                $DAEMON_ARGS \
                || return 2
}

do_stop()
{
        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
        RETVAL="$?"
        [ "$RETVAL" = 2 ] && return 2
        start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
        [ "$?" = 2 ] && return 2
        rm -f $PIDFILE
        return "$RETVAL"
}

case "$1" in
  start)
        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
        do_start
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  stop)
        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
        do_stop
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  restart|force-reload)
        log_daemon_msg "Restarting $DESC" "$NAME"
        do_stop
        case "$?" in
          0|1)
                do_start
                case "$?" in
                        0) log_end_msg 0 ;;
                        1) log_end_msg 1 ;; # Old process is still running
                        *) log_end_msg 1 ;; # Failed to start
                esac
                ;;
          *)
                # Failed to stop
                log_end_msg 1
                ;;
        esac
        ;;
  *)
        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
        exit 3
        ;;
esac

exit 0

svnserve 파일 복사

$ sudo cp svnserve /etc/init.d
$ sudo chmod u+x /etc/init.d/svnserve 

서비스 등록

$ sudo update-rc.d svnserve defaults

서비스 실행

$ sudo service svnserve start

서비스 실행 정보 확인

$ sudo service svnserve status
● svnserve.service - LSB: Start svnserve
   Loaded: loaded (/etc/init.d/svnserve; generated)
   Active: active (running) since Wed 2018-10-03 21:37:05 KST; 11s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 2338 ExecStop=/etc/init.d/svnserve stop (code=exited, status=0/SUCCESS)
  Process: 2380 ExecStart=/etc/init.d/svnserve start (code=exited, status=0/SUCCESS)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/svnserve.service
           └─2387 /usr/bin/svnserve -d -r /bluesanta/Repositories

10월 03 21:37:05 bluesanta-ubuntu systemd[1]: Starting LSB: Start svnserve...
10월 03 21:37:05 bluesanta-ubuntu svnserve[2386]: DIGEST-MD5 common mech free
10월 03 21:37:05 bluesanta-ubuntu systemd[1]: Started LSB: Start svnserve.

Raspberry Pi Zero : Inky pHAT

OS/Raspberry Pi 2018.10.08 02:55 Posted by 파란크리스마스

출처

spi 활성화

$ sudo raspi-config

개발도구 설치

$ sudo apt-get install python-dev python-setuptools

소스 다운로드 및 설치

$ wget -O InkypHAT.tar.gz https://github.com/pimoroni/inky-phat/archive/v0.1.0.tar.gz
$ tar xvf InkypHAT.tar.gz
$ cd inky-phat-0.1.0/library/
$ sudo python setup.py install

예제 실행

$ cd ~/inky-phat-0.1.0/examples/
$ python cal.py

Tinker Board : 한글 입력기 설치

OS/Tinker Board 2018.09.30 18:00 Posted by 파란크리스마스

출처

ip 확인

$ ip addr | grep inet
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
    inet 192.168.137.101/24 brd 192.168.137.255 scope global dynamic eth0
    inet 192.168.137.145/24 brd 192.168.137.255 scope global secondary eth0
    inet6 fe80::b848:f27d:8127:389/64 scope link

eMMC에 OS 설치

$ sudo dd if=20180622-tinker-board-linaro-stretch-alip-v2.0.7.img of=/dev/mmcblk1 bs=4MB status=progress conv=sync
3096000000 bytes (3.1 GB, 2.9 GiB) copied, 70.0279 s, 44.2 MB/s 
782+1 records in
783+0 records out
3132000000 bytes (3.1 GB, 2.9 GiB) copied, 71.9111 s, 43.6 MB/s

리눅스 정보 확인

$ grep . /etc/*-release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

OS 업데이트

$ sudo apt-get update && sudo apt-get upgrade

Tinker Board 환경설정

$ sudo tinker-config

용량 확장

locale 변경

재부팅후 폴더 이름 변경 설정 팝업

한글폰트 설치 (나눔폰트 - nanum)

$ sudo apt install fonts-nanum fonts-nanum-coding fonts-nanum-extra

한글 입력기(nabi, imhangul) 설치

$ sudo apt-get install nabi imhangul-gtk2 imhangul-gtk3 im-config zenity

입력기 설정

$ im-config -n hangul

입력기 환경설정

$ im-config

한글입력예

환경설정

$ cat .xinputrc 
## im-config(8) generated on Thu, 11 Oct 2018 06:17:20 +0000
run_im hangul
## im-config signature: ef7d60ee7a0f5fd446ce389716f52467  -
 
export XIM=nabi
export XIM_ARGS=
export XIM_PROGRAM="nabi"
export XMODIFIERS="@im=nabi"
export GTK_IM_MODULE=xim
export QT_IM_MODULE=xim

내용 추가

export XIM=nabi
export XIM_ARGS=
export XIM_PROGRAM="nabi"
export XMODIFIERS="@im=nabi"
export GTK_IM_MODULE=xim

Tinker Board : CodeTyphone

OS/Tinker Board 2018.09.30 03:56 Posted by 파란크리스마스

출처

컴파일하는 동안 ‘out of memory’을 방지하기 위해 스왑 파일을 활성화

$ sudo apt-get install -y dphys-swapfile

dphys-swapfile 서비스 실행

$ sudo /etc/init.d/dphys-swapfile start
Starting dphys-swapfile (via systemctl): dphys-swapfile.service==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to start 'dphys-swapfile.service'.
Authenticating as: linaro,,, (linaro)
==== AUTHENTICATION COMPLETE ===

"sudo" 루트 권한 부여

$ sudo vi /etc/sudoers

linaro ALL=(ALL) NOPASSWD: ALL

CodeTyphon 다운로드

$  wget http://www.pilotlogic.com/codetyphon/zips/CodeTyphonIns.zip

CodeTyphon 압축 해제

$ unzip CodeTyphonIns.zip

CodeTyphon 설치 스크립트 실행

$ cd CodeTyphonIns/
$ ./install.sh 
 
====================================================
             CodeTyphon Studio 
            Version 6.50 (GEN 6)
   Installation for: Linux-Solaris-FreeBSD-MacOS
====================================================
 
   0) Install CodeTyphon Studio
 
   9) Exit
 
>>> Select an action (press 0..9 key): 0

0번 선택 ( 0) Install System Libraries )

====================================================
  CodeTyphon Studio 6.50 Setup for Linux32
   Settings: Platform=gtk2  Multiarch Mode=0
====================================================
   
   0) Install System Libraries
   1) Run CodeTyphon Center (CTC)
   
     11) -- Platform (widget) Setup
     12) -- Multi-Architecture Setup
   
   3) Remove FreePascal
   4) Remove and Build FreePascal
   
   5) Remove Typhon IDE
   6) Remove and Build Typhon IDE
   
   7) Remove ALL
   8) Remove and Build ALL
   
   9) EXIT
   
>>> Select an action (press 0..9 key): 0

8번 선택 ( 8) Remove and Build ALL )

====================================================
  CodeTyphon Studio 6.50 Setup for Linux32
   Settings: Platform=gtk2  Multiarch Mode=0
====================================================
   
   0) Install System Libraries
   1) Run CodeTyphon Center (CTC)
   
     11) -- Platform (widget) Setup
     12) -- Multi-Architecture Setup
   
   3) Remove FreePascal
   4) Remove and Build FreePascal
   
   5) Remove Typhon IDE
   6) Remove and Build Typhon IDE
   
   7) Remove ALL
   8) Remove and Build ALL
   
   9) EXIT
   
>>> Select an action (press 0..9 key): 8

9번 선택 ( 9) EXIT )

====================================================
  CodeTyphon Studio 6.50 Setup for Linux32
   Settings: Platform=gtk2  Multiarch Mode=0
====================================================
   
   0) Install System Libraries
   1) Run CodeTyphon Center (CTC)
   
     11) -- Platform (widget) Setup
     12) -- Multi-Architecture Setup
   
   3) Remove FreePascal
   4) Remove and Build FreePascal
   
   5) Remove Typhon IDE
   6) Remove and Build Typhon IDE
   
   7) Remove ALL
   8) Remove and Build ALL
   
   9) EXIT
   
>>> Select an action (press 0..9 key): 9

실행

출처

omv-extras 설치 (root 계정으로 설치)

$ su - root
# wget -O - http://omv-extras.org/install | bash

OMV-Extras 추가 확인

[플러그인] 목록에서 openmediavault-transmissionbt 선택하고 [설치] 버튼 선택

공유 폴더 추가

공유 폴더는 omv 설치시 생성된 debian-transmission 계정으로 생성된 폴더를 지정

[서비스] > [BitTorrent] > [설정] 화면에서 활성화하고 [저장] 버튼 선택하여 저장

[RPC] 화면에서 활성화하고 [저장] 버튼 선택하여 저장하고, [Show] 버튼을 선택하려 클라이언트 화면 보기 

토렌토 클라이언트 Web 화면

출처

Orange Pi Zero Plus (H5) : Orange Pi NAS Expansion Board

Orange Pi Zero Plus (H5)

Orange Pi NAS Expansion Board

3D 프린터로 출력한 케이스

  

케이스 적용

  

  

one.sh - omv 패키지 리파지스토리에 등록

cat <<EOF >> /etc/apt/sources.list.d/openmediavault.list
deb http://packages.openmediavault.org/public arrakis main
# deb http://downloads.sourceforge.net/project/openmediavault/packages arrakis main
## Uncomment the following line to add software from the proposed repository.
# deb http://packages.openmediavault.org/public arrakis-proposed main
# deb http://downloads.sourceforge.net/project/openmediavault/packages arrakis-proposed main
## This software is not part of OpenMediaVault, but is offered by third-party
## developers as a service to OpenMediaVault users.
# deb http://packages.openmediavault.org/public arrakis partner
# deb http://downloads.sourceforge.net/project/openmediavault/packages arrakis partner
EOF

two.sh - openmediavault 4 (Arrakis) 패키지 설치

export LANG=C
export DEBIAN_FRONTEND=noninteractive
export APT_LISTCHANGES_FRONTEND=none
apt-get update
apt-get --allow-unauthenticated install openmediavault-keyring
apt-get update
apt-get --yes --auto-remove --show-upgraded \
    --allow-downgrades --allow-change-held-packages \
    --no-install-recommends \
    --option Dpkg::Options::="--force-confdef" \
    --option DPkg::Options::="--force-confold" \
    install postfix openmediavault
# Initialize the system and database.
omv-initsystem

설치 스크립트(one.sh, two.sh) 실행가능하도록 모드 변경

$ chmod a+x one.sh two.sh

설치 스크립트(one.sh, two.sh) 실행

$ sudo ./one.sh
$ sudo ./two.sh

관리 페이지 접속

기본계정과 암호 - root/openmediavault

NAS에 장착한 msata ssd 확인

NAS에 장착한 msata ssd 파티션(파일 시스템) 추가

[파일 시스템]메뉴에서 [생성] 버튼을 선택하여 파일 시스템 생성 

파일 시스템 생성

파일 시스템 생성 완료

추가된 파티션 확인

Orange Pi Zero Plus (H5) : 원격데스크탑(RDP) 설치

OS/Orange PI 2018.09.29 01:03 Posted by 파란크리스마스

출처

OS 업데이트

$ sudo apt-get update
$ sudo apt-get upgrade

linux 정보 확인

$ grep . /etc/*armbian-release
## PLEASE DO NOT EDIT THIS FILE
BOARD=orangepizeroplus
BOARD_NAME="Orange Pi Zero Plus"
BOARDFAMILY=sun50iw2
VERSION=5.60
LINUXFAMILY=sunxi64
BRANCH=next
ARCH=arm64
IMAGE_TYPE=stable
BOARD_TYPE=conf
INITRD_ARCH=arm64
KERNEL_IMAGE_TYPE=Image

디스크 용량 확인

$ sudo fdisk -l | grep Disk  
Disk /dev/mmcblk0: 14.5 GiB, 15523119104 bytes, 30318592 sectors
Disklabel type: dos
Disk identifier: 0xc61d9af9
Disk /dev/zram0: 50 MiB, 52428800 bytes, 12800 sectors
Disk /dev/zram1: 60.3 MiB, 63254528 bytes, 15443 sectors
Disk /dev/zram2: 60.3 MiB, 63254528 bytes, 15443 sectors
Disk /dev/zram3: 60.3 MiB, 63254528 bytes, 15443 sectors
Disk /dev/zram4: 60.3 MiB, 63254528 bytes, 15443 sectors

LightDM 설치

$ sudo apt-get -y install xorg lightdm xfce4 tango-icon-theme gnome-icon-theme
$ sudo apt-get install dbus-x11

xrdp 설치

$ sudo apt-get install xrdp
$ sudo apt-cache policy xrdp
xrdp:
  Installed: 0.9.1-9+deb9u3
  Candidate: 0.9.1-9+deb9u3
  Version table:
     0.9.6-1~bpo9+1 100
        100 http://httpredir.debian.org/debian stretch-backports/main arm64 Packages
 *** 0.9.1-9+deb9u3 500
        500 http://httpredir.debian.org/debian stretch/main arm64 Packages
        100 /var/lib/dpkg/status

xorgxrdp 설치

$ sudo apt-get install xorgxrdp
$ sudo apt-cache policy xorgxrdp
xorgxrdp:
  Installed: 0.9.1-9+deb9u3
  Candidate: 0.9.1-9+deb9u3
  Version table:
 *** 0.9.1-9+deb9u3 500
        500 http://httpredir.debian.org/debian stretch/main arm64 Packages
        100 /var/lib/dpkg/status

원격데스크탑 접속

BPI-Bit : Arduino 개발환경 구축하기

OS/Banana Pi /BPI-Bit 2018.09.21 21:12 Posted by 파란크리스마스

출처

BPI-Bit : Arduino 개발환경 구축하기

BPI-Bit는 몇가지 개발 언어가 있는데 Webduino 말고도 Arduino IDE로 개발할 수 있어서, Arduino IDE 개발환경을 구축하고 간단예제를 실행해보았습니다.

1. Arduino IDE 설치

Arduino IDE (arduino-1.8.7-windows.zip)를 다운로드받고, 설치

2. arduino-esp32 다운로드

Github 저장소(espressif / arduino-esp32)에서 arduino-esp32-master.zip 파일 다운로드

3. arduino-esp32 설치

다운로드 받은 파일 arduino-esp32-master.zip을 [Arduino IDE 설치경로]/hardware/espressif/esp32에 압축 해제

4. get 명령을 관리자 권한으로 실행

[Arduino IDE 설치경로]/hardware/espressif/esp32/tools 디렉토리에서 get 명령을 관리자 권한으로 실행 실행

5. Arduino IDE를 실행하고, 메뉴[툴] > [보드] > [NodeMCU -32S] 선택

예제 작성

//BIT NEW
//BPI - BIT test code
#include <Arduino.h>
#include <NeoPixelBus.h>

#define LEDC_CHANNEL_0 0
#define LEDC_TIMER_13_BIT 13
#define LEDC_BASE_FREQ 4500

const uint16_t PixelCount = 25;
const uint8_t PixelPin = 4;

#define colorSaturation 128
#define delay_ms 500

NeoPixelBus<NeoGrbFeature, Neo800KbpsMethod> strip(PixelCount, PixelPin);

RgbColor red(colorSaturation, 0, 0);
RgbColor green(0, colorSaturation, 0);
RgbColor blue(0, 0, colorSaturation);
RgbColor white(colorSaturation);
RgbColor black(0);
RgbColor num1(0.8 * colorSaturation, 0, 0.2 * colorSaturation);
RgbColor num2(0.5 * colorSaturation, 0, 0.5 * colorSaturation);
RgbColor num3(0.25 * colorSaturation, 0, 0.75 * colorSaturation);

HslColor hslRed(red);
HslColor hslGreen(green);
HslColor hslBlue(blue);
HslColor hslWhite(white);
HslColor hslBlack(black);

#define ledPower 2
#define BottomA 35
#define BottomB 27

int brightness = 0;
int fadeAmount = 5;

void ledcAnalogWrite(uint8_t channel, uint32_t value) {
  // calculate duty, 8191 from 2 ^ 13 - 1 (2 ^ LEDC_TIMER_13_BIT - 1)
  //value_MAX = 255
  uint32_t duty = (8191 / 255) * value;
  // write duty to LEDC
  ledcWrite(channel, duty);
}

void setup() {
  Serial.begin(115200); //Serial Port Config 115200-8-N-1
  
  Serial.println();
  Serial.println("Initializing...");
  Serial.flush();
  
  // this resets all the neopixels to an off state
  strip.Begin();
  strip.Show();
  
  pinMode(ledPower,OUTPUT);
  pinMode(BottomA, INPUT);
  pinMode(BottomB, INPUT);
  digitalWrite(ledPower, HIGH);
  
  // strip.SetPixelColor(10, blue);
  // strip.SetPixelColor(11, blue);
  // strip.SetPixelColor(12, blue);
  // strip.SetPixelColor(13, blue);
  // strip.SetPixelColor(14, red);
  // strip.Show();
  
  // delay(1000);
  
  // int i;
  // for (i = 0; i <= PixelCount - 1; i++)
  // {
  //     strip.SetPixelColor(i, black);
  //     strip.Show();
  // }
}

void loop() {
  //signel map
  if (digitalRead(BottomA) == LOW) {
    delay(10);
    if (digitalRead(BottomA) == LOW) {
      strip.SetPixelColor(16, num1);
      strip.SetPixelColor( 7, num2);
      strip.SetPixelColor(18, num3);
      strip.Show();
    } else {
      int i;
      Serial.println("Turn Off");
      for (i = 0; i <= PixelCount - 1; i++) {
        strip.SetPixelColor(i, hslBlack);
        strip.Show();
      }
    }
  }
}

예제 실행