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


출처

MJPG streamer 컴파일 관련 라이브러리 설치

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install cmake libjpeg8-dev imagemagick libv4l-dev

MJPG streamer 소스 다운로드, 컴파일, 설치

$ git clone https://github.com/jacksonliam/mjpg-streamer.git
$ cd mjpg-streamer/mjpg-streamer-experimental/
$ make
$ sudo make install

LD_LIBRARY_PATH 경로 추가

$ echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/usr/local/lib:/usr/local/lib/mjpg-streamer" | sudo tee -a /etc/profile

MJPG Streamer 실행

출처 : MJPG Streamer configuration

$ mjpg_streamer -i "input_raspicam.so -x 640 -y 480 -fps 10 -rot 180 -ex night" --output "output_http.so -w /usr/local/share/mjpg-streamer/www --port 8080"

또는

$ mjpg_streamer -i "input_raspicam.so -x 320 -y 240 -quality 30 -fps 15 -rot 180 -ex night"

MJPG Streamer 실행 - 최적옵션

$ mjpg_streamer -i "input_uvc.so -r 320x240 -f 10 -y" --output "output_http.so -w /usr/local/share/mjpg-streamer/www --port 8080"

V4L2(Video4Linux2) 부팅시 활성화 시키기

$ sudo vi /etc/modules

아래 내용 추가

bcm2835-v4l2

서비스등록

$ sudo vi /etc/init.d/mjpg_streamer

mjpg_streamer 파일 내용

#!/bin/bash
# /etc/init.d/mjpg_streamer.sh
# v0.2 phillips321.co.uk
### BEGIN INIT INFO
# Provides:          mjpg_streamer.sh
# Required-Start:    $network
# Required-Stop:     $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: mjpg_streamer for webcam
# Description:       Streams /dev/video0 to http://IP/?action=stream
### END INIT INFO

#
export width=640
export height=480
export bitrate=10
export SHUTDOWN_WAIT=2

if [ -n "$2" ]; then
  width=$2 
fi

if [ -n "$3" ]; then
  height=$3
fi

if [ -n "$4" ]; then
  bitrate=$4
fi

export LD_MJPG_STREAMER=/usr/local/lib/mjpg-streamer

f_message(){
        echo "[+] $1"
}

mjpg_streamer_pid() {
  echo `ps aux | grep mjpg-streamer | grep -v grep | awk '{ print $2 }'`
}

start() {
  pid=$(mjpg_streamer_pid)
  if [ -n "$pid" ] 
  then
    echo "mjpg_streamer is already running (pid: $pid)"
  else
    # Start mjpg_streamer
		f_message "Starting mjpg_streamer"
		mjpg_streamer -b -i "$LD_MJPG_STREAMER/input_uvc.so -r "$width"x"$height" -f $bitrate -y" -o "$LD_MJPG_STREAMER/output_http.so -p 8080 -w /usr/local/share/mjpg-streamer/www"
		sleep 2
		f_message "mjpg_streamer started"
  fi

  return 0
}

stop() {
  pid=$(mjpg_streamer_pid)
  if [ -n "$pid" ]
  then
    f_message "Stopping mjpg_streamer..."
    kill -9 $pid

    let kwait=$SHUTDOWN_WAIT
    let count=0;
    until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]
    do
      echo -n -e "\nwaiting for processes to exit";
      sleep 1
      let count=$count+1;
    done

    if [ $count -gt $kwait ]; then
      echo -n -e "\nkilling processes which didn't stop after $SHUTDOWN_WAIT seconds\n"
      kill -9 $pid
    fi
  else
    echo "mjpg_streamer is not running"
  fi
 
  return 0
}

# Carry out specific functions when asked to by the system
case "$1" in
        start)
                 start
                 ;;
        stop)
                 stop
                 ;;
        restart)
                 stop
                 sleep 2
                 start
                 ;;
        resolution)
                resolution=`ps axu | grep mjpg-streamer | grep -v grep | awk '{ print $16 }'`
                if [ -n "$resolution" ];
                then
                        echo "${resolution}"
                else
                        echo "0x0"
                fi
                ;;
        status)
                pid=`ps -A | grep mjpg_streamer | grep -v "grep" | grep -v mjpg_streamer. | awk '{print $1}' | head -n 1`
                if [ -n "$pid" ];
                then
                        f_message "mjpg_streamer is running with pid ${pid}"
                        f_message "mjpg_streamer was started with the following command line"
                        cat /proc/${pid}/cmdline ; echo ""
                else
                        f_message "Could not find mjpg_streamer running"
                fi
                ;;
        *)
                f_message "Usage: $0 {start|stop|status|restart}"
                exit 1
                ;;
esac
exit 0

등록

$ sudo chmod u+x /etc/init.d/mjpg_streamer
$ sudo update-rc.d mjpg_streamer defaults

서비스 실행 및 실행 확인

$ sudo service mjpg_streamer start
$ sudo service mjpg_streamer status
[0m mjpg_streamer.service - LSB: mjpg_streamer for webcam
   Loaded: loaded (/etc/init.d/mjpg_streamer)
   Active: active (running) since Sat 2016-05-21 15:18:17 UTC; 8s ago
  Process: 1373 ExecStop=/etc/init.d/mjpg_streamer stop (code=killed, signal=TERM)
  Process: 1403 ExecStart=/etc/init.d/mjpg_streamer start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/mjpg_streamer.service
           붴1407 mjpg_streamer -b -i /usr/local/lib/mjpg-streamer/input_uvc.so -r 320x240 -f 10 -y -o /usr/local/lib/mjpg-s...
 
May 21 15:18:15 raspberrypi mjpg_streamer[1407]: MJPG-streamer [1407]: TV-Norm...........: DEFAULT
May 21 15:18:15 raspberrypi mjpg_streamer[1403]: enabling daemon modeforked to background (1407)
May 21 15:18:15 raspberrypi mjpg_streamer[1407]: MJPG-streamer [1407]: www-folder-path...: /usr/local/share/mjpg-streamer/www/
May 21 15:18:15 raspberrypi mjpg_streamer[1407]: MJPG-streamer [1407]: HTTP TCP port.....: 8080
May 21 15:18:15 raspberrypi mjpg_streamer[1407]: MJPG-streamer [1407]: username:password.: disabled
May 21 15:18:15 raspberrypi mjpg_streamer[1407]: MJPG-streamer [1407]: commands..........: enabled
May 21 15:18:15 raspberrypi mjpg_streamer[1407]: MJPG-streamer [1407]: starting input plugin /usr/local/lib/mjpg-stream...vc.so
May 21 15:18:15 raspberrypi mjpg_streamer[1407]: MJPG-streamer [1407]: starting output plugin: /usr/local/lib/mjpg-stre...: 00)
May 21 15:18:17 raspberrypi mjpg_streamer[1403]: [+] mjpg_streamer started
May 21 15:18:17 raspberrypi systemd[1]: Started LSB: mjpg_streamer for webcam.
Hint: Some lines were ellipsized, use -l to show in full.

