Top

자바스크립트로 시작하는 로보틱스 [아두이노와 Johnny-Five를 활용한]

  • 원서명Learning JavaScript Robotics (ISBN 9781785883347)
  • 지은이카산드라 퍼치(Kassandra Perch)
  • 옮긴이박종건
  • ISBN : 9788960779341
  • 18,000원
  • 2016년 11월 25일 펴냄
  • 페이퍼백 | 184쪽 | 188*235mm
  • 시리즈 : acorn+PACKT

책 소개

소스 파일은 아래 깃허브 페이지에서 내려 받으실 수 있습니다.
(https://github.com/AcornPublishing/javascript-robotics)

요약

아두이노와 자바스크립트를 활용해 로보틱스 프로젝트를 시작한다. Node.JS와 IoT 라이브러리 중 각광받고 있는 조니 파이브(Johnny-Five)를 이용해 C 언어가 아닌 자바스크립트로 센서와 서보, 모터를 제어함으로써 나만의 움직이는 로봇을 제작해본다. 또한 복잡한 움직임을 제어하기 위한 애니메이션 API를 통해 좀 더 섬세한 동작을 가능하게 한다. 마지막으로 인터넷과 연결해 IoT 환경을 구축하고 더 나아갈 방향을 제시한다.

이 책에서 다루는 내용

■ 조니 파이브 REPL(Read-Eval-Print-Loop) 소개

■ 기본 출력 장치로 로봇 제작

■ 복잡한 출력 장치를 통한 프로젝트 생성 및 조니 파이브 API를 통한 I2C 같은 복잡한 인터페이스가 필요한 장치 사용 단순화

■ 서보와 모터 객체를 사용한 움직이는 로보틱스 프로젝트

■ 타이밍과 키 프레임을 사용해 복잡한 움직임을 프로그래밍할 수 있게 하는 애니메이션 API 소개

■ 조니 파이브 프로젝트에 USB 장치와 같은 다른 장치 적용

■ 외부 API에 조니 파이브 프로젝트 접속 및 자신만의 IoT 생성

이 책의 대상 독자

아두이노를 사용해본 적이 있거나 오픈소스 하드웨어를 새로 시작하고, 자바스크립트로 프로그램을 작성하고 싶은 독자에게 이 책이 적합하다. 자바스크립트와 Node.js에 대한 기본 지식을 갖췄다면 이 책을 효과적으로 학습하는 데 큰 도움이 될 것이다.

이 책의 구성

1장, ‘자바스크립트 로보틱스 시작’에서는 첫걸음으로 아두이노 우노(Arduino Uno)를 설정하고, NodeBot 세계를 살펴본다.
2장, ‘조니 파이브로 작업’에서는 REPL(Read-Eval-Print-loop)을 포함해 조니 파이브의 기초를 다룬다. 첫 프로젝트를 만들어본다.
3장, ‘디지털 출력 핀과 PWM 출력 핀 사용’에서는 기본적인 출력 장치인 디지털 출력 핀과 PWM 출력 핀의 사용 방법을 다룬다.
4장, ‘특수 출력 장치 사용’에서는 한 개 이상의 출력 핀을 이용해 장치를 제어하는 방법을 다룬다.
5장, ‘입력 장치와 센서 사용’에서는 아날로그 방식의 GPIO 핀을 이용해 입력장치를 이용하는 방법을 다룬다.
6장, ‘움직이는 로봇’에서는 조니 파이브로 서보와 모터를 제어해 13동작을 만드는 방법을 다룬다.
7장, ‘애니메이션 라이브러리를 활용한 움직임 개선’에서는 NodeBot의 움직임을 어떻게 개선해 구현할 수 있는지 살펴보고, 애니메이션 라이브러리를 알아본다.
8장, ‘고급 컴포넌트: SPI, I2C, 기타 장치’에서는 I2C, SPI와 고급 컴포넌트를 조니 파이브로 사용하는 방법을 다룬다.
9장, ‘세상과 NodeBot 연결, 앞으로 가야 할 길’에서는 아두이노와 다른 플랫폼에 조니 파이브를 이용해 NobeBot을 어떻게 인터넷에 연결할지 살펴본다.

본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.

저자/역자 소개

지은이의 말

자바스크립트로 만들어보는 로보틱스의 세계에 온 것을 환영한다! 이 책에서는 조니 파이브(Johnny-Five) 기반의 자바스크립트를 이용해 아두이노 혹은 기타 로보틱스 제작 플랫폼에서 어떻게 프로그래밍할지 다룬다. 조니 파이브의 기초를 활용해 독자들은 입출력과 서보와 모터를 활용해 장치를 움직일 수 있다. 최종적으로 독자들의 로봇을 인터넷에 어떻게 접속시키고, 다양한 플랫폼에서 조니 파이브 코드를 동작시키는지 다룬다.

지은이 소개

카산드라 퍼치(Kassandra Perch)

오픈 웹 개발자이자 후원자다. 프론트엔드 개발자로 시작해 Node.JS의 출현으로 서버 쪽으로 전향하고, 특히 NodeBot 커뮤니티의 진보에 감명받았다. NodeBot 발표회의 연사로 전 세계와 환상적인 커뮤니티를 돌아다니고 있다. 봇을 만들지 않을 때는 뜨개질, 바느질, 조각, 혹은 고양이와 비디오 게임하며 노는 것을 즐긴다.

옮긴이의 말

누구나 아이디어를 현실로 만들 수 있게 해주자는 목표로, 2013년 Circulus 커뮤니티를 시작했다. 당시 오픈소스 S/W 활성화 및 오픈소스 H/W의 등장으로 인해 하드웨어 영역도 점차 보편화돼 가는 시기에, 모바일에 이어 ICT분야에 큰 기회가 온 반면 ICT 분야의 기존 환경에 머무르고 있는 개발자에게는 큰 위기가 오고 있음을 직감할 수 있었다.
Circulus(www.circul.us)라는 커뮤니티를 위해 모바일 + 플랫폼 + 하드웨어를 엮을 수 있는 방안을 위한 프로그래밍 언어로 자바스크립트가 최선이라 판단했다. 당시(현재까지도) 그 모든 것을 하나로 엮는 것이 가능한 것은 자바스크립트만이 유일했기 때문이다. 라즈베리파이는 자바스크립트, 즉 Node.JS를 이용해 제어가 가능했지만, 라즈베리파이와 한 축을 이루는 아두이노는 C언어만이 제어가 가능한 것이 늘 아쉬웠다. 마침 조니 파이브(Johnny-Five) 기반으로 자바스크립트로 아두이노를 제어하고 간단한 로봇을 만들 수 있게 돼, 이 책에 관심을 갖게 됐다. 자바스크립트로 모든 것을 통합하고자 하는 개발자와 학생들에게는 더할 나위 없이 유용하다.
2016년은 그 어느 때보다도 인공지능 및 로봇에 의한 4차 산업 혁명으로 미래의 기술과 직업에 대해 이야기가 많이 나오는 시기다. 기존 소프트웨어 기업이라 일컬어지는 마이크로소프트와 구글(Google), 그리고 국내의 네이버(Naver) 역시 하드웨어 영역으로 진출하고 있는 상황이다. SW와 HW가 결합돼 새로운 가치와 기회가 창출되는 이 시점에 독자 여러분도 자바스크립트(JavaScript)라는 하나의 언어로 모바일부터 로봇까지 만들 수 있게 돼 새로운 변화를 주도하는 메이커가 되길 바란다.

옮긴이 소개

박종건

게임을 너무 좋아해 휴학하고 다음 게임에 입사했었다. 직장이 아닌 직업을 찾기 위해 삼성SDS 정보기술연구소에 입사, 연구 및 개발 업무를 수행했다. 9년간 IoT 기반 공급망/물류 시스템 및 데이터 시각화 업무를 담당했다.
삼성 근무 시 내가 해야 할 일은 남들도 누구나 SW+HW를 이용해 만들 수 있게 하자는 목적으로, 2013년 Circulus 커뮤니티를 시작했다. 평생의 업이라는 뜻을 펼치기 위해 2016년 9월, 로봇 기반 에듀테크 스타트업 Circulus(www.circul.us)를 시작해, 프로그래밍 교육과 지능 형 로봇을 개발하고 있다.

목차

목차
  • 1장. 자바스크립트 로보틱스 시작
    • 자바스크립트 로보틱스, NodeBots, 조니 파이브 이해
      • NobeBot의 정의와 기타 기본 용어
      • 조니 파이브와 NobeBot 혁명
      • 이 책에서 사용하는 부품
    • 개발 환경 설정
      • Node.JS 설치
      • 프로젝트 설정과 조니 파이브 설치
      • 마이크로컨트롤러 연결과 Firmata 설치
    • Hello, World!: 보드의 LED 깜빡이기
      • 조니 파이브 스크립트 작성
      • 스크립트 실행
    • 요약

  • 2장. 조니 파이브로 작업
    • 2장에 필요한 준비물
    • 조니 파이브 프로그램의 동작 원리
      • 객체, 함수, 그리고 이벤트
      • 깜빡이는 LED 스크립트 살펴보기
    • 조니 파이브 이벤트의 이해
      • 이벤트인 이유
    • 외부 LED 연결
      • 하드웨어 설정
    • REPL 사용
      • REPL에 이용 가능한 컴포넌트 만들기
      • REPL 사용
    • 요약

  • 3장. 디지털 출력 핀과 PWM 출력 핀 사용
    • 3장에서 필요한 준비물
    • GPIO 핀의 동작 원리
      • 디지털 출력 핀
      • PWM 출력 핀
      • 디지털 핀과 PWM 핀의 차이점
    • 여러 LED를 가진 다중 핀
      • 프로젝트를 위한 하드웨어 설정
      • 프로젝트용 스크립트 작성
      • 조니 파이브의 LED 객체 자세히 살펴보기
    • PWM 핀에 피에조 장치 사용
      • 하드웨어 설정
      • 스크립트 작성
      • 핀에서 무슨 일이 일어난 것인가?
      • 피에조 API 살펴보기
    • 요약

  • 4장. 특수 출력 장치 사용
    • 4장에서 필요한 준비물
    • 다중 핀이 필요한 출력
      • I2C
    • 조니 파이브와 호환성 점검
    • 연결 다이어그램과 기타 문서 구하기
    • 프로젝트: 문자열 LCD 디스플레이
      • 선 연결: I2C LCD
      • 코드
        • I2C 버전
        • 비I2C 버전
      • 코드 실행
    • 요약

  • 5장. 입력 장치와 센서 사용
    • 5장에서 필요한 준비물
    • 아날로그 입력 핀의 동작 원리
    • 조니 파이브 센서 이벤트
    • 기본 입력 사용: 버튼과 가변 저항기
      • 버튼과 LED 연결
      • Button-led.js 코딩
      • 가변 저항기와 LED 연결
      • 디머 스위치 코딩
    • 센서 사용: 빛과 온도
      • 조도 센서 연결
      • 조도 센서 예제 코딩
        • barcli
      • 모두 통합한 코딩
      • 온도 센서 연결
      • 온도 센서 예제 코딩
    • 요약

  • 6장. 움직이는 로봇
    • 6장에 필요한 준비물
    • 서보와 모터의 차이점
      • 모터와 서보의 정의
      • 기억해야 할 점
      • 모터의 종류
      • 서보의 종류
      • 서보나 모터를 사용해야 하는가?
      • 서보와 모터 제어 장치
      • 모터와 서보 쉴드
    • 모터와 서보 사용 시 특별 고려 사항
      • 전원 고려 사항
      • 제약 사항과 전선
    • 서보와 모터 연결
      • 서보 연결
      • 모터 연결
    • 모터 프로젝트 생성과 REPL 사용
      • 모터 API 살펴보기
    • 서보와 센서를 활용한 프로젝트 생성
      • REPL을 이용한 서보 API 살펴보기
    • 요약

  • 7장. 애니메이션 라이브러리를 활용한 움직임 개선
    • 7장에서 필요한 준비물
    • 애니메이션 API란?
      • 애니메이션 API를 사용하는 이유
      • 애니메이션인 이유
    • 애니메이션 API 살펴보기
      • 용어 학습
      • .to()와 애니메이션 API의 차이점
      • ServoArray 객체 사용
      • 프로젝트: 세 개의 서보 연결과 배열 생성
    • 서보 애니메이션 작성
      • 키 프레임 작성
        • 키 프레임 객체
        • 키 프레임 속기법
        • 키 프레임 작성 예제
      • 세그먼트 작성
        • 세그먼트 옵션
        • 한 세그먼트의 다중서보
        • 세그먼트 작성 예제
      • 애니메이션 객체
      • 프로젝트: 서보 배열 움직이기
    • 애니메이션 이벤트
      • 정보 판독 LCD와 서보 배열로 만들기
    • 요약

  • 8장. 고급 컴포넌트: SPI, I2C, 기타 장치
    • 8장에서 필요한 준비물
    • I2C와 SPI 프로토콜이 필요한 이유
    • SPI 장치 살펴보기
      • SPI 동작 방법
      • 조니 파이브에서 SPI의 사용 방법
      • SPI의 이점과 단점
      • SPI 장치를 사용해 구축하기: LED 매트릭스
        • 구축
        • API
        • LED 매트릭스를 위한 데이터 서식
        • 그리기 함수
        • 코드
    • I2C 장치 살펴보기
      • I2C 동작 원리
        • I2C에 사용되는 핀
        • I2C 장치가 데이터를 보내고 받는 방법
      • I2C의 이점과 단점
        • 이점
        • 단점
      • I2C 장치로 구현하기: 가속도 센서
        • 가속도 센서 연결
        • 예제 코드 작성
    • 외부 장치
      • 외부 장치인 이유
        • node-serialport
        • node-hid
      • USB 게임패드 구축
        • 하드웨어
        • node-gamepad API
        • 코드
    • 요약

  • 9장. 세상과 NodeBot 연결, 앞으로 가야 할 길
    • 9장에서 필요한 준비물
    • 웹에 NodeBot 연결
      • 단지 Node Server일 뿐!
      • Twilio 사용
      • 날씨 봇 만들기
      • 문자 봇 사용
    • 조니 파이브와 마이크로컨트롤러의 세계
      • 날씨 봇을 Particle Photon으로 이전
      • 제약 사항과 조니 파이브
    • 기타 자바스크립트 라이브러리와 플랫폼
      • Espruino
      • Tessel
      • Cylon.js
      • JerryScript
      • 작은 리눅스 컴퓨터
      • 제조사 라이브러리
    • 앞으로 가야 할 길

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안