romes_cycのアイコン画像
romes_cyc 2021年02月28日作成 (2021年12月07日更新)
製作品 製作品 閲覧数 1079
romes_cyc 2021年02月28日作成 (2021年12月07日更新) 製作品 製作品 閲覧数 1079

Arduino内蔵!コップを光らしてくれるコースター

Arduino内蔵!コップを光らしてくれるコースター

つくるもの

動画のように光るコースターをつくります.Arduino UnoやArduino Pro miniに搭載されているものと同じATMega 328pを利用して,Arduino Pro mini互換ボードとして動作させています.
点灯パターンを自由に設定することが可能です.

ここに動画が表示されます

途中のAVRのヒューズビットの書き込みの方法は自作Arduinoを作るときにも役立ちます.

作り方

回路

必要な部品(すべて秋月電子で購入しました.未実装の部品は記載していません)

番号 部品名
U1 ATmega328P-AU
J2 スライドスイッチ 1回路2接点( P-15643)
BT1 CR2032用電池ホルダー CH28-2032LF
R2~R13 チップ抵抗 330Ω(1608M)
R15 チップ抵抗 10kΩ (1608M)
D2~D13 好きな色のチップLED(1608M)(明るさは抵抗値を変えて調整してください)
C3 チップコンデンサ 0.1uF(1608M)
スルホール用テストワイヤ TP-200(プログラムを書き込むときにあると便利です)
AVR ライター USBasp https://amzn.to/2O5GgxQ

※ AVRライターはArduino Unoでも代用ができますが,ヒューズビットとブートローダの書き込みのコマンドが若干変わります(後述).

回路図

ポイント

  • Arduinoのデジタルピンとして使えるポートの先にLEDがぶら下げた
  • AVR-ISPはArduinoのヒューズビットの設定やブートローダを書き込むために利用します.
  • 右上のTX,RX,リセットはArduinoIDEからプログラムを書き込むときに利用します.Reset端子も用意しておくことで,自動書き込みができるうえにRESETボタンを省略することも可能です.

備考

  • Y1,C1,C2はArduinoを動作させるための水晶発振器と発振させるためのCです.今回はAVRマイコン内蔵のクロックを利用していることから,実装していません.

  • 今回はうまく行かなかったので記事には書いていませんが,U2の反射型フォトセンサでコップを検知して,コップがあるときだけ点灯するようにしようとしていました.その名残がU2,R14,R16,R17,R18です.(R17とR18はセンサの電源をマイコンのポートから必要なときだけ供給するか,バッテリーから常時供給するかを0Ω抵抗で選べるようにするためにあります)

PCB

PCBはこのような形で実装しました.
配置で意識したこと

  • コースターなので,上から見たときに余分な部品が見えないようにする.(=LED以外の部品は裏面に配置)
  • コップを置いたときにいい感じに見えるように中心から円弧状に配置する.(KiCadの部品プロパティで角度を直接を指定しました)
  • 未使用のポートは裏面にパッドとして配置しました.万が一のときにはArduinoとしても利用できます.
  • 使うかわからない部品はパッドだけ用意しておきました.(あとから付けたくなってもつけられるようにするため)

PCBの表面

PCBの裏面

PCBの注文

PCBはPCBgogoに注文しました.
KiCadで設計したガーバーファイルをzipにまとめて送信しました.
基板の製造が500円,送料が2000円ほどでした.
PCBの色は注文時に選ぶことができます.

注文方法はこちらがわかりやすいです.
https://www.jp3cyc.jp/2017/pcbgogoの注文方法 pcbステンシル/

はんだ付け

頑張ってはんだ付けします.
おすすめのハンダゴテはHakkoのFX600です.

キャプションを入力できます キャプションを入力できます

プログラム

コースターとAVR Writerの接続

コースターとAVR WriterのMISO,MOSI,SCK,RESET,VCC,GND端子をそれぞれ接続します.
このときにスルホール用テストワイヤ TP-200を利用すると,コースター側にピンをはんだ付けしなくても良くなり,完成形の見た目がよくなります.