확인

html 코드

출처 : mjpegcanvasjs / Tutorials / CreatingASingleStreamCanvas

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script type="text/javascript" src="eventemitter2.min.js"></script>
<script type="text/javascript" src="mjpegcanvas.min.js"></script>

<script type="text/javascript" type="text/javascript">
  /**
   * Setup all visualization elements when the page is loaded. 
   */
  function init() {
    // Create the main viewer.
     var viewer = new MJPEGCANVAS.Viewer({
      divID : 'mjpeg',
     host : '192.168.0.14',
     port : '8080',
      width : 640,
       height : 480,
      topic : '/?action=stream'
     });
 }
</script>
</head>
 
<body onload="init()">
<h1>Simple MJPEG Canvas Example</h1>
<div id="mjpeg"></div>
</body>
</html>



라즈베리파이3 Model B+ 공식 구입처 : 아이씨뱅큐 http://www.icbanq.com/
마이크로비트 공식 카페 : http://cafe.naver.com/bbcmicro
아이씨뱅큐 공식 블로그 : http://blog.naver.com/icbanq

Raspberry Pi 3 Model B+ : L298N / DC모터 제어

OS/Raspberry Pi 2018.07.10 00:08 Posted by 파란크리스마스

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


출처

배선

소스 (L298NMain.java)

import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinDigitalOutput;
import com.pi4j.io.gpio.RaspiPin;

public class L298NMain {

        private static GpioController gpio = null;

        static GpioPinDigitalOutput pin1;
        static GpioPinDigitalOutput pin2;

        public static void forword() {
                System.out.println("GPIO Forward");
                pin1.high();
                pin2.low();
        }

        public static void backword() {
                System.out.println("GPIO Backward");
                pin1.low();
                pin2.high();
        }

        public static void stopFB() {
                System.out.println("GPIO Stop Back Wheel");
                pin1.low();
                pin2.low();
                /*
                try {
                        Thread.sleep(700);
                } catch (Exception e) {
                        e.printStackTrace();
                }
                */
        }

        public static void main(String[] args) throws Exception {
                gpio = GpioFactory.getInstance();
                //gpio.setMode(PinMode.DIGITAL_OUTPUT);
                pin1 = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_08);
                pin2 = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_09);

                forword();
                Thread.sleep(2000);
                backword();
                Thread.sleep(2000);

                stopFB();

                gpio.shutdown();
        }
}

컴파일

$ javac -cp .:lib/pi4j-core.jar L298NMain.java

실행

$ java -cp .:lib/pi4j-core.jar L298NMain

실행 영상



라즈베리파이3 Model B+ 공식 구입처 : 아이씨뱅큐 http://www.icbanq.com/
마이크로비트 공식 카페 : http://cafe.naver.com/bbcmicro
아이씨뱅큐 공식 블로그 : http://blog.naver.com/icbanq

Raspberry Pi 3 Model B+ : SG-90 서보 모터 제어

OS/Raspberry Pi 2018.07.08 02:29 Posted by 파란크리스마스

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


출처

SG-90 연결선

  • 노란색 = 제어신호
  • 빨간색 = VCC
  • 갈색(또는 검정색) = GND

SG-90제어 C언어 예제 (servo.c)

#include<stdio.h>
#include<wiringPi.h>
#include<softPwm.h>

#define SERVO 26

int main() {
        char str;

        if(wiringPiSetup()==-1)
                return 1;

        softPwmCreate(SERVO,0,200);

        while(1) {
                fputs("select c ,r , l , q : " , stdout);
                scanf("%c" , &str);
                getchar();
                if(str=='c') softPwmWrite(SERVO,15);     //0 degree
                else if(str=='r') softPwmWrite(SERVO,24); //90 degree
                else if(str=='l') softPwmWrite(SERVO,5); //-90 degree
                else if(str=='q') return 0;
        }

        return 0;
}

C언어 예제 컴파일

$ gcc servo.c -o servo -lwiringPi

C언어 예제 실행

$ ./servo

SG-90 제어 Java 예제 소스

import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.RaspiGpioProvider;
import com.pi4j.io.gpio.RaspiPinNumberingScheme;
import com.pi4j.wiringpi.Gpio;
import com.pi4j.wiringpi.SoftPwm;

public class Servo {

        private static int PIN_NUMBER = 12;

        public static void main(String[] args) throws Exception {
                //
                GpioFactory.setDefaultProvider(new RaspiGpioProvider(RaspiPinNumberingScheme.BROADCOM_PIN_NUMBERING));

                // initialize wiringPi library, this is needed for PWM
                Gpio.wiringPiSetup();

                // softPwmCreate(int pin, int value, int range)
                // the range is set like (min=0 ; max=100)
                SoftPwm.softPwmCreate(PIN_NUMBER, 0, 100);
                int counter = 0;
                while (counter < 3) {
                        // 
                        for (int i = 0; i <= 100; i++) {
                                // softPwmWrite(int pin, int value)
                                // This updates the PWM value on the given pin. The value is
                                // checked to be in-range and pins
                                // that haven't previously been initialized via softPwmCreate
                                // will be silently ignored.
                                SoftPwm.softPwmWrite(PIN_NUMBER, i);
                                Thread.sleep(25);
                        }
                        // 
                        for (int i = 100; i >= 0; i--) {
                                SoftPwm.softPwmWrite(PIN_NUMBER, i);
                                Thread.sleep(25);
                        }
                        counter++;
                }
        }

}

Java 예제 컴파일

$ javac -cp .:lib/pi4j-core.jar Servo.java

Java 예제 실행

$ java -cp .:lib/pi4j-core.jar Servo

실행 영상



라즈베리파이3 Model B+ 공식 구입처 : 아이씨뱅큐 http://www.icbanq.com/
마이크로비트 공식 카페 : http://cafe.naver.com/bbcmicro
아이씨뱅큐 공식 블로그 : http://blog.naver.com/icbanq

Raspberry Pi 3 Model B+ : pi4j - LED 켜고 끄기

OS/Raspberry Pi 2018.07.07 22:58 Posted by 파란크리스마스

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


pi4j

pi4j는 java를 이용해서 gpio 제어하는 java 라이브러리 입니다.
pi4j 라이브러리를 다운 받고 간단하게 LED를 켜고, 끄는 예제를 실행해보겠습니다.

출처

GPIO

pi4j 다운로드, 압축해제, 디렉토리 이동

$ wget http://get.pi4j.com/download/pi4j-1.2-SNAPSHOT.zip
$ unzip pi4j-1.2-SNAPSHOT.zip
$ cd pi4j-1.2-SNAPSHOT

LED 켜고, 끄기 소스

import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinDigitalOutput;
import com.pi4j.io.gpio.RaspiPin;

public class LEDTest {
	
	private static GpioController gpio = null;
	
	static GpioPinDigitalOutput led_pin;
	
	public static void main(String[] args) throws Exception {
		gpio = GpioFactory.getInstance();
		led_pin = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_08);
		
		// LED 켜기
		led_pin.high();
		Thread.sleep(2000); // 2초 대기
		
		// LED 끄기
		led_pin.low();
		
		// 
		gpio.shutdown();
	}
}

컴파일

$ javac -cp .:lib/pi4j-core.jar LEDTest.java

실행

$ java -cp .:lib/pi4j-core.jar LEDTest



라즈베리파이3 Model B+ 공식 구입처 : 아이씨뱅큐 http://www.icbanq.com/
마이크로비트 공식 카페 : http://cafe.naver.com/bbcmicro
아이씨뱅큐 공식 블로그 : http://blog.naver.com/icbanq

Raspberry Pi 3 Model B+ : Motion (동영상 스트리밍)

OS/Raspberry Pi 2018.07.07 22:57 Posted by 파란크리스마스

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


출처

V4L2(Video4Linux2) 부팅시 활성화 시키기

$ sudo vi /etc/modules

아래 내용 추가

bcm2835-v4l2

motion 설치

$ sudo apt-get install motion
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
The following additional packages will be installed:
  ffmpeg libavdevice57 libpq5 libsdl2-2.0-0
제안하는 패키지:
  ffmpeg-doc default-mysql-client postgresql-client
다음 새 패키지를 설치할 것입니다:
  ffmpeg libavdevice57 libpq5 libsdl2-2.0-0 motion
0개 업그레이드, 5개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.
2,324 k바이트 아카이브를 받아야 합니다.
이 작업 후 4,718 k바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n] 
받기:1 http://archive.raspberrypi.org/debian stretch/main armhf libavdevice57 armhf 7:3.2.10-1~deb9u1+rpt1 [109 kB]
받기:2 http://ftp.harukasan.org/raspbian/raspbian stretch/main armhf libsdl2-2.0-0 armhf 2.0.5+dfsg1-2 [314 kB]
받기:3 http://ftp.harukasan.org/raspbian/raspbian stretch/main armhf libpq5 armhf 9.6.7-0+deb9u1 [117 kB]                                     
받기:4 http://archive.raspberrypi.org/debian stretch/main armhf ffmpeg armhf 7:3.2.10-1~deb9u1+rpt1 [1,516 kB]                               
받기:5 http://ftp.harukasan.org/raspbian/raspbian stretch/main armhf motion armhf 4.0-1 [269 kB]                
내려받기 2,324 k바이트, 소요시간 6초 (371 k바이트/초)                                                                                          
패키지를 미리 설정하는 중입니다...
Selecting previously unselected package libsdl2-2.0-0:armhf.
(데이터베이스 읽는중 ...현재 115814개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack .../libsdl2-2.0-0_2.0.5+dfsg1-2_armhf.deb ...
Unpacking libsdl2-2.0-0:armhf (2.0.5+dfsg1-2) ...
Selecting previously unselected package libavdevice57:armhf.
Preparing to unpack .../libavdevice57_7%3a3.2.10-1~deb9u1+rpt1_armhf.deb ...
Unpacking libavdevice57:armhf (7:3.2.10-1~deb9u1+rpt1) ...
Selecting previously unselected package ffmpeg.
Preparing to unpack .../ffmpeg_7%3a3.2.10-1~deb9u1+rpt1_armhf.deb ...
Unpacking ffmpeg (7:3.2.10-1~deb9u1+rpt1) ...
Selecting previously unselected package libpq5:armhf.
Preparing to unpack .../libpq5_9.6.7-0+deb9u1_armhf.deb ...
Unpacking libpq5:armhf (9.6.7-0+deb9u1) ...
Selecting previously unselected package motion.
Preparing to unpack .../motion_4.0-1_armhf.deb ...
Unpacking motion (4.0-1) ...
libpq5:armhf (9.6.7-0+deb9u1) 설정하는 중입니다 ...
Processing triggers for libc-bin (2.24-11+deb9u3) ...
libsdl2-2.0-0:armhf (2.0.5+dfsg1-2) 설정하는 중입니다 ...
Processing triggers for systemd (232-25+deb9u2) ...
Processing triggers for man-db (2.7.6.1-2) ...
libavdevice57:armhf (7:3.2.10-1~deb9u1+rpt1) 설정하는 중입니다 ...
motion (4.0-1) 설정하는 중입니다 ...
Adding group `motion' (GID 115) ...
완료.
Warning: The home dir /var/lib/motion you specified already exists.
Adding system user `motion' (UID 111) ...
Adding new user `motion' (UID 111) with group `motion' ...
The home directory `/var/lib/motion' already exists.  Not copying from `/etc/skel'.
adduser: Warning: The home directory `/var/lib/motion' does not belong to the user you are currently creating.
Adding user `motion' to group `video' ...
사용자 motion을(를) video 그룹에 등록 중
완료.
ffmpeg (7:3.2.10-1~deb9u1+rpt1) 설정하는 중입니다 ...
Processing triggers for libc-bin (2.24-11+deb9u3) ...
Processing triggers for systemd (232-25+deb9u2) ...

환경파일(motion.conf) 수정

$ sudo vi /etc/motion/motion.conf

환경파일 수정 내용

 11 daemon on
100 width 320
103 height 240
107 framerate 2
504 stream_localhost off
537 webcontrol_localhost off

실행

$ sudo motion -n
[0:motion] [NTC] [ALL] conf_load: Processing thread 0 - config file /etc/motion/motion.conf
[0:motion] [NTC] [ALL] motion_startup: Motion 4.0 Started
[0:motion] [NTC] [ALL] motion_startup: Logging to file (/var/log/motion/motion.log)

확인

서비스에 등록

/etc/default/motion 수정 내용

$ sudo vi /etc/default/motion

start_motion_daemon 값 no 에서 yes 로 수정

start_motion_daemon=yes

motion 서비스 등록

$ sudo systemctl enable motion
motion.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable motion

재부팅

$ sudo shutdown -r now

서비스 실행 확인

$ sudo sudo service motion status
● motion.service - LSB: Start Motion detection
   Loaded: loaded (/etc/init.d/motion; generated; vendor preset: enabled)
   Active: active (exited) since Sun 2018-07-08 23:19:36 KST; 1min 8s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 325 ExecStart=/etc/init.d/motion start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/motion.service
 
 7월 08 23:19:35 raspberrypi systemd[1]: Starting LSB: Start Motion detection...
 7월 08 23:19:36 raspberrypi motion[325]: Starting motion detection daemon: motion.
 7월 08 23:19:36 raspberrypi systemd[1]: Started LSB: Start Motion detection.

서비스 비활성화

$ sudo systemctl disable motion
motion.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable motion




개인 설정후 설정 파일로 실행 하기


환경파일(motion.conf) 수정 (motion 경로 생성, 환경파일 복사, vi)

$ mkdir ~/.motion
$ cp /etc/motion/motion.conf ~/.motion/motion.conf
$ vi ~/.motion/motion.conf

환경파일 수정 내용

 25 logfile /home/pi/Documents/motion/motion.log
100 width 640
103 height 480
145 mmalcam_name vc.ril.camera
253 event_gap 10
279 quality 80
273 output_pictures center
293 ffmpeg_output_movies off
392 locate_motion_mode preview
400 locate_motion_style redbox
415 text_changes on
450 target_dir /home/pi/Documents/motion
504 stream_localhost off
537 webcontrol_localhost off

motion 실행

$ motion -c ~/.motion/motion.conf
[0:motion] [NTC] [ALL] conf_load: Processing thread 0 - config file /home/pi/.motion/motion.conf
[0:motion] [ALR] [ALL] conf_cmdparse: Unknown config option "mmalcam_name"
[0:motion] [NTC] [ALL] motion_startup: Motion 4.0 Started
[0:motion] [NTC] [ALL] motion_startup: Logging to file (/home/pi/Documents/motion/motion.log)



라즈베리파이3 Model B+ 공식 구입처 : 아이씨뱅큐 http://www.icbanq.com/
마이크로비트 공식 카페 : http://cafe.naver.com/bbcmicro
아이씨뱅큐 공식 블로그 : http://blog.naver.com/icbanq

Raspberry Pi 3 Model B+ : Pi-Camera 사용하기

OS/Raspberry Pi 2018.07.07 20:40 Posted by 파란크리스마스

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


Pi-Camera

출처 : 라즈베리파이에 카메라 입출력을 받아보자. V4L2(Video4Linux2)설치
파이카메라 활용강좌 : 라즈베리파이 Pi-cam V4L2(Video4Linux2) 설치
라즈베리파이 카메라 성능 테스트
How to install or upgrade UV4L on Raspbian (for the Raspberry Pi)

Pi-Camera 활성화

$ sudo raspi-config

Pi-Camera 캡쳐

$ raspistill -v -o test.jpg
 
raspistill Camera App v1.3.11
 
Width 2592, Height 1944, quality 85, filename test.jpg
Time delay 5000, Raw no
Thumbnail enabled Yes, width 64, height 48, quality 35
Link to latest frame enabled  no
Full resolution preview No
Capture method : Single capture
 
Preview Yes, Full screen Yes
Preview window 0,0,1024,768
Opacity 255
Sharpness 0, Contrast 0, Brightness 50
Saturation 0, ISO 0, Video Stabilisation No, Exposure compensation 0
Exposure Mode 'auto', AWB Mode 'auto', Image Effect 'none'
Flicker Avoid Mode 'off'
Metering Mode 'average', Colour Effect Enabled No with U = 128, V = 128
Rotation 0, hflip No, vflip No
ROI x 0.000000, y 0.000000, w 1.000000 h 1.000000
Camera component done
Encoder component done
Starting component connection stage
Connecting camera preview port to video render.
Connecting camera stills port to encoder input port
Opening output file test.jpg
Enabling encoder output port
Starting capture -1
Finished capture -1
Closing down
Close down completed, all components disconnected, disabled and destroyed

V4L2(Video4Linux2) 부팅시 활성화 시키기

$ sudo vi /etc/modules

아래 내용 추가

bcm2835-v4l2

확인

$ ls /dev/vi*
/dev/video0



라즈베리파이3 Model B+ 공식 구입처 : 아이씨뱅큐 http://www.icbanq.com/
마이크로비트 공식 카페 : http://cafe.naver.com/bbcmicro
아이씨뱅큐 공식 블로그 : http://blog.naver.com/icbanq

Raspberry Pi 3 Model B+ 운영체제(OS) 설치

OS/Raspberry Pi 2018.06.29 23:15 Posted by 파란크리스마스

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


출처

OS 이미지 다운로드

RASPBIAN 다운로드

OS 이미지 SD 메모리에 복사

SD 메모리 복사 프로그램인 Etcher를 이용해서 OS 이미지를 복사합니다.

버튼[Select image] 선택하고, 파일 선택 창에서 다운 받은 OS 이미지 선택

OS 이미지를 복사할 SD 메모리 선택하기 위해서 버튼[Select drive] 선택

OS 이미지를 복사할 SD 메모리 선택

버튼[Flash!] 선택해서 복사 시작

복사 시작 화면

복사중 화면

복사 완료 화면

한글폰트 설치

$ sudo apt-get install fonts-unfonts-core

한글 폰트 설치후 재부팅

$ sudo shutdown -r now

SSH 데몬 활성화

raspi-config 실행

$ sudo raspi-config

[Interfacing Options] 선택

[SSH] 선택

<예> 버튼 선택

<확인> 버튼 선택



라즈베리파이3 Model B+ 공식 구입처 : 아이씨뱅큐 http://www.icbanq.com/
마이크로비트 공식 카페 : http://cafe.naver.com/bbcmicro
아이씨뱅큐 공식 블로그 : http://blog.naver.com/icbanq

Raspberry Pi 3 Model B+ 개봉기

OS/Raspberry Pi 2018.06.29 23:07 Posted by 파란크리스마스

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


기존 라즈베리파이3+

기존 라즈베리파이3 보다 개선된 라즈베리파이3+ 를 구입할까 고민하다가 아이씨뱅큐 무상 체험단이 되어 개봉기를 작성합니다. 최근에 나온 SBC 계열중에서 성능이 좋은 제품도 많이 있지만 라즈베리파이 만큼 호환성이나 자료가 많이 공개 된것은 없을 겁니다.

출처

개봉전 박스

라즈베리파이 3 Model B+

Raspberry Pi 3 케이스에 장착

스펙

  • Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC @ 1.4GHz
  • 1GB LPDDR2 SDRAM
  • 2.4GHz and 5GHz IEEE 802.11.b/g/n/ac wireless LAN, Bluetooth 4.2, BLE
  • Gigabit Ethernet over USB 2.0 (maximum throughput 300 Mbps)
  • Extended 40-pin GPIO header
  • Full-size HDMI
  • 4 USB 2.0 ports
  • CSI camera port for connecting a Raspberry Pi camera
  • DSI display port for connecting a Raspberry Pi touchscreen display
  • 4-pole stereo output and composite video port
  • Micro SD port for loading your operating system and storing data
  • 5V/2.5A DC power input
  • Power-over-Ethernet (PoE) support (requires separate PoE HAT)

이전 버전과 스펙 비교

  • CPU : 17% 성능 향상 (1.2GHz - > 1.4GHz)
  • WiFi : 5G 추가 지원
  • BLE : 4.2 지원 ( BLE 4.1 -> BLE 4.2 )


라즈베리파이3 Model B+ 공식 구입처 : 아이씨뱅큐 http://www.icbanq.com/
마이크로비트 공식 카페 : http://cafe.naver.com/bbcmicro
아이씨뱅큐 공식 블로그 : http://blog.naver.com/icbanq

micro:bit - Camera (LS-Y201) image writing to SD

OS/micro:bit 2018.06.17 13:02 Posted by 파란크리스마스

출처

Camera (LS-Y201)

micro:bit를 이용해서 카메라로 입력받은 이미지 데이터를 SD 메모리에 저장해보았습니다.

소스

//#include "MicroBit.h"
//#include "MicroBitSerial.h"
#include "Camera_LS_Y201.h"
#include "SDFileSystem.h"

#define DEBMSG      printf
#define NEWLINE()   printf("\r\n")
#define FILENAME    "/sd/IMG_%04d.jpg"

SDFileSystem sd(P0_21, P0_22, P0_23, P0_16, "sd"); // mosi, miso, sclk, cs
Camera_LS_Y201 cam1(P0_2, P0_3);
//MicroBitSerial serial(USBTX, USBRX);

typedef struct work {
    FILE *fp;
} work_t;
 
work_t work;
 
/**
 * Callback function for readJpegFileContent.
 *
 * @param buf A pointer to a buffer.
 * @param siz A size of the buffer.
 */
void callback_func(int done, int total, uint8_t *buf, size_t siz) {
    fwrite(buf, siz, 1, work.fp);
 
    static int n = 0;
    int tmp = done * 100 / total;
    if (n != tmp) {
        n = tmp;
        DEBMSG("Writing...: %3d%%", n);
        NEWLINE();
    }
}
 
/**
 * Capture.
 *
 * @param cam A pointer to a camera object.
 * @param filename The file name.
 *
 * @return Return 0 if it succeed.
 */
int capture(Camera_LS_Y201 *cam, char *filename) {
    /*
     * Take a picture.
     */
    if (cam->takePicture() != 0) {
        return -1;
    }
    DEBMSG("Captured.");
    NEWLINE();
 
    /*
     * Open file.
     */
    work.fp = fopen(filename, "wb");
    if (work.fp == NULL) {
        return -2;
    }
 
    /*
     * Read the content.
     */
    DEBMSG("%s", filename);
    NEWLINE();
    if (cam->readJpegFileContent(callback_func) != 0) {
        fclose(work.fp);
        return -3;
    }
    fclose(work.fp);
 
    /*
     * Stop taking pictures.
     */
    cam->stopTakingPictures();
 
    return 0;
}

int main() {
	  DEBMSG("Camera module");
	  NEWLINE();
	  DEBMSG("Resetting...");
	  NEWLINE();
	  wait(1);

	  if (cam1.reset() == 0) {
	      DEBMSG("Reset OK.");
	      NEWLINE();
	  } else {
	      DEBMSG("Reset fail.");
	      NEWLINE();
	      error("Reset fail.");
	  }
	  wait(1);

	  int cnt = 0;
	  while (1) {
	      char fname[64];
	      snprintf(fname, sizeof(fname) - 1, FILENAME, cnt);
	      int r = capture(&cam1, fname);
	      if (r == 0) {
	          DEBMSG("[%04d]:OK.", cnt);
	          NEWLINE();
	      } else {
	          DEBMSG("[%04d]:NG. (code=%d)", cnt, r);
	          NEWLINE();
	          error("Failure.");
	      }
	      cnt++;
	  }
}

HEX 파일

pulse-combined.zip

실행

yotta 설치

OS/micro:bit 2018.06.16 04:15 Posted by 파란크리스마스

출처

yotta 설치

python.exe -m pip install --upgrade pip==9.0.3
pip install --upgrade setuptools
pip install -I -U yotta

환경변수 설정 (run_yotta.bat c:\yotta 명령으로 설정 가능)

YOTTA_INSTALL_LOCATION=C:\yotta
YOTTA_PATH=;C:\yotta;C:\yotta\gcc\bin;C:\yotta\python;C:\yotta\python\Scripts;C:\yotta\cmake-3.4.0-rc3-win32-x86\bin;C:\yotta\git-scm\bin;C:\yotta\mercurial\bin;
PATH=C:\yotta;C:\yotta\python\;C:\yotta\python\Scripts;C:\yotta\cmake-3.4.0-rc3-win32-x86\bin;%PATH%

개발환경 만들기

D:\>run_yotta.bat
(workspace) D:\>mkdir pulse
(workspace) D:\>cd pulse
(workspace) D:\pulse>yotta init
(workspace) D:\pulse>yotta target bbc-microbit-classic-gcc
(workspace) D:\pulse>yotta install lancaster-university/microbit

main.cpp

#include "MicroBit.h" 
 
MicroBit uBit;  
 
int main() { 
  uBit.init(); 
  uBit.display.scroll("http://bluexmas.tistory.com"); 
  release_fiber(); 
}

빌드 - hex 파일 생성

(workspace) D:\pulse>yotta build

실행

pulse-combined.hex 파일 마이크로 비트에 복사

ShofEL2, Tegra X1 and Nintendo Switch 사용하기

OS/Linux 2018.04.25 23:29 Posted by 파란크리스마스

원문 출서 - 전체내용

By switch_enthusiast
Filed under switch vulnerability exploit linux

핵심적인 내용만 구글 번역한 내용입니다.

ShofEL2 및 Switch Linux에 오신 것을 환영합니다. 

Nintendo Switch (Tegra X1 플랫폼)에서 fail0verflow의 부트 스택을 수정하지 않고 범용 코드 실행 및 Linux 용으로 사용할 수 있습니다.

exploit(취약점 공격)을 릴리스할지 여부를 선택하는 것은 어려운 선택입니다.

과거의 콘솔에 대한 우리의 경험을 감안할 때, 우리는 본질적으로 해적 행위보다는 해적 행위에 사용될 수 있다는 두려움 때문에 취약성 세부 사항이나 악용 사례를 공개하는 것에 조심했습니다.

즉, Tegra bootrom 버그가 너무 분명해서 여러 사람이 지금까지 독자적으로 발견했습니다.

기껏해야 다른 사생 팀의 석방은 불가피하지만 최악의 경우 특정 해적판 모 듈팀이 첫 번째 조치를 취할 수 있습니다.

90 일 전 Tegra 칩은 Android 기기에서 주로 사용되기 때문에 책임있는 공개 프로세스가 시작되었습니다. 공개 기한이 지났습니다. 버그는 조만간 공개 될 것이며, 우리는 리눅스 부트 체인과 커널 트리와 함께 출시 할 것입니다.

각각은 여러 가지 독립적 인 방식으로 수행 될 수 있습니다. 이것이 iPhone 사용자가 USB를 통해 부팅 할 때마다 수행해야한다는 점에서 "묶인 탈옥"이라고 부르는 것입니다. 이 버그는 부트 ROM에 있기 때문에 하드웨어 개정 없이는 패치 할 수 없습니다. 즉, 현재 존재하는 모든 스위치 유닛은 영원히 취약합니다. Nintendo는 제조 과정 중에 Boot ROM 버그 만 패치 할 수 있습니다. 이 취약점은 부팅 프로세스 초기에 발생하므로 Boot ROM 자체 및 모든 암호화 키를 포함하여 모든 장치 데이터와 암호를 추출 할 수 있습니다. 또한 하드웨어 손상이 없거나 돌이킬 수없는 변경 사항 (예 : 퓨즈 끊김)이없는 한 Tegra 장치를 해제 할 때 사용할 수 있습니다. 그리고 이것은 내장 된 eMMC 스토리지를 만질 필요가없는 부팅 시간 버그이기 때문에 기존 소프트웨어에 대해서는 사용이 완전히 감지되지 않습니다. 온보드 메모리를 변경하려고하지 않는 한, USB 익스플로잇을 통해 리눅스를 부팅하고 (보통의 부팅을 통해) 스위치 OS를 영구적으로 이중 부팅 할 수 있습니다 (예 : 리눅스 파일 시스템 두 번째 SD 카드 파티션 또는 다른 SD 카드).

우리가 재미와 자작 등을 위해이 일을한다는 것을 분명히하기 위해서입니다.


우리가 계획하고있는 것이지만, 90 일 공개 창이 4 월 25 일에 만료되기 2 일 전에 누군가가 0 일 버그를 게시했습니다. 오 잘. 예, 이것은 fusée gelée에서 악용 한 것과 동일한 버그입니다. 다른 일부 그룹이 누출 한 것입니다 (그러나 먼저 발견했습니다).

우리가 blogpost / repos를 준비하지 못했기 때문에 (이것은 우리와 마찬가지로 procrastinators가되었지만) 약간의 어려움이있을 것입니다

What’s this all about anyway?

Nintendo Switch 내부의 Tegra X1 (Tegra210이라고도 함) SoC에는 모든 서명 검사를 우회하여 조기 실행을 제어 할 수있는 악용 가능한 버그가 있습니다. 이 버그는 RCM 모드에서 Tegra 장치를 처음으로 깜박이고 bricked 장치를 복구하기위한 USB 기반 복구 모드입니다. 일반적으로 RCM 모드는 서명 된 이미지 만로드 할 수 있지만 버그로 인해 임의 코드가 실행될 수 있습니다.

즉, 스위치에서 코드를 실행하려면 완전히 독립적 인 두 가지 작업을 수행해야합니다.

  1. Enter RCM mode
  2. Execute the USB-based exploit

Entering RCM mode

  1. 이전 커널 모드 코드 실행
    예 : WebKit 익스플로잇과 커널 익스플로잇을 진입 점으로 사용하기
  2. eMMC가 제거되면, Tegra는 부팅시 RCM 모드로 들어갑니다.
  3. 스위치의 볼륨 높이기, 홈 및 전원 버튼을 동시에 누릅니다.

Joy-Con 홈 단추는 여기에서 작동하지 않습니다. Nintendo 스위치 자체의 비밀 홈 버튼에 대해 궁금 할 것입니다. Tegra가 Home 버튼이라고 부르는 것은 실제로 오른쪽 Joy-Con 커넥터의 핀 10 (가장 왼쪽의 핀)에 연결됩니다. 간단한 철사를 사용하여 예를 들어 철로로 연결할 수 있습니다. 레일에 나사 (가장 쉬운) 또는 핀 10과 7 (또는 1) 함께 (10과 9는 작동하지 않음). Micro USB 커넥터 (Joy-Con 커넥터와 동일한 핀 피치)를 사용하여 작은 지그를 쉽게 인쇄하거나 커넥터의 기증자로 분리 된 Joy-Con을 사용할 수도 있습니다. 조이 콘 (Joy-Con) 레일이 UART이기 때문에 후자가 유용합니다. 우리는 코어 부트, u- 부트 및 리눅스를위한 콘솔로 오른 손잡이 조이 콘 포트를 사용합니다.

Executing the USB-based exploit

USB 악용에는 USB 호스트가 필요합니다. 익스플로잇은 또한 매우 긴 컨트롤 전송을 필요로하는데, 불행하게도 일부 OS는 만족스럽지 않다. xHCI 컨트롤러 (USB 3.0 또는 최신 시스템의 USB 포트)가있는 PC에서 바닐라 Linux를 사용하거나 EHCI (USB 2.0) 컨트롤러 및이 커널 패치가있는 PC를 사용할 수 있습니다. 이것은 안드로이드 폰 (적어도 xHCI 컨트롤러를 가진 사람들)에서도 실행될 수 있습니다. 안드로이드에 대한 익스플로잇 포팅은 독자에게 운동으로 남아 있습니다. 다른 Tegra 장치에서 그것을하기위한 보너스 포인트. 다른 스위치처럼.

Linux on Switch boot chain

우리의 부트 체인은 Pixel C 부트 체인을 기반으로하는 99 % 오픈 소스입니다.

(누가 Nvidia의 지저분한 L4T 커널 포크와 독점적 인 부트 로더를 사용하기를 원합니까?).

다음과 같이 보입니다.

BootROM Exploit → coreboot 로더 → coreboot → ARM 트러스트 된 펌웨어 → coreboot → u-boot → Linux

선택적으로 제공되는 유일한 폐쇄 소스 구성 요소는 Tegra210 DDR4 메모리 교육 코드입니다. 알려지지 않은 이유로 Pixel C의 바이너리 블롭 (blob)으로 릴리즈됩니다. Pixel C는 메모리로 복사되어 점프됩니다. 이 얼룩은 Pixel C 팩토리 이미지에서 다음과 같이 얻을 수 있습니다.

./build/util/cbfstool/cbfstool bootloader-dragon-google_smaug.7900.97.0.img extract -n fallback/tegra_mtc -f tegra_mtc.bin

이 BLOB에는 하드 코딩 된 테이블과 픽셀 C에 대한 "모든 것을 수행"진입 점이 포함되어 있지만 호출 트리 깊숙한 한 수준으로 건너 뛰고 사용자 정의 테이블을 전달할 수 있습니다.

이는 우리의 패치 된 coreboot가 스위치에서 DDR4를 구성하기 위해 수행하는 작업입니다. 이 얼룩이 없다면 스택은 여전히 ​​작동 할 것이지만, 메모리는 ~ 200Mhz에서 실행될 것이고 불필요한 성능은 절름발이입니다.

부팅 프로세스는 다음과 같습니다.

  1. Tegra는 BPMP (arm7) 코어에서 부트 ROM을 시작하고 RCM 모드로 들어갑니다.
  2. 호스트 기반 USB 익스플로잇 코드는 RCM 명령을 사용하여 작은 (~ 2.5K) 로더 (cbfs.bin)를 SRAM 메모리에 저장합니다.
  3. 익스플로잇이 트리거되어 ROM이 cbfs.bin으로 점프합니다.
  4. 그런 다음 호스트 코드는 CBFS 서버 모드로 들어가고 USB RCM 파이프를 통해 Tegra에 코어 부트 (coreboot)를 동적으로 제공합니다.
  5. cbfs.bin은이 CBFS 서버를 사용하여 coreboot 부트 블럭 인 coreboot의 첫 번째 28KiB를 SRAM에 요청한 다음 그 내용으로 이동합니다.
  6. 코어 부트 (coreboot) 부트 블럭은 기본 주변 장치를 초기화 한 다음 USB의 CBFS 서비스를 사용하여 롬 스테이지를 SRAM으로로드하고 점프합니다.
  7. coreboot romstage는 SDRAM (기본 고정 부팅 속도) 및 기타 주변 장치를 초기화합니다.
  8. 그런 다음 romstage는 전체 coreboot ROM을 SDRAM (여전히 부트 ROM RCM 모드 USB 루틴 사용)으로 다운로드하고 RAM 기반 CBFS로 전환합니다.
  9. 이제 romstage는 RAM CBFS에서 램 스테이지를로드하고 CCPLEX (Cortex-A57)를 시작하고 BPMP를 종료합니다.
  10. 이제 CCPLEX (EL3)에서 coreboot ramstage는 MTC BLOB를 사용할 수있는 경우 DDR4 교육을 포함하여 나머지 기본 시스템 초기화를 수행합니다.
  11. 이제 램 스테이지는 TrustZone 구현을 초기화하는 ARM 트러스티 드 펌웨어로 이동합니다. 이는 특정 OS 서비스를 제공하는 데 필요합니다.
  12. ARM Trusted Firmware는 이제 EL2 모드에서 실행되는 코어 부트 람시 (coreboot ramstage)로 돌아갑니다.
  13. 낙담은 최종 유료 하중 인 U-Boot로로드되어 점프합니다.
  14. U-Boot가 시작되고, 더 많은 하드웨어를 초기화하며, 기본적으로 자체 USB 드라이버를 사용하여 USB 다운로드 모드로 들어갑니다.
  15. PC 측에서 imx_usb_loader를 사용하면 Linux 커널과 initramfs와 같은 임의의 U-Boot 페이로드를로드하여 실행할 수 있습니다.

The code

  • https://github.com/fail0verflow/shofel2
  • https://github.com/fail0verflow/switch-arm-trusted-firmware
  • https://github.com/fail0verflow/switch-coreboot
  • https://github.com/fail0verflow/switch-u-boot
  • https://github.com/fail0verflow/switch-linux

죄송합니다. 일반 사용자가이 도구를 사용하는 데 필요한 안내서가 없으며 가장자리에 많은 것들이 너무 거칠어도 안됩니다. 개발에 진지한 사람이라면 스스로 생각하거나 IRC에 질문 할 수 있어야합니다.

우리는 Git 이력을 정리할 시간이 없었기 때문에 Git 이력은 지져분합니다. 너무 열심히 읽지 마십시오.

Coming soon

Proper write-up on the exploit, stories of porting Linux (yes, there’s more to it than a panel driver ;-) ), upstreaming status, how batshit insane DDR4 is, and more. Probably, anyway. We’re pretty bad at writing blogposts. 

 ¹ There are actually many Boot ROM bugs, several of which have been found by multiple people.

