8.DVmegaをGPIO接続で使う 1
DVmegaをRaspberry pi 3にGPIO接続して、ファームウェアを変更しました。
RaspberryPi1B,Pi2Bでは,UART0がGPIOヘッダーに使われています。
*注:UART( Universal Asynchronous Receiver Transmitter )
シリアル信号をパラレル信号に変換したり、その逆でパラレル信号を
シリアル信号に変換したりする通信回路
Raspberry Pi3B,ZeroWでは,WifiとBluetoothが搭載されたので仕様が変更されています。
この影響でこれまで簡単だったGPIO接続でBlueDVを使う方法が少し複雑になっています。
私は、これにはまりGPIO接続でBlueDVが使えるようになるまで10時間くらいかかりました。
さらに、現在使われているBlueDV-09488-preBETA-Linux.zip 2018-02-23 21:42 2.6Mでは、
私の環境だけかもしれませんが。BlueDVの設定ファイルを自力で書き換えないとダメなようです。
ま、使えるので良しとしていますし新しいバージョンになるのを期待しています。(2018.6.30)
1.ファームウェアをバージョンアップ
手持ちのDVmegaのファームウェアが3.14JPと少し古いのでこれを機に、まずは、最新版の3.19JPに
変更しておきました。
PC-インターフェース版のDVmegaをGPIO接続できるようにばらしました。
USBシリアルインターフェースを取り外し、DVmegaをRaspberry pi ZEROに接続して
pi-starを動かしてみます。簡単に動きましたので、BlueDVも簡単に動くだろうと思ったのですが....
はまりました。。(^^;
せっかくなので、現在DVmegaのファームウェアが3.14JPと古いので
変更してみます。
そのためには、ジャンパー線が必要です。
ATMEGA328のリセットピン(C45下部)とGPIOコネクタの7番ピンの間にジャンパケーブルを半田付けが
必要です。
以下を参考に接続しました。
参考にしたHP
https://todovc.blogspot.com/2016/05/raspbian-jessie-dvmega.html?m=1
https://g0wfv.wordpress.com/how-to-update-dvmega-firmware-without-a-programmer-or-an-arduino/
https://g0wfv.wordpress.com/how-to-mmdvmhost-with-a-dvmega/#getty
OSは、Jessieを使いました。2017-04-10-raspbian-jessie
upデートすれば最新版になりますがHPに従って挑戦(^^;
というか、いろいろ試しても上手くいかなかったのです。
ですから、こんな時はホームページで紹介されているとおりやるのが基本です。
一度動けば、何が悪いのかわかります。
pi@DVmega:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 8.0 (jessie)
Release: 8.0
Codename: jessie
pi@DVmega:~ $
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install avrdude
$ sudo apt-get install git python-dev python-rpi.gpio
$ git clone https://github.com/openenergymonitor/avrdude-rpi.git
$ cd avrdude-rpi
$ sudo cp autoreset /usr/bin
$ sudo cp avrdude-autoreset /usr/bin
$ sudo mv /usr/bin/avrdude /usr/bin/avrdude-original
$ sudo ln -s /usr/bin/avrdude-autoreset /usr/bin/avrdude
ここを参考にttyAMA0を使用できるように設定
sudo apt-get update
sudo apt-get install git
cd ~/Downloads
git clone https://github.com/g4klx/MMDVMHost.git
cd MMDVMHost
sudo apt-get update
sudo apt-get install build-essential
cd MMDVMHost
make
nano MMDVM.ini
Modemの項目でttyAMA0をいかして保存
[Modem]
# Port=/dev/ttyACM0
Port=/dev/ttyAMA0
#Port=\\.\COM3
sudo systemctl stop serial-getty@ttyAMA0.service
sudo systemctl disable serial-getty@ttyAMA0.service
nano /boot/cmdline.txt
console=serial0,115200を削除
On the Raspberry Pi 3 ONLY, disable built-in Bluetooth…
sudo bash -c 'echo "dtoverlay=pi3-disable-bt" >> /boot/config.txt'
sudo reboot
sambaをインストールしておくと簡単にファイルをコピーできます。
USBメモリーにコピーしてラズパイに移しても簡単ですね。
ここから~/avrdude-rpiに
DVMEGA_RH_V319_JAPAN.zipファームウェアをダウンロードしてunzipで解凍
pi@DVmega:~/avrdude-rpi $ ls -l
合計 132
-rw-r--r-- 1 pi pi 1791 1月 2 21:21 Changelog.txt
-rwxr--r-- 1 pi pi 26041 6月 11 21:27 DVMEGA_RH_V319_JAPAN.zip
-rw-r--r-- 1 pi pi 85951 1月 2 21:27 DVMEGA_RH_V319_UNO_JP.hex
-rw-r--r-- 1 pi pi 1694 6月 11 21:23 README.md
-rwxr-xr-x 1 pi pi 978 6月 11 21:23 autoreset
-rwxr-xr-x 1 pi pi 76 6月 11 21:23 avrdude-autoreset
-rwxr-xr-x 1 pi pi 349 6月 11 21:23 install
pi@DVmega:~/avrdude-rpi $
pi@DVmega:~/avrdude-rpi $ avrdude -p m328p -c arduino -P /dev/ttyAMA0 -b 115200 -F -U DVMEGA_RH_V319_UNO_JP.hex -v
紹介されているコマンドが上記のようになります。
avrdude -p m328p -c arduino -P /dev/ttyAMA0 -b 115200 -F -U flash:w:<filename> -v
このように紹介されています。flash:w:<filename>の書き方(ファイルを置く場所)に試行錯誤でした。
flash:w:とかいらないんです。これがわからなくて、だいぶ苦労しました。
avrdude-original: Version 6.1, compiled on Jul 7 2015 at 10:29:47
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "/etc/avrdude.conf"
User configuration file is "/root/.avrduderc"
User configuration file does not exist or is not a regular file, skipping
Using Port : /dev/ttyAMA0
Using Programmer : arduino
Overriding Baud Rate : 115200
avrdude-original: Using autoreset DTR on GPIO Pin 7
AVR Part : ATmega328P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : Arduino
Description : Arduino
Hardware Version: 3
Firmware Version: 4.4
Vtarget : 0.3 V
Varef : 0.3 V
Oscillator : 28.800 kHz
SCK period : 3.3 us
avrdude-original: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude-original: Device signature = 0x1e950f
avrdude-original: safemode: lfuse reads as 0
avrdude-original: safemode: hfuse reads as 0
avrdude-original: safemode: efuse reads as 0
avrdude-original: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude-original: erasing chip
avrdude-original: reading input file "DVMEGA_RH_V319_UNO_JP.hex"
avrdude-original: input file DVMEGA_RH_V319_UNO_JP.hex auto detected as Intel Hex
avrdude-original: writing flash (30554 bytes):
Writing | ################################################## | 100% 4.29s
avrdude-original: 30554 bytes of flash written
avrdude-original: verifying flash memory against DVMEGA_RH_V319_UNO_JP.hex:
avrdude-original: load data flash data from input file DVMEGA_RH_V319_UNO_JP.hex:
avrdude-original: input file DVMEGA_RH_V319_UNO_JP.hex auto detected as Intel Hex
avrdude-original: input file DVMEGA_RH_V319_UNO_JP.hex contains 30554 bytes
avrdude-original: reading on-chip flash data:
Reading | ################################################## | 100% 3.20s
avrdude-original: verifying ...
avrdude-original: 30554 bytes of flash verified
avrdude-original: safemode: lfuse reads as 0
avrdude-original: safemode: hfuse reads as 0
avrdude-original: safemode: efuse reads as 0
avrdude-original: safemode: Fuses OK (E:00, H:00, L:00)
strace: |autoreset: Broken pipe
strace: |autoreset: Broken pipe
strace: |autoreset: Broken pipe
strace: |autoreset: Broken pipe
strace: |autoreset: Broken pipe
avrdude-original done. Thank you.
strace: |autoreset: Broken pipe
pi@DVmega:~/avrdude-rpi $
こんなところでこんなに時間がかかるとは。(^^;
8時間超の試行錯誤で成功!!