Мазмуну:

Arduino жана Ethernetти баштоо: 8 кадам
Arduino жана Ethernetти баштоо: 8 кадам

Video: Arduino жана Ethernetти баштоо: 8 кадам

Video: Arduino жана Ethernetти баштоо: 8 кадам
Video: Как управлять приводом с помощью Arduino - Robojax 2024, Июль
Anonim
Arduino жана Ethernet менен баштоо
Arduino жана Ethernet менен баштоо

Сиздин Arduino зымдуу Ethernet туташуусу аркылуу тышкы дүйнө менен оңой баарлаша алат. Бирок, биз баштаардан мурун, сизде компьютердик тармак жөнүндө негизги түшүнүк бар деп божомолдонот, мисалы, компьютерлерди RJ45 кабели менен хабка/роутерге кантип туташтыруу керек, IP жана MAC дареги деген эмне жана башкалар. Мындан тышкары, бул жерде Ethernet жөнүндө жакшы кыскача маалымат.

Сүрөттө айтылгандай, сизге W5100 Ethernet контролеру IC (алардын дээрлик бардыгы) колдонгон Ethernet калканы бар Arduino Uno же шайкеш такта керек болот.

Мындан тышкары, тактаны тышкы DC розеткасы аркылуу иштетүү керек болот - W5100 IC USB кубаттуулугуна караганда көбүрөөк токту колдонот. 9V 1.5A плагин пакети/дубал сөөлү жетиштүү болот.

1 кадам:

Сүрөт
Сүрөт

Акырында - калканчтар ысып кетет - андыктан узак колдонулгандан кийин W5100ге тийүүдөн сак болуңуз. Эгер ишенбесеңиз - бул W5100 IC.

2-кадам:

Ардуинону Ethernet иштеткенден кийин жана тышкы электр энергиясын туташтыргандан кийин-анын иштешин текшерүү жакшы. Arduino IDE ачыңыз жана Файл> Мисалдар> Ethernet> Веб -серверди тандаңыз. Бул веб -браузердеги аналогдук кириштерден чогултулган маалыматтарды көрсөтө турган жөнөкөй эскизди жүктөйт. Бирок, азырынча жүктөбөңүз, анча -мынча өзгөртүү керек.

Сиз Ethernet калканынын IP дарегин көрсөтүшүңүз керек - бул эскиздин ичинде жасалат. Бул жөнөкөй, линияга өтүңүз:

IPAddress ip (10, 1, 1, 77);

Жана аны өзүңүздүн орнотууңузга ылайыкташтырып өзгөртүңүз. Мисалы, биздин үйдө роутердин IP дареги 10.1.1.1, принтер 10.1.1.50 жана бардык компьютерлер төмөндө … 50. Ошентип, мен линияны өзгөртүү менен калкан IPмди 10.1.1.77ге коём:

байт mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

Бирок, эгерде сизде бир гана калкан болсо, аны калтырыңыз. MAC дареги учурдагы жабдыктарыңызга окшош болушу мүмкүн, статистикалык жактан сейрек кездешүүчү мүмкүнчүлүк болушу мүмкүн, андыктан аны өзгөртүү үчүн дагы бир убакыт келет.

3 -кадам:

Сүрөт
Сүрөт

Бирок, эгер сизде бир гана калкан болсо, анда аны калтырыңыз. MAC дареги учурдагы жабдыктарыңызга окшош болушу мүмкүн, статистикалык жактан сейрек кездешүүчү мүмкүнчүлүк болушу мүмкүн, андыктан аны өзгөртүү үчүн дагы бир убакыт келет.

Өзгөртүүлөрдү киргизгенден кийин, эскизди сактап, жүктөңүз. Эми веб -браузерди ачып, эскизге киргизген IP дарегиңизге өтүңүз жана сизге сүрөттө окшош нерсе көрсөтүлүшү керек.

Эмне болуп жатат?

Arduino аналогдук кирүүлөр менен өлчөнгөн баалуулуктары бар жөнөкөй веб -баракчаны сунуштоо үчүн программаланган. Сиз жаңыртылган баалуулуктарды алуу үчүн браузерди жаңырта аласыз. Бул жерде - Ethernet калканчтары 10 ~ 13 санарип пиндерин колдонорун эске алыңыз, андыктан аларды башка эч нерсе үчүн колдоно албайсыз. Кээ бир Arduino Ethernet калкандарында дагы бир санарип пин колдонулган microSD карта розеткасы болушу мүмкүн - андыктан кайсынысын билүү үчүн документтер менен таанышыңыз.

