嗨,大家好
本项目主要是关于帮助农民的地球漫游车。本项目主要包含三个模数。
完整设置的硬件连接现在考虑直流电机。
这需要两个直流电机和一个电机驱动器。电机驱动器包含
在这里,您必须将 v+、en1、en2 连接到面包板中的单点,并将电机的四根电线连接到 1 ma 2 引脚中的四个输入。现在接下来将电机驱动器引脚的输出引脚连接到 arduino 和电池应如下图连接。
现在接下来我们必须将它们连接到螺栓。相同的四个引脚应连接到螺栓的数字引脚(0、1、2、3)。
现在土壤传感器应该连接到螺栓,但将数字引脚连接到螺栓(数字 4 引脚)。现在终于是时候将温度传感器连接到螺栓模拟引脚(A0)了。
现在所有的地面和 v+(温度传感器、湿度传感器)、en1、en2 到 arduino 的 5v,最后应该为所有引脚提供所需电压的电池。
NRF 连接:
上图称为nrf模块,用于无线电通信。上图也应该包含在我们的电路中以控制附近区域的汽车。
NRF 与 ARDUINO 的最终连接
现在是连接 JOY STICKS 的时候了:
使用两个操纵杆:
1)控制小车方向。
2)控制舵机。
最终编码
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 是一款类似于 Whatsapp 的消息应用程序。您还可以发送和接收消息以及文件。免费使用。您可以通过您的 Android/iOS/Windows 手机以及您的 PC 或 Mac 访问该平台。
频道之于 Telegram 就像群组之于 Whatsapp。频道是一种向大量观众传播信息的工具。他们可以拥有无限数量的订阅者,他们可以通过永久 URL 公开,并且频道中的每个帖子都有自己的查看计数器。
机器人是在 Telegram 中运行的第三方应用程序。用户可以通过向机器人发送消息、命令和请求来与机器人交互。
我们将使用机器人在我们的频道上发送警报。
在这个项目中,当传感器值超过您设置的阈值时,您将能够通过 Telegram 向您的手机发送警报。
要通过电报发送警报和消息,您需要,
您已成功安装 Telegram 并设置您的帐户。在接下来的课程中,我们将学习更多关于频道和机器人的知识。
频道之于 Telegram 就像群组之于 Whatsapp。频道是一种向大量观众传播信息的工具。他们可以拥有无限数量的订阅者,他们可以通过永久 URL 公开,并且频道中的每个帖子都有自己的查看计数器。
机器人是在 Telegram 中运行的第三方应用程序。用户可以通过向机器人发送消息、命令和请求来与机器人交互。
我们将使用机器人在我们的频道上发送警报。
Telegram 允许我们在名为“BotFather”的机器人的帮助下创建一个新的机器人。它是创建和管理其他机器人的单个机器人。
现在为 TWILLO 和 MAIL GUN 设置网络
使用 Google Assistant 在您的手机上随时通过短信和电子邮件接收 LM35 温度传感器值。
当您需要随时检查 Iot 项目的传感器值时,您会怎么做?你只需登录到你的云来检查它。看起来很简单,对吧?但是,如果您必须每小时检查一次值或每隔几分钟检查一次值,并且一天要检查多次,该怎么办?那会有点(非常)麻烦,对吧?现在,想象一个世界,您只需对 Google 智能助理说“将传感器值发送给我”,即可通过短信和电子邮件获取传感器值。等等,等等,等等。那种情况不是想象出来的,因为你们自己几步就能做到。请仔细阅读,找出答案。
在此项目中,我们将通过发送给 Google 智能助理的命令通过短信和电子邮件从 LM35 传感器接收温度传感器值。
将 LM35 传感器握在手中,以便您可以看到名称。三个引脚从左到右分别是VCC、输出和GND。将三个引脚连接到母线到公线。将对应于从左到右的三个引脚的三根线连接到 Bolt WiFi 模块上的 5 V、A0 和 GND 引脚。将 WiFi 模块连接到 5 V 电源。确保它已连接到有效的互联网连接。
登录您的 Integromat 帐户。如果您尚未在 Integromat 上注册,则可以单击此处创建一个帐户。登录后,点击屏幕右上角的“创建新场景”。在屏幕中选择 IFTTT、HTTP、Mailgun 和 Twilio 以选择所需的工具,然后单击“继续”。然后单击白色圆圈并从列表中选择 IFTTT,然后从菜单中选择“接收数据”。该模块对于将其连接到 IFTTT 上的 Applet 至关重要,稍后将进行讨论。单击“添加”添加一个新的 Webhook,然后为其指定一个合适的名称,然后单击“保存”。现在,您将获得一个 URL 或链接。保存它以供进一步使用。
接下来,单击附加到模块的“+”符号以添加新模块。选择“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 是传感器值。
现在,再次单击“+”并在搜索框中键入“Flow Control”并选择它,然后选择“Router”。必须制作两个白色圆圈。单击第一个白色圆圈并选择“Mailgun”,然后选择“发送电子邮件”。在这里,Mailgun 用于接收带有温度的电子邮件。如果您已经在 Mailgun 中拥有一个帐户,那么您必须拥有可以在您的 Mailgun 帐户中轻松找到的 API 密钥和域名。如果您在 Mailgun 中没有帐户,则可以按照下面给出的替代步骤操作。根据要求填写所需的详细信息。输入收件人的邮件(这是您的电子邮件地址)。在“发件人”字段中,键入“test@yourdomainname”。在“内容”部分,我们需要写入温度值而不是传感器值。要将温度值转换为传感器值,我们需要将该数字除以 10.24。要获得 XXX 形式的传感器值,我们需要消除我们使用函数“substring”的所有其他字符。单击旁边对话框中的“A”符号,然后选择“子字符串”。
在括号内的第一个空格中,单击星号下的“数据”选项,然后在第二个空格和第三个空格中单击“11”和“14”。严格来说,这不是获取传感器值的正确方法,因此我使用 hack 来获取。如果有人知道正确的方法,他们可以在下面的评论部分提及该方法。
后者是为了仅从输出中捕获“XXX”。然后将该数字除以 10.24
登录到您的 IFTTT 帐户。如果您还没有在 IFTTT 上注册,那么您可以单击此处创建一个帐户。登录后,单击“我的小程序”部分下的“新建小程序”。在搜索框中搜索后,依次点击“+this”和“Google Assistant”。在以下屏幕中单击“说一个简单的短语”。键入要为其触发所需操作的命令。
单击“触发器”,然后单击“+那个”。在搜索框中搜索“Webhooks”并选择它,然后在以下屏幕中选择“Make a web request”。在 URL 字段中,粘贴我们在 Integromat 中创建 IFTTT 模块后在第 2 步中获得的链接。当您对 Google Assistant 说出命令时,此步骤对于在 Integromat 中运行场景非常重要。然后,在方法中选择“POST”并单击“创建操作”。为小程序写一个合适的名称,然后选择“完成”。
而已。现在看看当您拿出手机并说“Ok Google,发送温度传感器值”时的神奇之处。
就是这样,现在上传所有内容然后检查。
如有任何疑问,请通过评论部分与我联系。
谢谢你....................................
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !