
Orodha ya maudhui:
- Hatua ya 1: Zana na Vifaa
- Hatua ya 2: Gundi Pamoja Mfumo wa Mbao
- Hatua ya 3: Kata Sura ukitumia Jig ya Kukata Mduara
- Hatua ya 4: Chapisha na Kusanya Gia
- Hatua ya 5: Sehemu za "Gundi" Pamoja
- Hatua ya 6: Kata misaada katika fremu
- Hatua ya 7: Kata idhini ya Sensorer za Athari za Ukumbi
- Hatua ya 8: Gundi Gonga la nje
- Hatua ya 9: Kata Skrufu za Marekebisho ya Athari za Sura ya Ukumbi
- Hatua ya 10: Gundi pete kwenye Hardboard
- Hatua ya 11: Gundi Disc ya ndani
- Hatua ya 12: Ambatisha Veneer
- Hatua ya 13: Punguza Veneer
- Hatua ya 14: Kata Veneer
- Hatua ya 15: Gundi Veneer
- Hatua ya 16: Mchanga na Maliza
- Hatua ya 17: Sakinisha Nguvu
- Hatua ya 18: Unganisha Elektroniki
- Hatua ya 19: Solder na Unganisha Elektroniki
- Hatua ya 20: Bamba la nyuma
- Hatua ya 21: Msimbo wa Arduino
- Hatua ya 22: Faili za STL
- Hatua ya 23: Faili za Solidworks
- Hatua ya 24: Hitimisho
2025 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2025-01-23 15:11


Saa za mitambo zimevutia kila wakati. Njia ya gia zote za ndani, chemchemi, na vifaa vya kusafiri hufanya kazi pamoja ili kusababisha saa ya kuaminika ya kila wakati daima ilionekana kuwa haiwezi kufikia seti yangu ndogo ya ustadi. Kwa bahati nzuri umeme wa kisasa na sehemu zilizochapishwa za 3D zinaweza kuziba pengo ili kuunda kitu rahisi ambacho hakitegemei sehemu ndogo za chuma.
Saa hii ndogo ya ukuta inaficha jozi ya gia za pete zilizochapishwa za 3D zinazoendeshwa na motors za bei rahisi ambazo huzunguka kwa sumaku nyuma ya veneer ya walnut ya kawaida.
Hapo awali nilihamasishwa na STORY Clock, nilitaka kipande cha wakati ambacho kilionyesha wakati wa siku kutumia fani za mpira tu dhidi ya usomaji wa dijiti na mpira unaosonga polepole unaobeba utumiaji wa bidhaa zao.

Hatua ya 1: Zana na Vifaa




Vifaa:
- 13 x 13 x 2 ndani. Plywood / Bodi ya chembe (Niliunganisha vipande 3 vya kuni chakavu)
- 13 x 13 ndani. Hardboard
- Arduino Nano
- Saa Saa Halisi
- Stepper Motors na Madereva
- Sensorer za Athari za Ukumbi
- Sumaku
- Cable ya Nguvu
- Adapter ya AC
- Chomeka
- Screws za Mashine
- Screws za kuni zilizowekwa
- Sehemu zilizochapishwa za 3D (Hatua ya Mwisho)
- Veneer (12 x 12 ndani. - uso, 40 ndani. Ukanda mrefu)
- Spray Lacquer
- Rangi ya Dawa Nyeusi
Zana:
- Printa ya 3D
- Dira
- Kisu cha X-acto
- Gundi
- Vifungo
- Mzunguko wa Kukata Jig
- Hack Saw
- Sander Sander
- Ufungaji wa Ratchet
- Charis
- Mtawala
- Sander
- Kuchimba visima
- Bisibisi
- Chuma cha kulehemu
- Moto Gundi Bunduki
Hatua ya 2: Gundi Pamoja Mfumo wa Mbao




Gundi pamoja vipande vitatu vya kuni ambavyo vitaunda sura ya saa. Nilitumia bodi ya chembe iliyorejeshwa kutoka kwa kitanda cha zamani cha kitanda.
Hatua ya 3: Kata Sura ukitumia Jig ya Kukata Mduara




