Malay
颜色选择
阳光橙
深夜黑
天空蓝
葡萄紫
薄荷绿
深海蓝
首页
论坛
佳礼报道
新闻
搜索
10037
查看
68
回复

Arduino + Router 控制家电

[复制链接]

楼主: 西门庆33       显示全部楼层   阅读模式

楼主
 楼主| 发表于 15-1-2013 11:29 PM | 显示全部楼层
yau9264 发表于 15-1-2013 11:02 PM
不好意识,我是读政府poli的,刚开此学embeded system已经要做fyp 的purposal了。说以很多东西不会
如果要 ...

对不起,我不熟悉PIC。你可以联络板主,他叫pic。

pic板主你可以帮帮yau9264吗?

这个Pinguino和Arduino相似,是使用PIC的
http://pinguino.cc/
回复

使用道具 举报

楼主
 楼主| 发表于 16-1-2013 12:01 AM | 显示全部楼层
我的疑问终于成真了。这个Pinguino曾经卖RM三十多(忘了真真的价钱),现在卖RM114.17。当时我还以为Element14报错价(因为Pinguino官方主页报价贵很多 ),特地发了一封Email给Element14,Element14打电话给我,说价钱没错。其实我也不太想买这个Pinguino,即然这样便宜,就此订了一个。现在还没用着。

这大约是一两年前的事。现在我打开Element14的order history。豈有此理,之前的order history都没有了,只乘下18/11/2012号到最近的history
回复

使用道具 举报

发表于 16-1-2013 06:33 PM | 显示全部楼层
@pic
请版主帮帮忙。
谢谢
回复

使用道具 举报

楼主
 楼主| 发表于 16-1-2013 08:42 PM | 显示全部楼层
yau9264 发表于 16-1-2013 06:33 PM
@pic
请版主帮帮忙。
谢谢

如果真的没办法,使用这个8bit PIC18F2550做的pinguino吧!
简单且便宜,很容易上手。只要你看了它的例子,跟Arduino的源码没有什么分别。
pinguino4.jpg
pinguino_sans_bridge.jpg
s_pinguinoPCB.jpg 本帖最后由 西门庆33 于 16-1-2013 08:43 PM 编辑

回复

使用道具 举报

发表于 16-1-2013 10:28 PM | 显示全部楼层
西门庆33 发表于 16-1-2013 08:42 PM
如果真的没办法,使用这个8bit PIC18F2550做的pinguino吧!
简单且便宜,很容易上手。只要你看了它的例 ...

请问‘force application at boot''run application'是什么用途。
user i/o 是让我们的data进、出以控制relay,对吧?
回复

使用道具 举报

发表于 17-1-2013 09:38 AM | 显示全部楼层
yau9264 发表于 16-1-2013 06:33 PM
@pic
请版主帮帮忙。
谢谢

请看
论坛 › 资讯科技› 音响、电子、电器论坛› 单晶片分区

请仔细的看版规 1~3,然后清楚的发帖, 自然有人会帮你, 谢谢

回复

使用道具 举报

楼主
 楼主| 发表于 21-1-2013 12:14 AM | 显示全部楼层
Arduino有许多版本,可以从这里了解一二
http://www.sparkfun.com/pages/arduino_guide
回复

使用道具 举报

