2014年8月13日 星期三

Arduino pro mini burn-in with pl2303 USB to ttl

最近買了Arduino pro mini,但這是沒有內建USB燒錄介面的 (因為沒買到Nano所以用mini....)
找了不少資料,後來採用這樣的接線方式就能燒錄了,還蠻簡單的
特別要注意到的是因為燒錄時會使用到DTR的腳位,所以需要另外把PL2302的dongle跳線出來才行



當然這是因為我沒有現成可以直接拉DTR的才會這樣,最好還是多花點錢買像下面這張圖的USB轉TTL比較方便…


2014年7月2日 星期三

Modbus/TCP in Android with Python, using modbus_tk

in last case, we use a TCP socket to send Modbus/TCP commnad
and then print out the result to test Modbus/TCP in android

now, we will use a good library for Modbus ==> modbus_tk
you may can find three modbus solutions:
1. pymodbus: it's a good library for python with huge structure...
  it support Modbus/RTU and Modbus/TCP, but I don't use it here.
  because it always need pySerial library. If you can't put the pySerial library into your system, the pymodbus don't work...

2. MinimalModbus: a minimal modbus library. it just support Modbus/RTU.

3. modbus_tk: it's a nice modbus library!! it support Modbus/RTU and Modbus/TCP
  if you don't use Modbus/RTU, you have no need to install pySerial library! (good!)

so finally, I choose modbus_tk to develop modbus program

the step to demonstrate:
1. download modbus-tk here, and then unzip modbus-tk-0.4.2.zip into modbus_tk folder.
2. download mbTcpTest2.py here.
3. the screenshot as below:
in modbus_tk
4. put all the file into your android phone with SL4A, and the execute it!!

enjoy it!!~~





2014年7月1日 星期二

Modbus/TCP with Android and Python

here I had write a Python program with SL4A to demonstrate Modbus/TCP.
there is no any Modbus library used in this case, because I just want show a simple case for Modbus/TCP.
of course, I will use Modbus library later. it will be more easy~

some about this program:
1. data = pack('<BBBBBB', 1, 2, 0, 0, 0, 6)
it's the Modbus/TCP header
2. data = data + pack('<BBBBBB', 1, 4, 0, 0, 0, 4)
it's the Function code 4, and to read 4 registers

here to download

2014年6月29日 星期日

pyserial 安裝

下指令
E:\python\workspace\pyserial\pyserial-2.7>python setup.py install
即可

原來, 之前用easy_install -U pyserial這個指令都沒有安裝完全
正常裝完後, C:\Python27\Lib\site-packages中有:
serial 資料夾
pyserial-2.7-py2.7.egg-info 檔案

我原來裝完後只有 egg檔才會沒有自動提示

這時只要下載pyserial的原始碼解壓後
把它原始碼的部份放到 C:\Python27\Lib\site-packages 中即可
如圖,這是最近安裝 modbus_tk 但一樣用easy_install後沒有提示
只要把其原始碼放入,即會有提示


但說起來也怪,雖然在編輯器沒有提示,但在其console下就有!!
應該是個bug吧
不過手動放原始碼也有好處啦
當你不清楚回傳的東西是什麼時,可以直接連到source code去看,方便很多

Disassemble hp deskjet 3070A

now, the printer is so powerful, and it have many good design for cost down that we can learn.

I will disassemble my printer and look what chips it use, and how it work!



1. here is the control panel.
2.main board




3. WIFI module






2014年1月20日 星期一

make distribution 發布套件

1. 要製作source distribution, 指令為
python setup.py sdist
將產生 .zip 檔
(1)內容如下

(2)下python setup.py sdist指令後如下



2. 另外也可以包成tar.gz, 指令為
python setup.py sdist --formats=gztar,zip
上面指令將產生.zip, .tar.gz



2014年1月19日 星期日

python 安裝 pymodbus

1. 使用easy_install裝好後沒有自動提示
所以又手動裝裝看, 結果竟然有Error!!
找不到 vcvarsall.bat
還不知道為何????
-->剛找到說,這是因為少了 C compiler的原因???(why?)
只要裝了minGW (或是VC的 compiler),再把安裝指令改為:
setup.py install build --compiler=mingw32
-->這還要再找時間來測測看

2. 後來發現 easy_install後,再把從pymodbus網頁下載到的source解壓後,把"pymodbus"這個資料夾放到「C:\Python27\Lib\site-packages」資料夾中即可有「Auto completion」功能
也不需要在「Tools / options / IDE options / Special packages」欄位中加入 pymodbus的文字…
這一點可能再找時間找空白的電腦測試看看


