电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>公共交通服务的低成本全自动收费系统

公共交通服务的低成本全自动收费系统

2022-10-31 | zip | 0.40 MB | 次下载 | 免费

资料介绍

描述

介绍

Touchless Do More ,我们就是这样开始的。在这场COVID-19大流行中,它强调了尽可能避免人与人之间的接触以打破这种传染性传播链的重要性。所以我们选择解决的问题是收费问题。也许归结为同时实现两个目标。这意味着我们的印度确实需要一些强大的系统来在公共交通部门收取车费,即使在这个传染性传播的时期,我们也迫切需要避免人与人之间的接触。唔。两全其美!即使所有发达国家都在实施,但在印度大规模实施仍然不可行。这就是我们的系统发挥作用的地方,A印度公共交通服务的低成本全自动收费系统

pYYBAGNYtKmAMeIeAACF3Ynmkfc492.png
架构框图
 

Overview Of The Project

现在,我们将解释如何使用来自 Arduino 的 Arduino MKR WiFi 1010 板、Mifare MFRC522 RFID 读写器、Google firebase 和 Google 表格制作 TapToPay 自动收费系统。MKR 板和读卡器使用 SPI 进行通信我们使用标签作为巴士站标识符和个人用户的卡片。

Brief Introduction about RFID Technology

RFID或射频识别系统由两个主要组件组成,标签和阅读器。阅读器由射频模块和产生高频电磁场的天线组成。另一方面,标签通常是无源设备。它包含一个存储和处理信息的微芯片

poYBAGNYtKuAdY90AAAl8WQlPig490.png
图片来源:数据表
 

让我们成功吧

第一步:检测停止卡和用户卡

当 RFID 靠近 RFID 阅读器时,它会与数据库进行核对,以确定它是 Stop Card 还是Passenger Card。如果是停止卡,则更新系统中的当前停止。

 

Step2:更新旅客名单

如果读取的卡 ID 不存在于公交车站数据库中,则它是乘客卡。为已登机的乘客保留一个单独的列表。读取乘客卡后,将在乘客列表中搜索该 ID。如果 ID 不在列表中,则添加乘客 ID 和当前停靠点作为乘客的登机点。

乘客列表以链表形式维护

int update_pass_list(byte *rfTag, int point, int amount)
{
    passenger_t *pass = NULL;

    if (!head) {
        /* Passenger on boarding case */
        if (amount < min_req_amt(point)) {
            Serial.print("Problem");
            return -1;
        }
        pass = (passenger_t *) malloc(sizeof(passenger_t));
        if (!pass) {
            /* This case will hit only when the system in bad state */
            printf("Failed to allocate Memory\n");
            exit (-EXIT_FAILURE);
        }
        head = tail = pass;
        memcpy(pass->rfTag, rfTag, RFTAG_MAX_LEN);
        pass->startPoint = point;
        pass->next = NULL;
    } else {
        pass = search_tag(rfTag);
        if (pass) {
            /* Passenger getting off case */
            /* Deduct money and write */
            byte data[MAX_DATA_SIZE] = { };
            byte* out = 0;

            int_to_byte(Cal_fare(amount, (point - pass->startPoint)), data);

            updated_balance = byte_to_int(data);

            /* Deleting entry from list */
            delete_entry(rfTag);
        } else {
            /* Passenger on boarding case */
            if (amount < min_req_amt(point)) {
                /* If the passenger card has low amount then reject it */
                return -1;
            }

            pass = (passenger_t *) malloc(sizeof(passenger_t));
            if (!pass) {Serial.print("Failed to allocate Memory");
                /* This case will hit only when the system in bad state */
                printf("Failed to allocate Memory\n");
                exit (-EXIT_FAILURE);
            }

            tail->next = pass;
            memcpy(pass->rfTag, rfTag, RFTAG_MAX_LEN);

            pass->startPoint = point;
            pass->next = NULL;
            tail = tail->next;
        }
    }
}

第 3 步:计算票价并更新余额

乘客下车时,应刷卡。我们的系统将读取卡片并在乘客列表中搜索 ID,并从列表中获取乘客登机点。以当前站点和乘客的上车站点计算票价。计算的票价将从该乘客卡的可用余额中扣除,剩余余额将更新到该卡。

int Cal_fare(int amt, int num_stop) 
{ 
    return (amt - (num_stop * FARE_PER_STOP)); 
} 

void int_to_byte(int data, byte buffer[MAX_DATA_SIZE]) 
{
    int x = data / MAX_AMT_PER_BYTE;
    int y = data % MAX_AMT_PER_BYTE;
    int i = 0;

    memset(buffer, 0, MAX_DATA_SIZE);

    if (x == 0) {
        buffer[0] = y;
    } else {
        /* update dataBlock with new balance amount */
        for (i = 0; i < x; i++) {
            buffer[i] = 0xff;
        }
        buffer[x] = y;
    }
}

int byte_to_int(byte buffer[MAX_AMT_SIZE])
{
    int curr_output = 0;
    for(int i = 0; i < MAX_AMT_SIZE; i++) {
        curr_output = curr_output + (int) buffer[i];
    }
    return curr_output;
}

第 4 步:删除条目

将剩余金额更新到乘客卡后,将在列表中搜索乘客 ID,并将条目从列表中删除。该列表仅维护列表中的已登机乘客。

void delete_entry(byte *rfTag)
{
    passenger_t *list = head;
    passenger_t *prev = NULL;

    if (!rfTag)
        return;

    /* Updating the head in case of first entry itself the match */
    if (list && !memcmp(list->rfTag, rfTag, RFTAG_MAX_LEN)) {
        head = list->next;
        free(list);
        return;
    }

    /* searching the entry in the list */
    while (list && memcmp(list->rfTag, rfTag, RFTAG_MAX_LEN)) {
        prev = list;
        list = list->next;
    }

    if (!list)
        return;

    prev->next = list->next;

    /* Updating the tail */
    if (list == tail)
        tail = prev;

    free(list);
}

第 5 步:将 UID 发送到 Firebase 并更新 Google 表格

乘客详细信息云数据库中更新这将有助于跟踪乘客的路线,以防他被检测出 COVID-19 呈阳性。

乘客详细信息是乘客 ID、随时间登机的停靠站、随时间停靠的停机坪。

 

软件流程:

pYYBAGNYtK2ATFQ7AABR-7AKR-o80.jpeg
软件算法
 

该系统将如何减缓 Covid-19 在印度的传播?

印度,与世界上许多其他地方一样,冠状病毒对运输造成了巨大打击。提高公共汽车运输的安全性将是最紧迫的问题。在印度的公共汽车运输中,乘客使用现金支付车费,通过这种方式可能会传播病毒。印度摆脱现金的做法得到了政府的帮助。尽管有推动,印度仍然是一个现金密集型经济体。一些州政府也开始为其巴士使用电子票务系统,以尽量减少接触。如果实施,我们基于 Arduino 的 TapToPay 系统将在印度交通系统中发挥重要作用

增强功能

  • 作为原型,我们使用了单个 RFID 读写器。在实时部署中,它可以使用两个或多个 RFID 读取器/写入器。一张用于停车标签,一张用于乘客卡。
  • 单独的RFID读写器可用于记录登机乘客和离开乘客的数据。
  • 可以使用单独的服务器和新的数据库技术将乘客的旅行详细信息存储在云中。

下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费