資料介紹
描述
嗨,大家好
本項目主要是關于幫助農民的地球漫游車。本項目主要包含三個模數。
模塊 1:
這需要兩個直流電機和一個電機驅動器。電機驅動器包含
在這里,您必須將 v+、en1、en2 連接到面包板中的單點,并將電機的四根電線連接到 1 ma 2 引腳中的四個輸入。現在接下來將電機驅動器引腳的輸出引腳連接到 arduino 和電池應如下圖連接。
現在接下來我們必須將它們連接到螺栓。相同的四個引腳應連接到螺栓的數字引腳(0、1、2、3)。
現在土壤傳感器應該連接到螺栓,但將數字引腳連接到螺栓(數字 4 引腳)。現在終于是時候將溫度傳感器連接到螺栓模擬引腳(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山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多