micro:bit - pxt 설치(오프라인 블럭 컴파일러 구축)

OS/micro:bit 2018.04.07 22:45 Posted by 파란크리스마스

출처

windows-build-tools 설치(관리자모드)

출처 : Thinker :: error MSB3428: Visual C++ 구성 요소 "VCBuild.exe"을(를) 로드할 수 ...

C:\WINDOWS\system32>npm install --global --production windows-build-tools

> windows-build-tools@3.0.1 postinstall C:\Users\bluesanta\AppData\Roaming\npm\node_modules\windows-build-tools
> node ./dist/index.js

Downloading BuildTools_Full.exe
[============================================>] 100.0% of 3.29 MB (3.29 MB/s)
Downloaded BuildTools_Full.exe. Saved to C:\Users\bluesanta\.windows-build-tools\BuildTools_Full.exe.

Starting installation...
Launched installers, now waiting for them to finish.
This will likely take some time - please be patient!

Status from the installers:
---------- Visual Studio Build Tools ----------
---------- Visual Studio Build Tools ----------
Successfully installed Visual Studio Build Tools.
------------------- Python --------------------
Python 2.7.15 is already installed, not installing again.

All done!

+ windows-build-tools@3.0.1
added 141 packages in 310.658s

pxt 관련 라이브러리 설치