4 -кадам:

Ошентсе да, азыр Ethernet калканы иштеп жатканын көрүп, биз дагы пайдалуу нерсеге өтө алабыз. Келгиле, мурунку мисалды жөнөкөй жол менен талдап көрөлү, жана биз кантип кызыктуу маалыматтарды тармак аркылуу таратып, көрсөтө аларыбызды карап көрөлү. Маалымат үчүн, Ethernet менен байланышкан бардык функцияларды Ethernet Arduino китепканасы башкарат. Эгерде биз мурунку эскизди карап көрсөк, анда кызыктыруучу бөлүм:

үчүн (int analogChannel = 0; analogChannel <6; analogChannel ++) {int sensorReading = analogRead (analogChannel); client.print ("аналогдук киргизүү"); client.print (analogChannel); client.print ("is"); client.print (sensorReading); client.println (""); } client.println ("");

Эскиздин бул бөлүмү тааныш болушу керек деп үмүттөнөбүз - serial.print () колдонгондугубузду эстеңиз; мурун сериялык монитор кутусуна маалыматтарды жөнөтүүдө? Эми биз дагы ошондой кыла алабыз, бирок Ethernet калканыбыздан маалыматтарды веб -браузерге жөнөтүү - башкача айтканда, веб -баракчанын эң негизги түрү. окула турган форматта чыгаруу - HTML коду. Мен веб -сайтты иштеп чыгуучу эмесмин (!), Андыктан HTMLге өтө көп киришпейм.

Бирок, эгер сиз Arduino жана башкалар менен жакшы форматталган веб баракчаларды тейлегиңиз келсе, бул жерде жакшы башталыш болмок. Жөнөкөйлүк үчүн төмөнкү эки функция эң пайдалуу болот:

client.print ("is");

Client.print (); текстти же маалыматтарды кайра веб -баракчага жөнөтүүгө мүмкүндүк берет. Бул serial.print () сыяктуу иштейт, андыктан ал жерде жаңы эч нерсе жок. Сиз ошондой эле serial.print () сыяктуу эле маалыматтын түрүн көрсөтө аласыз. Албетте, сиз аны кайра маалыматтарды жөнөтүү үчүн колдоно аласыз. Башка пайдалуу линия:

client.println ("");

HTML кодун веб -браузерге кайра жөнөтүп, жаңы сап баштоону айтат. Арбанын кайтып келүүсүнө себеп болгон бөлүк/жаңы линия - бул

бул жаңы сап үчүн HTML коду (же "тег").

Ошентип, эгер сиз веб -баракчанын жакшыраак дисплейлерин түзүп жатсаңыз, анда башка HTML тэгдерин client.print () ичине кыстарсаңыз болот. билдирүү. Эгерде сиз HTML буйруктары жөнүндө көбүрөөк билгиңиз келсе, бул жерде жакшы окуу куралы бар.

Акырында - эскиз маалыматтарды суралганда гана, башкача айтканда, веб -браузерден суроо -талап түшкөндө гана жөнөтөрүн эске алыңыз.

5 -кадам: Ардуиного Интернет аркылуу кирүү

Сиздин Arduino Интернетке кирүү
Сиздин Arduino Интернетке кирүү

Азырынча - абдан жакшы. Бирок сиз Arduinoго жергиликтүү тармактын сыртынан кирүүнү кааласаңызчы?

Сизге статикалык IP дареги керек болот - башкача айтканда, интернет провайдериңиздин туташууңузга берген IP дареги өзгөрүүсүз калышы керек. Эгерде сизде статикалык IP жок болсо, модемиңизди/роутериңизди биротоло таштап койсоңуз, өзгөрбөшү керек. Бирок бул оптималдуу чечим эмес.

Эгерде сиздин провайдериңиз сизге статикалык IP сунуштай албаса, сиз дагы динамикалык DNS сунуштаган уюмду колдонуу менен долбоорду алга жылдырсаңыз болот. Бул уюмдар сизге сандын ордуна өзүнүн статикалык IP хостунун атын (мис. Mojo.monkeynuts.com) сунуштайт, өзгөрүп жаткан IP дарегиңизди көзөмөлдөп, аны жаңы хосттун атына байланыштырыңыз. Мен чогулта ала турган нерсеге караганда, сиздин модем бул DDNS кызматтарын колдошу керек (… үчүн курулган кардары бар).

