`
本帖最后由 小影效应 于 2020-9-7 19:23 编辑
Realtek RTL8195AM 开发板
零、摘要与背景介绍
1.随便讲一点
有幸收到
电子发烧友
论坛送来的Realtk RTL8195AM开发板,本文只做简单到货体验,其他内容随后一边开发测试,一边写帖子,希望各位能提出宝贵指导。
Realtek RTL8195AM开发板,是基于RTL8195主控为核心模块,构件的IOT开发板,Realtek自己搞了个系列,称作Realtek-Ameba,兼容Arduino,MbedOS,Google IOT等平台。
2.Ameba介绍
Ameba解决方案列表中有如下方案设计:
- 基于Ameba-1的开发平台
RTL8195AM/RTL8711AM/RTL8710AF支持Wi-Fi和NFC tag等高端功能,低功耗设计,应用场景包括安全,数据采集等场景,软件平台兼容Arduino,MbedOS,Google IOT等主流开放式平台 - 基于Ameba-Z的开发平台
RTL8710BN/RTL8711BU 支持Wi-Fi,低功耗设计,兼容Arduino平台 - 基于Ambed-D的开发平台
RTL8722DM/RTL8721DM/RTL8720DN支持Wi-Fi,以及BLE5.0,支持安全域和安全激动,低功耗 - 基于Ambed-Z2的开发平台
RLT8720CM/RTL8720CN/RTL8720CF 支持Wi-Fi以及BLE4.2,支持安全启动和低功耗模式。
3.随便说的话
根据个人对Ameba几日的了解来看,这是一个针对学习,原型开发,和产品快速成型特别合适的产品,其文档资料API很完整,在兼容Arduino上看,产品相当大程度解决了产品的入门门槛,现在Arduino和开源硬件在市场上做的火热,故这次能收到电子发烧友论坛送来的
RTL8195AM DEV01,是很好的鼓励,感谢赋予的机会
一、硬件介绍与实物展示
1.硬件介绍- 来自ARM_Mbed平台的介绍
Ameba是一款兼容Arduino的物联网开发板,除了WiFi连接外,还包含了NFC标签,并可以通过兼容Arduino的标头支持以太网。主板的大脑是Realtek RTL8195AM Wi-Fi SoC,内置Arm®Cortex®-M3 MCU,包括WiFi连接、硬件SSL、SRAM和flash。为创客社区和四轴飞行器、太阳能系统、传感器环境、自动化解决方案等提供解决方案。 - 亮点:
- 32-bit Arm®Cortex®-M3
- up to 166MHz - 1MB ROM, 2MB SDRAM and 512KB SRAM
- 特性:
- 集成 with 802.11 b/g/n 1x1 Wi-Fi
- NFC Tag with Read/Write Function NFC标签具有读写功能
- 10/100 Ethernet MII/RMII/RGMII Interface 以太网接口
- USB OTG
- SDIO Device/SD card controller SDIO设备/SD卡控制器
- Hardware SSL engine 硬件SSL引擎
- Maximum 30 GPIOs 最多30个GPIOs
- 2 SPI Interfaces and support both master and slave mode 2个SPI接口支持主从模式
- 3 UART Interfaces including 2 HS-UART and one log UART 3个串口接口,包括2 HS-UART和一个Log UART
- 4 I2C Interfaces and support both master and slave mode 4个I2C接口,支持主从模式
- 2 I2S/PCM Interfaces and support both master and slave mode 2个I2S/PCM接口,支持主从模式
- 4 PWM interfaces 4个支持PWM接口
- 2 ADC interfaces 2个支持ADC接口
- 1 DAC interfaces 1个支持DAC接口
2.实物展示
见正面图,可看到,RTL8195AM开发板采用长方形版型,长,宽,高, 大小恰好比
手机小一圈,可直接观察到,板上左侧的
2.4G天线,
3XmicroUSB(Dowload_DAP,USB_HOST[背面],Power5VDC),中为
独立模块,可见Reltek的目的是给模块的批量出货和可定制化铺好了道路,在板子的正上方区域,设计为NFC感应线圈,可识别NFC tag等支持的nfc标签
⬆⬆⬆正面图
侧面为SAM接口,用于驳接Wifi天线,这里随板附送了一根SAM的胶棒天线,在细节处可看到,模块天线线路预留了转接电阻,可转为SAM口,板载天线或ipex口。
⬆⬆⬆侧面图
下图了解到可根据调整电阻实现I-PEX,外接或PCB天线
⬆⬆⬆天线切换图
开发板的接口版型与Arduino uno一致,这就很大程度减轻了开发负担,可对其直接叠加盾板或者其他控制板,增强扩展性能。
开发文档内也提供了对于的传感器版的推荐图纸
版型型号为Extension board: RTL-AMEBA_EXT B2_2V0
可见开发板正面有这两个microUSB接口,左侧MicroUSB功能为DAP+SerialUSB+DC_Power 隔壁为DAP update button ,右侧microu***为DC 5V power无其他功能,隔壁为DAP reset button,反面可见一个用于USB Host的MicroUSB接口,调试使用CON2接口
板子反面标记了引脚功能定义,在反面左下方预留了Jtag接口,方便对板子做其他高级开发,右下侧标记了Log Uart接口,丝印标记了Mbed Enabled 支持Mbed开发
整个板子核心控制模块在板子中央,模块左上角有着ipx座,同时可看出模块上印有PCB天线,模块上贴标Realtek-Ameba-8195AM,开发板通过左下角LPC11U35FHI33微控制器转接出,实现DAP mode下载功能和其他USB相关功能
二、详细介绍
1.硬件部分根据官方提供的硬件文档,详细介绍了板卡的功能区块和引脚功能
硬件框图
- IC: RTL8195AM
- Module HDK version: HDK-AM95A03_1V0
- DEV HDK version: RTL-AMEBA_DEV01_1v1
引用: Pin IO功能图
能看到接口和Arduino Uno版型吻合,I2C SPI AREF UART等
引用: 在MbedOS在线编译环境中,接口被定义为和Arduino类似的D0-D19 兼容Uno的版型
定义如下图,可对简化接口配置,方便后期扩展
引用: Mbed上有更清晰的接口配置图 图片如下
左侧IO配置图片
2.硬件图纸
引用: 模块原理图如下,核心为RTL8195AM 98TFBGA 6X6MM,外部晶振源40M,并配有个flash
引用: 从官方的打包内可以看到板层设计为四层板,长度为19mmX22.25mm
可直观看到模块上设计有PCB的wifi天线
引用: 三维图中可以看到设计有屏蔽罩焊盘,以及bga焊盘的走线
从板层原理可看出,电源分5V和3.3V两路,3.3V由5V通过G5728转化来,模块提供的Uart和JTAG由LPC单片机控制,同时单片机提供烧录固件的DAP功能
引用: 主板长度91.7mm宽度54.5mm,4层板设计,有4个定位孔,NFC天线板设计有V-cut,用作后期掰开分离NFC天线,模块位于板子中央
引用: 三维图中可看到丝印螃蟹logo,型号为RTL-AMEBA_DEV01_1V0
引用: 反面可视引脚定义和Mbed Enabled标注
3.软件部分Ambed支持传统的IAR,Arduino,MbedOS Google IOT,这里我只展示ArduinoIDE的载入方式
这里附加了
https://github.com/Ameba8195/Arduino/raw/master/release/package_realtek.com_ameba_index.json
这个库
然后通过开发板管理器安装
另外,在Ameba的支持网站上找到了Fritzing的矢量图支持
8195的图包连接如下
https://github.com/Ameba8195/Arduino/raw/master/misc/Fritzing/Ameba.fzpz
三、项目内容
1.简单说明
目标是通过8195+MLX90614 实现简单的人体测温+人员打卡
框图如下
MLX90614是一个红外测温传感器,通过I2C并入Ameba8195
连接示意如下图
2.代码示例
连接后测试代码如下
注:此代码为互联网收集的测试传感器的代码,实际测试时请自行测试和鉴别
详细代码因项目需要暂时不公开,后续修改后大概率会公开
引用: * Non-contact Thermometer with GY - 906 module
* Support for the MLX90614 sensor on the I2C bus
* SDA line = A4
* SCL line = A5
* Sensor supply with 5V
*/
#include
#include
LiquidCrystal lcd (8, 9, 4, 5, 6, 7);
int address = 0xb4; // Sensor address MLX90614
int erc = 0; // Variable holding the PEC value
int dataH = 0; // The second byte of data
int dataL = 0; // The first byte of data
double tempnal*** = 0.02; // Variable by which the digital value will be multiplied
double temperature = 0; // Variable holding the temperature
void setup ()
{
i2c_init (); // Initialization of the I2C bus
lcd.begin (16, 2); // Initialize the display
}
void loop ()
{
i2c_start_wait (address + I2C_WRITE); // Start I2C communication in write mode
i2c_write (0x07); // Write the value 0x07 (select the register Tobj1)
i2c_rep_start (address + I2C_READ); // Restart I2C communication at the read address
dataL = i2c_readAck (); // Read the first byte of data
dataH = i2c_readAck (); // Read the second byte of data
erc = i2c_readNak (); // Read the third (unimportant) data byte
i2c_stop (); // End of I2C transmission
temperature = (double) (((dataH & 0x007F) 《《 8) + dataL); // Create a 16-bit variable consisting of two one-byte variables
temperature = temperature * tempnal***; // For one bit 0.02 K, the result of this operation is the temperature in Kelvin
temperature = temperature - 273.15; // Conversion to Celsius degrees
lcd.setCursor (0,0); // Display (first LCD line)
lcd.print (“Object =”);
lcd.print (temperature);
lcd.print (“”);
lcd.write (0xDF); // Degree sign
lcd.print (“C”);
i2c_start_wait (address + I2C_WRITE);
i2c_write (0x06); // Select the ambient temperature register
i2c_rep_start (address + I2C_READ);
dataL = i2c_readAck ();
dataH = i2c_readAck ();
erc = i2c_readNak ();
i2c_stop ();
temperature = (double) (((dataH & 0x007F) 《《 8) + dataL);
temperature = temperature * tempnal***;
temperature = temperature - 273.15;
lcd.setCursor(0,1); // Display (second LCD line)
lcd.print (“Ambient =”);
lcd.print (temperature);
lcd.print (“”);
lcd.write (0xDF);
lcd.print (“C”);
delay (200); // Delay 200ms
}
测试实物如下图
随后通过联合NFC库 Wifi库 等 实现功能
通过和数据库和无线服务NFC服务联合,实现打卡时完成测温的服务
效果还是可以的,8195在很大的情况下省去了单独的Wifi+NFC两部分需要配置的难点,在小型区域内,单设备可以完成大量工作,在成本压缩上有很大的好处
随后项目如果有问题,可以相互交流,如有不足,欢迎指教,最后感谢论坛给我的试用机会
`