689|1

1

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【得捷电子Follow me第1期】+超速报警项目总结报告 [复制链接]

  本帖最后由 Snapdragon850 于 2023-6-30 23:58 编辑

一、视频介绍

       根据活动要求录制的短视频,主要内容是任务及项目的演示。

        

【得捷电子Follow me第1期】超速报警-陈海

二、项目描述

     1、板卡介绍

        板卡是来自树莓派的Pi Pico W,主控芯片是树莓派RP2040,有两颗Cortex-M0+的核心;板载一个WiFi+蓝牙模块。

         板卡官方支持MicroPython编程,官网可以下载到对应的固件。

         

     2、各任务介绍

        本次活动至少需要完成4个任务,分别是熟悉MicroPython语法、驱动外设、同步网络时间、实现定位功能。除此之外可以选择完成扩展任务。

     3、项目介绍

        本次活动我完成的项目是超速报警。利用GPS模块的测速功能,配合OLED、蜂鸣器完成显示及报警。

三、各功能对应的主要代码片段及说明

    1、蜂鸣器驱动

import time
import machine

buzzer = machine.Pin(20, machine.Pin.OUT)

while True:
    buzzer.value(1)
    time.sleep(0.5)
    buzzer.value(0)
    time.sleep(0.5)

        如上面的代码所示,先初始化蜂鸣器的IO,然后控制IO电平的高低就可以控制蜂鸣器的状态了。

     2、OLED驱动

        

from machine import Pin, I2C
from ssd1306 import SSD1306_I2C

i2c = I2C(0, sda=Pin(8), scl=Pin(9), freq=400000)
oled = SSD1306_I2C(128, 64, i2c)
oled.text('Hello World', 0, 0, 1)
oled.show()

        如上面的代码所示,先初始化I2C,然后初始化OLED并绑定I2C。此代码的输出结果是在OLED上显示一个Hello World。

    3、同步网络时间

import machine
import time
import ntptime
import network

# 无线网络初始化
ssid = "wifi_name"
password = "wifi_passwd"
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)

max_wait = 100
while max_wait > 0:
    if wlan.status() < 0 or wlan.status() >= 3:
        break
    max_wait -= 1
    print('等待连接')
    time.sleep(0.5)
    show_loacl_time()

if wlan.status() != 3:
    raise RuntimeError('联网失败')
else:
    print('网络已连接')
    status = wlan.ifconfig()
    oled_ip = status[0]
    print('ip = ' + oled_ip)
    oled_show()

print('开始NTP校时')
ntptime.host = 'ntp3.aliyun.com'
ntptime.settime()
print('校时后系统时间: ')
show_loacl_time()

        上图是网络连接并NTP校时的代码,首先使能WLAN功能,再根据WiFi的名称和密码连接到网络,这里最多尝试100次连接;连接成功后进行NTP校时,并显示校时后的时间。

    4、实现定位功能

from machine import Pin, UART, I2C, RTC
from micropyGPS import MicropyGPS

# AIR530串口初始化
gps_module = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))
gps = MicropyGPS()

while True:
    if gps_module.any():
        stat = gps.update(gps_module.read(1).decode('ascii'))
        if stat:
            gps_latitude = gps.latitude[0] + gps.latitude[1] / 60.0
            gps_longitude = gps.longitude[0] + gps.longitude[1] / 60.0
            gps_speed = gps.speed[2]
            oled_coordinate = str(gps_latitude)[0:5] + ", " + str(gps_longitude)[0:5]
            oled_speed = str(gps_speed) + " km/h"
            show_loacl_time()
            if gps_speed > 0.1:
                buzzer.value(1)
            else:
                buzzer.value(0)
            time.sleep(0.5)

        如上面的代码所示,先初始化GPS模块所在的串口,再实例化一个MicropyGPS的模块。在大循环里面,不断地读取GPS模块,并传输到MicropyGPS模块里面,完成一次完整的数据读取后,读出计算出来的坐标值以及速度值,并显示在OLED模块上面。

四、功能展示及说明

    1、校时功能

                                                                     图1

        如图1所示,在未连接网络时,第一行显示wait connect...表示等待WiFi的连接;第二行显示一个默认的时间。 

                                                         图2

        如图2所示,连接好WiFi后会立即进行校时,第二行改为校准后的时间;第三第四行为GPS信息,由于室内无GPS信号,所以显示一个内部的默认值。 

    2、定位功能

       

                                                      图3

        如图3所示,第三行显示当前的坐标信息(经纬度)

    3、超速报警功能

        

                                                     图4

        如图4所示,晃动定位模块模拟运动后,速度一栏的值有了变化,此时蜂鸣器报警(视频内可以体现)。 

五、对本活动的心得体会

        首先MicroPython对于我这样一个传统的嵌入式工程师感觉有很强的冲击,之前从未想过有这么一种编程方式。但是目前来说MicroPython还没有经过广泛的验证,只能做些研究性质的使用和开发。

六、源代码

    见附件

main.py

2.51 KB, 下载次数: 0

源代码

最新回复

首先MicroPython对于我这样一个传统的嵌入式工程师感觉有很强的冲击,之前从未想过有这么一种编程方式。 同意这个感想!   详情 回复 发表于 2023-7-1 09:06
点赞 关注
 
 

回复
举报

6841

帖子

11

TA的资源

版主

沙发
 

首先MicroPython对于我这样一个传统的嵌入式工程师感觉有很强的冲击,之前从未想过有这么一种编程方式。

同意这个感想!

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

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