動作確認はヒューズビットの読み出しを行い,なんらかの値が読み取れればOKとします.

avrdude -c usbasp -p m328p -U lfuse:r:con:h -U hfuse:r:con:h -U efuse:r:con:h

AVR WriterはArduino Unoでも代用できます.そのときは-c usbaspのところがわかります.(配線も変わります.結線はArduino AVR writerのソースコードの中にあります.)
このサイトが詳しく書かれていて,わかりやすかったです.https://synapse.kyoto/tips/ArduinoISP_AVRWriter/page001.html

AVRマイコンのヒューズビットの書き込み

Arduino IDEをインストールしたコンピュータでコマンドプロンプトを開き,以下のコマンドを実行します.
注意:書き込みに失敗するとAVR 高電圧ライターを使用しない限り,もとには戻りません.事前の読み出しで成功していることを確認してから行ってください.

avrdude -c usbasp -p m328p -U lfuse:w:0xe2:m -U hfuse:w:0xde:m -U efuse:w:0x07:m

Arduinoブートローダの書き込み

ArduinoIDEを起動し,プログラムを書きます.

コースターのプログラム例

#define NUM_LED 12 int pin_led[NUM_LED] = {2,3,4,5,6,7,8,9,10,11,12,13}; int cnt = 1; void setup() { // put your setup code here, to run once: for(int i=0;i<NUM_LED;i++){ pinMode(pin_led[i],OUTPUT); } } void loop() { // put your main code here, to run repeatedly: if(cnt > 0xfff) cnt = 0; led_write(cnt); cnt++; delay(1000); } void led_write(int led_pattern){ for(int i=0;i<NUM_LED;i++){ digitalWrite(pin_led[i],(led_pattern>>i)&0x01); } }

ボードとプロセッサのところを図のように設定します.
ボードとしてはPro miniと同じで,クロックが内蔵の8MHzで動作するため以下のような設定になります.

ボード Arduino Pro or Pro Mini
プロセッサ Atmega328p 3.3V 8MHz

キャプションを入力できます

つづけて,スケッチ→コンパイルしたバイナリを出力を選びます.
キャプションを入力できます

そうすると,保存する場所を訪ねられるので任意のフォルダを指定して保存します.
すると,以下のように3つのファイルが保存されます.
この中の,coaster-firmware.ino.with_bootloader.eightanaloginputs.hexを書き込みます.(PCの設定によっては最後の.hexが表示されないかもしれません)
キャプションを入力できます

coaster-firmware.ino.with_bootloader.eightanaloginputs.hexのあるフォルダまでコマンドプロンプトで移動して,ブートローダとファームウェアを書き込みます.(コマンドプロンプトでのフォルダの移動の仕方:https://eng-entrance.com/windows-command-cd)

avrdude -c usbasp -p m328p -U flash:w:coaster-firmware.ino.with_bootloader.eightanaloginputs.hex

Arduinoファームウェアのアップロード

初回は,ブートローダの書き込みと同時にファームウェアが書き込まれます.
2回目以降はブートローダの書き込みと同じ方法を行うことで書き込むことも可能ですし,Arduinoのように書き込む方法もあります.

Arduino Unoにあるマイコンを取り外して,図のように接続します.そして,Arduinoに書き込むときと同じようにして書き込みます.(このとき,ボードとプロセッサの設定はブートローダのときと同じです)

コースター Arduino Uno
3V 3.3V
GND GND
TX TX
RX RX
RESET RESET

キャプションを入力できます

アクリルカバーの製作

最後にカバーをアクリル板をレーザ加工機で切り取って製作しました.基板の外形が内側に入るようにしています.
3mmのアクリル板と5mmのアクリル板の三枚を重ねています.
レジンなどで固めても楽しいかもしれません.(電池の交換とプログラムの書き込みができる穴は用意しておきたいですが)

レーザーカットしたときの図面

データ

KiCad,ArduinoのデータはGitHubにアップロードしていますので,ご自由にお使いください.
https://github.com/jp3cyc/coaster

ログインしてコメントを投稿する