Мисалы, эки компания No-IP жанаDynDNS.com. Көңүл бургула, мен бул экөөнү колдонгон жокмун, алар жөн гана мисал катары сунушталган. Эми, IP дарегиңизди табуу үчүн… адатта муну роутериңиздин административдик барагына кирүү аркылуу табууга болот - бул адатта 192.168.0.1, бирок башкача болушу мүмкүн. Провайдериңизден же провайдериңизден алар аппараттык жабдууну камсыз кылганын текшериңиз. Бул мисал үчүн, эгер мен веб -браузерге 10.1.1.1 киргизсем жана модемдин административдик сырсөзүн киргизгенден кийин, төмөнкү экран сүрөттө көрсөтүлгөндөй берилет.

6 -кадам:

Сүрөт
Сүрөт

Сиз издеп жаткан нерсе - сиздин WAN IP дарегиңиз, жогоруда сүрөттө көрүнүп тургандай. Пранкерлерди алыс кармоо үчүн мен дарегимдин бир бөлүгүн караңгылатып алдым.

Кийинки нерсе-порт жөнөтүүнү күйгүзүү. Бул роутерге тышкы дүйнөдөн келген сурамдарды кайда багыттоо керектигин айтат. Модем мындай өтүнүчтү алганда, биз бул суранычты Ethernet калканыбыздын портуна жөнөткүбүз келет. Колдонуу:

EthernetServer сервери (125);

биздин эскиздеги функция порт номерин 125ке койду. Ар бир модемдин конфигурациясынын экраны башкача көрүнөт, бирок бул жерде мисал катары сүрөттө бирөө көрсөтүлгөн.

7 -кадам:

Сүрөт
Сүрөт

Ошентип, сиз жогорудагы сүрөттөгү биринчи саптан көрө аласыз, кирүүчү порт номерлери 125, Ethernet калканынын IP дареги 10.1.1.77 - эскиздегидей эле коюлган.

Орнотууларды сактагандан кийин, баары даяр. Менин Ethernet калканчымдын тышкы дареги WAN болот: 125, ошондуктан Arduinoго кирүү үчүн мен WAN дарегимди: 125 менен алыскы веб -түзмөктүн браузерине жазам, ал үйгө жалгыз Ethernet жабдуулары менен байланышат.

Мындан тышкары, 125 портуна келген сурамдар үчүн "ачык" болушуна жол берүү үчүн, модемдин брандмауэринин жөндөөлөрүн өзгөртүү керек болушу мүмкүн. Муну кантип жасоо жөнүндө көбүрөөк маалымат алуу үчүн, модемдин документтерин текшериңиз. Азыр негизинен эркин дүйнөдө Интернетке туташкан каалаган түзмөктөн, мен WAN жана порт номеримди URL талаасына киргизип, жыйынтыгын ала алам. Мисалы, LTE мобилдик маалыматы аркылуу Интернетке туташканда телефондон.

Ошентип, бул этапта сиз азыр маалыматты Arduino түзгөн жөнөкөй веб -баракчада көрсөтө аласыз жана Интернетке чектөөсүз каалаган жерден кире аласыз. Мурунку Arduino билимиңиз менен сенсорлордун же эскиздин башка бөлүктөрүнүн маалыматтарын колдонуп, аны алуу үчүн көрсөтө аласыз.

8 -кадам: Интернет баракчасында сенсордук маалыматтарды көрсөтүү

Сенсордук маалыматтарды веб -баракчада көрсөтүү
Сенсордук маалыматтарды веб -баракчада көрсөтүү

Сенсордун маалыматтарын веб -бетте көрсөтүүнүн мисалы катары, арзан жана популярдуу температура жана нымдуулук сенсорун колдонолу - DHT22. Сиз бул беттеги DHT22 Arduino китепканасын орнотушуңуз керек. Бул DHT22 менен биринчи жолу болсоңуз, китепканага киргизилген мисалдын эскизин колдонуп көрүңүз, анын кандай иштээрин түшүнүңүз.

DHT22ди маалымат пини менен Arduino D2ге, Винди 5V пинге жана GNDге… GNDге туташтырыңыз. Эми биздин эскиз үчүн - веб -беттеги температураны жана нымдуулукту көрсөтүү. Эгерде сиз HTMLге кире элек болсоңуз, анда онлайн кызматтарды колдонуп, кодду иштеп чыгыңыз, андан кийин эскизде колдонуу үчүн аны өзгөртө аласыз. Төмөндөгү мисалда DHT22ден алынган температура жана нымдуулук маалыматтары жөнөкөй веб -баракчада берилет:

