Skip to the content
2 layers140.3 × 89.7 mmAutoEraser, the printed circuit board in 3D

選択範囲を左上を基準とし01で表す。真ん中から右下まで選択した場合、Start = (0.5, 0.5) End = (1, 1)となる。

Size
140.3 × 89.7 mm
Copper layers
2
Thickness
1.6 mm
Parts
51
Nets
91
Pads
217
Tracks, vias
492, 0
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
7 Aug 2022
Updated
18 Apr 2023

Overview

AutoEraser is an open-source printed circuit board by Ruchi12377, from the Ruchi12377/AutoEraser repository on GitHub. It is a 2-layer board of 140.3 × 89.7 mm with 51 parts on 91 nets, routed with 492 tracks and 0 vias.

It is built around the TB6643KQ,8, 74HC165D and 74HC595. Its parts include 8 resistors, 8 transistors, 8 connectors, 6 switches and 5 diodes.

Main components

3

README

README.md

自動ホワイトボード消しの実用化に向けた改良

2022/12/13 第4版発行


目次

  1. はじめに

    1. 概要

    2. 開発環境

    3. システムの概要

  2. コンポーネント

    1. Camera

    2. Image

    3. KeystoneCorrection

    4. WhiteBoard (Feature)

    5. Select

    6. Erase (Feature)

    7. MoveInitial

    8. InitialSetting

    9. Pump

    10. Move (Feature)

    11. Serial

1.はじめに

1.概要

我々はRTミドルウェアを用いて、ホワイトボードの文字を自動で消すシステムを開発している。本稿では、本システムの改善について述べる。昨年のシステムとの相違点は主に三点ある。一つ目は、材質を木材からアルミニウムに変更することで歪みを解消し、スムーズな可動と軽量化を図ったことである。二つ目は消したい領域をより細かく指定可能にすることで、本来消すべきではない部分を消してしまうことを防げるようになったことである。三つ目は水が入ったタンクを設置し、自動で白板を濡らすことができるようになったため、雑巾を取り外して濡らす必要がなくなったことである。

自動ホワイトボード消しのイメージ

2.開発環境

本コンポーネント群の開発環境を以下に示す。

OSWindows10
RTミドルウェアOpenRTM-aist-2.0.0-RELESE(Python 版)
開発環境VSCode
Python3.8.5
必要モジュールmath, numpy, cv2, PIL, sys, time, tkinter

3.システムの概要

このシステムは、ユーザーの指定した範囲もしくは、全範囲(全部消す)をレールや枠組みに沿って本体が移動し自動でホワイトボードに書かれたものを消すものである。

そして、制御部分にはRTミドルウェアを用いており、Cameraコンポーネントを用いて取得したホワイトボードの動画(画像)をSelectコンポーネントで消す範囲を選択し、Eraseコンポーネントでどのように移動するか決定することでMoveコンポーネントが移動するためのコマンドを生成し、Serialコンポーネントを用いてハードウェアに移動するデータをもちいて実際に動かす。というものである。

以下の2つのコンポーネント図を示す。

1.詳しく説明してあるコンポーネント図

2.簡潔化しまとまりごとに色分けしたコンポーネント図

2.コンポーネント

1.Camera

カメラから取得した画像を出力するコンポーネント。

コンフィギュレーションから使用するカメラのインデックスを設定することができる。

  • InPort

  • OutPort

    名称データ型説明
    imageRTC::CameraImageカメラから取得した画像を出力する。
  • Configuration

    名称データ型説明初期値制限
    CameraIndexshort使用するカメラのインデックスを設定する。00<=x<=5

2.Image

コンフィギュレーションで指定されたパスの画像をポートから出力するコンポーネント。

デバックする際、Cameraコンポーネントの代わりに使用することを想定している。

  • InPort

  • OutPort

    名称データ型説明
    ImageRTC::CameraImageコンフィギュレーションで指定されたパスの画像を出力する。
  • Configuration

    名称データ型説明初期値制限
    Pathstring出力する画像のパスEmprt StringUndefined

3.KeystoneCorrection

台形補正をするコンポーネント。

GUIに画像が表示されており、4隅をクリックすることで台形補正を行う。

