645|6

10

帖子

1

TA的资源

一粒金砂(中级)

 

【得捷电子Follow me第1期】二狗子GNNS定位器 [复制链接]

  本帖最后由 doudoubaba 于 2023-6-30 18:57 编辑

一、 3-5分钟短视频

 
 
6月30日

 
 
 
二、项目总结报告
 
(一)项目描述

1、引言

20180714112640_ymfqf.jpg

现在,二狗子已经成为我生活中不可或缺的一部分。然而,它经常乱跑。当它走失时,我通常会感到十分焦虑和担忧。为了解决这个问题,我决定利用手里的单片机和模块设计一个二狗子GNNS定位器。该项目旨在设计和开发一种能够追踪二狗子位置的系统,以帮助我快速找到丢失的二狗子。

2、目标

本项目的目标是实现一个具有以下功能的二狗子GNNS定位器:

  • 实时追踪宠物的位置:通过使用GNNS技术,能够准确地追踪二狗子的位置。
  • 安全围栏报警:通过设定安全区域边界,当二狗子跑到越过边界,蜂鸣器发报警声提醒二狗子。

3、技术实现

(1)硬件介绍

为了实现二狗子定位器,本项目主要选用了以下硬件:

① Raspberry Pi Pico W

2049f326c5f97a616f1fc748e6dcc31e.jpeg

 

Raspberry Pi Pico W是一款树莓派官方设计低成本但灵活的RP2040开发平台,其是Raspberry Pi Pico的无线升级版,具有Pico所有特性外还具有2.4GHz无线接口。

产品特性:

  • 采用了 Raspberry Pi 官方自主设计的 RP2040 微控制器芯片
  • 搭载了双核 ARM Cortex M0 + 处理器,运行频率高达 133MHz 灵活时钟
  • 内置了 264KB 的 SRAM 和 2MB 的片上 Flash
  • 板载2.4GHz无线接口芯片(802.11n或Wifi4)。
  • 邮票孔设计,可直接焊接集成到用户自主设计的底板上
  • USB1.1 主机和设备支持
  • 支持低功耗睡眠和休眠模式
  • 可通过 USB 识别为大容量存储器进行拖放式下载程序
  • 多达 26 个多功能的 GPIO 引脚
  • 2 个 SPI,2 个 I2C,2 个 UART,3 个 12 位 ADC,16 个可控 PWM 通道
  • 精确的片上时钟和定时器
  • 温度传感器
  • 片上加速浮点库
  • 8 个可编程 I/O (PIO) 状态机,用于自定义外设支持

引脚分布:

pinout.jpg

 

② GNNS(全球导航卫星系统)模块Grove - GPS (Air530)

03.png

 

GNNS模块采用的是矽递科技的Grove - GPS (Air530)。Air530模块是一款高性能、高集成度的多模卫星定位导航模块,同时支持北斗、GPS、格洛纳斯等卫星导航系统。

技术参数:

Parameter Value
Supply voltage 3.3V/5V
Working current up to 60mA
Time of warm start 4s
Time of cold boot 30s

 

Wiki文档:

https://wiki.seeedstudio.com/Grove-GPS-Air530/

 

 

③ 无源蜂鸣器模块Grove - Buzzer

Grove Buzzer.jpg

 

无源蜂鸣器模块采用的是矽递科技的Grove - Buzzer模块。

 

技术参数:

Items Specification
Operating Voltage 3.3V/5V
Sound Output ≥85dB
Resonant Frequency 2300±300Hz

 

Wiki文档:

https://wiki.seeedstudio.com/Grove-Buzzer/

 

④ 显示模块Grove OLED Display 0.96" (SSD1315)

Grove-OLED-Displey-0.96-SSD1315-wiki.jpg

 

 

Grove-OLED-Displey-0.96-SSD1315-pin.jpg

OLED模块采用的是矽递科技的Grove 0.96英寸OLED模块,采用SSD1315驱动芯片,128x64分辨率,I2C接口。

 

技术参数:

Parameter Value
Input voltage 3.3V / 5V
Output voltage 0 ~ 2.3V
Pixels 128 x 64
Temperature Range -40℃ ~ +85 ℃

 

wiki文档:

https://wiki.seeedstudio.com/Grove-OLED-Display-0.96-SSD1315/

 

(2)设计思路

① 主控:Raspberry Pi Pico W,负责从GNNS模块获取定位信息数据,并控制OLED模块显示,控制蜂鸣器模块发出报警声。

② 传感器:GNNS模块Grove - GPS (Air530),负责与北斗导航卫星、GPS卫星通信,获取位置信息,并将其转化为经度和纬度坐标。

③ 输出模块:无源蜂鸣器模块Grove - Buzzer,负责发出报警声。

④ 显示模块:Grove OLED Display 0.96" (SSD1315),负责显定位的经纬度值、卫星数、时间。

当系统上电后,Raspberry Pi Pico W对GNNS模块、蜂鸣器模块、OLED模块进行初始化。