============Error 如下=================
E:\python\workspace\pymodbus\pymodbus-1.2.0>python setup.py install
running install
running bdist_egg
running egg_info
writing requirements to pymodbus.egg-info\requires.txt
writing pymodbus.egg-info\PKG-INFO
writing top-level names to pymodbus.egg-info\top_level.txt
writing dependency_links to pymodbus.egg-info\dependency_links.txt
reading manifest file 'pymodbus.egg-info\SOURCES.txt'
writing manifest file 'pymodbus.egg-info\SOURCES.txt'
installing library code to build\bdist.win-amd64\egg
running install_lib
running build_py
creating build
creating build\lib
copying ez_setup.py -> build\lib
creating build\lib\pymodbus
copying pymodbus\bit_read_message.py -> build\lib\pymodbus
copying pymodbus\bit_write_message.py -> build\lib\pymodbus
copying pymodbus\constants.py -> build\lib\pymodbus
copying pymodbus\device.py -> build\lib\pymodbus
copying pymodbus\diag_message.py -> build\lib\pymodbus
copying pymodbus\events.py -> build\lib\pymodbus
copying pymodbus\exceptions.py -> build\lib\pymodbus
copying pymodbus\factory.py -> build\lib\pymodbus
copying pymodbus\file_message.py -> build\lib\pymodbus
copying pymodbus\interfaces.py -> build\lib\pymodbus
copying pymodbus\mei_message.py -> build\lib\pymodbus
copying pymodbus\other_message.py -> build\lib\pymodbus
copying pymodbus\payload.py -> build\lib\pymodbus
copying pymodbus\pdu.py -> build\lib\pymodbus
copying pymodbus\register_read_message.py -> build\lib\pymodbus
copying pymodbus\register_write_message.py -> build\lib\pymodbus
copying pymodbus\transaction.py -> build\lib\pymodbus
copying pymodbus\utilities.py -> build\lib\pymodbus
copying pymodbus\version.py -> build\lib\pymodbus
copying pymodbus\__init__.py -> build\lib\pymodbus
creating build\lib\pymodbus\client
copying pymodbus\client\async.py -> build\lib\pymodbus\client
copying pymodbus\client\common.py -> build\lib\pymodbus\client
copying pymodbus\client\sync.py -> build\lib\pymodbus\client
copying pymodbus\client\__init__.py -> build\lib\pymodbus\client
creating build\lib\pymodbus\datastore
copying pymodbus\datastore\context.py -> build\lib\pymodbus\datastore
copying pymodbus\datastore\remote.py -> build\lib\pymodbus\datastore
copying pymodbus\datastore\store.py -> build\lib\pymodbus\datastore
copying pymodbus\datastore\__init__.py -> build\lib\pymodbus\datastore
creating build\lib\pymodbus\internal
copying pymodbus\internal\ptwisted.py -> build\lib\pymodbus\internal
copying pymodbus\internal\__init__.py -> build\lib\pymodbus\internal
creating build\lib\pymodbus\server
copying pymodbus\server\async.py -> build\lib\pymodbus\server
copying pymodbus\server\sync.py -> build\lib\pymodbus\server
copying pymodbus\server\__init__.py -> build\lib\pymodbus\server
creating build\bdist.win-amd64
creating build\bdist.win-amd64\egg
copying build\lib\ez_setup.py -> build\bdist.win-amd64\egg
creating build\bdist.win-amd64\egg\pymodbus
copying build\lib\pymodbus\bit_read_message.py -> build\bdist.win-amd64\egg\pymo
dbus
copying build\lib\pymodbus\bit_write_message.py -> build\bdist.win-amd64\egg\pym
odbus
creating build\bdist.win-amd64\egg\pymodbus\client
copying build\lib\pymodbus\client\async.py -> build\bdist.win-amd64\egg\pymodbus
\client
copying build\lib\pymodbus\client\common.py -> build\bdist.win-amd64\egg\pymodbu
s\client
copying build\lib\pymodbus\client\sync.py -> build\bdist.win-amd64\egg\pymodbus\
client
copying build\lib\pymodbus\client\__init__.py -> build\bdist.win-amd64\egg\pymod
bus\client
copying build\lib\pymodbus\constants.py -> build\bdist.win-amd64\egg\pymodbus
creating build\bdist.win-amd64\egg\pymodbus\datastore
copying build\lib\pymodbus\datastore\context.py -> build\bdist.win-amd64\egg\pym
odbus\datastore
copying build\lib\pymodbus\datastore\remote.py -> build\bdist.win-amd64\egg\pymo
dbus\datastore
copying build\lib\pymodbus\datastore\store.py -> build\bdist.win-amd64\egg\pymod
bus\datastore
copying build\lib\pymodbus\datastore\__init__.py -> build\bdist.win-amd64\egg\py
modbus\datastore
copying build\lib\pymodbus\device.py -> build\bdist.win-amd64\egg\pymodbus
copying build\lib\pymodbus\diag_message.py -> build\bdist.win-amd64\egg\pymodbus

copying build\lib\pymodbus\events.py -> build\bdist.win-amd64\egg\pymodbus
copying build\lib\pymodbus\exceptions.py -> build\bdist.win-amd64\egg\pymodbus
copying build\lib\pymodbus\factory.py -> build\bdist.win-amd64\egg\pymodbus
copying build\lib\pymodbus\file_message.py -> build\bdist.win-amd64\egg\pymodbus

