资料介绍
描述
嗨,大家好
本项目主要是关于帮助农民的地球漫游车。本项目主要包含三个模数。
模块 1:
这需要两个直流电机和一个电机驱动器。电机驱动器包含
在这里,您必须将 v+、en1、en2 连接到面包板中的单点,并将电机的四根电线连接到 1 ma 2 引脚中的四个输入。现在接下来将电机驱动器引脚的输出引脚连接到 arduino 和电池应如下图连接。
现在接下来我们必须将它们连接到螺栓。相同的四个引脚应连接到螺栓的数字引脚(0、1、2、3)。
现在土壤传感器应该连接到螺栓,但将数字引脚连接到螺栓(数字 4 引脚)。现在终于是时候将温度传感器连接到螺栓interwetten与威廉的赔率体系 引脚(A0)了。
现在所有的地面和 v+(温度传感器、湿度传感器)、en1、en2 到 arduino 的 5v,最后应该为所有引脚提供所需电压的电池。
模块 2:
NRF 连接:
上图称为nrf模块,用于无线电通信。上图也应该包含在我们的电路中以控制附近区域的汽车。
NRF 与 ARDUINO 的最终连接
现在是连接 JOY STICKS 的时候了:
使用两个操纵杆:
1)控制小车方向。
2)控制舵机。
模块 3:
最终编码
1)阿杜诺编码:
发射机:
#include
#include
#include
#include
#include
RF24 radio(7, 8); // CSN, CE
const byte address[6] = "00001";
int x_key = A1;
int y_key = A0;
int p_key = A3;
int q_key = A2;
int x_pos;
int y_pos;
int p_pos;
int q_pos;
void setup() {
radio.begin();
radio.openWritingPipe(address)
;
radio.setPALevel(RF24_PA_MIN);
radio.setChannel(87);
radio.setDataRate(RF24_
250KBPS);
radio.stopListening();
Serial.begin(9600);
pinMode (x_key, INPUT) ;
pinMode (y_key, INPUT) ;
pinMode (p_key, INPUT) ;
pinMode (q_key, INPUT) ;
}
int pos;
void loop() {
x_pos = analogRead (x_key) ;
y_pos = analogRead (y_key) ;
p_pos = analogRead (p_key) ;
q_pos = analogRead (q_key) ;
Serial.println(x_pos);
Serial.println(y_pos);
Serial.println(p_pos);
Serial.println(q_pos);
if (p_pos>400 && p_pos<600 && q_pos>400 && q_pos<600)
{
if(x_pos>400 && x_pos<600 && y_pos>400 && y_pos<600)
{
pos=100;
radio.write(&pos, sizeof(pos));
}
if(x_pos>400 && x_pos<600 && y_pos<400)
{
pos=200;
radio.write(&pos, sizeof(pos));
}
if(x_pos>400 && x_pos<600 && y_pos>600)
{
pos=300;
radio.write(&pos, sizeof(pos));
}
if(y_pos>400 && y_pos<600 && x_pos<400)
{
pos=400;
radio.write(&pos, sizeof(pos));
}
if(y_pos>400 && y_pos<600 && x_pos>600)
{
pos=500;
radio.write(&pos, sizeof(pos));
}
Serial.println(pos);
delay(100);
}
else if(p_pos<400 || p_pos>600)
{
if(p_pos<400)
{
pos=600;
radio.write(&pos, sizeof(pos));
}
if(p_pos>600)
{
pos=700;
radio.write(&pos, sizeof(pos));
}
delay(100);
}
}
接收者:
#include
#include
#include
#include
#include
#include
Servo servo;
RF24 radio(7, 8); // CSN, CE
const byte address[6] = "00001";
int servo_pin = 9;
int sensor_pin=A0;
int output_value;
void setup() {
Serial.begin(9600);
radio.begin();
servo.attach (servo_pin ) ;
radio.openReadingPipe(0, address);
radio.setPALevel(RF24_PA_MIN);
radio.setChannel(87);
radio.setDataRate(RF24_250KBPS);
radio.startListening();
}
int pos;
void loop() {
if (radio.available()) {
radio.read(&pos, sizeof(pos));
Serial.println(pos);
if(pos==100)
{
digitalWrite(6,LOW);
digitalWrite(5,LOW);
digitalWrite(4,LOW);
digitalWrite(3,LOW);
// Serial.println("gk0");
}
else if (pos==200){
digitalWrite(6,HIGH);
digitalWrite(5,LOW);
digitalWrite(4,HIGH);
digitalWrite(3,LOW);
delay(10);
// Serial.println("gk1");
}
else if (pos==300){
digitalWrite(6,LOW);
digitalWrite(5,HIGH );
digitalWrite(4,LOW);
digitalWrite(3,HIGH);
delay(10);
// Serial.println("gk2");
}
else if (pos==400){
digitalWrite(6,LOW);
digitalWrite(5,HIGH );
digitalWrite(4,HIGH);
digitalWrite(3,LOW);
delay(10);
// Serial.println("gk3");
}
else if (pos== 500){
digitalWrite(6,HIGH);
digitalWrite(5,LOW );
digitalWrite(4,LOW);
digitalWrite(3,HIGH);
delay(10);
// Serial.println("gk5");
}
else if (pos== 600){
servo.write(90);
delay(10);
// Serial.println("gk6");
}
else if (pos== 700){
servo.write(180);
delay(10);
// Serial.println("gk7");
}
}
else
{
Serial.println("connection lost");
}
}
}
现在接收电报消息:(服务器代码)
登录到ripl.it之类的服务器之一,然后上传代码
import requests # for making HTTP requests
import json # library for handling JSON data
import time # module for sleep operation
from boltiot import Bolt # importing Bolt from boltiot module
import conf # config file
mybolt = Bolt(conf.bolt_api_key, conf.device_id)
def get_sensor_value_from_pin(pin):
try:
response = mybolt.digitalRead(pin)
data = json.loads(response)
if data["success"] != 1:
print("Request not successfull")
print("This is the response->", data)
return -999
sensor_value = int(data["value"])
return sensor_value
except Exception as e:
print("Something went wrong when returning the sensor value")
print(e)
return -999
def send_telegram_message(message):
"""Sends message via Telegram"""
url = "https://api.telegram.org/" + conf.telegram_bot_id + "/sendMessage"
data = {
"chat_id": conf.telegram_chat_id,
"text": message
}
try:
response = requests.request(
"GET",
url,
params=data
)
print("This is the Telegram response")
print(response.text)
telegram_data = json.loads(response.text)
return telegram_data["ok"]
except Exception as e:
print("An error occurred in sending the alert message via Telegram")
print(e)
return False
while True:
# Step 1
sensor_value = get_sensor_value_from_pin("4")
print("The current sensor value is:", sensor_value)
# Step 2
if sensor_value == -999:
print("Request was unsuccessfull. Skipping.")
time.sleep(10)
continue
# Step 3
if sensor_value >= conf.threshold:
print("The current temperature value is")
message = "The moisture value is just greater than threshold "
telegram_status = send_telegram_message(message)
print("This is the Telegram status:", telegram_status)
# Step 4
time.sleep(100)
配置文件:
"""Configurations for telegram_alert.py"""
bolt_api_key = "XXXX" # This is your Bolt Cloud API Key
device_id = "XXXX" # This is the device ID and will be similar to BOLTXXXX where XXXX is some numbers
telegram_chat_id = "@XXXX" # This is the channel ID of the created Telegram channel. Paste after @
telegram_bot_id = "botXXXX" # This is the bot ID of the created Telegram Bot. Paste after bot
threshold = 0 # Threshold beyond which the alert should be sent
输入你的 bot 和 api 值
过程:
使用 Telegram 发送警报消息
什么是电报?
Telegram 是一款类似于 Whatsapp 的消息应用程序。您还可以发送和接收消息以及文件。免费使用。您可以通过您的 Android/iOS/Windows 手机以及您的 PC 或 Mac 访问该平台。
一些电报术语 -
什么是电报频道?
频道之于 Telegram 就像群组之于 Whatsapp。频道是一种向大量观众传播信息的工具。他们可以拥有无限数量的订阅者,他们可以通过永久 URL 公开,并且频道中的每个帖子都有自己的查看计数器。
什么是机器人?
机器人是在 Telegram 中运行的第三方应用程序。用户可以通过向机器人发送消息、命令和请求来与机器人交互。
我们将使用机器人在我们的频道上发送警报。
我们将在这个项目中学到什么?
在这个项目中,当传感器值超过您设置的阈值时,您将能够通过 Telegram 向您的手机发送警报。
这个项目我需要什么?
要通过电报发送警报和消息,您需要,
- 具有 Internet 连接的 Android/iOS/Windows 手机。
- 电报帐户。为此,您需要一个手机号码。
- 通过 PuTTY 或虚拟机访问您的 Ubuntu 操作系统。
设置电报
注册/登录 Telegram 的步骤
- 前往手机上的 Playstore 或 App Store 并搜索 Telegram。
- 下载并安装最新版本的 Telegram 应用程序。
- 注册一个新帐户或通过提供您的手机号码登录 Telegram。
- Telegram 会打电话给您或向您发送短信以验证您的手机号码。
- 验证您的帐户并在需要时批准任何权限。
- 您将登录到 Telegram,并会看到类似于下图的屏幕。(如果和下面的截图有出入也没关系)
您已成功安装 Telegram 并设置您的帐户。在接下来的课程中,我们将学习更多关于频道和机器人的知识。
创建频道
什么是电报频道?
频道之于 Telegram 就像群组之于 Whatsapp。频道是一种向大量观众传播信息的工具。他们可以拥有无限数量的订阅者,他们可以通过永久 URL 公开,并且频道中的每个帖子都有自己的查看计数器。
创建频道的步骤
- 转到 Telegram 应用程序的主屏幕。
- 从左侧滑动以显示菜单。
- 点击“新频道”。
- 它会要求您提供频道的名称和说明。给一个合适的名字和描述。添加照片是可选的。
- 在下一个屏幕中,将频道设置为公共。
- 在同一屏幕上,它会要求您输入频道的永久链接。您可以使用小写字母和数字 0-9 来创建频道链接。
- 请注意,频道链接名称是全局的,只有当链接名称可用时,您才能创建频道链接。频道链接名称类似于电子邮件地址,即一次只能存在一个唯一的电子邮件 ID。
- 您可以将频道链接名称保留为 temperature_alert_,后跟您的电子邮件 ID。例如,如果我的电子邮件 ID 是 developer@boltiot.com,我可以将频道链接名称保留为temperature_alert_developer_boltiot_com (我删除了 @ 和. 符号,因为它是不允许的,并将其替换为下划线 _)。这只是一个建议。频道链接名称可以保留,只要有效即可。
- 记下此频道永久链接名称。稍后将需要将消息发送到此频道。例如下面截图中的频道链接名称是“ temperature_alert”。
- 恭喜!您已经创建了一个新频道。您还可以从您的应用程序主屏幕查看此频道。
- 您可以单击顶部的频道名称以查看有关它的更多详细信息。
- 接下来,我们需要创建一个机器人并将其添加到频道,以便它可以在此频道中为我们发布警报。
创建一个机器人
什么是机器人?
机器人是在 Telegram 中运行的第三方应用程序。用户可以通过向机器人发送消息、命令和请求来与机器人交互。
我们将使用机器人在我们的频道上发送警报。
创建一个新的机器人
Telegram 允许我们在名为“BotFather”的机器人的帮助下创建一个新的机器人。它是创建和管理其他机器人的单个机器人。
- 在应用程序的主屏幕上,单击右上角的搜索图标并输入“botfather”。
- 在搜索结果中,单击“BotFather”的正确结果,如下所示。正确的“BotFather”名称旁边会有一个蓝色勾号。这将带您进入与“BotFather”的聊天窗口。
- 聊天将已经有一些项目,并将向您显示一个命令列表以开始使用。
- 由于我们需要创建一个新的机器人,因此请继续并在窗口中输入“/newbot”。
- 它会要求您输入更多详细信息,例如 Bot 名称和 Bot 用户名。
- 成功创建机器人后,您将看到一个类似于下图的屏幕,其中包含机器人令牌。此令牌用于控制您的机器人并代表它发送消息。请妥善保管此令牌,因为它将允许任何人访问您的机器人。
- 在上面的截图中,Bot 令牌是“894346529:AAhuJ2XJQy5dlEtLYF0sc0Z_qu0fSqihSSc”。请将其保存为 telegram_bot_id。telegram_bot_id 保存为“bot”,后跟 bot 令牌。因此,在此示例中,telegram_bot_id 将为“bot894346529:AAhuJ2XJQy5dlEtLYF0sc0Z_qu0fSqihSSc”。
- telegram_bot_id 将在 python 代码中用于发送消息。python代码将在后面的课程中教授。
- 另外,保存 Bot ID 时请小心。您可能会混淆 0 和 O、I 和 1 等,因为它们看起来很相似。
- 恭喜,您已经创建了一个新的机器人。现在,我们需要将它添加到我们之前创建的频道中,以便我们可以发送警报。
将机器人添加到频道
- 从 App 主屏幕,打开我们之前创建的频道。
- 在屏幕中,单击顶部的频道名称以打开该频道的信息。
- 单击“管理员”按钮,以便我们可以将新创建的机器人添加到频道中。
- 使用机器人的用户名搜索我们创建的机器人。找到正确的 Bot 后,单击它以将其添加到频道。请确保您在上一步中单击了管理员按钮,因为这将允许我们的机器人发布到频道。
- 系统将要求您确认机器人的权限。按右上角的刻度线继续将机器人添加到频道。确保机器人有权“发布消息”。
- 您现在将在频道的管理员列表中看到新创建的机器人。
- 现在我们将编写代码以通过 Bot 将消息发送到频道。
现在为 TWILLO 和 MAIL GUN 设置网络
使用 Google Assistant 在您的手机上随时通过短信和电子邮件接收 LM35 温度传感器值。
当您需要随时检查 Iot 项目的传感器值时,您会怎么做?你只需登录到你的云来检查它。看起来很简单,对吧?但是,如果您必须每小时检查一次值或每隔几分钟检查一次值,并且一天要检查多次,该怎么办?那会有点(非常)麻烦,对吧?现在,想象一个世界,您只需对 Google 智能助理说“将传感器值发送给我”,即可通过短信和电子邮件获取传感器值。等等,等等,等等。那种情况不是想象出来的,因为你们自己几步就能做到。请仔细阅读,找出答案。
在此项目中,我们将通过发送给 Google 智能助理的命令通过短信和电子邮件从 LM35 传感器接收温度传感器值。
第 1 步:硬件设置
将 LM35 传感器握在手中,以便您可以看到名称。三个引脚从左到右分别是VCC、输出和GND。将三个引脚连接到母线到公线。将对应于从左到右的三个引脚的三根线连接到 Bolt WiFi 模块上的 5 V、A0 和 GND 引脚。将 WiFi 模块连接到 5 V 电源。确保它已连接到有效的互联网连接。
第 2 步:在 Integromat 中创建 IFTTT 模块
登录您的 Integromat 帐户。如果您尚未在 Integromat 上注册,则可以单击此处创建一个帐户。登录后,点击屏幕右上角的“创建新场景”。在屏幕中选择 IFTTT、HTTP、Mailgun 和 Twilio 以选择所需的工具,然后单击“继续”。然后单击白色圆圈并从列表中选择 IFTTT,然后从菜单中选择“接收数据”。该模块对于将其连接到 IFTTT 上的 Applet 至关重要,稍后将进行讨论。单击“添加”添加一个新的 Webhook,然后为其指定一个合适的名称,然后单击“保存”。现在,您将获得一个 URL 或链接。保存它以供进一步使用。
第 3 步:在 Integromat 中创建 HTTP 模块
接下来,单击附加到模块的“+”符号以添加新模块。选择“HTTP”,然后选择“发出请求”。这是从 Bolt Iot Cloud 接收传感器值所必需的。在 URL 中,粘贴链接https://cloud.boltiot.com/remote/your-bolt-iot-api-key/analogRead?pin=A0&deviceName=BOLTXXXXXXX。将“your-bolt-iot-api-key”和“BOLTXXXXXXX”替换为您可以在 Bolt Iot Cloud 中轻松找到的相应凭据。让方法为“GET”并单击“OK”。
上面的链接用于从 Bolt Iot Cloud 获取传感器值。上述链接的输出将采用 {"value": "XXX", "success": "1"} 的形式,其中 XXX 是传感器值。
第 4 步:在 Integromat 中创建 Mailgun 模块
现在,再次单击“+”并在搜索框中键入“Flow Control”并选择它,然后选择“Router”。必须制作两个白色圆圈。单击第一个白色圆圈并选择“Mailgun”,然后选择“发送电子邮件”。在这里,Mailgun 用于接收带有温度的电子邮件。如果您已经在 Mailgun 中拥有一个帐户,那么您必须拥有可以在您的 Mailgun 帐户中轻松找到的 API 密钥和域名。如果您在 Mailgun 中没有帐户,则可以按照下面给出的替代步骤操作。根据要求填写所需的详细信息。输入收件人的邮件(这是您的电子邮件地址)。在“发件人”字段中,键入“test@yourdomainname”。在“内容”部分,我们需要写入温度值而不是传感器值。要将温度值转换为传感器值,我们需要将该数字除以 10.24。要获得 XXX 形式的传感器值,我们需要消除我们使用函数“substring”的所有其他字符。单击旁边对话框中的“A”符号,然后选择“子字符串”。
在括号内的第一个空格中,单击星号下的“数据”选项,然后在第二个空格和第三个空格中单击“11”和“14”。严格来说,这不是获取传感器值的正确方法,因此我使用 hack 来获取。如果有人知道正确的方法,他们可以在下面的评论部分提及该方法。
后者是为了仅从输出中捕获“XXX”。然后将该数字除以 10.24
在保存场景之前,不要忘记打开屏幕底部的“计划”并将“运行场景”选择为“立即”。您的最终方案应如下所示。
第 6 步:在 IFTTT 中制作新的 Applet
登录到您的 IFTTT 帐户。如果您还没有在 IFTTT 上注册,那么您可以单击此处创建一个帐户。登录后,单击“我的小程序”部分下的“新建小程序”。在搜索框中搜索后,依次点击“+this”和“Google Assistant”。在以下屏幕中单击“说一个简单的短语”。键入要为其触发所需操作的命令。
单击“触发器”,然后单击“+那个”。在搜索框中搜索“Webhooks”并选择它,然后在以下屏幕中选择“Make a web request”。在 URL 字段中,粘贴我们在 Integromat 中创建 IFTTT 模块后在第 2 步中获得的链接。当您对 Google Assistant 说出命令时,此步骤对于在 Integromat 中运行场景非常重要。然后,在方法中选择“POST”并单击“创建操作”。为小程序写一个合适的名称,然后选择“完成”。
而已。现在看看当您拿出手机并说“Ok Google,发送温度传感器值”时的神奇之处。
原理图
将母对公电线连接到 LM35 传感器
将母对公电线连接到 Bolt WiFi 模块
最终连接
就是这样,现在上传所有内容然后检查。
如有任何疑问,请通过评论部分与我联系。
谢谢你....................................
- 在SensiML的帮助下为人类和地球保护泥炭地
- AWS DeepRacer到自动驾驶漫游车
- 洞穴探险漫游车开源分享
- Arduino地球仪开源
- 遥控车开源分享
- 基于Arduino UNO的自主导航漫游车 0次下载
- 自动驾驶和避障漫游者开源
- 电动车设计开源
- 户外漫游者开源项目
- 地球仪加湿器主板原理图免费下载 44次下载
- 实现图像漫游_Delphi教程 13次下载
- 关于智能车的优秀论文(43篇论文) 0次下载
- 数字地球的参考模型 27次下载
- 基于OpenGL威廉希尔官方网站 的实时漫游系统研究及实现
- 基于SIP的VoWLAN漫游时延优化方法研究
- 关于FPGA的开源项目介绍 1161次阅读
- 雷达波束在地球大气层中的传播方式 1529次阅读
- FCC Part25.204-卫星地球站的功率限值 876次阅读
- 前沿开源威廉希尔官方网站 领域的开源大数据一一解读 1005次阅读
- 怎么上手 PR 流程?如何开始参与开源项目? 1470次阅读
- 干货:一些关于常见开源协议的问题解答 2386次阅读
- 浅谈十个关于低功耗同步通道的常见问题 995次阅读
- 关于明年Linux的几个预测 2424次阅读
- WLAN无线漫游基本原理 9589次阅读
- 关于人工智能无人车的研究案例 8473次阅读
- 关于FPGA在开源方面的探索浅析 3706次阅读
- 开发者不可错过的开源项目—人工智能篇 6184次阅读
- 卫星地球站对微波接力站的干扰计算步骤和具体方法分析 3048次阅读
- 国际漫游费用太高?树莓派SIP-GSM设计来帮你 9280次阅读
- WLAN的标准、安全及漫游 940次阅读
下载排行
本周
- 1使用单片机实现七人表决器的程序和仿真资料免费下载
- 2.96 MB | 44次下载 | 免费
- 2联想E46L DAOLL6笔记本电脑图纸
- 1.10 MB | 2次下载 | 5 积分
- 3MATLAB绘图合集
- 27.12 MB | 2次下载 | 5 积分
- 4PR735,使用UCC28060的600W交错式PFC转换器
- 540.03KB | 1次下载 | 免费
- 5UCC38C42 30W同步降压转换器参考设计
- 428.07KB | 1次下载 | 免费
- 6DV2004S1/ES1/HS1快速充电开发系统
- 2.08MB | 1次下载 | 免费
- 7模态分解合集matlab代码
- 3.03 MB | 1次下载 | 2 积分
- 8美的电磁炉维修手册大全
- 1.56 MB | 1次下载 | 5 积分
本月
- 1使用单片机实现七人表决器的程序和仿真资料免费下载
- 2.96 MB | 44次下载 | 免费
- 2UC3842/3/4/5电源管理芯片中文手册
- 1.75 MB | 15次下载 | 免费
- 3DMT0660数字万用表产品说明书
- 0.70 MB | 13次下载 | 免费
- 4TPS54202H降压转换器评估模块用户指南
- 1.02MB | 8次下载 | 免费
- 5STM32F101x8/STM32F101xB手册
- 1.69 MB | 8次下载 | 1 积分
- 6HY12P65/HY12P66数字万用表芯片规格书
- 0.69 MB | 6次下载 | 免费
- 7华瑞昇CR216芯片数字万用表规格书附原理图及校正流程方法
- 0.74 MB | 6次下载 | 3 积分
- 8华瑞昇CR215芯片数字万用表原理图
- 0.21 MB | 5次下载 | 3 积分
总榜
- 1matlab软件下载入口
- 未知 | 935119次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420061次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233084次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191367次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183335次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73807次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65987次下载 | 10 积分
评论
查看更多