산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Roomberry 감시 로봇:Roomba + Pi Zero + 카메라

Roomberry는 Raspberry Pi Zero W와 카메라 모듈을 사용하는 Roomba 기반 감시 로봇입니다. 몇 년 전 저는 RN-VX WiFly 모듈이 있는 Arduino One을 사용하여 Roomba를 원격으로 제어하기 위한 몇 가지 테스트를 시작했습니다.

지난 달에 나는 Roomba를 사진과 동영상을 찍을 수 있는 감시 로봇으로 바꾸는 새로운 목표를 가지고 아이디어를 활성화하기로 결정했습니다. 첫 번째 아이디어는 사진을 캡처하기 위해 Arducam 모듈을 사용하는 마이크로컨트롤러로 Arduino를 계속 사용하는 것이었습니다. 그러나 Arduino의 이미지 처리 용량이 내 관심사에 비해 너무 제한적이라는 것을 빨리 깨달았습니다. 두 번째 옵션은 플랫폼을 변경하고 카메라 모듈과 함께 Raspberry Pi Zero W를 사용하는 것이었습니다. 이 대안은 특히 전원 공급과 관련하여 몇 가지 문제를 의미했지만 더 많은 가능성을 제공했습니다. 이 게시물에서는 Raspberry Pi Zero W와 카메라 모듈을 사용하여 Roomba 기반 감시 로봇인 Roomberry를 만드는 방법을 설명합니다.

Roomberry의 기능 및 웹 인터페이스 시연 상호 작용하도록 개발된 동영상은 다음 동영상에서 확인할 수 있습니다.

아이로봇 룸바

iRobot의 Roomba는 개방형 인터페이스를 제공합니다. (OI) 미니 DIN 커넥터를 통해 로봇과 상호 작용합니다. OI는 Roomba Creator 2(serie 600의 개조)용으로 설계된 소프트웨어 인터페이스입니다. 그러나 시리즈 500 및 700과도 완벽하게 호환됩니다. 그럼에도 불구하고 사용하는 플랫폼 및 펌웨어 버전에 따라 몇 가지 버그가 있습니다. 소프트웨어 인터페이스를 통해 Roomba의 동작을 조작하고 센서를 읽을 수 있습니다. 기능에 대한 전체 설명은 이 문서에서 찾을 수 있습니다.

미니 DIN 커넥터

Roomba 미니 DIN 커넥터 룸바 시리즈 700의 전면 우측에 위치하며 7개의 핀이 있습니다. 그 위치는 600 시리즈에서 약간 다릅니다. 위치는 Roomba의 후면 오른쪽에 있고 스냅식 플라스틱 보호대 아래에 있습니다. 미니 DIN 7 수 커넥터는 구입하기가 복잡하지만 더 일반적인 미니 DIN 8 핀 수 커넥터 도 호환됩니다.

부드럽고 안정적인 포트 연결/분리를 위해 암 커넥터가 있는 5핀 케이블(LED 스트립용으로 설계됨)을 핀 1-2를 사용하여 미니 DIN 8핀 수 커넥터에 납땜했습니다. (전원), 6-7(접지), 3(RxD), 4(TxD) 및 5(BRC). 그러나 나중에 언급했듯이 전원/접지 연결은 마침내 필요하지 않았습니다. 결과 케이블은 다음 사진에서 볼 수 있습니다.


룸바 직렬 포트

OI를 사용하려면 명령 양방향 직렬 통신을 통해 전송되어야 함 미니 DIN 7 핀 3(RxD) 및 4(TxD)에서 생성되었습니다. 이 UART 포트는 TTL 수준에서 작동합니다. (0 – 5V). 이 전압은 대부분의 Arduino 보드와 같이 5V 로직을 사용하는 마이크로컨트롤러에 적합합니다. 그러나 낮은 전압 논리 레벨(예:Raspberry Pi)을 가진 사람들에게는 좋지 않습니다.

이론적으로 핀 3(RxD)은 높은 논리 레벨로 3.3V를 사용합니다. 그러나 Roomba는 핀 4(TxD)에서 5V를 출력하므로 Raspberry Pi Zero가 손상될 수 있습니다. 하드웨어를 안전하게 유지하려면 논리 레벨 시프터 사용되어야한다. 이를 수행하는 가장 간단한 방법은 이전 프로젝트 Calduino에서 이미 구현된 것처럼 저항 분배기를 사용하는 것이지만 고속에서는 작동하지 않을 수 있습니다(Roomba의 직렬 포트는 115200 보드에서 작동).

그 대신 액티브 레벨 시프터가 더 좋습니다. 자체 회로를 구축하려면 여기에 설명된 대로 전계 효과 트랜지스터 AN10441을 사용하세요. 훨씬 쉬운 옵션은 Adafruit의 이와 같은 기존 양방향 로직 레벨 변환기 중 하나를 사용하는 것입니다. 이 장치는 최대 4개의 신호를 관리하고 5V에서 3.3V로 안전하게 강압할 수 있습니다. 동시에 신호를 3.3V에서 5V로 단계적으로 올립니다.

Roomba에서 Raspberry Pi 전원 공급

룸바의 배터리를 통해 전원을 공급할 수 있는 몇 가지 대안이 있습니다.

Mini DIN 7에서 전원 공급

미니 DIN 7은 규제되지 않은 직접 연결을 제공합니다. 핀 1/2(Vcc) – 6/7(Gnd)에서 Roomba의 배터리에 연결합니다. 연결은 200mA로 제한됩니다. PTC 재설정 가능 퓨즈를 통해 . 20.5 ~ 10V 사이의 전압을 제공하며 2W의 전력으로 0.2A로 제한됩니다. 이 두 핀의 연속 인출은 200mA를 초과해서는 안 됩니다. 500mA보다 큰 피크를 그리면 퓨즈가 재설정됩니다.

Raspberry Pi Zero W는 이 공급 장치를 사용하여 작동할 수 있어야 합니다. Raspberry Pi Foundation은 일반적인 베어 보드 활성 전류 소비를 150mA로 평가합니다. 이 벤치마크는 120mA 사이에 위치합니다. 유휴 상태 및 스트레스 상태에서 180mA (예:FullHD 비디오 재생). 그러나 여기서 카메라의 추가 소비는 고려되지 않습니다. 내 측정에 따르면 카메라(버전 1 공식 Pi 카메라와 동일한 센서로 이 카메라를 사용함)는 전력 소비를 300mA 이상으로 증가시키고 피크는 450mA입니다. 테스트하는 동안 동영상을 녹화하는 동안 퓨즈가 여러 번 트립되었습니다.

결론적으로 기존 온도 퓨즈는 Raspberry Pi Zero W에 전원을 공급하기 위해 이 연결을 사용하는 것을 기각합니다. 보드에서 퓨즈를 제거하는 것이 가능하고 안전한지 확인할 수 없었습니다. 다른 구성 요소를 손상시키지 않고.

외부 전원 은행에서 전원 공급

이 퓨즈 제한을 피하기 위한 몇 가지 대안이 있습니다. 한편으로 더 쉬운 솔루션은 보조 배터리를 사용하는 것입니다. Raspberry Pi Zero에 외부 전원을 제공합니다. 그러나 사용자가 주기적으로 충전해야 합니다. 또 다른 옵션은 미니 DIN 7 전원 공급 장치와 전원 은행 간의 직렬 연결을 설계하는 것입니다. 몇 가지 전자 부품으로 Roomba 배터리를 사용하여 보조 배터리를 충전할 수 있습니다. 설계를 단순화하기 위해 추가 전원을 사용하지 않기로 결정했습니다.

배터리에서 전원 공급

드디어 우회하기로 결정했습니다. 퓨즈 직접 연결 구축 배터리 팩에 . 이 옵션의 반대는 로봇을 부분적으로 분해해야 한다는 것입니다. . Roomba 시리즈 600에는 도크 버튼 아래의 배터리 팩에 직접 연결된 두 개의 큰 패드가 있습니다. Roomba 시리즈 700/800에서는 몇 가지 구성 요소를 더 분해해야 합니다. 로봇의 마더보드에 액세스하는 방법을 단계별로 보려면 6분까지 다음 동영상을 보세요. . 완료되면 다음 사진과 같이 케이블 몇 개를 배터리 패드에 납땜하기만 하면 됩니다.