copying build\lib\pymodbus\interfaces.py -> build\bdist.win-amd64\egg\pymodbus
creating build\bdist.win-amd64\egg\pymodbus\internal
copying build\lib\pymodbus\internal\ptwisted.py -> build\bdist.win-amd64\egg\pym
odbus\internal
copying build\lib\pymodbus\internal\__init__.py -> build\bdist.win-amd64\egg\pym
odbus\internal
copying build\lib\pymodbus\mei_message.py -> build\bdist.win-amd64\egg\pymodbus
copying build\lib\pymodbus\other_message.py -> build\bdist.win-amd64\egg\pymodbu
s
copying build\lib\pymodbus\payload.py -> build\bdist.win-amd64\egg\pymodbus
copying build\lib\pymodbus\pdu.py -> build\bdist.win-amd64\egg\pymodbus
copying build\lib\pymodbus\register_read_message.py -> build\bdist.win-amd64\egg
\pymodbus
copying build\lib\pymodbus\register_write_message.py -> build\bdist.win-amd64\eg
g\pymodbus
creating build\bdist.win-amd64\egg\pymodbus\server
copying build\lib\pymodbus\server\async.py -> build\bdist.win-amd64\egg\pymodbus
\server
copying build\lib\pymodbus\server\sync.py -> build\bdist.win-amd64\egg\pymodbus\
server
copying build\lib\pymodbus\server\__init__.py -> build\bdist.win-amd64\egg\pymod
bus\server
copying build\lib\pymodbus\transaction.py -> build\bdist.win-amd64\egg\pymodbus
copying build\lib\pymodbus\utilities.py -> build\bdist.win-amd64\egg\pymodbus
copying build\lib\pymodbus\version.py -> build\bdist.win-amd64\egg\pymodbus
copying build\lib\pymodbus\__init__.py -> build\bdist.win-amd64\egg\pymodbus
byte-compiling build\bdist.win-amd64\egg\ez_setup.py to ez_setup.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\bit_read_message.py to bit_rea
d_message.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\bit_write_message.py to bit_wr
ite_message.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\client\async.py to async.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\client\common.py to common.pyc

byte-compiling build\bdist.win-amd64\egg\pymodbus\client\sync.py to sync.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\client\__init__.py to __init__
.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\constants.py to constants.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\datastore\context.py to contex
t.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\datastore\remote.py to remote.
pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\datastore\store.py to store.py
c
byte-compiling build\bdist.win-amd64\egg\pymodbus\datastore\__init__.py to __ini
t__.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\device.py to device.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\diag_message.py to diag_messag
e.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\events.py to events.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\exceptions.py to exceptions.py
c
byte-compiling build\bdist.win-amd64\egg\pymodbus\factory.py to factory.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\file_message.py to file_messag
e.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\interfaces.py to interfaces.py
c
byte-compiling build\bdist.win-amd64\egg\pymodbus\internal\ptwisted.py to ptwist
ed.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\internal\__init__.py to __init
__.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\mei_message.py to mei_message.
pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\other_message.py to other_mess
age.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\payload.py to payload.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\pdu.py to pdu.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\register_read_message.py to re
gister_read_message.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\register_write_message.py to r
egister_write_message.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\server\async.py to async.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\server\sync.py to sync.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\server\__init__.py to __init__
.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\transaction.py to transaction.
pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\utilities.py to utilities.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\version.py to version.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\__init__.py to __init__.pyc
creating build\bdist.win-amd64\egg\EGG-INFO
copying pymodbus.egg-info\PKG-INFO -> build\bdist.win-amd64\egg\EGG-INFO
copying pymodbus.egg-info\SOURCES.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying pymodbus.egg-info\dependency_links.txt -> build\bdist.win-amd64\egg\EGG-
INFO
copying pymodbus.egg-info\requires.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying pymodbus.egg-info\top_level.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying pymodbus.egg-info\zip-safe -> build\bdist.win-amd64\egg\EGG-INFO
creating dist
creating 'dist\pymodbus-1.2.0-py2.7.egg' and adding 'build\bdist.win-amd64\egg'
to it
removing 'build\bdist.win-amd64\egg' (and everything under it)
Processing pymodbus-1.2.0-py2.7.egg
Removing c:\python27\lib\site-packages\pymodbus-1.2.0-py2.7.egg
Copying pymodbus-1.2.0-py2.7.egg to c:\python27\lib\site-packages
pymodbus 1.2.0 is already the active version in easy-install.pth

Installed c:\python27\lib\site-packages\pymodbus-1.2.0-py2.7.egg
Processing dependencies for pymodbus==1.2.0
Searching for twisted>=12.2.0
Reading https://pypi.python.org/simple/twisted/
Best match: Twisted 13.2.0
Downloading https://pypi.python.org/packages/source/T/Twisted/Twisted-13.2.0.tar
.bz2#md5=83fe6c0c911cc1602dbffb036be0ba79
Processing Twisted-13.2.0.tar.bz2
Writing c:\users\malo\appdata\local\temp\easy_install-x42suz\Twisted-13.2.0\setu
p.cfg
Running Twisted-13.2.0\setup.py -q bdist_egg --dist-dir c:\users\malo\appdata\lo
cal\temp\easy_install-x42suz\Twisted-13.2.0\egg-dist-tmp-m3xy4n
error: Setup script exited with error: Unable to find vcvarsall.bat