D:\microbit>npm install -g jake
C:\Users\bluesanta\AppData\Roaming\npm\jake -> C:\Users\bluesanta\AppData\Roaming\npm\node_modules\jake\bin\cli.js
+ jake@8.0.16
added 13 packages in 2.485s

D:\microbit>npm install -g typings
npm WARN deprecated typings@2.1.1: Typings is deprecated in favor of NPM @types -- see README for more information
C:\Users\bluesanta\AppData\Roaming\npm\typings -> C:\Users\bluesanta\AppData\Roaming\npm\node_modules\typings\dist\bin.js
+ typings@2.1.1
added 183 packages in 12.988s

pxt 다운로드

D:\microbit>git clone https://github.com/microsoft/pxt
Cloning into 'pxt'...
remote: Counting objects: 52887, done.
remote: Compressing objects: 100% (424/424), done.
remote: Total 52887 (delta 311), reused 324 (delta 173), pack-reused 52279
Receiving objects: 100% (52887/52887), 131.47 MiB | 197.00 KiB/s, done.
Resolving deltas: 100% (37029/37029), done.

D:\microbit>cd pxt

D:\microbit\pxt>git checkout v0
Switched to a new branch 'v0'
Branch 'v0' set up to track remote branch 'v0' from 'origin'.

pxt 설치