이 케이블은 퓨즈에 의해 제한되지 않는 배터리에 직접 연결을 제공합니다. 배터리 충전 수준에 따라 20.5~10V를 공급합니다. 하지만 Raspberry Pi Zero W에는 규제된 5V 전원이 필요합니다. 전압을 낮추려면 다운 사용. 저렴한 선형 조정기를 사용하는 것부터 이를 수행할 수 있는 다양한 옵션이 있습니다. (예:7805 TO-220) 몇 개의 커패시터로 스위칭 레귤레이터 설치 .

더 높은 효율성으로 인해 , 그리고 항상 연결된다는 점을 고려하면 좋은 품질을 사용/구매하는 것이 좋습니다. (중국 모방 방지) 스텝다운 스위칭 규제기 . 최대 36V의 입력을 받아 최대 출력 전류 500mA에 대해 5V로 줄이는 Pololu D24V5F5 벅 레귤레이터를 사용했습니다. 효율성은 85%에서 90% 사이로 평가되며 드롭아웃이 매우 낮습니다. RC 세계에서 일반적으로 사용되는 것과 같은 UBEC(범용 배터리 제거 회로)를 사용할 수도 있습니다. 로봇의 오른쪽 중앙에 있는 여유 공간에 전압 조정기를 배치했습니다.

연결부는 열수축으로 적절하게 보호되었으며 D24V5F5 모듈은 절연 플라스틱으로 덮여 있었습니다(사진은 찍지 않았습니다). 모듈 출력을 마이크로 USB 케이블에 납땜하여 Raspberry Pi Zero W 전원 입력에 직접 연결할 수 있습니다.


회전 드릴 도구와 사포를 사용하여 Roomba의 상단 덮개에 약간의 홈을 만들어 마이크로 USB 케이블의 깨끗한 콘센트를 볼 수 있도록 했습니다. 다음 사진입니다.

룸바 OI 모드

Roomba OI에는 끄기, 수동, 안전 및 전체의 4가지 작동 모드가 있습니다.

꺼짐 모드 :배터리 교체 후 또는 최초 전원 공급 시 OI는 오프 모드입니다. 이 상태에서 Roomba는 시작 명령을 기다리는 기본 전송 속도(115200)로 포트를 수신합니다. 재설정 및 중지 명령은 언제든지 보낼 수 있으며 OI는 꺼짐 모드에서도 꺼집니다.

수동 모드: 시작 명령이 전송되면 Roomba가 수동 모드로 전환됩니다. . 이 상태에서 센서 명령을 사용하여 센서 데이터를 요청하고 수신할 수 있습니다. 그러나 액추에이터(모터, 스피커, 조명, 로우 사이드 드라이버, 디지털 출력)에 대한 현재 명령 매개변수는 변경할 수 없습니다. Roomba가 수동 모드로 전환됩니다. 청소 모드 명령(Spot, Clean, Seek Dock 등) 중 하나가 전송된 경우에도 마찬가지입니다.

패시브 모드에 있는 동안 Roomba는 꺼짐 모드로 전환됩니다. 5분 동안 사용하지 않으면 전원을 절약하고 배터리를 절약할 수 있습니다. iRobot 문서에 따르면 이 5분이 만료되기 전에 주기적으로 BRC 핀을 낮춤으로써 절전 모드를 비활성화할 수 있습니다. 각 펄스는 이 5분 카운터를 재설정해야 합니다. 내가 수행한 테스트(Roomba 780 사용)에서 BRC를 낮추면 로봇만 깨어나 절전 모드로 전환되는 것을 막을 수는 없습니다. 로봇이 깨어나면 신호음이 울립니다(도크 스테이션에서 충전 중이 아닌 경우).

안전 모드 :Roomba가 안전 모드로 전환됩니다. Safe 명령이 전송된 경우 안전 모드는 로봇을 완전히 제어하고 모든 모터와 LED를 끕니다. 그러나 안전 관련 조건이 충족되지 않으면 로봇이 자동으로 수동 모드로 전환됩니다. . 이러한 안전 조건은 전진 중 절벽 감지, 바퀴 낙하 및 충전기 연결입니다. 이 모드에서 Roomba는 충전되지 않으며(도크에 있음에도 불구하고) 5분 동안 사용하지 않으면 꺼짐 모드로 전환하여 전력을 절약하지 않습니다. 이 점은 매우 중요합니다. 수동 또는 끄기 모드로 전환하지 않으면 로봇의 배터리가 소모되고 손상될 수 있습니다.

전체 모드 :OI에 전체 명령을 보내면 Roomba가 전체 모드로 들어갑니다. . 로봇은 안전 모드에서와 똑같이 작동하지만 이전에 언급된 안전 관련 조건을 고려하지 않으므로 위험에 유의하십시오!

배터리 주의사항 :언급한 대로 패시브 모드에서 Roomba는 배터리 전원을 보존하기 위해 5분 동안 사용하지 않으면 절전 모드로 전환됩니다. 안전 및 전체 모드에서 룸바는 절대 절전 모드로 전환되지 않으며 장기간 이 상태로 두면 충전기에 연결되어 있어도 배터리가 완전히 방전됩니다. 충전기는 모든 모드에서 Roomba에 전원을 공급하지만 안전 또는 전체 모드에서는 배터리를 충전하지 않습니다. 작업이 완료되거나 배터리 잔량이 부족한 경우 이를 보호하기 위해 Roomba를 수동 또는 끄기 모드로 되돌리는 것이 중요합니다.

라즈베리 파이 제로 W

라즈베리 파이 제로 W 무선 LAN이 있는 Raspberry Pi Zero의 업데이트된 버전입니다. 및 블루투스 . 이 모델에는 1GHz 단일 코어 CPU, 512MB RAM, 미니 HDMI, 마이크로 USB OTG 포트, 전원용 마이크로 USB, 40핀 헤더, 컴포지트 비디오, 재설정 헤더, 카메라 커넥터 및 새로운 무선 기능. 802.11b/g/n Wi-Fi(2.4GHz 전용) 및 Bluetooth 4.0(Raspberry Pi 3 모델 B와 동일한 칩)을 지원하는 무선 칩 Cypress CYW43438을 사용합니다. Pimoroni에서 헤더(납땜 아님)와 어댑터가 포함된 16유로에 구입했습니다.

카메라

Raspberry Pi Zero W CSI 카메라 커넥터는 Pi 3 커넥터보다 작습니다. 이미 카메라가 있는 경우 사용하려면 어댑터를 구입해야 합니다. 그렇지 않으면 5MP 센서(버전 1 공식 Pi 카메라와 동일)를 통합하고 1080p에서 동영상을 녹화할 수 있는 이 카메라 모듈을 구입하는 것이 좋습니다. 비용은 18€입니다. IR 컷이 있는 광각 카메라를 선택했습니다. 나는 밤에 아무것도 볼 수 없다는 것을 알고 있지만 IR LED를 사용하면 에너지 소비가 증가하므로 낮추고 싶었습니다. 언제든지 Philips HUE 조명을 사용하여 집 조명을 원격으로 제어할 수 있습니다.

Raspberry Pi Zero W 강화

Pi Zero의 전원 공급 장치와 관련하여 몇 가지 고려해야 할 사항이 있습니다. 우선, 더 큰 모델과 달리 Pi Zero에는 규제나 퓨즈가 없습니다. 과전압 또는 전류 스파이크로부터 보호합니다. 이는 안정된 전원을 공급해야 함을 의미합니다. 전원은 오른쪽 마이크로 USB(Pwr In) 또는 GPIO 헤더의 5V 핀에 연결할 수 있습니다. 둘 다 같은 라인입니다. 잘못된 전압이 인가되거나 라인에 전류 스파이크가 발생하면 사용자가 손상을 받을 수 있음을 확인하세요. Raspberry Pi를 영구적으로 .

이미 언급했듯이 스트레스 테스트를 실행하는 동안 연결된 카메라로 400mA의 소비 피크가 측정되었습니다. Raspberry Pi Foundation에서는 최소 1.2A의 전원 공급 장치를 권장합니다. 그러나 벅 레귤레이터에서 제공하는 0.5A면 충분합니다. 지금까지 전원 공급 장치와 관련된 문제를 발견하지 못했습니다.

