亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Earth_Analyzer

组件和用品

Bolt IoT Bolt WiFi 模块
× 1
Arduino UNO
× 1
Arduino Nano R3
× 1
nRF24l01
× 2
直流电机,12 V
× 2
DFRobot 12V铅酸电池太阳能电源管理器
× 1
SparkFun 双 H 桥电机驱动器 L298
× 1
跳线(通用)
× 1
LM35
× 1
DFRobot Gravity:模拟电容式土壤湿度传感器-耐腐蚀
× 1
SG90 微伺服电机
× 1
操纵杆,10 kohm
× 1

必要的工具和机器

烙铁(通用)
焊锡丝,无铅
助焊剂,焊接
多功能工具,螺丝刀

应用和在线服务

Arduino IDE
Bolt IoT Bolt Cloud
integromat
Twilio SMS Messaging API
mailgun
Bolt IoT Android 应用
Bolt IoT iOS 应用

关于这个项目

你好,你好 每一个

本项目主要是帮助农民的地球漫游车。本项目主要包含三个模块。

模块 1:

完整设置的硬件连接现在考虑直流电机。

这需要两个直流电机和一个电机驱动器。电机驱动器包含

在这里,您必须将 v+、en1、en2 连接到面包板中的单点,将电机四根线连接到 1 ma 2 引脚中的四个输入。接下来,电机驱动器引脚的输出引脚连接到 arduino 和电池应如下图连接。

现在接下来我们必须将它们连接到螺栓。同样的四个引脚应该连接到螺栓的数字引脚(0、1、2、3)。

现在土壤传感器应该连接到螺栓,但将数字引脚放置到螺栓(数字 4 引脚)上。现在终于可以将温度传感器连接到螺栓模拟引脚(A0)了。

现在这一次所有的地和 v+(温度传感器,湿度传感器),en1,en2 到 arduino 的 5v,最后这所有的引脚都应该提供所需电压的电池。

模块 2:

NRF 连接:

上图称为nrf模块,用于无线电通信。上图也应包含在我们的电路中,以控制附近区域的汽车。

NRF 与 ARDUINO 的最终连接

现在是时候连接游戏棒了:

使用了两个操纵杆:

1)控制汽车方向。

2)控制舵机。

模块 3:

最终编码

1)ARDUINO编码:

发射器:

#include 
#include
#include
#include
#include

RF24 无线电(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
伺服舵机;

RF24 radio(7, 8); // CSN, CE
const byte address[6] ="00001";
intservo_pin =9;
int sensor_pin=A0;
int output_value;

void setup() {
Serial.begin(9600);
radio.begin();
servo.attach (servo_pin);
radio.openReadingPipe(0,地址);
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 );
数字Write(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( “连接丢失”);
}
}
}

现在接收电报信息:(服务器代码)

登录其中一台服务器,如 ripl.it,然后上传代码

主文件