发表于 2-2-2013 02:47 AM | 显示全部楼层
西门庆33 发表于 13-10-2012 07:41 PM
安装前
  • 支持OpenWRT的无线路由器,这制作是跟据TP-LINK TL-WR1043ND无线路由器。

  • 安安~~~ 西门大大 我在你网页没看到 relayduino.zip ocean kta223 Contro 。。。的下载点 。。。请问还有办法下载吗。。。。。。你的PROJECT 做到很好~~~但是 没学过 ARDUINO >< .....最近在学 ANDROID 的 WIFI....... 和用PIC 与 ANDROID 手机沟通 。。开关RELAY.............................  只成功做到 USB 和 BLUETOOTH..............................但WIFI 完全没什么会 》《 感觉你的 设计很不错 。。。。好想学 ARDUINO ><
    回复

    使用道具 举报

    楼主
     楼主| 发表于 2-2-2013 08:17 AM | 显示全部楼层
    longcrystal 发表于 2-2-2013 02:47 AM
    安安~~~ 西门大大 我在你网页没看到 relayduino.zip ocean kta223 Contro 。。。的下载点 。。。请问还有 ...

    我试了,没问题,可以从我的网站下载

    relayduino.zip ocean kta223 Contro不是我编写的sketch,它出自出Ocean Control,你可以去它的网站下载。我的网页也是weblink去它那儿。

    以下16 Output Arduino Controller才是我编写的Arduino Sektch。简化了许多,供参考。

    不一定要用Arduino,任何控制器加以下USB to Serial接口都可以使用:
    • 有FTDI to serial
    • PL2303
    • CP201x的

    但必须使用指定指令。请看19#

    回复

    使用道具 举报

    发表于 17-3-2013 12:37 PM | 显示全部楼层
    楼主,想问下你的project 有real time feedback吗?
    回复

    使用道具 举报

    楼主
     楼主| 发表于 17-3-2013 11:15 PM | 显示全部楼层
    wilson16 发表于 17-3-2013 12:37 PM
    楼主,想问下你的project 有real time feedback吗?

    没有real time feedback,仅仅是自动机刷新(Auto Refresh)。
    当次运行程序时,它会从router读取Arduino的最新状态,然後显视到屏幕上。之後每10秒刷新屏幕,当然你也可以手动刷新。

    Refresh值是可以随意设定的。打开main.js文件,更改refreshTimeout就行了。

    以下例子设定Refresh值为5秒,意思是每5秒将从router读取Arduino的状态。
    var refreshTimeout = 5000; //set refresh timer to 5 seconds (5000 milliseconds)

    回复

    使用道具 举报

    发表于 24-7-2013 11:08 AM | 显示全部楼层
    请问下你的arduino是用什么收data的?
    回复

    使用道具 举报

    楼主
     楼主| 发表于 24-7-2013 09:15 PM | 显示全部楼层
    wilson16 发表于 24-7-2013 11:08 AM
    请问下你的arduino是用什么收data的?

    是使用串行沟通
    www/cgi-bin/luaSerial是一个软件,由lua语言编写,作用是把网资料转换为serial data,通过router的USB port把资料传送至Arduino。

    比如你的router IP是 192.168.1.1,当你输入http://192.168.1.1/cgi-bin/luaSerial?ABC123,凡是在后的值都会被传送到Arduino,所以Arduino知道你在输送ABC123。返之,从Arduino输出的资料会通过串囗(USB to Serial)传送回luaSerial处理。最后由Ajax读取与显示。

    简单的讲,luaSerial是一个中间人(软件),负责路由器与Arduino沟通

    以下是luaSerial的代码,是我用了好一段时间得出来的结果
    1. #!/usr/bin/lua

    2. -- LuaSerial interface
    3. -- for Wireless Router Home Automation
    4. -- by SM.Ching http://ediy.com.my
    5. --
    6. -- Put this file to /www/cgi-bin directory of router
    7. -- use code below to allow 0755 permission for luaSerial file
    8. -- chmod 0755 /www/cgi-bin/luaSerial
    9. --
    10. -- protocol (Receiving from serial port):
    11. -- @aaccpp
    12. -- where aa is the Arduino address ranged from 0 to 255 (0 means all Arduino)
    13. -- where cc in the command (TG, ON, OF, RS)
    14. -- where pp is the parameters or channel ranged from 0 to 8 (0 means all channes)
    15. -- to toggle output for channel 1: @00TG1
    16. -- to get status from all output: @00RS0
    17. --
    18. -- protocal (Sending to serial port):
    19. -- #aapp
    20. -- where aa is the Arduino address ranged from 0 to 255 (0 means all Arduino)
    21. -- where pp is either 1 or 0 (ON or OFF for a channel), or ranged from 0(00000000) to 255(11111111) for all channels

    22. port= "/dev/ttyUSB0"
    23. serialout= io.open(port,"w")  --open serial port and prepare to write data
    24. serialin= io.open(port,"r")   --open serial port and prepare to read data

    25. function readSerial()
    26.         while true do
    27.                 --serialData= nil
    28.                 serialData= serialin:read();serialin:flush() -- read data from serial port

    29.                 if string.len(serialData)>0 then
    30.                         serData = serialData
    31.                 end

    32.                 if  string.len(serialData) == 0 then
    33.                         return serData
    34.                 end

    35.         end
    36. end

    37. function toggleOutput()
    38.         serialout:write(queryStr)
    39.         queryResult= readSerial()                                                -- read data from serial port
    40.         queryResult= string.sub(queryResult,5)    -- from character 5 until the end, eg. 1 (is on)
    41.        if queryResult== "1" then
    42.                   cmd="of"
    43.         else
    44.                 cmd="on"
    45.         end
    46.         str= address..cmd..parameter                                        -- eg. @00of2 (including \r)
    47. end

    48. ----------------------------------------------------------------

    49. str= os.getenv("QUERY_STRING").."\r"          -- get message from URL and terminate with carriage return(\r), eg. @00on2
    50. str= string.upper(str)
    51. address= string.sub(str,1,3)                                -- get first 3 characters, eg. @00
    52. cmd= string.sub(str,4,5)                                          -- from character 4 until character 5, eg. on
    53. parameter= string.sub(str,6)           -- from character 6 until the end, eg. 2 (including \r)
    54. queryStr= address.."rs"..parameter                -- eg. @00rs2

    55. if cmd=="TG" then
    56.   toggleOutput()
    57. end

    58. serialout:write(str)                                 -- write string(str) to serial port
    59. readSerial()                                                        -- read data from serial port, use to clear serial buffer
    60. serialout:write(queryStr)                        -- write string(queryStr) to serial port
    61. print(readSerial())                                        -- read data from serial port and display it
    复制代码

    评分

    参与人数 1人气 +5 收起 理由
    wilson16 + 5

    查看全部评分

    回复

    使用道具 举报

    发表于 25-7-2013 04:46 PM | 显示全部楼层
    西门庆33 发表于 24-7-2013 09:15 PM
    是使用串行沟通
    www/cgi-bin/luaSerial是一个软件,由lua语言编写,作用是把网资料转换为serial data,通 ...

    请问如果用visualbasic 通讯去router 用ethernet ?可以吗?
    回复

    使用道具 举报

    楼主
     楼主| 发表于 27-7-2013 04:32 PM | 显示全部楼层
    wilson16 发表于 25-7-2013 04:46 PM
    请问如果用visualbasic 通讯去router 用ethernet ?可以吗?

    visualbasic编程控制?当然没问题。只要支持TCP Socket的编程语言都能通过网络控制路由器
    不过你必须多安装一驱动,那就是ser2net或者socat至路由器

    你可以参考我的个人小网页如何安装ser2net和socat,里面是我使用Dephi语言编写的程序用作控制路由器
    回复

    使用道具 举报

    发表于 27-7-2013 06:52 PM | 显示全部楼层
    西门庆33 发表于 27-7-2013 04:32 PM
    用visualbasic编程控制?当然没问题。只要支持TCP Socket的编程语言都能通过网络 ...

    谢谢你,因为你的project跟我差不多一样。我会先试试看。
    回复

    使用道具 举报

    楼主
     楼主| 发表于 27-7-2013 10:16 PM | 显示全部楼层
    wilson16 发表于 27-7-2013 06:52 PM
    谢谢你,因为你的project跟我差不多一样。我会先试试看。

    请问你的是什么project,可以分享一下吗?
    回复

    使用道具 举报

    发表于 28-7-2013 01:08 AM | 显示全部楼层
    西门庆33 发表于 27-7-2013 10:16 PM
    请问你的是什么project,可以分享一下吗?

    可以啊,类似VB basic 去routers (用ethernet) 通讯(wireless) 跟arduino + wifi shield (可以两个以上,但会有不同的address) .只要可以用到VB control output 就可以。目前我还想着VB 要怎样link 去ethernet 然后去routers。 google了资料也很散,VB 用ethernet我没做过.


    回复

    使用道具 举报

    发表于 28-7-2013 01:46 AM | 显示全部楼层
    西门庆33 发表于 27-7-2013 04:32 PM
    用visualbasic编程控制?当然没问题。只要支持TCP Socket的编程语言都能通过网络 ...

    我看过你的网页,为什么要install ser2net 或socat呢?OpenWRT 又是什么呢? 为什么要改router的firmware?
    对不起,问太多了。 本帖最后由 wilson16 于 28-7-2013 01:49 AM 编辑

    回复

    使用道具 举报

    楼主
     楼主| 发表于 28-7-2013 02:14 PM | 显示全部楼层
    wilson16 发表于 28-7-2013 01:46 AM
    我看过你的网页,为什么要install ser2net 或socat呢?OpenWRT 又是什么呢? 为什么要改router的firmware ...

    OpenWRT是一个第三方固件(firmware),可以说是一个用于嵌入式设备(embedded devices)的操作系统(operating system)。DOS,Windows XP,Windows 7 都是操作系统,但是我们不能将之安装在路由器,因为我们的路由器只有32MB RAM+8MB Flash或更小,且处理器也不是intel或者AMD

    为什么要升级至OpenWRT呢?
    厂方的固件一般都是針对其路由器的主要功能设计,没有扩展的空间,所以也就不能添加其他功能。OpenWRT就不同了,它的核心(Core)是Linux,凡是在Linux运行的驱动,程序等等,只要交叉编译(Cross compiling)就能在OpenWRT执行了。当然这一切工作已经有人帮我们完成了,我们只要下载与安装就行。

    为何要安装ser2net或者socat?
    ser2net和socat都是同一类行的程序包,只要安装与设定其中一程序包就行了。例如ser2net是将网络(network/ethernet)的数据转换成串行数据,因为Arduino只能处理串行数据。

    为什么之前可通过luaSerial处理而不用安装ser2net或者socat?
    之前你是通过浏览器读取资料(例http:/192.168.1.1/luaSerial?aabbcc)
    现在你是使用TCP socket直接从网络读取资料,这不属于web服务(web service),不能与luaSerial沟通

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册 | 登入

    本版积分规则

     WeChat
     CARI App
    Get it FREE Google play
     Instagram
    cari_malaysia
    FOLLOW
    - 版权所有 © 1996-2019 Cari Internet Sdn Bhd 佳礼网络有限公司 (483575-W) -
    Private Cloud provided by IPSERVERONE
    0.882745s Gzip On
    快速回复 返回顶部 返回列表