项目:宠物定位器(开发步骤)
·
目录
还有一个网关的代码也上传了
项目概况
目的在于定位农场中的畜牧牲畜,监控牛羊的健康状况。定位功能通过GPS定位芯片实现,健康状况通过牛羊的步数累计检测。
一、项目框架搭建
1.HAL库生成
开启串口通信,使用HAL库搭建一个基础代码
2.DEBUG调试
- 重写fputc()函数
- 使用宏定义输出日志,实现开关输出调试
代码在Com_Debug.h中
#define DEBUG_ENABLE
#ifdef DEBUG_ENABLE
// 可以在输出结果前显示出代码所在的文件位置
#define FILE__NAME (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__)
#define __FILE__NAME__ (strrchr(FILE__NAME, '/') ? strrchr(FILE__NAME, '/') + 1 : FILE__NAME)
// 定义debug_printf,debug_println函数的输出
#define debug_printf(format, ...) printf("[%s:%d]" format, __FILE__NAME__, __LINE__, ##__VA_ARGS__)
#define debug_println(format, ...) printf("[%s:%d]" format "\r\n", __FILE__NAME__, __LINE__, ##__VA_ARGS__)
// 定义空宏定义,防止代码编译错误
#else
#define FILE__NAME
#define __FILE__NAME__
#define debug_printf(format, ...)
#define debug_println(format, ...)
3.Tool工具
- 编写延迟函数
- 基础的宏定义
代码在Com_Tool.c中
//延迟函数,用for循环占用主控来实现延迟
//需要根据实际情况进行调试
//修改除数,多数为9-7
void Com_Delay_us(uint16_t us)
{
uint32_t tmp = (us * 72) / 9;
while (tmp--)
{
__NOP();
}
}
二、GPS定位
1.硬件接口层Int编写
- 初始化方法:利用串口使用命令和芯片交互
- 读取GPS定位信息:存储到GPS_FULL_BUFF中
代码在Int_AT6558R.c中
三、记步芯片
1.硬件接口层Int编写
- 使用I2C1通信
- 通过I2C1写入USER_SET修改芯片参数
- 通过读取STEP_CNT_L/M/H 3个寄存器的值拼接得到运动步数
代码在Int_DS3553.c中
四、广域网低功耗通信
1.硬件接口层Int编写
- 复制官方启动文件
- 补全官方文件中缺失的SPI相关函数
- 根据官方案例编写自己的Int文件
- 初始化收发数据的方法(默认一直是接收模式)
编写的代码在Int_LoRa.c中
移植的代码在lora文件夹中
补全函数在driver_llcc68_interface.c中需要补全的是:
- llcc68_interface_spi_deinit
- llcc68_interface_spi_write_read
- llcc68_interface_reset_gpio_write
- llcc68_interface_busy_gpio_read
- llcc68_interface_delay_ms
- llcc68_interface_debug_print
2.实现LoRa双端通信
- 双端驱动移植实现
需要两个stm32主控
五、网络通信
1.以太网
- 移植需要的API文件
- 实现驱动文件中部分函数
- 实现网关和电脑服务端的连接通信
移植的文件在网关代码程序中eth和w5500文件夹里
需要链接有线网进行发送
2.IOT卡
- 使用串口发送AT指令
- 初始化方法
- 唤醒芯片
- 软重启芯片
- 发送数据
- 判断能否连接外网
- 创建本地客户端
- 连接远程服务端
- 发送数据
- 关闭客户端
硬件接口代码在Int_QS100.c中
六、芯片低功耗模式
- AT6558R断开电源进入低功耗
- QS100进入休眠模式
- 主控芯片进入待机模式
代码在App_Low_Power.c中
更多推荐
所有评论(0)