#"SPI.h" кошуу#"Ethernet.h" кошуу

// DHT22 сенсору үчүн

#кошуу "DHT.h" #аныктоо DHTPIN 2 #аныктоо DHTTYPE DHT22

// Төмөндө контролеруңуз үчүн MAC дарегин жана IP дарегин киргизиңиз.

// IP дареги жергиликтүү тармагыңыздан көз каранды болот: byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; IPAddress ip (10, 1, 1, 77);

// Ethernet сервер китепканасын баштоо

// IP дареги жана сиз колдонгуңуз келген порт менен // (80 -порт HTTP үчүн демейки): EthernetServer server (125); DHT dht (DHTPIN, DHTTYPE);

жараксыз орнотуу ()

{dht.begin (); // Сериялык байланышты ачыңыз жана порттун ачылышын күтүңүз: Serial.begin (9600); while (! Serial) {; // сериялык порттун туташуусун күтө туруңуз. Леонардо үчүн гана керек} // Ethernet туташуусун жана серверди баштоо: Ethernet.begin (mac, ip); server.begin (); Serial.print ("сервер турат"); Serial.println (Ethernet.localIP ()); }

боштук цикл ()

{// келген кардарларды угуңуз EthernetClient client = server.available (); if (кардар) {Serial.println ("жаңы кардар"); // http сурамы бош сап менен бүтөт логикалык currentLineIsBlank = true; while (client.connected ()) {if (client.available ()) {char c = client.read (); Serial.write (c); // эгер сиз саптын аягына чейин жетсеңиз (жаңы сап // белгини алсаңыз) жана сап бош болсо, http суранычы аяктады, // эгерде сиз жооп жөнөтө аласыз (c == 'n' && currentLineIsBlank) {// стандарттык жооптун башын жөнөтүү client.println ("HTTP/1.1 200 OK"); client.println ("Мазмундун түрү: текст/html"); client.println ("Байланыш: жабуу"); // жооп client.println ("Жаңылоо: 30") аяктагандан кийин туташуу жабылат; // баракты автоматтык түрдө ар бир 30 секундда жаңыртыңыз client.println (); client.println ("");

client.println ("");

// DHT22 сенсорунан маалыматтарды алуу

float h = dht.readHumidity (); float t = dht.readTemperature (); Serial.println (t); Serial.println (h);

// бул жерден биз веб баракчаны түзүү үчүн өзүбүздүн HTML кодубузду киргизе алабыз

client.print ( Office аба ырайы

Кызматтын температурасы - );

client.print (t);

client.print ( Цельсий боюнча градус

);

client.print ("

Нымдуулук - );

client.print (h);

client.print ( пайыз

);

client.print ("

Барак 30 секунд сайын жаңырат <

. );

тыныгуу;

} if (c == 'n') {// сиз жаңы линияны баштап жатасыз currentLineIsBlank = true; } else if (c! = 'r') {// сиз учурдагы сапта бир тамга алдыңыз currentLineIsBlank = false; }}} // веб -браузерге берилиштердин кечигүүсүн алуу үчүн убакыт бериңиз (1); // байланышты жабуу: client.stop (); Serial.println ("кардар ажыратылды"); }}

Бул биз мурда колдонгон IDEнин веб -серверинин мисалынын эскизинин бир аз өзгөртүүлөрү. Биринчиден, веб -баракча автоматтык түрдө ар бир 30 секундда жаңыртылып турат - бул параметр сапта белгиленген:

client.println ("Жаңылоо: 30"); // баракты автоматтык түрдө ар бир 30 сек

… жана веб -баракчабыз үчүн ыңгайлаштырылган HTML сызыктын астынан башталат:

// бул жерден биз веб баракчаны түзүү үчүн өзүбүздүн HTML кодубузду киргизе алабыз

Сиз керектүү макетти түзүү үчүн client.print () функциясынын ичине керектүү HTMLди киргизсеңиз болот. Акыры - бул жерде мисалдын эскизинин мисалынын скриншоту.

Бул жерде сизде бар, сиздин Arduino тышкы дүйнө менен өз ара аракеттенүүсүнүн дагы бир пайдалуу жолу. Бул пост сизге pmdway.com тарабынан - бүткүл дүйнө жүзү боюнча бекер жеткирүү менен, өндүрүүчүлөр жана электроника ышкыбоздору үчүн.

Сунушталууда: