라두: 아두노와 복분자 가죽으로 로봇을 만드는 법

RADU는 나의 로봇 프로젝트의 별명이다.이 시리즈의 마지막 글에서 나는 재료 명세서와 로봇을 조립할 때 사용하고 싶은 프로젝트의 유형과 수량을 소개했다.처음에 나는 몇 개의 단독 센서를 시도한 후에 점차적으로 그것들을 조합했다.
본고는 이 초기 설계 단계에 대한 반성이다.주요 구성 요소를 소개하고 RADU에서 어떻게 사용하는지, 그리고 사용 과정에서 겪는 특수한 도전에 대해 설명할 것입니다.
이 글은 최초로 나의 블로그admantium.com에 나타났다.

Arduino 나노
중앙 마이크로컨트롤러는 신뢰할 수 있는 Arduino Nano입니다.그것은 시험판에 위치하고 주변의 모든 다른 센서에 연결된다.USB를 통해 Raspberry Pi 3에 전원을 공급합니다.
마이크로컨트롤러는 부팅 시 간단한 명령줄 인터페이스를 제공합니다.
Boot Menu
START
Using library version 3.0.3/RAD10_chassis_prototype.cpp from Mar 13 2021

+++ RADU MKI v0.4 Booting +++
Please select a command:
- LED {msg}   Print msg to LED Matrix
- DRIVE {dir} Drive in direction
- EXIT        Restart the program
직렬 입력을 통해 연결할 때, 이 명령들은 원형의 각종 기능을 실행한다.모든 식별 명령도 직렬 버스를 통해 작은 로그 메시지를 출력합니다.이 로그 정보는 Raspberry Pi에 의해 기록될 것입니다. 다음 섹션 참조.

복분자 껍질
캐리어 SMC는 첫 번째 RADU 원형에 두 가지 기능을 제공합니다.
첫 번째 기능은 원격 연결: SSH를 통한 WIFI 직렬 연결입니다.부팅이 시작되면 복분자 Pi가 내 로컬 WIFI에 연결됩니다.SSH를 사용하면 Pi에 연결하고 Arduino에 연결된 직렬 콘솔을 열 수 있습니다.이것은 내가 원격 직렬 명령을 실행할 수 있도록 허락한다.
$> ssh [email protected]
Linux raspi-3-2 5.4.83-v7+ #1379 SMP Mon Dec 14 13:08:57 GMT 2020 armv7l

Last login: Sat Mar 13 19:13:44 2021 from 192.168.2.200

devcon@raspi-3-2:/home/devcon $ picocom -b 9600 --omap crcrlf /dev/ttyUSB0
picocom v3.1

port is        : /dev/ttyUSB0
flowcontrol    : none
baudrate is    : 9600
parity is      : none
....
Terminal ready
...
START src/RAD10_chassis_prototypbrary version 3.0.3
+++ RADU MKI v0.4 Booting +++
Please select a command:
- LED {msg}   Print msg to LED Matrix
두 번째 기능은 직렬 인터페이스의 모든 정보를 감청하고 기록하는 것이다.이를 위해 IOT 소프트웨어 NodeRed를 사용합니다. IOT 소프트웨어는 '직렬 데이터 읽기, JSON으로 변환, 로그 파일 쓰기' 와 같은 데이터 흐름을 정의하는 도형 편집기를 제공합니다.다음은 이러한 흐름의 예입니다.

배치되면 나중에 데이터 분석을 위해 로컬 로그 파일에서 모든 RADU 상태 메시지를 수집합니다.


