今天是大年初四,闲来没事,又把我之前买的arduino板子拿出来玩了。接着连调我的wifi转串口模块。最终要实现的目标就是要用手机通过我家里的wifi控制arduino外接的一个的继电器打开与闭合。然后正好我的卧室里的电灯是自已接的,电灯的开关离床有段距离,每一次睡觉前都不得不爬起来把灯关掉,然后摸黑躺下。有的时候实在是懒得起床去关灯。所以这两天就要把这个手机控制器作好,然后每天就可以躺床上用我的手机关灯了。想着想着就开始乐的美的笑了。哈哈。
从上图中可以看出来,我的这个wifi板子设置的是TCP服务器方式工作,也就是说这个板子随时待命。只要有人连接,并给给他通过TCP发送socket信息,他就会把数据一成不变的发送到串口端。我的路由器IP是192.168.1.1,并且路由器开启了DHCP服务,不过我没有用动态IP,我用的是静态IP地址192.168.1.11。端口是8001。这样客户端就可以通过以上IP和端口用socket连接我的这个串口了。设置好之后,提交配置。然后我们用客户端连接一下这个TCP服务器,并发送一个消息,同时也将串口和电脑连起来,这样我们给TCP发数据的时候,就可以在电脑的串上读到。在串口上发消息的时候,就可以在TCP端口上读到,好了,所有要作的工作作好了。先连接192.168.1.11:8001,然后发个数据。如下图。
第一步,我们先把arduino的开发工具装好。
这个大家去arduino的官网上下载吧。这个开发IDE是免费开源的。下边是的官网,大家自已去下载:
第二步,接上arduino并写一段小程序。烧到板子上试一下。
说明一下,一般的买的板子上在13号引脚上会有一个LED指示灯。可以写一个程序控制这个灯闪烁。我这里就不写这个灯的程序了。直接控制我在12脚上外接的一个5V继电器。先看我写的程序吧。这里还有串口输出的程序。
可以看到,初始化的时候,我设置12脚为输出引脚。并设置了串口的波特率为9600,波特率没有设置的太高,担心频率太高信号不稳定。我是在面包板上接的线。
从主循环程序可以看出来,每3秒,也就是3000毫秒,12脚的电平会发生一次反转来改变12脚的电平,同时第3秒还会在串口输出“Hello World!”字符串。
arduino工作电压是3.3V,但我的继电器是5V的继电器。所以我在12脚上接了一个三极管来驱动继电器。继电器买的是一个模块,这样也不用担心继电器没有接反相感应过压保存的二极管了,我看了这个模块上是有光耦隔离和继电器反向过压保护二级管的,如果你用继电器没有接这个二极管,因为继电器其实也是一个大电感,在瞬间断电的时候会产生比电源电压好高多倍的反向感应波峰电压的。这样很容易把你的芯片烧坏的。自已用继电器作这个模块的话要注意一下接上这个二级管来对反向波峰电压放电以保护芯片。
点击烧写,烧好后,我就听到了继电器每3秒响一下,啪啪的响。说明arduino的开发平台已经没有什么问题了。接下来我们测试wifil转串模块。
第三步,测试wifi转串口模块可以正常工作,并设置好模块要连接的路由器。
我家的路由器是电信宽带送的那个路由器。这个不重要,一般的路由器都可以的。
我用的是mac电脑,没有串口的,还好我之前买过一个USB转串口的线。这样mac电脑上也就有了串口了。但不幸的是我的这个USB转串口用的芯版是CH340的芯片,mac不支持这个芯片,没有驱动程序。在CH341的官网上找到了这个芯片的驱动。记得在mac os 10.8的系统上这个驱动是可以用的。哎,又不幸的是,苹果在10.10系统之后对第三方芯片驱动的使用时,一定要经过苹果的认证才可以使用,这进一步说明10.10系统的安全性更高了。而CH341是国产的芯片,在我安装驱动的时候还没有通过苹果的认证,所以10.10之后,CH341的驱动不能用了。好吧,我认了。
就在我一筹莫展的时候,想到了我mac系统上是装了一个win7虚拟机的。为什么不试一下呢,说不定这个USB转串口芯片在虚拟机下可以用呢。打开我的虚拟机,点击下边的USB图标,将串口控制器连上虚拟机。打开windows的设备管理器,哈哈,看到了久违的COM3接口。好,一切就绪。我们开始调试wifi转串口的板子吧。我买的这个wifi转串口的板子给我提供的工具也是windows系统上的。先设置好板子的IP,和我无线路由的密码什么的。看下图。
看到了吧。这样的话就说明wifi转串口的板子已经可以正常工作了。
第四步,将arduino的串口接在串口转wifi的板子上。
接上之后, 我们用电脑的TCP连接串口转wifi板子的192.168.1.11:8001。看上图,我们收到了“Hello World!”.
到此,整个硬件上的东西我们已经制作完成了,接下来就是软件部分了。
软件的话,有两方面,一方面是arduino接收到来自手机发送的数据参数,arduino作出判断并控制12脚上的继电器工作。然后继电器接220V电灯照明电路,来作为电灯的开关。
软件的另一方面,就是手机客户端了。这个客户非常简单,也不用什么多线程,只要有一个socket就可以了。和我上班时写的手机游戏代码比起来简直简单的要命了。
今天的博客就先写到这里,剩下的时间我要把我的手机客户端和arduino的程序写好。然后把继电器接到电灯上。让系统运行起来先。相关的东西下次有时间再写吧。
我有一个QQ群,如果你热爱技术什么的,可以进来我们交流:213571088
欢迎转载,注明出处就可以了: