icefire2012

  • 2019-06-30
  • 加入了学习《黑科技探头:碰一下就知电流大小(英文)》,观看 黑科技探头:碰一下就知电流大小(英文,国外网友评测)

  • 2019-04-16
  • 加入了学习《[高精度实验室] 放大器系列11 - 静电释放 (ESD)》,观看 静电释放 (ESD)

  • 2019-03-30
  • 加入了学习《如何利用现代示波器实现准确测量(二)》,观看 如何利用现代示波器实现准确测量(二)

  • 加入了学习《如何利用现代示波器实现准确测量(一)》,观看 如何利用现代示波器实现准确测量(一)

  • 加入了学习《如何利用现代示波器实现准确测量(三)》,观看 如何利用现代示波器实现准确测量(三)

  • 加入了学习《OrCAD教程》,观看 深入了解Capture软件设置

  • 加入了学习《OrCAD教程》,观看 OrCAD入门介绍

  • 加入了学习《Allegro 速成教程》,观看 Allegro常用组件介绍

  • 加入了学习《嵌入式软件设计》,观看 嵌入式系统概述

  • 2019-03-27
  • 加入了学习《通信电子线路》,观看 通信系统组成

  • 加入了学习《射频电路基础》,观看 CH1阻抗匹配基础

  • 加入了学习《微波技术基础》,观看 Smith圆图1

  • 加入了学习《微波技术基础》,观看 引言1

  • 加入了学习《工程师应该掌握的20个电路》,观看 电子技术说课程

  • 2019-02-13
  • 加入了学习《Silicon Labs Lua脚本语言在大批量自动测试中的应用》,观看 Silicon Labs Lua脚本语言在大批量自动测试中的应用

  • 2018-10-17
  • 回复了主题帖: 求做一下卷子

    呵呵,题目都看不清楚

  • 回复了主题帖: 树莓派3B+测评评奖结果公布

    感谢!再接再厉!

  • 2018-10-07
  • 回复了主题帖: 【树莓派3B+测评】与8266通信

    本帖最后由 icefire2012 于 2018-10-7 19:20 编辑         如果一直要使用蓝牙功能,或者不想麻烦修改uart的映射关系,也可以通过加一个usb转串口工具来实现串口通信。树莓派3B+上有四个USB口。我现在用putty远程访问操作树莓派,这四个USB口都空着呢。我用了一个USB转串口模块,主芯片是CH340C,而且带+5V和+3.3V电源输出,可以通过该3.3V电源给8266供电。CH340方案的USB转串口模块插到树莓派上系统可自动识别,不需要安装驱动。         将USB转串口模块插到树莓派上后,用命令查看一下当前的设备情况。 ls -l /dev复制代码         可以看到识别出来的设备名称为ttyUSB0。另外需要更改一下测试代码,将第41行中的"/dev/ttyAMA0"更改为"/dev/ttyUSB0"即可。

  • 发表了主题帖: 【树莓派3B+测评】与8266通信

    本帖最后由 icefire2012 于 2018-10-7 19:01 编辑         这一篇是树莓派与ESP8266的通信。         简单的示意图如下:         手机作为AP,树莓派和ESP8266分别连接到该热点上。这里ESP8266用的是官方的模组,需要外部MCU通过串口发送AT指令控制。那这个MCU就由树莓派代劳了。树莓派和ESP8266之间建立TCP连接,树莓派作为服务器,ESP8266作为客户端。本质就是树莓派自己在这绕着圈子自言自语,呵呵。 一、准备工作         手机建立AP热点,名称为:AP01,密码为12345678         树莓派和ESP8266之间需要四根连线。分别是3.3V电源,GND,以及串口的tx和rx。ESP8266所需的电源从树莓派上获取。之前提到过,树莓派的IO扩展口中有路UART,如下图所示。根据树莓派官方的资料,树莓派3B+上的串口控制器默认是分配给了蓝牙,这里要用串口,需要更改配置,将串口分配到IO扩展口上。具体的方法网上有不少,我是参照这个网页上的教程来设置的(http://shumeipai.nxez.com/2016/0 ... art-use-issues.html)。注意:该网页内容中“编辑/boot目录下的cmdline.txt文件”一步我跳过了。因网页下面有留言更改后无法启动,所以我跳过了(我自己的猜测而已,没有证实)。跳过不影响本实验。                        测试的时候,还是用的python编程,这里需要先安装一下python下的串口模块。我之前做蓝牙时,串口模块已经被安装上了,这里还是贴一下安装命令: sudo pip install pyserial复制代码 或者 sudo pip3 install pyserial复制代码 二、测试代码         先将测试代码贴在这里 import os import time from multiprocessing import Process import serial import socketserver #TCP Server class Myserver(socketserver.BaseRequestHandler):     def handle(self):         conn = self.request         while True:             uclient_dat=conn.recv(1024)             print('rcv from 8266:%s' %(str(uclient_dat,'utf8')))             if(uclient_dat==bytes('liang ge huang li ming cui liu','utf8')):                 conn.sendall(bytes('yi hang bai lu shang qing tian','utf8'))             else:                 conn.sendall(bytes("I don't know",'utf8')) def tcpServer(name):     print('%s start...' %name)     userver=socketserver.ThreadingTCPServer(('192.168.43.125',8200),Myserver)     userver.serve_forever() #TCP Client def getRSP(ser):     size=ser.inWaiting()     sbuf=ser.read(size)     print(sbuf) #1 set to station mode #2 set ssid #3 chek ip addr #4 creat socket param=('AT+CWMODE_CUR=1\r\n',        'AT+CWJAP_CUR="AP01","12345678"\r\n',        'AT+CIPSTA?\r\n',        'AT+CIPSTART="TCP","192.168.43.125",8200\r\n') def tcpClient8266(name):     print('%s start...' %name)     ser=serial.Serial("/dev/ttyAMA0",115200)     for prm in param:         ser.write(prm.encode())                                         time.sleep(8)         getRSP(ser)     dat_tx='liang ge huang li ming cui liu'     print(len(dat_tx))     while True:         ser.write('AT+CIPSENDEX=30\r\n'.encode())               time.sleep(1)         getRSP(ser)         ser.write(dat_tx.encode())               time.sleep(1)         getRSP(ser) if __name__=='__main__':     p1=Process(target=tcpServer,args=('tcpServer',))     p2=Process(target=tcpClient8266,args=('tcpClient8266',))     p1.start()     p2.start()     while True:         pass复制代码 三、简要说明         测试程序启动后,建立了两个进程,tcpServer和tcpClient8266,并分别启动,见代码57-60行。         进程tcpServer的代码在8-22行,建立的server的ip为192.168.43.125(也就是树莓派的IP),socket端口为8200。此server只做一件事,接收客户端的数据,如果收到的为汉语拼音“两个黄鹂鸣翠柳”,则回复汉语拼音“一行白鹭上青天”,否则回复“I don't know”。         进程tcpClient8266的代码在25-54行。首先打开串口(line41),串口设备为/dev/ttyAMA0,使用的波特率为115200,其它都用默认配置。然后通过串口发送AT指令配置8266模块。配置的参数param一共有四个,第一个是设置8266为station模式;第二个是设置要连接的热点名称和密码;第三个是获取8266分配到的网络配置信息,包括IP地址,子网掩码,网关等;第四个是建立tcp连接,服务器地址和socket端口就是tcpServer进程中设置的信息。每发送一个配置信息,都会等待8266完成配置,并接收8266返回的配置信息,并打印出来(通过getRSP()函数)。每条配置信息完成的时间不尽相同,这里没有去解析回复信息,简单起见,都做了一个比较长的延时(line44)。建立连接后,就可以通信了。48-54行是在循环发送汉语拼音“两个黄鹂鸣翠柳”,并接收服务器传回来的信息。 最终的演示效果如下:         手机上的连接示意图如下:第一个是树莓派,第二个是8266,第三个是开发PC机。 四、结语         在这个例子里,树莓派一方面构建一个web服务器,另外一方面,可以直接挂载其它的物联网模块,这里是用串口和连接了wifi模块,也可以连接433或zigbee模块。如果进一步拓展功能,就能成为一个功能丰富的物联网网关,管理众多的物联网节点。也可以通过IO扩张上的I2C以及SPI接口也可以直接挂载传感器模块获取相应的传感器数据。后续将继续在这方面拓展做一些有意思的小应用。

  • 发表了日志: 【树莓派3B+测评】与8266通信

最近访客

< 1/3 >

统计信息

已有29人来访过

  • 芯币:113
  • 好友:--
  • 主题:6
  • 回复:9
  • 课时:--
  • 资源:--

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言