소비 전력 감소

Raspberry가 Roomba의 배터리로 실행된다는 점을 고려하면 흥미로울 것입니다. 전력 소비 가능한 한 많이. 예를 들어 Pi Zero가 헤드리스(모니터 연결 없이) 실행되고 SSH를 통해서만 액세스된다는 것을 알고 있으므로 디스플레이 회로에 전원을 공급할 필요가 없습니다. HDMI 포트를 비활성화하면 최대 25mA를 절약할 수 있습니다. 이렇게 하려면 /usr/bin/tvservice -o를 실행하세요(또는 다시 사용 설정하려면 -p를 사용하세요). HDMI 케이블이 연결되어 있는지 확인하고 그에 따라 HDMI 포트를 비활성화하는 짧은 스크립트를 /etc/rc.local에 배치했습니다.

# 현재 비디오 출력 유형을 가져오고 중요하지 않은 비트를 제거합니다.
video=“$(tvservice -s | sed “s/^.*\[\([^ ]*\) .*$/\1/ " )"

if [ "$video" !="HDMI" ]; then
printf “HDMI가 감지되지 않습니다. 끕니다.\n”
tvservice -off> /dev/null
else
printf “HDMI가 감지되었습니다.\n”
fi

전력 소모를 줄이는 또 다른 방법은 Pi의 LED를 비활성화하는 것입니다. Raspberry Pi Zero에는 SD 카드에 액세스할 때마다 깜박이는 활동 LED가 하나만 있습니다. 소비량은 약 5mA입니다. 완전히 비활성화하려면 /etc/rc.local 파일에 다음 줄을 추가하세요.

# Pi Zero ACT LED 트리거를 '없음'으로 설정합니다.
echo none | sudo 티 /sys/class/leds/led0/trigger

# Pi Zero ACT LED 끄기
echo 1 | sudo 티 /sys/class/leds/led0/brightness

/etc/config.txt 파일을 수정하여 이 작업을 수행할 수도 있습니다.

# Pi Zero에서 ACT LED 비활성화

dtparam=act_led_trigger=없음
dtparam=act_led_activelow=on

실제 소비 감소로 이어질지는 모르겠지만 사용되지 않을 것이므로 /etc/config에 다음 줄을 추가하여 Pi Zero의 블루투스 모듈을 비활성화할 수 있습니다. .txt:

# Pi Zero에서 블루투스 비활성화

dtoverlay=pi3-disable-bt

마지막으로 Pi Zero에 설치되어 실행되는 소프트웨어를 줄이십시오. 예를 들어 Raspbian lite를 사용하세요. 데스크톱 버전 대신 추가 소프트웨어를 설치하고 정말 필요한 경우가 아니면 추가 소프트웨어를 설치하지 마십시오. 컴퓨터에서 실행 중인 프로세스가 많을수록 더 많이 소모됩니다.

기타 고려 사항

룸베리 만들기

모든 부분에 대한 설명이 끝나면 Roomba와 함께 사용하는 Raspberry 인터페이스인 Roomberry를 빌드하고 실행하는 방법을 살펴보겠습니다.

내 목표는 모든 포트와 SD 카드에 쉽게 액세스할 수 있는 안정적인 케이스에 구성 요소(Raspberry Pi Zero, 카메라 모듈, 로직 레벨 변환기 및 스위치 버튼)를 캡슐화하는 것이었습니다. 내 자신의 3D 디자인을 인쇄하는 것을 제외하고 내가 찾은 유일한 옵션은 이것이 하나였습니다. 이 케이스는 모든 요구 사항을 충족하며 몇 가지 전자 부품이 필요한 애드온 보드인 HAT(Hardware Attached on Top)를 부착할 수 있습니다. 다음 이미지는 PCB 스키마를 보여줍니다. 실행 핀은 HAT가 아니라 Pi Zero에 있습니다. 그것을 구축하려면 12 x 10 핀의 PCB 보드 조각으로 충분합니다. PCB를 자르기 위해 회전 도구를 사용했습니다.

논리 수준 변환기 GPIO에서 얻을 수 있는 고전압과 저전압이 모두 필요합니다(Pi Zero에는 PAM2306AYPKE라는 5~3.3V의 강압 컨버터가 포함되어 있음). 전환 버튼을 배치했습니다. Pi Zero의 한가운데에 HAT의 확장이었기 때문입니다. 이렇게 하면 외부에서 누를 수 있도록 버튼의 스템이 케이스를 돋보이게 합니다. 케이스에 몇 개의 구멍을 뚫어야 합니다. 하나는 버튼 스팀용이고 다른 하나는 카메라용(그리고 더 큰) 구멍입니다. 게다가 케이블을 180도 회전할 수 있는 공간을 만들기 위해 CSI 커넥터용으로 설계된 케이스 공간을 조심스럽게 사포질해야 했습니다. 다음 사진은 결과를 보여줍니다.


라즈비안 스트레치 구성

Roomberry를 Roomba의 미니 DIN 7 커넥터에 연결하기 전에 몇 가지 구성 단계를 수행해야 합니다. Raspberry Pi Zero W가 마지막 버전의 Raspbian을 실행 중이고 이미 헤드리스로 설정되어 있다고 가정합니다.

마이크로 USB 전원 공급 장치 연결 이전에 Pi Zero에 구축되었습니다. 몇 초 후에 시스템이 가동되고 실행되어야 합니다. pi Zero에 대한 SSH 연결을 엽니다.

기본적으로 Pi의 직렬 포트는 콘솔 입력/출력에 사용되도록 구성됩니다. . 이 포트를 통해 Roomba와 통신하려면 직렬 콘솔 로그인을 비활성화해야 합니다. raspi-configchoosing 메뉴 5 – 인터페이스 옵션 및 P6 – 직렬로 할 수 있습니다. 답변 아니요 "시리얼을 통해 액세스할 수 있도록 셸에 로그인하시겠습니까?"라는 질문에 및 "직렬 포트 하드웨어를 활성화하시겠습니까?"로 변경합니다. 아직 시스템을 다시 시작하지 마십시오. 또는 콘솔 정의에 주석을 달고 /boot/config 파일 끝에 다음 줄을 추가할 수도 있습니다.

#콘솔 정의 찾기 및 주석 달기
#console=serial0,115200
...
enable_uart=1

아직 수행하지 않은 경우 카메라 모듈을 활성화합니다. . 다시 말하지만 raspi-config 메뉴 5 및 P1 옵션을 선택하여 수행할 수 있습니다. On the other hand, you can also edit file /boot/config and include these changes (disabling camera led is not required but recommended to save power):

start_x=1
gpu_mem=128
disable_camera_led=1

I am not sure which is the optimum quantity of RAM to assign as gpu_memory when the camera module is being used. Until now I have not found any “Out of resource” errors while operating with the camera, so I assume 128 Mb is a good choice.

Disable all swap  and mount /tmp directory in RAM Disk with 50 megabytes of space. This location will be used to store ephemeral files, such as camera snaps and Roomba status files. Increase the commit time in etc/fstab to 30 minutes and include the noatime option in the SD partition. Find the commands in this post.

Now it is time to test if everything is working correctly. Turn down your Pi and connect the serial port to Roomba. Place the Roomba at the charging dock . Boot the system and check that everything is working as expected (and that the robot is not doing anything strange).

Test reading from serial port :I have used minicom to read the data sent by Roomba. To install it just type:

sudo apt-get minicom

Connect with the serial port of Roomba by doing:

minicom –b 115200 -o -D /dev/serial0

If your Roomba is charging you should see a text similar to following image reporting the charging state of the Roomba every second. Press CTRL + A and X to exit minicom.

Read More Detail  :Roomberry Surveillance Robot:Roomba + Pi Zero + Camera


제조공정

  1. Arduino+Raspberry Pi 로봇 플랫폼을 만드는 방법
  2. BrickPi 북리더
  3. 라즈베리 파이 CD 상자 로봇
  4. 구르는 알람 로봇
  5. Minecraft 크리퍼 로봇 제작
  6. 아르키메데스:AI 로봇 올빼미
  7. Roomberry 감시 로봇:Roomba + Pi Zero + 카메라
  8. CV 로봇 열기
  9. ROS 로봇
  10. 간단한 파이 로봇