編集履歴一覧に戻る
romes_cycのアイコン画像

romes_cyc が 2021年03月01日00時02分22秒 に編集

コメント無し

本文の変更

# つくるもの 動画のように光るコースターをつくります.Arduino UnoやArduino Pro miniに搭載されているものと同じATMega 328pを利用して,Arduino Pro mini互換ボードとして動作させています. 点灯パターンを自由に設定することが可能です. @[youtube](https://www.youtube.com/embed/iONT3gRuxBM) 途中の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でも代用ができますが,ヒューズビットとブートローダの書き込みのコマンドが若干変わります(後述). ![回路図](https://camo.elchika.com/81ca68cc85605d705db444505f5841e7d8ddd675/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33663230366638392d376461632d346666312d393261392d3039353238356366636232642f65316562353930372d376562342d343932332d393233342d636336306162373665313462/) ポイント - 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の表面](https://camo.elchika.com/12d20387913e6e92d34a5004189597dc45a993bb/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33663230366638392d376461632d346666312d393261392d3039353238356366636232642f66663866643834322d343333632d346230312d623266342d646533613161306538646561/) ![PCBの裏面](https://camo.elchika.com/9fe89a768b42199bc6b5266f3f9fe04bc0e7db69/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33663230366638392d376461632d346666312d393261392d3039353238356366636232642f30343862383464352d393066342d346165392d383765392d626339386366393738336135/) ## PCBの注文 PCBはPCBgogoに注文しました. KiCadで設計したガーバーファイルをzipにまとめて送信しました. 基板の製造が500円,送料が2000円ほどでした. PCBの色は注文時に選ぶことができます. 注文方法はこちらがわかりやすいです. https://www.jp3cyc.jp/2017/pcbgogo%E3%81%AE%E6%B3%A8%E6%96%87%E6%96%B9%E6%B3%95%E3%80%80pcb%E3%82%B9%E3%83%86%E3%83%B3%E3%82%B7%E3%83%AB/ ## はんだ付け 頑張ってはんだ付けします. おすすめのハンダゴテはHakkoのFX600です. ![キャプションを入力できます](https://camo.elchika.com/7123ff8f092c51bca946eead63324e5430d3f533/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33663230366638392d376461632d346666312d393261392d3039353238356366636232642f65623539646534622d336637662d343562632d383130352d626666323139363439326436/) ![キャプションを入力できます](https://camo.elchika.com/6e3c34b9ca28349f9e2802044218a793a7899d87/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33663230366638392d376461632d346666312d393261392d3039353238356366636232642f32663833646235302d333431652d346434632d396638382d363334343264663936333733/) # プログラム ## コースターとAVR Writerの接続 コースターとAVR WriterのMISO,MOSI,SCK,RESET,VCC,GND端子をそれぞれ接続します. このときにスルホール用テストワイヤ TP-200を利用すると,コースター側にピンをはんだ付けしなくても良くなり,完成形の見た目がよくなります. 動作確認はヒューズビットの読み出しを行い,なんらかの値が読み取れればOKとします. ```AVRヒューズビットの読み込み 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 高電圧ライターを使用しない限り,もとには戻りません.事前の読み出しで成功していることを確認してから行ってください. ```AVRヒューズビットの書き込み avrdude -c usbasp -p m328p -U lfuse:w:0xe2:m -U hfuse:w:0xde:m -U efuse:w:0x07:m ``` ## Arduinoブートローダの書き込み ArduinoIDEを起動し,プログラムを書きます. ```arduino:コースターのプログラム例 #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 | ![キャプションを入力できます](https://camo.elchika.com/47981db9eb4fd49cf5b9d2c95cff5272791a704d/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33663230366638392d376461632d346666312d393261392d3039353238356366636232642f38373764646663312d313732642d343466372d396533302d343936363461306163313934/) つづけて,スケッチ→コンパイルしたバイナリを出力を選びます. ![キャプションを入力できます](https://camo.elchika.com/8cdd2e39d4917ea70c4820cfd9cbaafa5ad1984a/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33663230366638392d376461632d346666312d393261392d3039353238356366636232642f66363835656237632d393034302d343262642d613638622d643536343439613436393365/) そうすると,保存する場所を訪ねられるので任意のフォルダを指定して保存します. すると,以下のように3つのファイルが保存されます. この中の,coaster-firmware.ino.with_bootloader.eightanaloginputs.hexを書き込みます.(PCの設定によっては最後の.hexが表示されないかもしれません) ![キャプションを入力できます](https://camo.elchika.com/2656edb62e6987ce48f25f9c22d0f2d30b0b94e6/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33663230366638392d376461632d346666312d393261392d3039353238356366636232642f61613936386433312d313036622d343033362d393066302d613637663863356234656266/) coaster-firmware.ino.with_bootloader.eightanaloginputs.hexのあるフォルダまでコマンドプロンプトで移動して,ブートローダとファームウェアを書き込みます.(コマンドプロンプトでのフォルダの移動の仕方:https://eng-entrance.com/windows-command-cd) ```AVRヒューズビットの書き込み 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 | ![キャプションを入力できます](https://camo.elchika.com/a6a3a98a3871de7d1ef9b2b8510afd8ed6552632/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33663230366638392d376461632d346666312d393261392d3039353238356366636232642f33663161613431612d663565352d346166352d396532302d356230396264363963656131/) # アクリルカバーの製作 最後にカバーをアクリル板をレーザ加工機で切り取って製作しました.基板の外形が内側に入るようにしています.

-

直径3mmのアクリル板三枚重ねています.

+

3mmのアクリル板と5mmのアクリル板の三枚重ねています.

レジンなどで固めても楽しいかもしれません.(電池の交換とプログラムの書き込みができる穴は用意しておきたいですが)

+

![レーザーカットしたときの図面](https://camo.elchika.com/aaccd336d1a58e77a4809bc11003635d5887a1f1/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33663230366638392d376461632d346666312d393261392d3039353238356366636232642f37306631653762632d616235312d343235362d386135312d333261343835336139653536/)

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