ホワイトボードをカメラで撮影しなぞるようにして選択するが、その際ホワイトボードの画像は斜めになっているのでこのコンポーネントが必要。

  • InPort
名称データ型説明
ImageInRTC::CameraImage台形補正をする画像
  • OutPort
名称データ型説明
ImageOutRTC::CameraImage台形補正済みの画像
  • Configuration

4.WhiteBoard (Feature)

実装予定

5.Select

範囲選択をし、選択した矩形の座標を出力するコンポーネント。

選択範囲を左上を基準とし0~1で表す。真ん中から右下まで選択した場合、Start = (0.5, 0.5) End = (1, 1)となる。

Camera Image Select の3つに加え画像切り取りコンポーネントを作成することで画像切り取りができるコンポーネント群をかんたんに作れる。

  • InPort

    名称データ型説明
    ShowImageCameraImage選択する際の背景の画像
    CompeteMotionTimedString終了した動作名
    StatusCodeTimedUShortステータスコード
  • OutPort

    名称データ型説明
    StartPosRTC::TimedPoint2D指定された範囲の始点
    EndPosRTC::TimedPoint2D指定された範囲の終点
  • Configuration

    名称データ型説明初期値制限
    Widthint選択ウィンドウの横幅800400<=x<=1600
    Heightint選択ウィンドウの高さ450225<=x<=900

5.Erase (Feature)

選択された範囲を元に消すためのパスを決定するコンポーネント。

  • InPort

    名称データ型説明
    StartPosRTC::TimedPoint2D指定された範囲の始点
    EndPosRTC::TimedPoint2D指定された範囲の終点
  • OutPort

    名称データ型説明
    MovePathTimedStringSeqx:yの形式で移動する座標のデータを出力する
  • Configuration

    名称データ型説明初期値制限

5.MoveInitial

初期位置(左上)に本体を移動させるコンポーネント。

移動しきったかの検出にはリミットスイッチを用いる。

  • InPort

    名称データ型説明
    MoveToInitialRTC::Time初期位置に戻るタイミングを指定
  • OutPort

    名称データ型説明
    CommandRTC::TimedString初期位置に戻るためのコマンドを生成
  • Configuration

    名称データ型説明初期値制限
    TimeOutint移動完了せずタイムアウトする時間-1-1<=x<=60

6.InitialSetting

本体のサイズ、ホワイトボードの横幅をリミットスイッチを用いて検出するコンポーネント。

単位はステッピングモーターの回転数。

  • InPort

    名称データ型説明
    SettingRTC::Time検出するタイミング
  • OutPort

    名称データ型説明
    CommandRTC::TimedString初期設定を行うためのコマンドを生成
  • Configuration

    名称データ型説明初期値制限

7.Pump

指定された量の水をポンプから出すコンポーネント。

単位はmL

  • InPort

    名称データ型説明
    WaterAmountRTC::TimedUShortポンプから出す水の量
  • OutPort

    名称データ型説明
    PumpWaterAmountRTC::TimedStringポンプから水を出すためのコマンド
  • Configuration

    名称データ型説明初期値制限
    Amou

8.Move (Feature)

パスを元に、モーターを動かすためのコマンドを生成するコンポーネント。

  • InPort

    名称データ型説明
    CommandRTC::TimedPoint2Dモーターを動かすための座標
  • OutPort

    名称データ型説明
    CommandRTC::TimedStringハードウェアに送信するコマンド
  • Configuration

    名称データ型説明初期値制限

9.Serial

シリアル通信のRead/Writeを行うコンポーネント。

  • InPort

    名称データ型説明
    WriteRTC::TimedStringシリアル通信で書き込むデータ
  • OutPort

    名称データ型説明
    ReadRTC::TimedStringシリアル通信で読み込んだデータ
  • Configuration

    名称データ型説明初期値制限
    Pathstringシリアル通信を行うデバイスのパスEmptyString
    Boundrateintシリアル通信を行うための速度9600Undefined

Parts