初始化完成后,GNNS模块与导航卫星进行通信,获取经纬度值、卫星数量、时间数据,并发给Raspberry Pi Pico W。

Raspberry Pi Pico W将收到的这些信息,输出到OLED模块上显示。

 
(二)各功能对应的主要代码片段及说明
 
 
#blink
#导入库
import machine
import time

#初始化引脚
LED = 25
led = machine.Pin(LED, machine.Pin.OUT)
while(True):
    
    #点亮LED
    led.on()

    #延时1秒
    time.sleep(1)

    #熄灭LED
    led.off()

    #延时1秒
    time.sleep(1)  

 

 
 
(1)驱动OLED
 
#【得捷电子Follow me第1期】任务2:驱动外设(1)OLED

#导入库
from machine import Pin, I2C
from ssd1306 import SSD1306_I2C    
import time

#初始化I2C
i2c = I2C(0,sda=Pin(8), scl=Pin(9))

#实例化SSD1306_I2C
oled = SSD1306_I2C(128, 64, i2c)

#OLED清屏
oled.fill(0)
oled.show()

#OLED显示信息
oled.text("GPS:",0,0)
oled.text("Sate:",0,36)
oled.text("Time:",0,50)
oled.show() 

 

(2)驱动蜂鸣器发出警报声
 
#【得捷电子Follow me第1期】任务2:驱动外设(2)无源蜂鸣器警笛
#导入库
from machine import Pin, I2C, PWM
import time

#初始化引脚
buzzer = PWM(machine.Pin(20))

while True:
    
    #设置频率freq
    for freq in range(500,1000,5):
        
        #蜂鸣器发声
        buzzer.freq(freq)
        
        #延时
        time.sleep(0.002)
    
    #设置频率freq
    for freq in range(1000,500,-5):

        #蜂鸣器发声
        buzzer.freq(freq)

        #延时
        time.sleep(0.002)

 

3、任务3:同步网络时间

 

任务3:同步网络时间
#导入库
from machine import RTC
import time
import network
import ntptime

#初始化网络
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect('xiaogui', '88888888')


#同步NT时间函数
def RTCdate(flag, timezone=8):
    #print("开始同步网络时间")
    try:
        rtc = RTC()
        now = time.time()
        now += timezone * 3600
        dt = time.localtime(now)   
        date_str = "{}年{}月{}日".format(dt[0], dt[1], dt[2])
        time_str = "{}:{}:{}".format(zero_str(dt[3]), zero_str(dt[4]), zero_str(dt[5]))
        if flag == 0:
            return date_str
        else:
            return time_str
    except Exception as e:
        print("同步NTP时间错误",repr(e))
        

# 补零函数
def zero_str(str_num):
    num=int(str_num)
    num_str=None
    if num>9:
        num_str=str_num
    else:
        num_str="0"+str(str_num)
    return num_str


#主程序,NTP校时
ntptime.host = 'ntp1.aliyun.com'
ntptime.settime()
print(RTCdate(0),RTCdate(1))

 

 
#任务4:实现定位功能
#导入库
from machine import UART, Pin, PWM, I2C
from ssd1306 import SSD1306_I2C
from micropyGPS import MicropyGPS
import time
WIDTH  = 128                            
HEIGHT = 64

#初始化OLED
i2c = I2C(0,sda=Pin(8), scl=Pin(9))
oled = SSD1306_I2C(WIDTH, HEIGHT, i2c)

#初始化串口uart0
uart0 = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))

time.sleep(0.1)
rxData = bytes()
my_gps = MicropyGPS(8)
my_gps.local_offset

def get_GPS_values():    
    #定义两个全局变量
    global gps_values,rtc 
    time.sleep(2)
    cc = uart0.readline()
    for x in cc:
        my_gps.update(chr(x))
    #获取经度、维度
    gps_values = str(my_gps.latitude[0] + (my_gps.latitude[1] / 60)) + ',' + str(my_gps.longitude[0] + (my_gps.longitude[1] / 60))
    #获取日期、时间
    date = my_gps.date
    timestamp = my_gps.timestamp
    hour = timestamp[0]
    rtc = str(int(timestamp[0]))+":"+str(int(timestamp[1]))+":"+str(int(timestamp[2])) 
    #返回经度、纬度值、RTC
    return gps_values,rtc



while True:
    time.sleep_ms(20)
    get_GPS_values()
    
    #OLED显示
    oled.fill(0)
    oled.show()
    oled.text("GPS:",0,0)
    oled.text(gps_values,0,16)
    oled.text("Sate:",0,36)
    oled.text(str(my_gps.satellites_in_use),64,36)
    oled.text("Time:",0,50)
    oled.text(rtc,64,50 )
    oled.show()     
    
    #串口打印输出
    print('Location:', gps_values)
    print('State:', my_gps.satellites_in_use)
    print('RTC:', rtc)

 

 
(三)功能展示及说明
 
1、Blink功能展示
 
001-on.jpg
 
 
001-off.jpg
如上图所示,板载LED灯1秒闪烁一次。
 
2、获取NTP网络时间功能演示
 
NTP.png
如上图所示,程序运行后,串口打印出通过NTP获得的日期与时间。
 
3、驱动外设及GNNS定位功能演示
gnns-1.png
 
 
gnns-2.jpg
 
 
gnns-3.jpg
如上图所示,程序运行后,OLED显示GNNS经维度坐标、卫星数、时间。
 
(四)对本活动的心得体会
1、改进目标
  • 手机APP:开发一个APP,随时随地监控二狗子的位置、设置安全区域和接收警报通知。
  • 物联网平台:物联网平台实时查看二狗子的位置。
  • 警报通知:一旦二狗子离开安全区域,系统将立即发送警报通知我,以便我能够立即采取行动。
  • 历史轨迹:系统能够存储和显示二狗子的历史轨迹记录,让我可以了解二狗子的活动范围和习惯。
 
三、可编译下载的代码
 
task04.py (1.52 KB, 下载次数: 0)

最新回复

感谢楼主分享,功能看着很实用,就是不知道最终的成品体积大不大,耗电怎么样  详情 回复 发表于 2023-7-2 00:39
 
 
 

回复

4682

帖子

0

TA的资源

版主

 

你这二狗子似乎有点调皮,给它再加个太阳能板,防止跑远了,定位器没电了。

点评

是的,得给二狗子装一队太阳翼  详情 回复 发表于 2023-6-30 16:20
 
 
 

回复

200

帖子

0

TA的资源

一粒金砂(高级)

 

功能看着很使用啊,就是不知道最终的成品体积大不大,给二狗子带身上方不方便呢,

 
 
 

回复

10

帖子

1

TA的资源

一粒金砂(中级)

 
wangerxian 发表于 2023-6-30 11:37 你这二狗子似乎有点调皮,给它再加个太阳能板,防止跑远了,定位器没电了。

是的,得给二狗子装一对太阳翼

点评

成为全村最靓的仔!  详情 回复 发表于 2023-6-30 16:23
 
 
 

回复

4682

帖子

0

TA的资源

版主

 
doudoubaba 发表于 2023-6-30 16:20 是的,得给二狗子装一对太阳翼

成为全村最靓的仔!

 
 
 

回复

5163

帖子

3

TA的资源

版主

 

感谢楼主的分享,恭喜完成任务,这个开板可以深入研究,希望多来EEWORLD展示楼主的才华。楼主的题目很醒目呀!

 
 
 

回复

1286

帖子

0

TA的资源

五彩晶圆(初级)

 
感谢楼主分享,功能看着很实用,就是不知道最终的成品体积大不大,耗电怎么样
 
 
 

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

猜你喜欢
随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
电子设计竞赛系列指导之二--怎么准备这次竞赛

本帖最后由 paulhyde 于 2014-9-15 04:00 编辑 22184

第1/15原创:事无巨细,GCC AVR

事无巨细,GCC AVR入门详解 乘着Cepark电子园正在搞AVR单片机开发板优惠活动,花160块钱买了他们提供的散件。近日终于收到 ...

富士通工业测控DIY板活动总结

活动结束了,回头去看走过的路,倍感欣慰。我最初进入这项DIY活动要追溯到5月初。那时候在EEWORLD上面看到大家在热议“DIY活动方 ...

稳压二极管的稳压值

稳压二极管在稳压时,通过观察它的伏安特性曲线,它的稳压值不应该是负的吗?

使用uc3842做非隔离buck,没有做浮地驱动也能够仿真成功?

新手,最近看了很多帖子,理解了为什么BUCK需要做浮地驱动,但是很奇怪,在用Multisim和saber进行仿真时,没有做浮地驱动均能够 ...

百度大脑EdgeBoard 边缘AI计算盒(FZ5)免费试用,等你来玩!

本次测评产品及数量:(FZ5C AI BOX 套装:MYS-ZU5EV-32E4D-EDGE-BOX )2套 来自:米尔电子 百度大脑EdgeBoard 边缘AI ...

【大学生电子竞赛题目分析】——2020年TI杯E题《放大器非线性失真研究装置》

一、任务 设计并制作一个放大器非线性失真研究装置,其组成如图所示,图中的K1和K2为1×2切换开关,晶体管放大器只允许 ...

【AT-START-F425测评】利用U盘文件存储功能实现数据记录

前面介绍了以U盘文件的读取功能来实现数码相框功能,这次说一下利用文件存储功能来充当数据记录装置。 当然要进行记录就必须 ...

【花雕动手做】有趣好玩的音乐可视化系列小项目(20)--首饰盒镜子灯

偶然心血来潮,想要做一个音乐可视化的系列专题。这个专题的难度有点高,涉及面也比较广泛,相关的FFT和FHT等算法也相当复杂,不 ...

存储介质的类型有哪些?

存储设备已经成为许多嵌入式应用中不可缺少的组成部分。要选择最优的存储介质,需要考虑应用的具体需求。嵌入式应用中 ...

关闭
站长推荐上一条 1/10 下一条
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2023 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表