D:\microbit\pxt>npm install npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.1.3 (node_modules\fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"}) added 115 packages in 12.661s D:\microbit\pxt>typings install D:\microbit\pxt>jake D:\microbit\pxt>cd ../ D:\microbit>

pxt-microbit 설치

D:\microbit>git clone https://github.com/microsoft/pxt-microbit
D:\microbit>cd pxt-microbit
D:\microbit\pxt-microbit>npm install -g pxt
D:\microbit\pxt-microbit>npm install
D:\microbit\pxt-microbit>npm link ../pxt
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.1.3 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

added 115 packages in 21.441s
C:\server\node-v8.9.1-win-x64\node_modules\pxt-core -> D:\microbit\pxt
D:\microbit\pxt-microbit\node_modules\pxt-core -> C:\server\node-v8.9.1-win-x64\node_modules\pxt-core -> D:\microbit\pxt

pxt 서버 실행

(workspace) D:\>mkdir pxtsrc

(workspace) D:\>cd pxtsrc

(workspace) D:\pxtsrc>pxt target microbit
Installing pxt-microbit locally; don't worry about package.json warnings.

> keytar@4.2.1 install D:\pxtsrc\node_modules\keytar
> prebuild-install || node-gyp rebuild

prebuild-install info begin Prebuild-install version 2.5.1
prebuild-install info looking for local prebuild @ prebuilds\keytar-v4.2.1-node-v57-win32-x64.tar.gz
prebuild-install info looking for cached prebuild @ C:\Users\bluesanta\AppData\Roaming\npm-cache\_prebuilds\https-github.com-atom-node-keytar-releases-download-v4.2.1-keytar-v4.2.1-node-v57-win32-x64.tar.gz
prebuild-install info found cached prebuild
prebuild-install info unpacking @ C:\Users\bluesanta\AppData\Roaming\npm-cache\_prebuilds\https-github.com-atom-node-keytar-releases-download-v4.2.1-keytar-v4.2.1-node-v57-win32-x64.tar.gz
prebuild-install info unpack resolved to D:\pxtsrc\node_modules\keytar\build\Release\keytar.node
prebuild-install info unpack required D:\pxtsrc\node_modules\keytar\build\Release\keytar.node successfully
prebuild-install info install Successfully installed prebuilt binary!

> node-hid@0.5.7 install D:\pxtsrc\node_modules\node-hid
> prebuild-install || node-gyp rebuild

prebuild-install info begin Prebuild-install version 2.5.1
prebuild-install info looking for local prebuild @ prebuilds\node-hid-v0.5.7-node-v57-win32-x64.tar.gz
prebuild-install info looking for cached prebuild @ C:\Users\bluesanta\AppData\Roaming\npm-cache\_prebuilds\https-github.com-node-hid-node-hid-releases-download-v0.5.7-node-hid-v0.5.7-node-v57-win32-x64.tar.gz
prebuild-install info found cached prebuild
prebuild-install info unpacking @ C:\Users\bluesanta\AppData\Roaming\npm-cache\_prebuilds\https-github.com-node-hid-node-hid-releases-download-v0.5.7-node-hid-v0.5.7-node-v57-win32-x64.tar.gz
prebuild-install info unpack resolved to D:\pxtsrc\node_modules\node-hid\build\Release\HID.node
prebuild-install info unpack required D:\pxtsrc\node_modules\node-hid\build\Release\HID.node successfully
prebuild-install info install Successfully installed prebuilt binary!

> serialport@6.1.1 install D:\pxtsrc\node_modules\serialport
> prebuild-install || node-gyp rebuild

prebuild-install info begin Prebuild-install version 2.5.1
prebuild-install info looking for local prebuild @ prebuilds\serialport-v6.1.1-node-v57-win32-x64.tar.gz
prebuild-install info looking for cached prebuild @ C:\Users\bluesanta\AppData\Roaming\npm-cache\_prebuilds\https-github.com-node-serialport-node-serialport-releases-download-v6.1.1-serialport-v6.1.1-node-v57-win32-x64.tar.gz
prebuild-install info found cached prebuild
prebuild-install info unpacking @ C:\Users\bluesanta\AppData\Roaming\npm-cache\_prebuilds\https-github.com-node-serialport-node-serialport-releases-download-v6.1.1-serialport-v6.1.1-node-v57-win32-x64.tar.gz
prebuild-install info unpack resolved to D:\pxtsrc\node_modules\serialport\build\Release\serialport.node
prebuild-install info unpack required D:\pxtsrc\node_modules\serialport\build\Release\serialport.node successfully
prebuild-install info install Successfully installed prebuilt binary!
npm WARN saveError ENOENT: no such file or directory, open 'D:\pxtsrc\package.json'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open 'D:\pxtsrc\package.json'
npm WARN pxtsrc No description
npm WARN pxtsrc No repository field.
npm WARN pxtsrc No README data
npm WARN pxtsrc No license field.

+ pxt-microbit@0.14.30
added 384 packages in 15.705s
Installed PXT/microbit. To start server run:
    pxt serve

(workspace) D:\pxtsrc>pxt serve
Using target PXT/microbit with build engine yotta
  Target dir:   D:\pxtsrc\node_modules\pxt-microbit
  PXT Core dir: D:\pxtsrc\node_modules\pxt-core
Invalid accessToken format, expecting something like 'https://example.com/?access_token=0abcd.XXXX'
Going to D:\pxtsrc\node_modules\pxt-microbit
No sim/tsconfig.json; assuming npm installed package
Starting server in D:\pxtsrc\node_modules\pxt-microbit
With pxt core at D:\pxtsrc\node_modules\pxt-core
starting local ws server at 3233...
serial: monitoring ports...
---------------------------------------------

To launch the editor, open this URL:
http://localhost:3232/#local_token=452b727d-6d77-4d83-98d5-0bdab305f72e&wsport=3233

---------------------------------------------
opening http://localhost:3232/#local_token=452b727d-6d77-4d83-98d5-0bdab305f72e&wsport=3233

프로젝트 생성

D:\pxtsrc\projects>mkdir pxt-ultrasonic-microbit

D:\pxtsrc\projects>cd pxt-ultrasonic-microbit

D:\pxtsrc\projects\pxt-ultrasonic-microbit>pxt init
Using target PXT/microbit with build engine yotta
  Target dir:   D:\pxtsrc\node_modules\pxt-microbit
  PXT Core dir: D:\pxtsrc\node_modules\pxt-core
Invalid accessToken format, expecting something like 'https://example.com/?access_token=0abcd.XXXX'
name [ultrasonic-microbit]:
description []:
license [MIT]:
skipping download of local pkg: file:.
Package initialized.
Try 'pxt add' to add optional features.

D:\pxtsrc\projects\pxt-ultrasonic-microbit>code .

빌드



 

티스토리 툴바