极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 25735|回复: 10

路由做物联网平台接口:OpenWrt+curl+stty+串口:路由+51单片机

[复制链接]
发表于 2014-6-15 18:17:35 | 显示全部楼层 |阅读模式
本帖最后由 hi.t 于 2014-6-15 18:24 编辑

www.lewei50.com
www.yeelink.net
等等免费的物联网平台很不错!
不要买对应的开发硬件或arduino UNO+w5100扩展版;

用OpenWrt路由+单片机简单的方法就能实现。
先上HG255D+51单片机+18B20温度传感器





一、
路由已装软件:curl+stty
软件装不上可能是不兼容,在菜单: »管理 »系统 »软件包 » OPKG-配置后添加三条:
arch all 100
arch ralink 200
arch ramips 300

二、
菜单: »管理 »系统 »启动项
启动脚本:设置串口为9600,与单片机通信。
/usr/bin/stty -F /dev/ttyS1 raw speed 9600
echo "9600" > /dev/ttyS1
exit 0

三、
菜单: »管理 »系统 »计划任务
计划任务
自定义系统crontab中的计划任务。10分钟运行一次。
*/10 * * * * /root/le.sh

每10分钟发送‘aaa’到串口;等待单片机返回数据,然后上传到网上。
在/root/下新建两个文件:le.sh、a;属性改为0777



a内容为单片机上传的数据,随便输个数据。
le.sh内容:
#! /bin/sh
Y_Name='你的传感器标识'
Y_key='你的key'
WG='http://www.lewei50.com/api/V1/Gateway/UpdateSensors/01'
echo "aaa" > /dev/ttyS1
cat /dev/ttyS1 > /root/a & { sleep 6 ; eval 'kill -9 $!' &> /dev/null ; }
read Va < /root/a
curl --request POST $WG --data "[{\"Name\":\"$Y_Name\",\"Value\":\"$Va\"}]" --header "userkeyY_key"

四、
单片机里面无需复杂编程,
串口收到‘aaa’后,上传温度数据即可。
相关文件:
http://url.cn/QdMXdy

远程开关控制、挂摄像头上传图片都可以用这个方法的!{:soso_e179:}
回复

使用道具 举报

发表于 2014-6-15 21:05:45 | 显示全部楼层
硬件连接能上些详细的图吗?分解的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-6-16 18:30:08 | 显示全部楼层
polo32081 发表于 2014-6-15 21:05
硬件连接能上些详细的图吗?分解的。

硬件线路很简单了!
路由里面自带的串口接51单片机的串口,最小单片机系统加个18B20温度传感器。
回复 支持 反对

使用道具 举报

发表于 2014-6-17 11:17:23 | 显示全部楼层
好思路,以后其实openwrt+带串口的传感器 是一种好的搭配模式
回复 支持 反对

使用道具 举报

发表于 2014-8-30 13:35:40 | 显示全部楼层
本帖最后由 904570220 于 2014-8-30 13:37 编辑

谢谢楼主!不过楼主最好补充一点,路由默认串口单向传输,单片机的数据没法上传到路由。我之前就是参照楼主做法,不成功,参考WiFi小车后,才找到解决办法。用winscp 重新登录路由器或者在界面里刷新,然后打开“/etc/inittab”文件,把该文件中“ttyS0::askfirst:/bin/ash --login”和“ttyS1::askfirst:/bin/ash --login”这两行最前面加一个#号注释掉。只有这样做,路由的串口才会真正的双向传输。
回复 支持 反对

使用道具 举报

发表于 2014-8-31 09:56:20 | 显示全部楼层
有个python_serail的软件哦 在树莓派上用了可以 不知道这种路由器是否可以。
回复 支持 反对

使用道具 举报

发表于 2014-12-4 13:08:35 | 显示全部楼层
opkg update
opkg install kmod-usb-serial-cp210x//根据自己的USB转TTL 装相对的驱动   如果用路由本身自带的就不用了不过要自己引出 VCC GND 以给DS18B20供电。数据脚接TX和RX
opkg install kmod-usb-serial-pl2303// 短接TTL 的  TX 和RX
opkg install digitemp  
cd /usr/bin
/usr/bin/digitemp_DS9097 -i -s /dev/ttyUSB0 //如果用路由本身的TTL  改为 /dev/ttyATH0  执行后会有一堆数据表示安装成功 然后执行
digitemp_DS9097 -a -A -o "%.2C" //输出的温度精确到两位小数,最多可以精确到四位 改为“%.4C”即可
最后写个SH脚本。把温度提取到里面然后调用乐为的API上传到乐联网


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-12-4 13:17:12 | 显示全部楼层
首先在/root下面建两个文件   temp和2 名字可以自己取不过要和SH文本里相对应    le.sh的文件如下
#!/bin/sh
Y_Name='TEMP' //这里改为你自己的传感器名称 详情看乐联网的API文档
Y_key='96916727d22d4ad8ba2bd406e2f51412' //这里改为你自己的KEY
WG='http://www.lewei50.com/api/V1/gateway/UpdateSensors/02'//02是网关号根据自己的修改一般默认是01
/usr/bin/digitemp_DS9097 -a -A -o "%.2C" >/root/temp
tail -n 1 /root/temp>/root/2   //这句是用来提取第三行的温度数据保存到2文件当中
read Va</root/2
curl --request POST $WG --data "[{\"Name\":\"$Y_Name\",\"Value\":\"$Va\"}]" --header "userkeyY_key"
回复 支持 反对

使用道具 举报

发表于 2014-12-25 10:19:43 | 显示全部楼层
引出GPIO继续节约成本实现乐联网上传温度数据
opkg update
opkg install kmod-w1 kmod-w1-master-gpio kmod-w1-gpio-custom
insmod w1-gpio-custom bus0=0,6,0
echo "w1-gpio-custom bus0=0,6,0" > /etc/modules.d/59-w1-gpio-custom
opkg install kmod-w1-slave-therm
cat /sys/bus/w1/drivers/w1_slave_driver/*/w1_slave
7c 01 4b 46 7f ff 04 10 09 : crc=09 YES
7c 01 4b 46 7f ff 04 10 09 t=23750
awk -F= '/t=/ {printf "%.02f\n", $2/1000}' /sys/bus/w1/drivers/w1_slave_driver/*/w1_slave
把最后一句替换到SH脚本里就好

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2015-8-16 21:45:10 | 显示全部楼层
本帖最后由 rhcsz 于 2015-8-17 09:29 编辑

我在openwrt路由安装了curl这个文件,
按乐联网这条命令
curl --request POST http://www.lewei50.com/api/V1/Gateway/UpdateSensors/01 --data "[{'Name':'T1','Value':'23'}]" --header "userkey:XXXXXXXXXXXXXXXXXXXXXX"
KEY换成自已的Key,一点反应都没有。
也用了楼主的方法也是一点反应都没有。
是我的openwrt路由还有什么东西要装进去的吗???还是那里出问题了。
回复 支持 反对

使用道具 举报

发表于 2015-8-20 22:54:57 | 显示全部楼层
初学者学习
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-30 00:02 , Processed in 0.067163 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表