Мазмуну:
- 1 -кадам: AWS эсебин орнотуу
- 2 -кадам: Аппараттык жана программалык камсыздоонун өзгөчөлүктөрү
- 3 -кадам: Зымсыз титирөө жана температура сенсорлору
- 4 -кадам: ESP32 AWS жабдыктары
- 5 -кадам: Зымсыз титирөө жана температура сенсорунан сенсор маалыматын алуу
- 6 -кадам: AWSке туташуу
- 7 -кадам: AWSте маалыматтарды визуалдаштыруу
- 8 -кадам: Жалпы код
Video: AWS IoT менен иштөө MQTTди колдонуучу зымсыз температура сенсору менен: 8 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:41
Мурунку Instructables -де биз Azure, Ubidots, ThingSpeak, Losant сыяктуу ар кандай булут платформаларынан өттүк. Биз MQTT протоколун сенсордук маалыматтарды булутка дээрлик бардык булут платформасында жөнөтүү үчүн колдонуп келе жатабыз. MQTT, HTTP протоколуна караганда анын артыкчылыктары жана артыкчылыктары жөнүндө көбүрөөк маалымат алуу үчүн бул нускамага кайрылсаңыз болот.
Бул көрсөтмөдө биз дагы бир жана эң тааныш булут платформасына Amazon Web Servicesке киребиз. Сиздердин көбүңүз AWS aka Amazon Web Services жана AWS тарабынан берилген булут функциялары менен тааныш болушуңуз мүмкүн. Бул көп жылдар бою вебди өнүктүрүүнүн өзөгү болгон. IoT тиркемелеринин масштабынын өсүшү менен AWS AWSIoT чечимин ойлоп тапты. AWSIoT - бул биздин IoT тиркемелерибизди жайгаштыруу үчүн ишенимдүү чечим.
Бул көрсөтмөнү аткаруу менен:
- Сиз IoT колдонмоңуз үчүн AWS эсебин орното аласыз
- Сиз ESP32ди AWS IoT ядросуна туташтыра аласыз
- MQTT жана HTTP протоколу аркылуу билдирүүлөрдү жөнөтүү жана алуу
- AWSте жөнөтүлгөн маалыматтарды элестетип көрүңүз
1 -кадам: AWS эсебин орнотуу
AWS эсебин орнотуу абдан оңой. Сиз жөн гана бир нече сертификаттарды жүктөп, ага саясатты тиркеп, түзмөктү каттап, AWSте сенсор маалыматтарынын билдирүүлөрүн ала башташыңыз керек.
AWS эсебин орнотуу үчүн бул үйрөткүчтү аткарыңыз.
2 -кадам: Аппараттык жана программалык камсыздоонун өзгөчөлүктөрү
Программалык камсыздоонун өзгөчөлүгү
AWS эсеби
Аппараттык мүнөздөмө
- ESP32
- Зымсыз температура жана дирилдөө сенсору
- Zigmo Gateway алуучусу
3 -кадам: Зымсыз титирөө жана температура сенсорлору
Бул Long Range Industrial IoT зымсыз титирөө жана температура сенсору, зымсыз сетка тармагынын архитектурасын колдонуу менен 2 милге чейин мактанат. 16-биттик титирөө жана температура сенсорун камтыган бул сенсор колдонуучу аныктаган аралыкта абдан так титирөө маалыматын өткөрүп берет. Ал төмөнкү өзгөчөлүктөргө ээ:
- ± 32g диапазону менен өнөр класстын 3-огу Vibration Sensor
- RMS, MAX жана MIN g Vibration эсептейт
- Ызы-чууну төмөн өткөрмө чыпканы колдонуу
- Жыштык диапазону (өткөрүү жөндөмдүүлүгү) 12, 800 Гцке чейин
- Sample Rate 25, 600Hz чейин
- 2 миля зымсыз диапазону менен шифрленген байланыш
- Иштөө температурасынын диапазону -40тан +85 ° Сге чейин
- Дубалга же Магнитке орнотулган IP65 Rated Enclosure Visual Studio жана LabVIEW үчүн мисал программалык камсыздоо
- Тышкы зонд тандоосу бар дирилдөө сенсору
- 4 АА Батареясынан 500, 000ге чейин өткөрүүлөр. Көптөгөн шлюз жана модемдин варианттары бар
4 -кадам: ESP32 AWS жабдыктары
AWSке туташуу жана маалыматтарды жөнөтүүнү баштоо үчүн төмөнкү кадамдарды жасаңыз
- AWS китепканасын төмөнкү Github репозиторийинен жүктөп алыңыз
- репо клонун жана AWS_IOT файлын Arduino каталогунун китепкана папкасына коюңуз
git clone
Эми кодду карап көрөлү:
- Бул колдонмодо, биз WiFi ишеним грамоталарын сактоо жана IP жөндөөлөрү аркылуу учуу үчүн туткундалган порталды колдондук. Туткун порталына толук киришүү үчүн, сиз төмөндөгү көрсөтмөлөрдөн өтсөңүз болот.
- Туткун порталы бизге Статикалык жана DHCP орнотууларын тандоо мүмкүнчүлүгүн берет. Жөн гана Статикалык IP, Subnet Mask, шлюз жана Wireless Sensor Gateway сыяктуу грамоталарды киргизиңиз, ошол IPде конфигурацияланат.
- Веб -баракча жайгаштырылган, анда жеткиликтүү WiFi тармактары жана RSSI көрсөтүлгөн тизме бар. WiFi тармагын жана сырсөздү тандап, тапшырууну киргизиңиз. Ишеним грамоталары EEPROMда жана IP жөндөөсү SPIFFSте сакталат. Бул тууралуу көбүрөөк маалыматты бул нускамадан табууга болот.
5 -кадам: Зымсыз титирөө жана температура сенсорунан сенсор маалыматын алуу
Биз Зымсыз Температура жана Дирилдөө Сенсорлорунан 54 байттык кадр алып жатабыз. Бул кадр чыныгы температураны жана дирилдөө маалыматын алуу үчүн башкарылган.
ESP32 сериялык колдонуу үчүн жеткиликтүү үч UART бар
- RX0 GPIO 3, TX0 GPIO 1
- RX1 GPIO9, TX1 GPIO 10
- RX2 GPIO 16, TX2 GPIO 17
жана 3 аппараттык сериялык порттор
- Сериялык
- Serial1
- Serial2
Биринчиден, Hardware Serial баш файлын инициалдаңыз. Бул жерде биз RX2 жана TX2 ака колдонобуз. Сериялык маалыматтарды алуу үчүн ESP32 тактасынын GPIO 16 жана GPIO 17 төөнөгүчтөрү.
#кошуу
# аныктоо RXD2 16 # аныктоо TXD2 17
Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // казыктар 16 rx2, 17 tx2, 19200 bps, 8 бит жок parity 1 stop bit
Кийинки кадамдар сизди чыныгы сенсор баалуулуктарын алууга алып барат
- Температураны, нымдуулукту, батареяны жана башка сенсордук баалуулуктарды сактоо үчүн өзгөрмөлөрдү түзүңүз
- Аппараттык серия үчүн Rx, tx pin, baud rate жана parite биттерин коюңуз
- Биринчиден, Serial1.available () аркылуу окуу үчүн бир нерсе бар экенин текшериңиз.
- Биз 54 байт кадрды алабыз.
- 0x7E үчүн баштоо байтын текшериңиз.
- Дирилдөө маалыматы 3 огу үчүн RMS маанисинен, 3 огу үчүн мин маанилерден, 3 огу үчүн максималдуу маанилерден турат.
- температура жана батареянын мааниси 2 байтты камтыйт
- сенсордун атын, түрүн, сенсордук версиясын алуу 1 байтты камтыйт жана аны ошол жерден тиешелүү даректен алса болот
if (Serial2.available ()) {Serial.println ("Сериалды окуу"); маалымат [0] = Serial2.read (); кечигүү (k); if (data [0] == 0x7E) {Serial.println ("Got Packet"); while (! Serial2.available ()); for (i = 1; i <55; i ++) {data = Serial2.read (); кечигүү (1); } if (data [15] == 0x7F) /////// resive data туура экендигин текшерүү үчүн {if (data [22] == 0x08) //////// сенсордун түрүн текшериңиз туура {rms_x = ((uint16_t) (((маалыматтар [24]) << 16) + ((маалыматтар [25]) << 8) + (маалыматтар [26]))/100); rms_y = ((uint16_t) (((маалыматтар [27]) << 16) + ((маалыматтар [28]) << 8) + (маалыматтар [29]))/100); rms_z = ((uint16_t) ((((маалыматтар [30]) << 16) + ((маалыматтар [31]) << 8) + (маалыматтар [32]))/100); int16_t max_x = ((uint16_t) (((маалыматтар [33]) << 16) + ((маалыматтар [34]) << 8) + (маалыматтар [35]))/100); int16_t max_y = (((uint16_t) (((маалыматтар [36]) << 16) + ((маалыматтар [37]) << 8) + (маалыматтар [38]))/100); int16_t max_z = ((uint16_t) ((((маалыматтар [39]) << 16) + ((маалыматтар [40]) << 8) + (маалыматтар [41]))/100);
int16_t min_x = ((uint16_t) ((((маалымат [42]) << 16) + ((маалымат [43]) << 8) + (маалымат [44]))/100); int16_t min_y = ((uint16_t) ((((маалыматтар [45]) << 16) + ((маалыматтар [46]) << 8) + (маалыматтар [47]))/100); int16_t min_z = ((uint16_t) ((((маалыматтар [48]) << 16) + ((маалыматтар [49]) << 8) + (маалыматтар [50]))/100);
cTemp = (((((маалыматтар [51]) * 256) + маалыматтар [52])); калкыма батарея = ((маалымат [18] * 256) + маалымат [19]); чыңалуу = 0.00322 * батарея; Serial.print ("Сенсордун номери"); Serial.println (маалыматтар [16]); senseNumber = маалыматтар [16]; Serial.print ("Сенсор түрү"); Serial.println (маалыматтар [22]); Serial.print ("Камтылган программанын версиясы"); Serial.println (маалыматтар [17]); Serial.print ("Цельсий боюнча температура:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("X огунда RMS термелүүсү:"); Serial.print (rms_x); Serial.println ("мг"); Serial.print ("Y огунда RMS термелүүсү:"); Serial.print (rms_y); Serial.println ("мг"); Serial.print ("Z огунда RMS термелүүсү:"); Serial.print (rms_z); Serial.println ("мг");
Serial.print ("X огунда минималдуу дирилдөө:");
Serial.print (min_x); Serial.println ("мг"); Serial.print ("Y огунда мин титирөө:"); Serial.print (min_y); Serial.println ("мг"); Serial.print ("Z огунда мин титирөө:"); Serial.print (min_z); Serial.println ("мг");
Serial.print ("ADC мааниси:");
Serial.println (батарея); Serial.print ("Батарея чыңалуусу:"); Serial.print (чыңалуу); Serial.println ("\ n"); if (чыңалуу <1) {Serial.println ("Батареяны алмаштыруу убактысы"); }}} else {for (i = 0; i <54; i ++) {Serial.print (data ); Serial.print (","); кечигүү (1); }}}}
6 -кадам: AWSке туташуу
- AWSIoT хабы менен байланышты орнотуу үчүн AWS_IOT.h, WiFi.h баш файлдарын кошуңуз
- Саясаттын аты боло турган хост дарегиңизди, кардардын идентификаторун жана нерсенин аты боло турган теманын атын киргизиңиз
// ********* AWS грамоталары ************* // char HOST_ADDRESS = "a2smbp7clzm5uw-ats.iot.us-east-1.amazonaws.com"; char CLIENT_ID = "ncdGatewayPolicy"; char TOPIC_NAME = "ncdGatewayThing";
JSONду сактоо үчүн char өзгөрмөсүн түзүңүз, бул учурда биз JSONду сактоо үчүн формат түздүк
const char *format = "{" SensorId / ": \"%d / ", \" messageId / ":%d, \" rmsX / ":%d, \" rmsY / ":%d, \" rmsZ / ":%d, \" cTemp / ":%d, \" чыңалуу / ":%. 2f}";
AWS_IOT классынын экземплярын түзүңүз
AWS_IOT esp; // AWS_IOT классынын инстанциясы
Эми AWSIoT хабына төмөнкү ыкманы колдонуу менен туташыңыз
void reconnectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println ("AWSке туташкан"); кечигүү (1000);
эгер (0 == hornbill.subscribe (TOPIC_NAME, mySubCallBackHandler))
{Serial.println ("Жазылуу ийгиликтүү"); } else {Serial.println ("Жазылуу ишке ашкан жок, нерсенин атын жана тастыктамаларын текшериңиз"); while (1); }} else {Serial.println ("AWS туташуусу ишке ашкан жок, HOST дарегин текшериңиз"); while (1); }
кечигүү (2000);
}
сенсор маалыматын ар бир 1 мүнөттөн кийин жарыялоо
if (tick> = 60) // темага ар 5секундда жарыялап туруу {tick = 0; заряддык жүк [PAYLOAD_MAX_LEN]; snprintf (жүктөм, PAYLOAD_MAX_LEN, формат, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, чыңалуу); Serial.println (пайдалуу жүк); if (hornbill.publish (TOPIC_NAME, жүк) == 0) {Serial.print ("Билдирүүнү жарыялоо:"); Serial.println (пайдалуу жүк); } else {Serial.println ("Жарыяланган жок"); }} vTaskDelay (1000 / portTICK_RATE_MS); кене ++;
7 -кадам: AWSте маалыматтарды визуалдаштыруу
- AWS эсебиңизге кириңиз.
- инструменттер тилкесинин сол бурчунда сиз Кызматтар өтмөгүн таба аласыз
- Бул өтмөктү чыкылдатыңыз жана Интернет нерселеринин астында IoT Core тандаңыз.
- QoSту тандаңыз жана жок. абоненттерге билдирүүлөр. Теманын атын киргизиңиз.
8 -кадам: Жалпы код
Бул кодду Github репозиторийинен таба аласыз.
Кредиттер
- Ардуино Жсон
- Зымсыз температура жана нымдуулук сенсорлору
- ESP32
- PubSubClient
Сунушталууда:
DIY дем алуу сенсору Arduino менен (өткөргүч токулган сунуу сенсору): 7 кадам (сүрөттөр менен)
DIY дем алуу сенсору Arduino менен (Өткөргүч токулган сенсор): Бул DIY сенсор өткөргүч трикотаж сунуу сенсорунун формасын алат. Ал көкүрөгүңүздү/ашказаныңызды ороп алат, жана көкүрөгүңүз/ашказаныңыз кеңейгенде жана контрактта болгондо, сенсор, демек, Arduinoго берилүүчү маалымат. Ошентип
Arduino Күн энергиясындагы температура жана нымдуулук сенсору 433mhz Орегон сенсору катары: 6 кадам
Arduino Solar Powered Temperature and Humidity Sensor As 433mhz Oregon Sensor: Бул күн менен иштеген температура жана нымдуулук сенсорунун курулушу. Сенсор 433mhz Oregon сенсорун туурайт жана Telldus Net шлюзунда көрүнөт. Эмне керек: 1x " 10-LED Күн энергиясынын кыймыл датчиги " Ebayден. 3.7В камыр деп жазылганын текшериңиз
MQTTди Raspberry Pi жана ESP8266 менен кантип колдонсо болот: 8 кадам (сүрөттөр менен)
MQTTди Raspberry Pi жана ESP8266 менен кантип колдонсо болот: Бул Нускамада мен MQTT протоколу деген эмне экенин жана ал түзмөктөр ортосунда кантип байланышуу үчүн колдонулаарын түшүндүрүп берем. кардар системасы, анда ESP8266 модулу билдирүү жөнөтөт
IoT температура сенсору ESP8266 менен: 6 кадам (сүрөттөр менен)
IoT Температура Сенсору ESP8266 менен: Мен Wi -Fi аркылуу көзөмөлдөй турган температура сенсорун түзүүгө шыктандым. Бул долбоор жаңы эмес, бирок мага коопсуздук үчүн аралык катмары бар жана роутериңиздеги портту IoT түзмөгүңүзгө ачпоо идеясы жагат
Аналогдук колдонуучу метр менен зымсыз үй роутери: 5 кадам (сүрөттөр менен)
Аналогдук колдонуучу эсептегич менен зымсыз үй роутери: Мен кайыктарда жана айланасында чоңойгом, токтоочу станокторду жана башкаруу панелдерин жасап, өлчөгүчтөрдүн & адатта чакан деңиз дизелдик кыймылдаткычтарына туташтырылган терүүлөр. Бүгүн мен дизайнер болуп иштейм, интерфейстерди тармакка бириктирем