Weka alama katikati ya bodi na panda kwenye jig ya kukata mduara. Kata miduara mitano na kipenyo kifuatacho:
- 12 ndani.
- 11 1/4 ndani.
- 9 1/4 ndani.
- 7 1/4 ndani.
- 5 3/8 ndani.
Hatua ya 4: Chapisha na Kusanya Gia


Gia za pete zimegawanywa katika sehemu ili iweze kuchapishwa kwenye printa ndogo na kupigwa pamoja. Sehemu zote zilichapishwa kwa ABS kusaidia katika mchakato wa fusing ulioonyeshwa katika hatua inayofuata. Mchanga pande zote na nyuso za sehemu.
Chapisha idadi zifuatazo za sehemu zinazopatikana katika hatua ya 22:
- 1 - Saa ya Sehemu ya Gia ya Pete ya Saa
- 6 - Sehemu ya Gia ya Gonga la Saa ya Msingi
- 1 - Saa ya Kubakiza Sehemu ya Pete ya Stepper
- 6 - Saa ya Kuhifadhi Sehemu ya Pete ya Msingi
- 1 - Mmiliki wa Sura ya Athari ya Saa ya Saa
- 1 - Sumaku ya Sehemu ya Pete ya Dakika
- 7 - Sehemu ya Gia ya Pete ya Dakika ya Msingi
- 1 - Dakika ya Kubakiza Sehemu ya Pete ya Stepper
- 6 - Dakika ya Kudumisha Sehemu ya Pete ya Msingi
- 1 - Dakika ya Athari ya Sensorer ya Athari ya Jumba
- 2 - Kuchochea Gia
- 1 - Mlima wa Elektroniki
Hatua ya 5: Sehemu za "Gundi" Pamoja



Kwenye chupa ya glasi iliyo na asetoni fulani, futa machapisho yaliyoshindwa kuchapisha vifaa vya zamani vya msaada, nk Rangi mchanganyiko wa asetoni kwenye kila mshono ili kuunganisha vipande hivyo. Mara baada ya kutibiwa, mchanga kila mshono tambarare.
Hatua ya 6: Kata misaada katika fremu



Weka gia za pete na pete za kubakiza kwenye sura na ukate misaada kwa motors za stepper. Nilipima na kukata pete ya ndani kubwa sana kwa hivyo niliipunguza kwa ukubwa nikitumia bendi ya maple makali niliyokuwa nayo karibu na duka.
Hatua ya 7: Kata idhini ya Sensorer za Athari za Ukumbi



Kata shimo la kibali kupitia pete ya ndani kwa sensorer ya athari ya ukumbi na dakika ya sensorer ya athari ya ukumbi. Nilitumia mkata, faili, na msumeno mdogo ili kukata vibali hivi.
Hatua ya 8: Gundi Gonga la nje

Gundi na mkanda pete ya nje saizi ya pete ya kubakiza dakika.
Hatua ya 9: Kata Skrufu za Marekebisho ya Athari za Sura ya Ukumbi

Kukata screws za mashine na saw hack kwa hivyo ni ndefu tu kuliko unene wa pete ya kubakiza na mmiliki wa athari ya ukumbi. Kata yanayopangwa kwenye nyuzi ili iweze kubadilishwa kutoka mwisho wa nyuzi na bisibisi gorofa.
Hatua ya 10: Gundi pete kwenye Hardboard



Kata mduara wa bodi ngumu tu kuliko pete ya nje. Gundi pete ya nje na ya ndani kwa uso wa bodi ngumu. Tumia pete ya kubakiza dakika na gia za pete kuweka pete ya ndani. Zingatia vizuri zaidi kuliko nilivyofanya ili usigonge pete ya ndani nyuma. Picha ya pili inaonyesha kipande kipya kilichokatwa kwa sensorer ya athari ya ukumbi.
Tumia kisanduku cha diski kupunguza ubao mgumu hadi saizi ya pete ya nje.
Hatua ya 11: Gundi Disc ya ndani


Gundi diski ya ndani iliyowekwa kwa kutumia pete ya kubakiza saa na gia za pete kuweka diski ya ndani.
Hatua ya 12: Ambatisha Veneer




Kata kipande cha veneer pana kuliko saa ni kirefu na ya kutosha kuzunguka saa (kipenyo cha saa 3.14 *, itarudisha urefu unaohitajika. Ongeza inchi ili uhakikishe kuwa unayo ya kutosha.) Kavu inafaa veneer kwa kata kwa urefu. Kutumia gundi ya kutosha kwa veneer na clamp mahali na kamba ya kamba. Wacha kavu masaa kadhaa ili kuhakikisha kujitoa.
Hatua ya 13: Punguza Veneer

Kutumia patasi kali, punguza veneer ya ziada kutoka mbele na nyuma ya saa.
Hatua ya 14: Kata Veneer


Veneer yangu ilikuwa na nyufa ndani yake. Ili kurahisisha kufanya kazi nayo, nilitumia mkanda wa wachoraji kuishika pamoja. Kutumia kisu cha x-acto katika dira, kata veneer kubwa tu kuliko uso wa saa.
Hatua ya 15: Gundi Veneer


Tumia pete zilizokatwa ili kusambaza shinikizo kwenye uso wa saa. Tumia gundi ya kutosha kwa upande wa mkanda wa veneer. Elekeza nafaka kwa wima kwenye uso wa saa na weka vifungo vingi vinavyoimarisha kila moja kidogo kwa wakati. Hii itahakikisha veneer haibadiliki na ina hata shinikizo kwenye uso.
Nilitumia bodi kadhaa bapa upande wa uso wa saa na viboreshaji vingine nyuma.
Hatua ya 16: Mchanga na Maliza


Kutumia sandpaper, ondoa kwa uangalifu veneer ya ziada kutoka kwa uso wa saa na mchanga kuanzia grit 220 hadi grit 600.
Omba kati ya kanzu 10 hadi 20 za lacquer. Hii itaunda uso ambao kubeba mpira kutapanda pamoja. Inaepukika kwa sababu ya vumbi na chembe zingine angani, nadhani kuwa mistari itaonekana kando ya njia ya kila mpira. Kutumia kanzu zaidi za kumaliza kunapaswa kuchelewesha hii kwa muda mrefu iwezekanavyo. Pia itafanya uboreshaji wa siku zijazo uwe rahisi. Nitasasisha hatua hii ikiwa mistari itaonekana kwenye saa yangu.
Hatua ya 17: Sakinisha Nguvu


Kutumia bomba la kuchimba visima la 27/64, chimba shimo chini ya saa na unganisha kuziba kwa nguvu mahali.
Hatua ya 18: Unganisha Elektroniki




Ambatisha madereva ya stepper na saa halisi wakati wa bodi ya elektroniki. Nilihitaji kutafuta njia ya kupata Arduino kwa hivyo mashimo yalichimbwa na slot ilikatwa kwa tie ya zip. Vipengele hivi vimeongezwa kwenye faili iliyopatikana katika hatua ya 22.
Hatua ya 19: Solder na Unganisha Elektroniki



Kufuatia mchoro wa kuzuia, unganisha viunga vyote pamoja. Gundi moto pete zilizopo na salama waya yoyote iliyopotea na gundi moto pia.

Hatua ya 20: Bamba la nyuma