51
QtyValueFootprintReferences
7Q_NMOS_GDS2sk2232:TO254P1054X470X1955-3Q1, Q2, Q3, Q4, Q5, Q6, Q7
6SW_PushConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalSW1, SW2, SW3, SW4, SW5, SW6
6zResistor_THT:R_Box_L8.4mm_W2.5mm_P5.08mmR1, R2, R3, R4, R5, R6
5LEDConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalD1, D2, D3, D4, D5
4Conn_01x04Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ1, J2, J3, J4
4MountingHole_3.2mm_M3MountingHole:MountingHole_3.2mm_M3MH1, MH2, MH3, MH4
3CCapacitor_THT:C_Rect_L4.0mm_W2.5mm_P2.50mmC1, C3, C4
3Pololu_Breakout_A4988A4988_STEPPER_MOTOR_DRIVER_CARRIER:MODULE_A4988_STEPPER_MOTOR_DRIVER_CARRIERA1, A2, A3
2ActuatorConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ6, J7
2RResistor_THT:R_Box_L8.4mm_W2.5mm_P5.08mmR7, R8
174HC165Package_DIP:DIP-16_W7.62mmU1
174HC595Package_DIP:DIP-16_W7.62mmU2
1Arduino_MicroARDUINO_NANO:SHIELD_ARDUINO_NANOA4
1CCapacitor_THT:C_Radial_D8.0mm_H11.5mm_P3.50mmC2
1FanConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalM1
1PumpConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ5
1Q_NPN_ECBPackage_TO_SOT_THT:TO-92L_Inline_WideQ8
1Screw_Terminal_01x02TerminalBlock:TerminalBlock_bornier-2_P5.08mmJ8
1TB6643KQTB6643KQ:SIP1005W50P254L1965H1265Q7U3

Similar boards

  • 2 layers68.6 × 53.3 mmYamabiko a, the printed circuit board in 3D

    Yamabiko a

    airpocket-soundman/chikuwa-flute-robot

    学習では、あらかじめ作った 1,000 曲のセット(runs/targetbank.npz、trainresiduales.py --bank 1000 で自動作成)から毎世代 8 曲を選んで使い回します。評価用の曲は別の乱数で作るので、学習用と重なりません。セットの中身は WAV と図で確認できます:

    44 parts
  • 2 layers99.1 × 53.3 mmPowerpack shield, the printed circuit board in 3D

    Powerpack shield

    railroad-editor/arduino-shields

    28 parts
  • 2 layers99.1 × 81.3 mmDragonRobot, the printed circuit board in 3D

    DragonRobot

    yutotnh/DragonRobot

    31 partsMIT
  • 2 layers245.1 × 160 mm8-Bit CPU 32k, the printed circuit board in 3D

    8-Bit CPU 32k

    slu4coder/Minimal-64x4-Home-Computer

    My DIY TTL home computer with VGA and PS/2 and 4x the processing power of a Commodore C64 or Apple II.

    139 parts326
  • 2 layers171.5 × 106.7 mmSequencer, the printed circuit board in 3D

    Sequencer

    westlicht/performer-hardware

    PER|FORMER Eurorack Sequencer - Hardware Design Files

    435 parts110
  • 2 layers306.1 × 130.2 mm8-Bit CPU 32k, the printed circuit board in 3D

    8-Bit CPU 32k

    slu4coder/Minimal-64-Home-Computer

    Legacy: Full TTL-only home computer with VGA and PS/2 and twice the processing power of a Commodore 64

    132 parts94
  • 2 layers208.9 × 170.8 mm8-Bit CPU 32k, the printed circuit board in 3D

    8-Bit CPU 32k

    slu4coder/Minimal-UART-Computer-3

    Version 3 of my educational DIY TTL computer built around a UART serial interface - now with blinkenlights!

    207 parts54

Questions

How big is the AutoEraser PCB?

It measures 140.3 × 89.7 mm and has 2 copper layers, 1.6 mm thick.

What parts does the AutoEraser use?

51 parts, built around the TB6643KQ,8, 74HC165D and 74HC595. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the AutoEraser KiCad files?

From the Ruchi12377/AutoEraser repository on GitHub, at the commit this page was made from: the board is WB/WB.kicad_pcb and its schematic WB/Cane/Cane.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the AutoEraser design in my own project?

Its repository states no licence, so its author keeps all rights: ask Ruchi12377 before reusing the design.