LED 매트릭스
나의 원형은 시각적 피드백을 제공할 수 있어야 한다.이를 위해 나는 점마다 밝힐 수 있는 매트릭스 LED 한 세트를 사용했다.올바르게 사용하면 ASCI 문자를 인쇄할 수 있습니다.
이 하드웨어들을 사용에 투입시키는 것은 나에게 즐거운 추억을 주었다.우선, 나는 코드 라이브러리를 배웠고, 문자를 어떻게 그 안에 인쇄하는지 몇 가지 예시를 본 것을 기억한다.매트릭스는 단일 LED의 비트 마스크를 제공하여 제어할 수 있습니다. 어떤 것은 열어야 하고, 어떤 것은 닫아야 합니까?이 스위치가 있으면 기호와 자모를 행렬에 인쇄할 수 있다.
그러나 어떻게 문자를 비트 마스크로 바꿉니까?어려운 첫 번째 단계는 문자를 ASCI 코드 값으로 변환하는 것입니다.두 번째 부분은 모든 문자의 비트 마스크가 저장되어 있는 배열입니다. 배열 인덱스는 문자의 ASCI 값에 대응합니다.세 번째 단계는 stringcpy 함수를 사용하여 비트마스크를 이 진열에서 LED 행렬로 복사하는 것이다.이 점을 깨닫고 코드를 실현하는 것은 매우 식견이 있는 활동이다.
다음은 전체 계획의 관련 부분이다.먼저 비트 마스크 배열에서 문자A를 나타내는 데 사용되는 예입니다.이 값은 두 개의 정수로 구성되어 있으며, 행렬에 점을 그릴 위치를 대표하고, 그 다음에 5x8 줄의 줄마다 5자리 마스크를 나타낸다.이들 마스크 가운데 a0는 꺼짐을, a1는 LED가 켜짐을 의미한다.만약 네가 정말로 머리를 돌린다면, 너는 스크린에 나타난 도안을 상상할 수 있다.
const unsigned char char_arr[] PROGMEM = {
  //...
  4, 8, B01111110, B00010001, B00010001, B01111110, B00000000 // A
  //...
}
다음 기능은 실제 인쇄 코드를 포함한다.우선, 주어진 문자를 asci 값으로 변환합니다.그 다음에 비트 마스크 데이터를 저장하기 위한 버퍼를 만들고 지침의 의미를 사용하여 복사합니다. char_arr 인덱스 0에 +asci 값을 곱하기 7로 표시하고, 다음 7개의 값을 복사합니다. 즉, 위의 그림에서 보여준 줄입니다.마지막으로, 그것은 매트릭스에 기록되었고, 짧은 지연 후에 매트릭스는 삭제되었다.
void printCharOnMatrix(char car) {
  int ascii = int(car);

  byte buffer[7];
  memcpy_P(buffer, char_arr + (7 * ascii), 7);

  matrix.writeSprite(2,0,buffer);
  delay(700);
  matrix.clear();
}
내가 처음으로 완전한 단어가 한 글자 한 글자 번쩍이는 것을 보았을 때, 이것은 정말 주의할 만한 사건이었다.

적외선 제어
직렬 명령 외에 나는 로봇을 즉시 제어하고 싶다.이것은 적외선 센서와 텔레비전 리모컨을 통해 실현된 것이다.제어 장치에 있어서, 나는 핸들이 하나 있는데, 위아래와 좌우 명령으로 전환할 수 있다. 사용할 때, RADU는 그에 상응하여 이동해야 한다.이 밖에 나는 디지털 키보드의 모든 키도 포착했다.IR 코드는 쉽게 작성됩니다. my blog post about IR commands 의 상세한 정보를 보십시오.이 버전의 RADU 원형에서, 나는 단지 LED 디스플레이에 눌린 단추를 표시할 뿐이다.

지위가 앞서다
마지막으로 RADU에 추가된 장치는 RGB LED가 있는 소형 성능판이다.서로 다른 색깔은 서로 다른 상태를 나타낸다.명령을 부트하고 처리할 때 LED가 파란색으로 바뀝니다.RADU가 명령을 받을 준비가 되면 LED는 녹색입니다.어떤 형태의 오류가 발생하면 LED가 빨간색으로 바뀝니다.
실현은 매우 간단하다. 모든 색깔은 한 가지 방법으로 설정할 수 있고 이에 따라 출력 파이프를 설정할 수 있다.예를 들어, LED를 녹색으로 설정하려면 다음 코드를 사용합니다.
void StatusLED::set_green() {
  digitalWrite(A3, LOW);
  digitalWrite(A4, HIGH);
  digitalWrite(A5, LOW);
}

StatusLED led{};

라두 상자
모든 센서가 단독으로 테스트되기 때문에 다음 단계는 그것들을 모두 조립하는 것이다.나는 간단하게 그것을 상자라고 부른다.실제로는 서로 다른 센서의 집합체처럼 서로 연결된 빵판에 평평하게 깔려 아두노에 연결되고, 아두노는 복분자피와 연결된다.주변이 느슨한 센서, 와이어 및 RGB LED가 있는 자체 용접perf판도 있습니다.

이것이 도대체 원형인지, 아니면 엉망진창인지 아직도 논쟁이 존재한다.그러나 이 원형은 나의 첫 번째 구축이다.이 모든 부품은 최종 로봇에게 매우 중요하기 때문에 습관적으로 그것을 사용하고 이를 아두노 프로젝트에 포함하는 것이 중요한 단계이다.

결론
이 글은 내가 어떻게 점차적으로 단판 컴퓨터, 마이크로 컨트롤러 단원, 센서를 사용하여 첫 번째 원형을 위해 독특한 집합을 만드는지 설명한다.기본 절차를 반복합시다.크랜베리 껍질은 로봇의 뇌로 로봇에 무선 접속을 제공하고 연결된 아두노로부터 보낸 정보를 기록한다.Arduino는 컨트롤러입니다. 적외선 센서, LED 행렬을 제어하고, 모터도 제어합니다.조합 센서가 정말 엉망진창으로 보인다.다음 글에서, 나는 그것들을 디스크에 연결하고, 전동기를 연결하며, 첫 번째 이동 가능한 RADU 원형을 구축할 것이다.

좋은 웹페이지 즐겨찾기