Unda bamba la nyuma kwa kukata mduara mwingine 1/2 ndani kubwa kuliko uso wa saa na pete yenye kipenyo cha ndani sawa na nyuma ya saa. Gundi pete na duara pamoja na vifungo kadhaa vya chemchemi.
Mara tu kavu, mwandishi mstari 1/8 ndani kubwa kuliko pete ya ndani na punguza ukubwa kwa kutumia bendi ya kuona au disander sander.
Kata nafasi 1 ndani. Urefu wa 1/4 ndani kwa upana juu ya nyuma kwa kutumia router au bits za kuchimba. Tenganisha mashimo manne ili kupata nyuma kwenye sura ya saa.
Paka rangi nyeusi ya kunyunyizia na ushikamane na saa mara moja kavu.
Hatua ya 21: Msimbo wa Arduino
Nambari ya arduino imetolewa maoni iwezekanavyo. Kumbuka kuwa mimi sio programu, nina uzoefu mdogo wa arduino (kuwa mwema). Nambari huendelea kukagua ili kuona ikiwa wakati wa sasa unalingana na "Saa Saa". Kwa sababu sikuweza kufikiria njia ya kutafsiri wakati wa sasa kuwa hatua, inajirekebisha mara moja kila siku (usiku wa manane kwa chaguo-msingi). Usiku wa manane gia huzunguka hadi kwenye nafasi ya usiku wa manane kisha subiri hadi 00:01 ikihamia kwa wakati huo kisha inaendelea kutoka hapo. Kama inakaa sasa, saa hupoteza tu sekunde 5 kwa kipindi cha masaa 24.
Utahitaji maktaba ya Stepper na RTClib iliyosanikishwa.
Najua nambari inaweza kuboreshwa na mtu aliye na uzoefu zaidi kuliko mimi. Ikiwa unakabiliana na changamoto hiyo, tafadhali jirudie mradi huu mwenyewe na ushiriki maarifa yako.
# pamoja
# pamoja na "RTClib.h" RTC_DS1307 rtc; #fafanua moja Mzunguko 2038 // idadi ya hatua katika mapinduzi moja ya 28BYJ-48 stepper motor Stepper hourHand (oneRotation, 3, 5, 4, 6); Dakika ya Stepper Mkono (mojaRotation, 7, 9, 8, 10); #fafanua saaStopSensor 12 #fafanua dakikaStopSensor 11 int endStep = 0; // Dealy ya wakati wa kasi ya saa. int setDelay1 = 168; int setDelay2 = 166; int setDelay3 = 5; // Wakati wa sasa wa kufanya hesabu na. kuelea hr = 0; kuelea mn = 0; kuelea sc = 0; // Weka wakati wa siku kuweka upya saa (fomati ya saa 24). int resetHour = 0; int resetMinute = 0; // Vigezo vya kuweka wakati sahihi wakati wa kuanza na kuweka upya. kuelea setTimeStepHour = 0; kuelea setTimeStepMinute = 0; kuelea mkonoDelay = 0; jaribu saa = Jaribio = 0; dakika ya kueleaMtihani = 0; kuanzisha batili () {Serial.begin (115200); // Kuweka saa halisi wakati na kuweka upya sensorer za athari za ukumbi. pinMode (saaStopSensor, INPUT_PULLUP); pinMode (dakikaStopSensor, INPUT_PULLUP); rtc kuanza (); // Uncomment line hapo chini kuweka muda. // rtc.rekebisha (Tarehe ya Wakati (2020, 2, 19, 23, 40, 30)); // rtc.rekebisha (Tarehe ya Wakati (F (_ DATE_), F (_ TIME_))); // Weka kasi ya juu ya motors za stepper. SaaHand.setSpeed (15); dakikaHand.setSpeed (15); // Kitanzi mpaka dakika na saa ni saa sita wakati (digitalRead (hourStopSensor) == LOW || digitalRead (minuteStopSensor) == LOW) {if (digitalRead (hourStopSensor) == LOW) {hourHand.step (2); } mwingine {kuchelewesha (3); } ikiwa (digitalRead (minuteStopSensor) == LOW) {minuteHand.step (3); } mwingine {kuchelewesha (4); }} wakati (DigitalRead (hourStopSensor)! = LOW || DigitalRead (minuteStopSensor)! = LOW) {if (DigitalRead (hourStopSensor)! = LOW) {hourHand.step (2); } mwingine {kuchelewesha (3); } ikiwa (digitalRead (minuteStopSensor)! = CHINI) {minuteHand.step (3); } mwingine {kuchelewesha (4); }} // Pata wakati wa sasa Tarehe ya Sasa sasa = rtc.now (); hr = sasa saa (); mn = sasa.minute (); sc = sasa. pili (); // Badilisha kwa muundo wa saa 12 ikiwa (hr> = 12) {hr = hr - 12; } // Angalia ni mkono gani lazima usafiri kwenye uso zaidi na utumie umbali huo // kurekebisha wakati uliowekwa ipasavyo. Mtihani wa saa = hr / 12; Jaribio la dakika = mn / 60; ikiwa (hourTest> minuteTest) {handDelay = hourTest; } mwingine {handDelay = minuteTest; } // Seti saa ya sasa setTimeStepHour = (hr * 498) + (mn * 8.3) + ((sc + (handDelay * 36)) *.1383); // Weka dakika ya sasa setTimeStepMinute = (mn * 114) + ((sc + (handDelay * 45)) * 1.9); // Jaribu ni mkono gani utahitaji hatua zaidi na uweke kwa hesabu ndefu zaidi ya kitanzi. ikiwa (setTimeStepHour> setTimeStepMinute) {endStep = setTimeStepHour; } mwingine {endStep = setTimeStepMinute; } kwa (int i = 0; i <= endStep; i ++) {if (i <setTimeStepHour) {hourHand.step (2); } mwingine {kuchelewesha (3); } ikiwa (i <setTimeStepMinute) {minuteHand.step (3); } mwingine {kuchelewesha (4); }} // // Weka saa inayoendesha saa ya RPMHand.setSpeed (1); dakikaHand.setSpeed (1); } kitanzi batili () {// Anza kitanzi kinachotumia saa. kwa (int i = 0; i <22; i ++) {minuteHand.step (1); kuchelewesha (setDelay1); // Jaribu kwa wakati wa kuweka upya, ikiwa iko tayari kuwekwa upya, vunja. ikiwa (rtc.now (). saa () == resetHour && rtc.now (). dakika () == resetMinute) {break; }} kuchelewa (setDelay3); kwa (int i = 0; i <38; i ++) {hourHand.step (1); kuchelewesha (setDelay1); // Jaribu wakati wa kuweka upya, ikiwa iko tayari kuwekwa upya, vunja. ikiwa (rtc.now (). saa () == resetHour && rtc.now (). dakika () == resetMinute) {break; } kwa (int i = 0; i <20; i ++) {minuteHand.step (1); kuchelewesha (setDelay2); // Jaribu kwa wakati wa kuweka upya, ikiwa iko tayari kuwekwa upya, vunja. ikiwa (rtc.now (). saa () == resetHour && rtc.now (). dakika () == resetMinute) {break; }}} // Rudisha saa wakati wa kuweka upya ikiwa (rtc.now (). Hour () == resetHour && rtc.now (). Dakika () == resetMinute) {// Badilisha kasi ya saa SaaHand.setSpeed (10); dakikaHand.setSpeed (10); // Kitanzi mpaka dakika na mkono wa saa ufikie adhuhuri. wakati (digitalRead (hourStopSensor) == LOW || digitalRead (minuteStopSensor) == LOW) {if (digitalRead (hourStopSensor) == LOW) {hourHand.step (2); } mwingine {kuchelewesha (3); } ikiwa (digitalRead (minuteStopSensor) == LOW) {minuteHand.step (3); } mwingine {kuchelewesha (4); }} wakati (DigitalRead (hourStopSensor)! = LOW || DigitalRead (minuteStopSensor)! = LOW) {if (DigitalRead (hourStopSensor)! = LOW) {hourHand.step (2); } mwingine {kuchelewesha (3); } ikiwa (digitalRead (minuteStopSensor)! = CHINI) {minuteHand.step (3); } mwingine {kuchelewesha (4); }} // Subiri hapa hadi wakati wa kuweka upya upite. wakati (rtc.now (). dakika () == resetMinute) {kuchelewesha (1000); } // Pata wakati wa sasa DateTime sasa = rtc.now (); hr = sasa saa (); mn = sasa.minute (); sc = sasa. pili (); // Badilisha kwa muundo wa saa 12 ikiwa (hr> = 12) {hr = hr - 12; } // Angalia ni mkono gani lazima usafiri kwenye uso zaidi na utumie umbali huo // kurekebisha wakati uliowekwa ipasavyo. Mtihani wa saa = hr / 12; Jaribio la dakika = mn / 60; ikiwa (hourTest> minuteTest) {handDelay = hourTest; } mwingine {handDelay = minuteTest; } // Seti saa ya sasa setTimeStepHour = (hr * 498) + (mn * 8.3) + ((sc + (handDelay * 36)) *.1383); // Weka dakika ya sasa setTimeStepMinute = (mn * 114) + ((sc + (handDelay * 45)) * 1.9); // Jaribu ni mkono gani utahitaji hatua zaidi na uweke kwa hesabu ndefu zaidi ya kitanzi. ikiwa (setTimeStepHour> setTimeStepMinute) {endStep = setTimeStepHour; } mwingine {endStep = setTimeStepMinute; } kwa (int i = 0; i <= endStep; i ++) {if (i <setTimeStepHour) {hourHand.step (2); } mwingine {kuchelewesha (3); } ikiwa (i <setTimeStepMinute) {minuteHand.step (3); } mwingine {kuchelewesha (4); }} saaHand.setSpeed (1); dakikaHand.setSpeed (1); }}
Hatua ya 22: Faili za STL
Utahitaji kuchapisha faili zifuatazo:
- 1 - Saa ya Sehemu ya Gia ya Pete ya Saa
- 6 - Sehemu ya Gia ya Gonga la Saa ya Msingi
- 1 - Saa ya Kubakiza Sehemu ya Pete ya Stepper
- 6 - Saa ya Kuhifadhi Sehemu ya Pete ya Msingi
- 1 - Mmiliki wa Sura ya Athari ya Saa ya Saa
- 1 - Sumaku ya Sehemu ya Gia ya Pete ya Dakika
- 7 - Sehemu ya Gia ya Pete ya Dakika ya Msingi
- 1 - Dakika ya Kuhifadhi Sehemu ya Pete ya Stepper
- 6 - Dakika ya Kudumisha Sehemu ya Pete ya Msingi
- 1 - Dakika ya Athari ya Sensor ya Athari ya Dakika
- 2 - Kuchochea Gia
- 1 - Mlima wa Elektroniki
Hatua ya 23: Faili za Solidworks
Hizi ni faili asili za Solidworks zinazotumiwa kuunda STL zilizopatikana katika hatua ya awali. Jisikie huru kuhariri na kubadilisha faili zangu jinsi unavyoona inafaa.
Hatua ya 24: Hitimisho
Saa hii iliibuka bora kuliko vile nilivyotarajia. Kuwa na uzoefu mdogo wa Arduino, ninafurahi na jinsi ilivyotokea na jinsi ilivyo sahihi. Inaonekana nzuri na inafanya kazi kama vile nilivyotarajia.
Ilipendekeza:
Utunzaji wa saa - Jinsi ya Kuunda Saa Iliyotengenezwa Kutoka kwa Saa !: Hatua 14 (na Picha)

Utunzaji wa saa - Jinsi ya Kuunda Saa Iliyotengenezwa Kutoka kwa Saa !: Halo wote! Huu ni maoni yangu kwa Mashindano ya Mwandishi wa Mara ya Kwanza ya 2020! Ikiwa unapenda mradi huu, ningethamini sana kura yako :) Asante! Hii inayoweza kufundishwa itakuongoza kupitia mchakato wa kujenga saa iliyotengenezwa na saa! Nimeita kwa ujanja
Saa ya Saa ya Saa ya Dakika 30: Hatua 3 (na Picha)

Saa ya Saa ya Saa ya Dakika 30: Rafiki anaanzisha biashara ndogo ambayo hukodisha rasilimali kwa muda wa dakika 30. Alitafuta kipima muda ambacho kingeweza kutisha kila dakika 30 (saa na nusu saa) na sauti nzuri ya gong, lakini sikuweza kupata chochote. Nilijitolea kuunda si
Kutengeneza Saa na M5stick C Kutumia Arduino IDE - RTC Saa Saa Saa Na M5stack M5stick-C: Hatua 4

Kutengeneza Saa na M5stick C Kutumia Arduino IDE | RTC Saa Saa Saa Na M5stack M5stick-C: Halo jamani katika mafundisho haya tutajifunza jinsi ya kutengeneza saa na bodi ya maendeleo ya m5stick-C ya m5stack kutumia Arduino IDE.So m5stick itaonyesha tarehe, saa & wiki ya mwezi kwenye maonyesho
Jinsi ya Kutoa Saa ya Ukuta Mikono Nyepesi na Alama za Muda: Saa 14 (na Picha)

Jinsi ya Kutoa Saa ya Ukuta Mikono ya Nuru na Alama za Muda: Tulitaka saa ya ukuta wa chumba cha kulala na mikono nyepesi na onyesho la vipindi vya dakika tano na robo. Ilibidi isome kwa bidii kutoka kitandani na mwangaza ulibidi udumu usiku wote. Rangi nyepesi inayotumika kwenye saa za kisasa inaelekea
Saa rahisi ya Arduino / Saa ya saa: Hatua 6 (na Picha)

Saa rahisi / Saa ya saa Arduino: Hii " inafundishwa " itakuonyesha na kukufundisha jinsi ya kutengeneza saa rahisi ya Arduino Uno ambayo pia hufanya kama saa ya kusimama kwa hatua chache rahisi