import requests # 用于发出 HTTP 请求
import json # 处理 JSON 数据的库
import time # 睡眠操作模块
from boltiot import Bolt # 从 boltiot 模块导入 Bolt
import conf # 配置文件
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("请求不成功")
print("This是响应->", data)
return -999
sensor_value =int(data["value"])
return sensor_value
except Exception as e:
print("返回传感器值时出现问题")
print(e)
return -999
def send_telegram_message(message):
"""通过电报发送消息" ""
url ="https://api.telegram.org/" + conf.telegram_bot_id + "/sendMessage"
data ={
"chat_id":conf.telegram_chat_id,
"text":message
}
try:
re sponse =requests.request(
"GET",
url,
params=data
)
print("这是电报响应")
print(response.text)
telegram_data =json.loads(response.text)
return telegram_data["ok"]
except Exception as e:
print("发生错误在通过 Telegram 发送警报消息时")
print(e)
return False
while True:
# Step 1
sensor_value =get_sensor_value_from_pin("4")
print("当前传感器值为:", sensor_value)
# Step 2
if sensor_value ==-999:
print("请求失败。跳过。")
time.sleep(10)
continue
# Step 3
if sensor_value>=conf.threshold:
print("当前温度值为")
message ="水分值刚好大于阈值 "
telegram_status =send_telegram_message(message)
print("这是 Telegram 状态:",telegram_status)
#第 4 步
time.sleep(100)

配置文件:

"""Telegram_alert.py 的配置"""
bolt_api_key ="XXXX" # 这是你的 Bolt Cloud API 密钥
device_id ="XXXX" # 这是设备 ID 和将类似于 BOLTXXXX 其中 XXXX 是一些数字
telegram_chat_id ="@XXXX" # 这是创建的 Telegram 频道的频道 ID。粘贴在@
telegram_bot_id ="botXXXX" # 这是创建的Telegram Bot 的bot ID。在 bot
threshold =0 之后粘贴 # 警报应该发送的阈值

输入您的机器人和 API 值

过程:

使用 Telegram 发送警报

什么是电报?

Telegram 是一个类似于 Whatsapp 的消息应用程序。您还可以随文件发送和接收消息。可以免费使用。您可以通过 Android/iOS/Windows 手机以及 PC 或 Mac 访问该平台。

一些 Telegram 术语 -

什么是 Telegram 频道?

频道之于 Telegram 就像群组之于 Whatsapp。频道是一种将您的消息广播给大量受众的工具。他们可以拥有无​​限数量的订阅者,可以通过永久 URL 公开,并且频道中的每个帖子都有自己的查看计数器。

什么是机器人?

机器人是在 Telegram 中运行的第三方应用程序。用户可以通过向机器人发送消息、命令和请求来与机器人交互。

我们将使用机器人在我们的频道上发送警报。

我们将在这个项目中学到什么?

在这个项目中,当传感器值超过您设置的阈值时,您将能够通过 Telegram 向您的手机发送警报。

我对这个项目有什么要求?

要通过 Telegram 发送警报和消息,您需要,

  • 可连接互联网的 Android/iOS/Windows 手机。
  • 一个 Telegram 帐户。为此,您需要一个手机号码。
  • 通过 puTTY 或虚拟机访问您的 Ubuntu 操作系统。

设置电报

注册/登录 Telegram 的步骤

  • 在手机上前往 Playstore 或 App Store 并搜索 Telegram。
  • 下载并安装最新版本的 Telegram 应用。
  • 注册一个新帐户或通过提供您的手机号码登录 Telegram。
  • Telegram 会打电话给您或向您发送短信以验证您的手机号码。
  • 验证您的帐户并在需要时批准任何权限。
  • 您将登录到 Telegram,并会看到一个类似于下面的屏幕。 (如果与下面的截图不同也没关系)

您已成功安装 Telegram 并设置您的帐户。在接下来的课程中,我们将详细了解频道和机器人。

创建频道

什么是 Telegram 频道?

频道之于 Telegram 就像群组之于 Whatsapp。频道是一种将您的消息广播给大量受众的工具。他们可以拥有无​​限数量的订阅者,可以通过永久 URL 公开,并且频道中的每个帖子都有自己的查看计数器。

创建频道的步骤

  • 转到 Telegram 应用的主屏幕。
  • 从左侧滑动以显示菜单。
  • 点击“新频道”。
  • 它会要求您输入频道的名称和说明。给出一个合适的名称和描述。添加照片是可选的。
  • 在下一个屏幕中,将频道设置为公开。
  • 在同一屏幕上,它会要求您输入频道的永久链接。您可以使用小写字母和数字 0-9 来创建频道链接。
  • 请注意,频道链接名称是全局的,只有当链接名称可用时,您才能创建频道链接。 频道链接名称类似于电子邮件地址,即一次只能存在一个唯一的电子邮件 ID。
  • 您可以将频道链接名称保留为 temperature_alert_,后跟您的电子邮件 ID。例如,如果我的电子邮件 ID 是 [email protected],我可以将频道链接名称保留为 temperature_alert_developer_boltiot_com (我删除了@ 和. 符号,因为它是不允许的,并用下划线 _ 替换它) 这只是一个建议。只要频道链接名称有效,您就可以随意保留它。
  • 记下此频道的永久链接名称。稍后将需要向此通道发送消息。例如,下面截图中的频道链接名称是“ 温度警报”。
  • 恭喜!您创建了一个新频道。您还可以从应用主屏幕查看此频道。
  • 您可以点击顶部的频道名称以查看更多详细信息。
  • 接下来,我们需要创建一个机器人并将其添加到频道中,以便它可以在该频道中为我们发布警报。

创建一个机器人

什么是机器人?

机器人是在 Telegram 中运行的第三方应用程序。用户可以通过向机器人发送消息、命令和请求来与机器人交互。

我们将使用机器人在我们的频道上发送警报。

创建一个新的机器人

Telegram 允许我们在名为“BotFather”的机器人的帮助下创建一个新机器人。它是一个创建和管理其他机器人的机器人。

  • 在应用的主屏幕上,点击右上角的搜索图标并输入“botfather”。
  • 在搜索结果中,单击“BotFather”的正确结果,如下所示。正确的“BotFather”的名称旁边会有一个蓝色的勾号。这会将您带到与“BotFather”的聊天窗口。
  • 聊天中已有一些项目,并会向您显示开始使用的命令列表。
  • 由于我们需要创建一个新的 Bot,请继续并在窗口中输入“/newbot”。
  • 它会要求您输入更多详细信息,例如机器人名称和机器人用户名。
  • 当您的机器人成功创建后,您将看到一个类似于下图的屏幕,其中包含机器人令牌。此令牌用于控制您的机器人并代表它发送消息。 请妥善保管此令牌,因为它允许任何人访问您的机器人。
  • 在上面的屏幕截图中,Bot 令牌是“894346529:AAhuJ2XJQy5dlEtLYF0sc0Z_qu0fSqihSSc”。请保存为telegram_bot_id。 telegram_bot_id 保存为“bot”,后跟机器人令牌。因此,在此示例中,telegram_bot_id 将为“bot894346529:AAhuJ2XJQy5dlEtLYF0sc0Z_qu0fSqihSSc”。
  • telegram_bot_id 将在 python 代码中用于发送消息。 python 代码将在后面的课程中讲授。
  • 另外,保存机器人 ID 时请小心。您可能会在 0 和 O、I 和 1 等之间混淆,因为它们看起来很相似。
  • 恭喜,您已经创建了一个新的机器人。现在,我们需要将它添加到我们之前创建的频道中,以便我们可以发送警报。

将机器人添加到频道

  • 在应用主屏幕上,打开我们之前创建的频道。
  • 在屏幕中,点击顶部的频道名称以打开该频道的信息。
  • 点击管理员按钮,以便我们可以将新创建​​的机器人添加到频道中。
  • 使用机器人的用户名搜索我们创建的机器人。找到正确的 Bot 后,单击它以将其添加到频道。 请确保您在上一步中点击了管理员按钮,因为这将允许我们的机器人发布到频道。
  • 系统会要求您确认机器人的权限。按右上角的勾号继续将机器人添加到频道。 确保机器人有权“发布消息”。
  • 您现在将在频道管理员列表中看到新创建的机器人。
  • 现在我们将编写通过机器人向频道发送消息的代码。

现在为 TWILLO 和 MAIL GUN 设置网络

使用 Google 助理随时在手机上通过短信和电子邮件接收 LM35 温度传感器值。

当您需要随时检查物联网项目的传感器值时,您会怎么做?您只需登录到您的云进行检查。看起来很简单吧?但是,如果您必须每小时或每几分钟检查一次值,并且一天要检查多次,该怎么办?那会有点(非常)麻烦,对吧?现在,想象一个世界,您只需对 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”,然后单击“确定”。

上面的链接用于从 Bolt Iot Cloud 获取传感器值。上述链接的输出将采用 {"value":"XXX", "success":"1"} 的形式,其中 XXX 是传感器值。

第 4 步:在 Integromat 中创建 Mailgun 模块

现在,再次单击“+”并在搜索框中键入“Flow Control”并选择它,然后选择“Router”。必须制作两个白色圆圈。单击第一个白色圆圈并选择“Mailgun”,然后选择“发送电子邮件”。这里使用Mailgun来接收带有温度的Email。如果您已经在 Mailgun 中拥有一个帐户,那么您必须拥有可以在您的 Mailgun 帐户中轻松找到的 API 密钥和域名。如果您在 Mailgun 中没有帐户,则可以按照下面给出的替代步骤进行操作。根据要求填写所需的详细信息。输入收件人的邮件(即您的电子邮件地址)。在“发件人”字段中,输入“test@yourdomainname”。在“内容”部分,我们需要写温度值而不是传感器值。要将温度值转换为传感器值,我们需要将数字除以 10.24。要获得 XXX 形式的传感器值,我们需要消除使用函数“substring”的所有其他字符。点击旁边对话框中的“A”符号,选择“子串”。

在括号内的第一个空格中,单击星号下方的“数据”选项,然后在第二个空格和第三个空格中单击“11”和“14”。严格来说,这不是获取传感器值的正确方法,因此我使用 hack 来获取。如果有人知道正确的方法,他们可以在下面的评论部分提到方法。

后者仅用于从输出中捕获“XXX”。然后将这个数字除以 10.24

在保存场景之前,不要忘记打开屏幕底部的“调度”并将“运行场景”选择为“立即”。您的最终方案应如下所示。

第 6 步:在 IFTTT 中制作一个新的小程序

登录您的 IFTTT 帐户。如果您尚未注册 IFTTT,则可以单击此处创建一个帐户。 After logging in, click on "New Applet" under the "My Applets" section. Click on "+this" followed by "Google Assistant" after searching for it in the search box. Click on "Say a simple phrase" in the following screen. Type the command for which you want to trigger the required action.

Click on "Trigger" followed by "+that". Search for "Webhooks" in the search box and select it followed by selecting "Make a web request" in the following screen. In the URL field, paste the link which we got in Step 2 after creating an IFTTT module in Integromat. This step is very essential to run the scenario in Integromat when you say the command to Google Assistant. Afterwards, select "POST" in method and click on "Create Action". Write a suitable name for the applet and select "Finish".

而已。 Now see the magic when you take out your mobile phone and say "Ok Google, send the temperature sensor value."

Schematics

Connecting female-to-male wires to LM35 sensor

Connecting female-to-male wires to the Bolt WiFi module

Final connection

THAT'S IT NOW UPLOAD EVERY THING AND THEN CHECK.

IF ANY DOUBTS CONTACT ME BY COMMENT SECTION.

THANK YOU....................................


代码

  • FINAL RECEIVER
  • FINAL TRANSMITER
FINAL RECEIVERArduino
#include #include #include #include #include #include Servo servo;RF24 radio(7, 8); // CSN, CEconst 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);数字写入(3,低); // Serial.println("gk0"); } else if (pos==200){ digitalWrite(6,HIGH); digitalWrite(5,LOW); digitalWrite(4,HIGH);数字写入(3,低);延迟(10); // Serial.println("gk1"); } else if (pos==300){ digitalWrite(6,LOW); digitalWrite(5,HIGH ); digitalWrite(4,LOW); digitalWrite(3,HIGH);延迟(10); // Serial.println("gk2"); } else if (pos==400){ digitalWrite(6,LOW); digitalWrite(5,HIGH ); digitalWrite(4,HIGH);数字写入(3,低);延迟(10); // Serial.println("gk3"); } else if (pos==500){ digitalWrite(6,HIGH); digitalWrite(5,LOW ); digitalWrite(4,LOW); digitalWrite(3,HIGH);延迟(10); // Serial.println("gk5"); } else if (pos==600){ servo.write(90);延迟(10); // Serial.println("gk6"); } else if (pos==700){ servo.write(180);延迟(10); // Serial.println("gk7"); } } else { Serial.println("connection lost"); } }
FINAL TRANSMITERArduino
#include #include #include #include #include RF24 radio(7, 8); // CSN, CEconst 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);}}

示意图


制造工艺

  1. Arduino Spybot
  2. FlickMote
  3. 自制电视 B-Gone
  4. 主时钟
  5. 找到我
  6. Arduino Power
  7. Tech-TicTacToe
  8. Arduino Quadruped
  9. 使用 Bolt 和 Arduino 控制 LED 亮度
  10. Arduino Joystick
  11. 数控机床
  12. 家庭监视器