Мазмуну:
- 1 -кадам: Бизге керектүү жабдыктар..
- 2 -кадам: Аппараттык туташуулар
- 3 -кадам: Код
- 4 -кадам: Коддун иштеши
- 5 -кадам: Тиркемелер жана өзгөчөлүктөр
- 6 -кадам: Андан ары кетүү үчүн ресурстар
Video: Веб -сервер аркылуу Карта Багыты: 6 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
Интернет нерселери, (IoT) - азыр планетада эң популярдуу темалардын бири. Жана, ал интернет менен күндөн күнгө тездик менен өсүүдө. Заттар Интернети жөнөкөй үйлөрдү акылдуу үйлөргө алмаштырып жатат, мында жарыктарыңыздан тартып кулпуңузга чейин смартфонуңуздан же иш тактаңыздан башкарууга болот. Бул ар бир адам ээ болгусу келген байлык.
Биз ар дайым алган куралдар менен ойноп, чектерибиздин кийинки кадамына өтүүнү уланта беребиз. Биз кардарыбызга акыркы технологиялар жана идеялар жөнүндө түшүнүк берүүгө аракет кылабыз. Ошентип, сиз үйүңүздү акылдуу үйлөргө айлантып, көп күч -аракет жумшабастан, люкстун даамын тата аласыз.
Бүгүн биз IoTдеги эң маанилүү темалардын бири - Digital Map Orientation боюнча иштөөнүн үстүндө ойлонобуз.
Биз веб -серверди курабыз, ал аркылуу биз каалаган түзмөктүн же нерсенин кыймылын көзөмөлдөй алабыз (Бул сизден, кимге шпион кылуу керек;)). Сиз бул долбоорду кээ бир өзгөртүүлөр менен кийинки баскычка көтөрүү жөнүндө ойлонсоңуз болот жана төмөндөгү комментарийлерде бизге айтууну унутпаңыз.
Баштайлы.. !!
1 -кадам: Бизге керектүү жабдыктар..
1. LSM9DS0 сенсор
STMicroelectronics тарабынан чыгарылган 3-in-1 сенсор, LSM9DS0-бул 3D санарип сызыктуу ылдамдануу сенсорун, 3D санариптик бурчтук ылдамдык сенсорун жана 3D санарип магниттик сенсорун камтыган тутумдагы пакет. LSM9DS0 ± 2g/± 4g/± 6g/± 8g/± 16g сызыктуу ылдамдануу толук масштабына ээ, ± 2/± 4/± 8/± 12 гаусстун магнит талаасынын толук масштабы жана ± 245 бурчтук ылдамдыгы /± 500/± 2000 dps.
2. Adafruit Huzzah ESP8266
Espressifтин ESP8266 процессору-бул 80 МГц микроконтроллер, толук WiFi фронту (клиент жана кирүү чекити катары) жана DNS колдоосу менен TCP/IP стеги. ESP8266 - бул IoT тиркемелерин иштеп чыгуу үчүн кереметтүү платформа. ESP8266 Arduino Wire Language жана Arduino IDEди колдонуу менен колдонмолорду көзөмөлдөө жана көзөмөлдөө үчүн жетилген платформаны камсыз кылат.
3. ESP8266 USB программисти
анын ESP8266 хост адаптери I²C интерфейсине уруксат берүүчү ESP8266нын Adafruit Huzzah версиясы үчүн Dcube Store тарабынан атайын иштелип чыккан.
4. I2C туташтыруу кабели
5. Mini USB кабели
Мини USB кабели Электр менен камсыздоо Adafruit Huzzah ESP8266ди иштетүү үчүн идеалдуу чечим.
2 -кадам: Аппараттык туташуулар
Жалпысынан, байланыш түзүү бул долбоордун эң оңой бөлүгү. Көрсөтмөлөрдү жана сүрөттөрдү ээрчиңиз, жана сизде эч кандай көйгөй болбошу керек.
Биринчиден, Adafruit Huzzah ESP8266 алып, ага USB Программистин (ичине караган I²C порту менен) коюңуз. USB Программистин акырын басыңыз жана биз бул кадамды пирог сыяктуу оңой бүтүрөбүз (Жогорудагы сүрөттү караңыз).
Сенсор менен Adafruit Huzzah ESP8266 туташуусу Сенсорду алып, аны менен I²C кабелин туташтырыңыз. Бул кабелдин туура иштеши үчүн I²C Output ар дайым I²C киришине туташып турганын унутпаңыз. Adafruit Huzzah ESP8266 үчүн USB Программисти орнотулганда эле ушундай кылыш керек болчу (Жогорудагы сүрөттү караңыз).
ESP8266 USB Программистинин жардамы менен ESPти программалоо абдан оңой. Болгону сенсорду USB Программистине туташтырып койсоңуз болот. Биз бул адаптерди колдонууну каалайбыз, анткени ал жабдыкты туташтырууну бир топ жеңилдетет. Сенсорго ESP казыктарын ширетүү же пин диаграммаларын жана маалымат барагын окуу жөнүндө тынчсыздануунун кереги жок. Биз бир эле учурда бир нече сенсорлорду колдонуп, иштей алабыз, сиз чынжыр жасашыңыз керек. Бул USB плагин жана ойноткучу жок болсо, туура эмес туташуу коркунучу чоң. Начар зым сиздин Wi -Fiңызды да, сенсорду да өлтүрөт.
Эскертүү: күрөң зым дайыма бир түзмөктүн чыгышы менен башка түзмөктүн киришинин ортосундагы Ground (GND) байланышын ээрчиши керек.
Райондун кубаттуулугу
Mini USB кабелин Adafruit Huzzah ESP8266 кубаттагычына сайыңыз. Аны күйгүзүңүз жана voila, биз барганыбыз жакшы!
3 -кадам: Код
Adafruit Huzzah ESP8266 жана LSM9DS0 сенсорунун ESP коду биздин github репозиторийибизде жеткиликтүү.
Кодго өтүүдөн мурун, Readme файлында берилген көрсөтмөлөрдү окуп чыкканыңызга жана ага ылайык Adafruit Huzzah ESP8266 орнотконуңузду текшериңиз. ESPти орнотууга болгону 5 мүнөт кетет.
Код узун, бирок сиз элестете алган эң жөнөкөй формада жана аны түшүнүүдө эч кандай кыйынчылык болбойт.
Ыңгайлуулугуңуз үчүн бул сенсордун жумушчу ESP кодун бул жерден көчүрүп алсаңыз болот:
// Эркин лицензия менен бөлүштүрүлгөн. // LSM9DSO // Бул код dcubestore.com сайтынан жеткиликтүү TCS3414_I2CS I2C Mini Module менен иштөө үчүн иштелип чыккан.
#кошуу
#кошуу
#кошуу
#кошуу
// LSM9DSO Gyro I2C дареги 6А (106)
#define Addr_Gyro 0x6A // LSM9DSO Accl I2C дареги 1E (30) #define Addr_Accl 0x1E
const char* ssid = "сенин ssid";
const char* password = "сенин сырсөзүң"; int xGyro, yGyro, zGyro, xAccl, yAccl, zAccl, xMag, yMag, zMag;
ESP8266WebServer сервери (80);
боштук иштетүүчү ()
{unsigned int data [6];
// I2C берүүнү баштоо
Wire.beginTransmission (Addr_Gyro); // Башкаруу регистрин тандоо 1 Wire.write (0x20); // Маалымат ылдамдыгы = 95Hz, X, Y, Z-Axis иштетилген, Wire.writeдеги күч (0x0F); // Stop I2C Transmission Wire.endTransmission ();
// I2C берүүнү баштоо
Wire.beginTransmission (Addr_Gyro); // Башкаруу реестрин тандоо 4 Wire.write (0x23); // Толук масштабдуу 2000 dps, үзгүлтүксүз Wire.write жаңыртуусу (0x30); // Stop I2C Transmission Wire.endTransmission ();
// I2C берүүнү баштоо
Wire.beginTransmission (Addr_Accl); // Башкаруу регистрин тандоо 1 Wire.write (0x20); // Ылдамдатуу ылдамдыгы = 100Hz, X, Y, Z-Axis иштетилген, Wire.writeде күч (0x67); // Wire.endTransmission () түзмөгүндө I2C өткөрүүнү токтотуу;
// I2C берүүнү баштоо
Wire.beginTransmission (Addr_Accl); // Башкаруу регистрин тандоо 2 Wire.write (0x21); // Толук масштабдуу тандоо +/- 16g Wire.write (0x20); // Stop I2C Transmission Wire.endTransmission ();
// I2C берүүнү баштоо
Wire.beginTransmission (Addr_Accl); // Башкаруу регистрин тандоо 5 Wire.write (0x24); // Магниттик жогорку чечим, чыгаруу ылдамдыгы = 50Hz Wire.write (0x70); // Stop I2C Transmission Wire.endTransmission ();
// I2C берүүнү баштоо
Wire.beginTransmission (Addr_Accl); // Башкаруу регистрин тандоо 6 Wire.write (0x25); // Магниттик толук масштабдуу +/- 12 гаусс Wire.write (0x60); // Stop I2C Transmission Wire.endTransmission ();
// I2C берүүнү баштоо
Wire.beginTransmission (Addr_Accl); // Башкаруу реестрин тандоо 7 Wire.write (0x26); // Кадимки режим, магниттик үзгүлтүксүз өзгөртүү режими Wire.write (0x00); // Stop I2C Transmission Wire.endTransmission (); кечигүү (300);
for (int i = 0; i <6; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr_Gyro); // Wire.write маалымат регистрин тандоо ((40 + i)); // Stop I2C Transmission Wire.endTransmission ();
// 1 байт маалымат сураңыз
Wire.requestFrom (Addr_Gyro, 1);
// 6 байт маалыматтарды окуңуз
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb if (Wire.available () == 1) {data = Wire.read (); }}
// Маалыматты конвертациялоо
int xGyro = ((маалымат [1] * 256) + маалымат [0]); int yGyro = ((маалыматтар [3] * 256) + маалыматтар [2]); int zGyro = ((маалыматтар [5] * 256) + маалыматтар [4]);
for (int i = 0; i <6; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr_Accl); // Wire.write маалымат регистрин тандоо ((40 + i)); // Stop I2C Transmission Wire.endTransmission ();
// 1 байт маалымат сураңыз
Wire.requestFrom (Addr_Accl, 1);
// 6 байт маалыматтарды окуңуз
// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb // zAccl lsb, zAccl msb if (Wire.available () == 1) {data = Wire.read (); }}
// Маалыматты конвертациялоо
int xAccl = ((маалымат [1] * 256) + маалымат [0]); int yAccl = ((маалыматтар [3] * 256) + маалыматтар [2]); int zAccl = ((маалыматтар [5] * 256) + маалыматтар [4]);
for (int i = 0; i <6; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr_Accl); // Wire.write маалымат регистрин тандоо ((8 + i)); // Stop I2C Transmission Wire.endTransmission ();
// 1 байт маалымат сураңыз
Wire.requestFrom (Addr_Accl, 1);
// 6 байт маалыматтарды окуңуз
// xMag lsb, xMag msb, yMag lsb, yMag msb // zMag lsb, zMag msb if (Wire.available () == 1) {data = Wire.read (); }}
// Маалыматты конвертациялоо
int xMag = ((маалымат [1] * 256) + маалымат [0]); int yMag = ((маалыматтар [3] * 256) + маалыматтар [2]); int zMag = ((маалыматтар [5] * 256) + маалыматтар [4]);
// Маалыматтарды сериялык мониторго чыгаруу
Serial.print ("X-Axis айлануу:"); Serial.println (xGyro); Serial.print ("Y-айлануу огу:"); Serial.println (yGyro); Serial.print ("Z-айлануу огу:"); Serial.println (zGyro); Serial.print ("X-Axis менен ылдамдануу:"); Serial.println (xAccl); Serial.print ("Y огунда ылдамдануу:"); Serial.println (yAccl); Serial.print ("Z-огунда ылдамдануу:"); Serial.println (zAccl); Serial.print ("X огунда магнит талаасы:"); Serial.println (xMag); Serial.print ("Y огунда магнит талаасы:"); Serial.println (yMag); Serial.print ("Магниттик Z-огунда берилген:"); Serial.println (zMag);
// Веб -серверге маалыматтарды чыгаруу
server.sendContent ("
DCUBE ДҮКӨНҮ
www.dcubestore.com
"" LSM9DS0 сенсор I2C Mini модулу
);
server.sendContent ("
X-айлануу огу = " + String (xGyro)); server.sendContent ("
Y-айлануу огу = " + String (yGyro)); server.sendContent ("
Z-айлануу огу = " + String (zGyro)); server.sendContent ("
X-Axisте ылдамдануу = " + String (xAccl)); server.sendContent ("
Y-Axisте ылдамдануу = " + String (yAccl)); server.sendContent ("
Z-Axisте ылдамдануу = " + String (zAccl)); server.sendContent ("
X-Axisке берилген магниттик = " + String (xMag)); server.sendContent ("
Y-Axisке берилген магниттик = " + String (yMag)); server.sendContent ("
Z-Axisке берилген магниттик = " + String (zMag)); кечигүү (1000);}
жараксыз орнотуу ()
{// MA2STER Wire.begin катары I2C байланышын баштоо (2, 14); // Сериялык байланышты баштоо, байдын ылдамдыгын коюу = 115200 Serial.begin (115200);
// WiFi тармагына туташуу
WiFi.begin (ssid, сырсөз);
// Байланышты күтө туруңуз
while (WiFi.status ()! = WL_CONNECTED) {кечигүү (500); Serial.print ("."); } Serial.println (""); Serial.print ("Туташты"); Serial.println (ssid);
// ESP8266 IP дарегин алыңыз
Serial.print ("IP дареги:"); Serial.println (WiFi.localIP ());
// Серверди баштаңыз
server.on ("/", handleroot); server.begin (); Serial.println ("HTTP сервер башталды"); }
боштук цикл ()
{server.handleClient (); }
4 -кадам: Коддун иштеши
Эми кодду жүктөп алыңыз (же git pull) жана Arduino IDEде ачыңыз.
Кодду түзүңүз жана жүктөп бериңиз жана сериялык монитордо чыгууну көрүңүз.
Эскертүү: Жүктөөдөн мурун, SSID тармагыңызды жана сырсөзүңүздү кодго киргизиңиз.
Сериялык монитордон ESP8266 IP дарегин көчүрүп, веб -браузериңизге чаптаңыз. Сиз 3 огунда айлануу огу, ылдамдануу жана магнит талаасынын окулушу бар веб-баракчаны көрөсүз.
Сериялык монитор жана веб -сервердеги сенсордун чыгышы жогорудагы сүрөттө көрсөтүлгөн.
5 -кадам: Тиркемелер жана өзгөчөлүктөр
LSM9DS0-бул 3D санарип сызыктуу ылдамдануу сенсорун, 3D санариптик бурчтук ылдамдык сенсорун жана 3D санарип магниттик сенсорун камтыган тутум пакети. Бул үч касиетти өлчөө менен сиз нерсенин кыймылы жөнүндө көп маалымат ала аласыз. Магнитометрдин жардамы менен Жердин магнит талаасынын күчүн жана багытын өлчөп, сиздин багытты болжолдоп айтууга болот. Телефонуңуздагы акселерометр тартылуу күчүнүн багытын өлчөй алат жана багытты (портрет, пейзаж, жалпак ж. Б.) Баалай алат. Киргизилген гироскоптору бар квадрокоптер күтүлбөгөн жерден түрмөктөрдү же кадамдарды издей алат. Биз муну глобалдык позициялоо системасында (GPS) колдоно алабыз.
Кээ бир башка тиркемелерге жабык чабыттоо, акылдуу колдонуучу интерфейси, жаңсоо таануу, оюн жана виртуалдык чындыкты киргизүү түзмөктөрү ж.
ESP8266 жардамы менен анын кубаттуулугун чоңураак узартууга болот. Биз өзүбүздүн приборлорубузду көзөмөлдөй алабыз жана ал жерде иштөө столубуздан жана мобилдик түзмөктөрбүздөн көзөмөлдөй алабыз. Биз маалыматтарды онлайн режиминде сактай жана башкара алабыз жана аларды өзгөртүү үчүн каалаган убакта изилдей алабыз. Көбүрөөк колдонмолорго үй автоматташтыруу, сетка тармагы, өнөр жай зымсыз көзөмөлү, бала мониторлору, сенсор тармактары, кийилүүчү электроника, Wi-Fi жайгашкан жерди билген түзмөктөр, Wi-Fi позиция тутумунун маяктары кирет.
6 -кадам: Андан ары кетүү үчүн ресурстар
LSM9DS0 жана ESP8266 жөнүндө көбүрөөк маалымат алуу үчүн төмөнкү шилтемелерди караңыз:
- LSM9DS0 сенсорунун маалымат жадыбалы
- LSM9DS0 туташуу диаграммасы
- ESP8266 маалымат жадыбалы
Сунушталууда:
Arduino Control DC моторунун ылдамдыгы жана багыты потенциометрди, OLED дисплейди жана баскычтарды колдонуу: 6 кадам
Arduino Control DC моторунун ылдамдыгы жана багыты потенциометрди, OLED дисплейди жана баскычтарды колдонуу: Бул окуу куралында биз L298N DC MOTOR CONTROL драйверин жана потенциометрди DC моторунун ылдамдыгын жана багытын эки баскыч менен башкаруу жана потенциометрдин маанисин көрсөтүү үчүн колдонууну үйрөнөбүз. OLED дисплейинде. Демонстрациялык видеону көрүңүз
Flow Багыты Sensor: 16 кадам
Агымдын багытынын сенсору: Бул сенсордун өлчөмү жана өлчөмү, ал эми шилтемелердин тизмесин аныктоо. Бул сенсордун жардамы менен сиз стомингдер менен иштейсиз. Кандай гана болбосун, бул дагы бир нерсе эмес
Туташкан Багыты Браслет: 6 кадам
Байланыштуу Браслет: Бул академиялык долбоорду, байланышкан багыт билеригин, Polytech Paris-UPMC инженердик мектебинин төрт студенти ишке ашырды: S é bastien Potet, Pauline Pham, Kevin Antunes жана Boris Bras. Биздин долбоор деген эмне? Бир семестр ичинде
Arduino Control DC моторунун ылдамдыгы жана багыты потенциометрди жана баскычтарды колдонуу: 6 кадам
Ардуино Control DC моторунун ылдамдыгы жана багыты потенциометрди жана баскычтарды колдонуу: Бул окуу куралында биз L298N DC MOTOR CONTROL драйверин жана потенциометрди DC моторунун ылдамдыгын жана багытын эки баскыч менен башкаруу үчүн колдонууну үйрөнөбүз
Bluetooth аркылуу Ардуинодон Android Телефонуна SD Карта Модулу менен Температура жана Нымдуулук маалыматын жазуучу: 5 кадам
Температура жана нымдуулук боюнча маалымат жазуучу Arduino тартып Android телефонуна SD карта модулу аркылуу Bluetooth аркылуу: Саламатсыздарбы, бул менин биринчи инструкциям, үмүт кылам, мен жаратуучулар коомчулугуна жардам бердим. Биз көбүнчө долбоорлорубузда сенсорлорду колдонобуз, бирок маалыматтарды чогултуунун, сактоонун жана аны дароо Телефондорду же башка түзмөктөрдү өткөрүүнүн жолун издейбиз